Re-add scrollbar

This commit is contained in:
raoulvdberge
2019-10-08 19:37:12 +02:00
parent a24d7e3dc0
commit 51956e6e5c
6 changed files with 42 additions and 139 deletions

View File

@@ -59,6 +59,8 @@ public class ClientSetup {
ScreenManager.registerFactory(RSContainers.CONTROLLER, ControllerScreen::new);
ScreenManager.registerFactory(RSContainers.DISK_DRIVE, DiskDriveScreen::new);
ScreenManager.registerFactory(RSContainers.GRID, new GridScreenFactory());
RSKeyBindings.init();
}
@SubscribeEvent

View File

@@ -1,7 +1,13 @@
package com.raoulvdberge.refinedstorage;
import net.minecraft.client.settings.KeyBinding;
import net.minecraft.client.util.InputMappings;
import net.minecraftforge.client.settings.KeyConflictContext;
import net.minecraftforge.fml.client.registry.ClientRegistry;
import org.lwjgl.glfw.GLFW;
public final class RSKeyBindings {
/*public static final KeyBinding FOCUS_SEARCH_BAR = new KeyBinding("key.refinedstorage.focusSearchBar", KeyConflictContext.GUI, Keyboard.KEY_TAB, "Refined Storage");
/*
public static final KeyBinding CLEAR_GRID_CRAFTING_MATRIX = new KeyBinding("key.refinedstorage.clearGridCraftingMatrix", KeyConflictContext.GUI, KeyModifier.CONTROL, Keyboard.KEY_X, "Refined Storage");
public static final KeyBinding OPEN_WIRELESS_GRID = new KeyBinding("key.refinedstorage.openWirelessGrid", KeyConflictContext.IN_GAME, 0, "Refined Storage");
public static final KeyBinding OPEN_WIRELESS_FLUID_GRID = new KeyBinding("key.refinedstorage.openWirelessFluidGrid", KeyConflictContext.IN_GAME, 0, "Refined Storage");
@@ -9,14 +15,16 @@ public final class RSKeyBindings {
public static final KeyBinding OPEN_WIRELESS_CRAFTING_MONITOR = new KeyBinding("key.refinedstorage.openWirelessCraftingMonitor", KeyConflictContext.IN_GAME, 0, "Refined Storage");
public static void init() {
ClientRegistry.registerKeyBinding(FOCUS_SEARCH_BAR);
ClientRegistry.registerKeyBinding(CLEAR_GRID_CRAFTING_MATRIX);
ClientRegistry.registerKeyBinding(OPEN_WIRELESS_GRID);
ClientRegistry.registerKeyBinding(OPEN_WIRELESS_FLUID_GRID);
ClientRegistry.registerKeyBinding(OPEN_PORTABLE_GRID);
ClientRegistry.registerKeyBinding(OPEN_WIRELESS_CRAFTING_MONITOR);
}*/
public static final KeyBinding FOCUS_SEARCH_BAR = new KeyBinding("key.refinedstorage.focusSearchBar", KeyConflictContext.GUI, InputMappings.Type.KEYSYM, GLFW.GLFW_KEY_TAB, "Refined Storage");
public static void init() {
// TODO
ClientRegistry.registerKeyBinding(FOCUS_SEARCH_BAR);
}
}

View File

@@ -1,33 +0,0 @@
package com.raoulvdberge.refinedstorage.apiimpl.network.grid;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.PlayerEntity;
public class GridOpenHandler implements Runnable {
//private MessageGridOpen message;
//public GridOpenHandler(MessageGridOpen message) {
// this.message = message;
//}
@Override
public void run() {
PlayerEntity player = Minecraft.getInstance().player;
//Pair<IGrid, TileEntity> grid = API.instance().getGridManager().createGrid(message.getGridId(), player, message.getStack(), message.getPos());
//if (grid == null) {
// return;
//}
//GuiGrid gui = new GuiGrid(null, null, grid.getLeft());
// @Volatile: Just set the windowId: from OpenGuiHandler#process
/*TODO player.openContainer = new ContainerGrid(grid.getLeft(), gui, grid.getRight() instanceof TileBase ? (TileBase) grid.getRight() : null, player);
player.openContainer.windowId = message.getWindowId();
gui.inventorySlots = player.openContainer;
FMLClientHandler.instance().showGuiScreen(gui);*/
}
}

View File

