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.world.entity.player.Inventory;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.Items;
|
||||
import ru.dbotthepony.mc.otm.OverdriveThatMatters;
|
||||
import ru.dbotthepony.mc.otm.capability.MatterTask;
|
||||
import ru.dbotthepony.mc.otm.capability.PatternState;
|
||||
@ -27,6 +28,7 @@ import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import static org.lwjgl.opengl.GL11.GL_ALWAYS;
|
||||
import static org.lwjgl.opengl.GL11.GL_LESS;
|
||||
@ -48,6 +50,12 @@ public class MatterPanelScreen extends MatteryScreen<MatterPanelMenu> {
|
||||
imageHeight = 187;
|
||||
|
||||
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;
|
||||
@ -95,10 +103,10 @@ public class MatterPanelScreen extends MatteryScreen<MatterPanelMenu> {
|
||||
scroll_panel.setDocking(Dock.RIGHT);
|
||||
scroll_panel.setupRowMultiplier(() -> {
|
||||
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) {
|
||||
@ -118,20 +126,24 @@ public class MatterPanelScreen extends MatteryScreen<MatterPanelMenu> {
|
||||
@Nonnull
|
||||
@Override
|
||||
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 menu.patterns.get(slot).stack();
|
||||
return menu.patterns.get(slot1).stack();
|
||||
}
|
||||
|
||||
@Override
|
||||
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 getPatternTooltip(super.getItemStackTooltip(stack), menu.patterns.get(slot));
|
||||
return getPatternTooltip(super.getItemStackTooltip(stack), menu.patterns.get(slot1));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -155,22 +167,25 @@ public class MatterPanelScreen extends MatteryScreen<MatterPanelMenu> {
|
||||
@Nonnull
|
||||
@Override
|
||||
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;
|
||||
}
|
||||
|
||||
var task = menu.tasks.get(slot);
|
||||
|
||||
var task = menu.tasks.get(slot1);
|
||||
return task.stack(Math.max(task.required(), 1));
|
||||
}
|
||||
|
||||
@Override
|
||||
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 getTaskTooltip(super.getItemStackTooltip(stack), menu.tasks.get(slot));
|
||||
return getTaskTooltip(super.getItemStackTooltip(stack), menu.tasks.get(slot1));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -152,13 +152,14 @@ public class ScrollBarPanel extends EditablePanel {
|
||||
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
|
||||
@Override
|
||||
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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user