Make scrolling work
This commit is contained in:
parent
05a0b196c4
commit
b7026c50b0
@ -15,6 +15,7 @@ import net.minecraft.resources.ResourceLocation;
|
|||||||
import net.minecraft.sounds.SoundEvents;
|
import net.minecraft.sounds.SoundEvents;
|
||||||
import net.minecraft.world.entity.player.Inventory;
|
import net.minecraft.world.entity.player.Inventory;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.item.Items;
|
||||||
import ru.dbotthepony.mc.otm.OverdriveThatMatters;
|
import ru.dbotthepony.mc.otm.OverdriveThatMatters;
|
||||||
import ru.dbotthepony.mc.otm.capability.MatterTask;
|
import ru.dbotthepony.mc.otm.capability.MatterTask;
|
||||||
import ru.dbotthepony.mc.otm.capability.PatternState;
|
import ru.dbotthepony.mc.otm.capability.PatternState;
|
||||||
@ -27,6 +28,7 @@ import javax.annotation.Nonnull;
|
|||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
import static org.lwjgl.opengl.GL11.GL_ALWAYS;
|
import static org.lwjgl.opengl.GL11.GL_ALWAYS;
|
||||||
import static org.lwjgl.opengl.GL11.GL_LESS;
|
import static org.lwjgl.opengl.GL11.GL_LESS;
|
||||||
@ -48,6 +50,12 @@ public class MatterPanelScreen extends MatteryScreen<MatterPanelMenu> {
|
|||||||
imageHeight = 187;
|
imageHeight = 187;
|
||||||
|
|
||||||
titleLabelY = 5;
|
titleLabelY = 5;
|
||||||
|
|
||||||
|
for (int i = 0; i < 100; i++) {
|
||||||
|
menu.patterns.add(new PatternState(UUID.randomUUID(), Items.COOKED_BEEF, 0.4));
|
||||||
|
menu.patterns.add(new PatternState(UUID.randomUUID(), Items.DIAMOND, 0.6));
|
||||||
|
menu.patterns.add(new PatternState(UUID.randomUUID(), Items.COBBLESTONE, 0.1));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final int GRID_WIDTH = 8;
|
public static final int GRID_WIDTH = 8;
|
||||||
@ -95,10 +103,10 @@ public class MatterPanelScreen extends MatteryScreen<MatterPanelMenu> {
|
|||||||
scroll_panel.setDocking(Dock.RIGHT);
|
scroll_panel.setDocking(Dock.RIGHT);
|
||||||
scroll_panel.setupRowMultiplier(() -> {
|
scroll_panel.setupRowMultiplier(() -> {
|
||||||
if (tasks_tab.isActive()) {
|
if (tasks_tab.isActive()) {
|
||||||
return menu.tasks.size() / 9;
|
return menu.tasks.size() / GRID_WIDTH;
|
||||||
}
|
}
|
||||||
|
|
||||||
return menu.patterns.size() / 9;
|
return menu.patterns.size() / GRID_WIDTH;
|
||||||
});
|
});
|
||||||
|
|
||||||
var grid = new GridPanel(this, frame, 0, 0, GRID_WIDTH * AbstractSlotPanel.REGULAR_DIMENSIONS, 0, GRID_WIDTH, GRID_HEIGHT) {
|
var grid = new GridPanel(this, frame, 0, 0, GRID_WIDTH * AbstractSlotPanel.REGULAR_DIMENSIONS, 0, GRID_WIDTH, GRID_HEIGHT) {
|
||||||
@ -118,20 +126,24 @@ public class MatterPanelScreen extends MatteryScreen<MatterPanelMenu> {
|
|||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
protected ItemStack getItemStack() {
|
protected ItemStack getItemStack() {
|
||||||
if (slot >= menu.patterns.size()) {
|
var slot1 = slot + scroll_panel.getScroll(menu.patterns.size() / GRID_WIDTH) * GRID_WIDTH;
|
||||||
|
|
||||||
|
if (slot1 >= menu.patterns.size()) {
|
||||||
return ItemStack.EMPTY;
|
return ItemStack.EMPTY;
|
||||||
}
|
}
|
||||||
|
|
||||||
return menu.patterns.get(slot).stack();
|
return menu.patterns.get(slot1).stack();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected List<Component> getItemStackTooltip(ItemStack stack) {
|
protected List<Component> getItemStackTooltip(ItemStack stack) {
|
||||||
if (slot >= menu.patterns.size()) {
|
var slot1 = slot + scroll_panel.getScroll(menu.patterns.size() / GRID_WIDTH) * GRID_WIDTH;
|
||||||
|
|
||||||
|
if (slot1 >= menu.patterns.size()) {
|
||||||
return List.of();
|
return List.of();
|
||||||
}
|
}
|
||||||
|
|
||||||
return getPatternTooltip(super.getItemStackTooltip(stack), menu.patterns.get(slot));
|
return getPatternTooltip(super.getItemStackTooltip(stack), menu.patterns.get(slot1));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -155,22 +167,25 @@ public class MatterPanelScreen extends MatteryScreen<MatterPanelMenu> {
|
|||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
protected ItemStack getItemStack() {
|
protected ItemStack getItemStack() {
|
||||||
if (slot >= menu.tasks.size()) {
|
var slot1 = slot + scroll_panel.getScroll(menu.tasks.size() / GRID_WIDTH) * GRID_WIDTH;
|
||||||
|
|
||||||
|
if (slot1 >= menu.tasks.size()) {
|
||||||
return ItemStack.EMPTY;
|
return ItemStack.EMPTY;
|
||||||
}
|
}
|
||||||
|
|
||||||
var task = menu.tasks.get(slot);
|
var task = menu.tasks.get(slot1);
|
||||||
|
|
||||||
return task.stack(Math.max(task.required(), 1));
|
return task.stack(Math.max(task.required(), 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected List<Component> getItemStackTooltip(ItemStack stack) {
|
protected List<Component> getItemStackTooltip(ItemStack stack) {
|
||||||
if (slot >= menu.tasks.size()) {
|
var slot1 = slot + scroll_panel.getScroll(menu.tasks.size() / GRID_WIDTH) * GRID_WIDTH;
|
||||||
|
|
||||||
|
if (slot1 >= menu.tasks.size()) {
|
||||||
return List.of();
|
return List.of();
|
||||||
}
|
}
|
||||||
|
|
||||||
return getTaskTooltip(super.getItemStackTooltip(stack), menu.tasks.get(slot));
|
return getTaskTooltip(super.getItemStackTooltip(stack), menu.tasks.get(slot1));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -152,13 +152,14 @@ public class ScrollBarPanel extends EditablePanel {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (int) Math.floor(getScroll() * (max_rows - 1) + 0.5);
|
return (int) Math.floor(getScroll() * max_rows + 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
// public is for emulating input from outside
|
// public is for emulating input from outside
|
||||||
@Override
|
@Override
|
||||||
public boolean mouseScrolledInner(double mouse_x, double mouse_y, double scroll) {
|
public boolean mouseScrolledInner(double mouse_x, double mouse_y, double scroll) {
|
||||||
setScrollInternal((float) (this.scroll + scroll * scroll_multiplier.get()));
|
setScrollInternal((float) (this.scroll - scroll * scroll_multiplier.get()));
|
||||||
|
updateScrollBarPosition();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user