@@ -1,93 +0,0 @@
package com.raoulvdberge.refinedstorage.network;
import com.raoulvdberge.refinedstorage.apiimpl.network.grid.GridOpenHandler;
import io.netty.buffer.ByteBuf;
import net.minecraft.client.Minecraft;
import net.minecraft.item.ItemStack;
import net.minecraft.util.math.BlockPos;
import net.minecraftforge.fml.common.network.ByteBufUtils;
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
import javax.annotation.Nullable;
public class MessageGridOpen implements IMessage, IMessageHandler<MessageGridOpen, IMessage> {
private int windowId;
@Nullable
private BlockPos pos;
@Nullable
private ItemStack stack;
private int gridId;
public MessageGridOpen() {
}
public MessageGridOpen(int windowId, @Nullable BlockPos pos, int gridId, @Nullable ItemStack stack) {
if (pos == null && stack == null) {
throw new IllegalArgumentException("Can't be both null");
}
this.windowId = windowId;
this.pos = pos;
this.stack = stack;
this.gridId = gridId;
}
@Override
public void fromBytes(ByteBuf buf) {
windowId = buf.readInt();
gridId = buf.readInt();
if (buf.readBoolean()) {
pos = new BlockPos(buf.readInt(), buf.readInt(), buf.readInt());
}
if (buf.readBoolean()) {
stack = ByteBufUtils.readItemStack(buf);
}
}
@Override
public void toBytes(ByteBuf buf) {
buf.writeInt(windowId);
buf.writeInt(gridId);
buf.writeBoolean(pos != null);
if (pos != null) {
buf.writeInt(pos.getX());
buf.writeInt(pos.getY());
buf.writeInt(pos.getZ());
}
buf.writeBoolean(stack != null);
if (stack != null) {
ByteBufUtils.writeItemStack(buf, stack);
}
}
public int getWindowId() {
return windowId;
}
@Nullable
public BlockPos getPos() {
return pos;
}
@Nullable
public ItemStack getStack() {
return stack;
}
public int getGridId() {
return gridId;
}
@Override
public IMessage onMessage(MessageGridOpen message, MessageContext ctx) {
Minecraft.getMinecraft().addScheduledTask(new GridOpenHandler(message));
return null;
}
}

View File

@@ -322,9 +322,9 @@ public class GridScreen extends BaseScreen<GridContainer> implements IScreenInfo
tabs.drawForeground(x, y - tabs.getHeight(), mouseX, mouseY, true);
if (searchField != null) {
searchField.render(0, 0, 0);
}
scrollbar.render();
}
@Override
@@ -417,6 +417,10 @@ public class GridScreen extends BaseScreen<GridContainer> implements IScreenInfo
return true;
}
if (scrollbar.mouseClicked(mouseX, mouseY, clickedButton)) {
return true;
}
boolean clickedClear = clickedButton == 0 && isOverClear(mouseX - guiLeft, mouseY - guiTop);
boolean clickedCreatePattern = clickedButton == 0 && isOverCreatePattern(mouseX - guiLeft, mouseY - guiTop);
@@ -484,6 +488,23 @@ public class GridScreen extends BaseScreen<GridContainer> implements IScreenInfo
return super.mouseClicked(mouseX, mouseY, clickedButton);
}
@Override
public void mouseMoved(double mx, double my) {
scrollbar.mouseMoved(mx, my);
super.mouseMoved(mx, my);
}
@Override
public boolean mouseReleased(double mx, double my, int button) {
return scrollbar.mouseReleased(mx, my, button) || super.mouseReleased(mx, my, button);
}
@Override
public boolean mouseScrolled(double x, double y, double delta) {
return this.scrollbar.mouseScrolled(x, y, delta) || super.mouseScrolled(x, y, delta);
}
@Override
public boolean keyPressed(int key, int scanCode, int modifiers) {
if (searchField.keyPressed(key, scanCode, modifiers) || searchField.func_212955_f()) {
@@ -514,11 +535,9 @@ public class GridScreen extends BaseScreen<GridContainer> implements IScreenInfo
}
public void updateScrollbar() {
if (scrollbar != null) {
scrollbar.setEnabled(getRows() > getVisibleRows());
scrollbar.setMaxOffset(getRows() - getVisibleRows());
}
}
public static List<IGridSorter> getSorters() {
List<IGridSorter> sorters = new LinkedList<>();

View File

@@ -1,5 +1,6 @@
package com.raoulvdberge.refinedstorage.screen.widget;
import com.raoulvdberge.refinedstorage.RSKeyBindings;
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.widget.TextFieldWidget;
@@ -82,14 +83,13 @@ public class SearchWidget extends TextFieldWidget {
}
}
/* TODO
if (keyCode == RSKeyBindings.FOCUS_SEARCH_BAR.getKeyCode() && canLoseFocus) {
if (keyCode == RSKeyBindings.FOCUS_SEARCH_BAR.getKey().getKeyCode() && canLoseFocus) {
setFocused(!isFocused());
saveHistory();
result = true;
}*/
}
if (result) {
listeners.forEach(Runnable::run);