Sync selected tab to server
This commit is contained in:
@@ -62,7 +62,6 @@ public class GuiGrid extends GuiBase {
|
||||
private IGrid grid;
|
||||
|
||||
private boolean hadTabs = false;
|
||||
private int tabSelected = -1;
|
||||
private int tabHovering = -1;
|
||||
|
||||
private int slotNumber;
|
||||
@@ -88,12 +87,11 @@ public class GuiGrid extends GuiBase {
|
||||
}
|
||||
|
||||
public GuiGrid(ContainerGrid container, IGrid grid) {
|
||||
super(container, grid.getType() == EnumGridType.FLUID ? 193 : 227, ((grid.getType() == EnumGridType.CRAFTING || grid.getType() == EnumGridType.PATTERN) ? 247 : 208) + (!grid.getTabs().isEmpty() ? ContainerGrid.TAB_HEIGHT : 0));
|
||||
super(container, grid.getType() == EnumGridType.FLUID ? 193 : 227, (grid.getType() == EnumGridType.CRAFTING || grid.getType() == EnumGridType.PATTERN) ? 247 : 208);
|
||||
|
||||
this.container = container;
|
||||
this.grid = grid;
|
||||
this.wasConnected = this.grid.isActive();
|
||||
this.hadTabs = !grid.getTabs().isEmpty();
|
||||
|
||||
this.konamiOffsetsX = new int[9 * getVisibleRows()];
|
||||
this.konamiOffsetsY = new int[9 * getVisibleRows()];
|
||||
@@ -152,7 +150,11 @@ public class GuiGrid extends GuiBase {
|
||||
if (grid.isActive()) {
|
||||
stacks.addAll(grid.getType() == EnumGridType.FLUID ? FLUIDS.values() : ITEMS.values());
|
||||
|
||||
List<IGridFilter> filters = GridFilterParser.getFilters(grid, searchField.getText(), (tabSelected >= 0 && tabSelected < grid.getTabs().size()) ? grid.getTabs().get(tabSelected).getFilters() : grid.getFilteredItems());
|
||||
List<IGridFilter> filters = GridFilterParser.getFilters(
|
||||
grid,
|
||||
searchField.getText(),
|
||||
(grid.getTabSelected() >= 0 && grid.getTabSelected() < grid.getTabs().size()) ? grid.getTabs().get(grid.getTabSelected()).getFilters() : grid.getFilteredItems()
|
||||
);
|
||||
|
||||
Iterator<IClientStack> t = stacks.iterator();
|
||||
|
||||
@@ -210,13 +212,14 @@ public class GuiGrid extends GuiBase {
|
||||
if (hadTabs != hasTabs) {
|
||||
hadTabs = hasTabs;
|
||||
|
||||
height = (grid.getType() == EnumGridType.CRAFTING || grid.getType() == EnumGridType.PATTERN) ? 247 : 208;
|
||||
ySize = height;
|
||||
ySize = (grid.getType() == EnumGridType.CRAFTING || grid.getType() == EnumGridType.PATTERN) ? 247 : 208;
|
||||
|
||||
if (hasTabs) {
|
||||
height += ContainerGrid.TAB_HEIGHT;
|
||||
ySize += ContainerGrid.TAB_HEIGHT;
|
||||
}
|
||||
|
||||
this.height = ySize;
|
||||
|
||||
initGui();
|
||||
|
||||
container.updateSlotsAccordingToTabs();
|
||||
@@ -264,13 +267,13 @@ public class GuiGrid extends GuiBase {
|
||||
|
||||
private void renderTab(GridTab tab, boolean foregroundLayer, int x, int y, int mouseX, int mouseY) {
|
||||
int i = grid.getTabs().indexOf(tab);
|
||||
boolean selected = i == tabSelected;
|
||||
boolean selected = i == grid.getTabSelected();
|
||||
|
||||
if ((foregroundLayer && !selected) || (!foregroundLayer && selected)) {
|
||||
return;
|
||||
}
|
||||
|
||||
int tx = x + ((ContainerGrid.TAB_WIDTH + 2) * i);
|
||||
int tx = x + ((ContainerGrid.TAB_WIDTH + 1) * i);
|
||||
int ty = y;
|
||||
|
||||
bindTexture("icons.png");
|
||||
@@ -301,7 +304,7 @@ public class GuiGrid extends GuiBase {
|
||||
|
||||
RenderHelper.enableGUIStandardItemLighting();
|
||||
|
||||
drawItem(otx + 6, ty + 8 - (!selected ? 3 : 0), tab.getIcon());
|
||||
drawItem(otx + 6, ty + 8 - (!selected ? 2 : 0), tab.getIcon());
|
||||
|
||||
if (inBounds(tx, ty, ContainerGrid.TAB_WIDTH, ContainerGrid.TAB_HEIGHT, mouseX, mouseY)) {
|
||||
tabHovering = i;
|
||||
@@ -430,9 +433,7 @@ public class GuiGrid extends GuiBase {
|
||||
searchField.mouseClicked(mouseX, mouseY, clickedButton);
|
||||
|
||||
if (tabHovering >= 0 && tabHovering < grid.getTabs().size()) {
|
||||
tabSelected = tabSelected == tabHovering ? -1 : tabHovering;
|
||||
|
||||
sortItems();
|
||||
grid.onTabSelectionChanged(tabHovering);
|
||||
}
|
||||
|
||||
if (clickedButton == 1 && inBounds(79, 5 + getTabDelta(), 90, 12, mouseX - guiLeft, mouseY - guiTop)) {
|
||||
|
@@ -21,6 +21,7 @@ public class ItemWirelessGrid extends ItemNetworkItem {
|
||||
tag.setInteger(TileGrid.NBT_SORTING_DIRECTION, TileGrid.SORTING_DIRECTION_DESCENDING);
|
||||
tag.setInteger(TileGrid.NBT_SORTING_TYPE, TileGrid.SORTING_TYPE_QUANTITY);
|
||||
tag.setInteger(TileGrid.NBT_SEARCH_BOX_MODE, TileGrid.SEARCH_BOX_MODE_NORMAL);
|
||||
tag.setInteger(TileGrid.NBT_TAB_SELECTED, -1);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -52,4 +53,8 @@ public class ItemWirelessGrid extends ItemNetworkItem {
|
||||
public static int getSearchBoxMode(ItemStack stack) {
|
||||
return stack.getTagCompound().getInteger(TileGrid.NBT_SEARCH_BOX_MODE);
|
||||
}
|
||||
|
||||
public static int getTabSelected(ItemStack stack) {
|
||||
return (stack.hasTagCompound() && stack.getTagCompound().hasKey(TileGrid.NBT_TAB_SELECTED)) ? stack.getTagCompound().getInteger(TileGrid.NBT_TAB_SELECTED) : -1;
|
||||
}
|
||||
}
|
||||
|
@@ -14,15 +14,17 @@ public class MessageWirelessGridSettingsUpdate extends MessageHandlerPlayerToSer
|
||||
private int sortingDirection;
|
||||
private int sortingType;
|
||||
private int searchBoxMode;
|
||||
private int tabSelected;
|
||||
|
||||
public MessageWirelessGridSettingsUpdate() {
|
||||
}
|
||||
|
||||
public MessageWirelessGridSettingsUpdate(int viewType, int sortingDirection, int sortingType, int searchBoxMode) {
|
||||
public MessageWirelessGridSettingsUpdate(int viewType, int sortingDirection, int sortingType, int searchBoxMode, int tabSelected) {
|
||||
this.viewType = viewType;
|
||||
this.sortingDirection = sortingDirection;
|
||||
this.sortingType = sortingType;
|
||||
this.searchBoxMode = searchBoxMode;
|
||||
this.tabSelected = tabSelected;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -31,6 +33,7 @@ public class MessageWirelessGridSettingsUpdate extends MessageHandlerPlayerToSer
|
||||
sortingDirection = buf.readInt();
|
||||
sortingType = buf.readInt();
|
||||
searchBoxMode = buf.readInt();
|
||||
tabSelected = buf.readInt();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -39,6 +42,7 @@ public class MessageWirelessGridSettingsUpdate extends MessageHandlerPlayerToSer
|
||||
buf.writeInt(sortingDirection);
|
||||
buf.writeInt(sortingType);
|
||||
buf.writeInt(searchBoxMode);
|
||||
buf.writeInt(tabSelected);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -64,6 +68,8 @@ public class MessageWirelessGridSettingsUpdate extends MessageHandlerPlayerToSer
|
||||
if (TileGrid.isValidSearchBoxMode(message.searchBoxMode)) {
|
||||
stack.getTagCompound().setInteger(TileGrid.NBT_SEARCH_BOX_MODE, message.searchBoxMode);
|
||||
}
|
||||
|
||||
stack.getTagCompound().setInteger(TileGrid.NBT_TAB_SELECTED, message.tabSelected);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -32,6 +32,8 @@ public interface IGrid {
|
||||
|
||||
int getSearchBoxMode();
|
||||
|
||||
int getTabSelected();
|
||||
|
||||
void onViewTypeChanged(int type);
|
||||
|
||||
void onSortingTypeChanged(int type);
|
||||
@@ -40,6 +42,8 @@ public interface IGrid {
|
||||
|
||||
void onSearchBoxModeChanged(int searchBoxMode);
|
||||
|
||||
void onTabSelectionChanged(int tab);
|
||||
|
||||
List<GridFilteredItem> getFilteredItems();
|
||||
|
||||
List<GridTab> getTabs();
|
||||
|
@@ -110,6 +110,24 @@ public class TileGrid extends TileNode implements IGrid {
|
||||
}
|
||||
});
|
||||
|
||||
public static final TileDataParameter<Integer> TAB_SELECTED = new TileDataParameter<>(DataSerializers.VARINT, 0, new ITileDataProducer<Integer, TileGrid>() {
|
||||
@Override
|
||||
public Integer getValue(TileGrid tile) {
|
||||
return tile.tabSelected;
|
||||
}
|
||||
}, new ITileDataConsumer<Integer, TileGrid>() {
|
||||
@Override
|
||||
public void setValue(TileGrid tile, Integer value) {
|
||||
tile.tabSelected = value == tile.tabSelected ? -1 : value;
|
||||
|
||||
tile.markDirty();
|
||||
}
|
||||
}, parameter -> {
|
||||
if (Minecraft.getMinecraft().currentScreen instanceof GuiGrid) {
|
||||
((GuiGrid) Minecraft.getMinecraft().currentScreen).markForSorting();
|
||||
}
|
||||
});
|
||||
|
||||
public static final TileDataParameter<Boolean> OREDICT_PATTERN = new TileDataParameter<>(DataSerializers.BOOLEAN, false, new ITileDataProducer<Boolean, TileGrid>() {
|
||||
@Override
|
||||
public Boolean getValue(TileGrid tile) {
|
||||
@@ -133,6 +151,7 @@ public class TileGrid extends TileNode implements IGrid {
|
||||
public static final String NBT_SORTING_TYPE = "SortingType";
|
||||
public static final String NBT_SEARCH_BOX_MODE = "SearchBoxMode";
|
||||
public static final String NBT_OREDICT_PATTERN = "OredictPattern";
|
||||
public static final String NBT_TAB_SELECTED = "TabSelected";
|
||||
|
||||
public static final int SORTING_DIRECTION_ASCENDING = 0;
|
||||
public static final int SORTING_DIRECTION_DESCENDING = 1;
|
||||
@@ -175,6 +194,8 @@ public class TileGrid extends TileNode implements IGrid {
|
||||
private int sortingType = SORTING_TYPE_QUANTITY;
|
||||
private int searchBoxMode = SEARCH_BOX_MODE_NORMAL;
|
||||
|
||||
private int tabSelected = -1;
|
||||
|
||||
private boolean oredictPattern = false;
|
||||
|
||||
public TileGrid() {
|
||||
@@ -182,6 +203,7 @@ public class TileGrid extends TileNode implements IGrid {
|
||||
dataManager.addWatchedParameter(SORTING_DIRECTION);
|
||||
dataManager.addWatchedParameter(SORTING_TYPE);
|
||||
dataManager.addWatchedParameter(SEARCH_BOX_MODE);
|
||||
dataManager.addWatchedParameter(TAB_SELECTED);
|
||||
dataManager.addWatchedParameter(OREDICT_PATTERN);
|
||||
}
|
||||
|
||||
@@ -463,6 +485,11 @@ public class TileGrid extends TileNode implements IGrid {
|
||||
return getWorld().isRemote ? SEARCH_BOX_MODE.getValue() : searchBoxMode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTabSelected() {
|
||||
return getWorld().isRemote ? TAB_SELECTED.getValue() : tabSelected;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewTypeChanged(int type) {
|
||||
TileDataManager.setParameter(VIEW_TYPE, type);
|
||||
@@ -483,6 +510,11 @@ public class TileGrid extends TileNode implements IGrid {
|
||||
TileDataManager.setParameter(SEARCH_BOX_MODE, searchBoxMode);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTabSelectionChanged(int tab) {
|
||||
TileDataManager.setParameter(TAB_SELECTED, tab);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileDataParameter<Integer> getRedstoneModeConfig() {
|
||||
return REDSTONE_MODE;
|
||||
@@ -500,6 +532,10 @@ public class TileGrid extends TileNode implements IGrid {
|
||||
RSUtils.readItemsLegacy(matrix, 0, tag);
|
||||
RSUtils.readItems(patterns, 1, tag);
|
||||
RSUtils.readItems(filter, 2, tag);
|
||||
|
||||
if (tag.hasKey(NBT_TAB_SELECTED)) {
|
||||
tabSelected = tag.getInteger(NBT_TAB_SELECTED);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -510,6 +546,8 @@ public class TileGrid extends TileNode implements IGrid {
|
||||
RSUtils.writeItems(patterns, 1, tag);
|
||||
RSUtils.writeItems(filter, 2, tag);
|
||||
|
||||
tag.setInteger(NBT_TAB_SELECTED, tabSelected);
|
||||
|
||||
return tag;
|
||||
}
|
||||
|
||||
|
@@ -37,6 +37,7 @@ public class WirelessGrid implements IGrid {
|
||||
private int sortingType;
|
||||
private int sortingDirection;
|
||||
private int searchBoxMode;
|
||||
private int tabSelected;
|
||||
|
||||
private List<GridFilteredItem> filteredItems = new ArrayList<>();
|
||||
private List<GridTab> tabs = new ArrayList<>();
|
||||
@@ -65,6 +66,7 @@ public class WirelessGrid implements IGrid {
|
||||
this.sortingType = ItemWirelessGrid.getSortingType(stack);
|
||||
this.sortingDirection = ItemWirelessGrid.getSortingDirection(stack);
|
||||
this.searchBoxMode = ItemWirelessGrid.getSearchBoxMode(stack);
|
||||
this.tabSelected = ItemWirelessGrid.getTabSelected(stack);
|
||||
|
||||
if (stack.hasTagCompound()) {
|
||||
for (int i = 0; i < 4; ++i) {
|
||||
@@ -124,9 +126,14 @@ public class WirelessGrid implements IGrid {
|
||||
return searchBoxMode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTabSelected() {
|
||||
return tabSelected;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewTypeChanged(int type) {
|
||||
RS.INSTANCE.network.sendToServer(new MessageWirelessGridSettingsUpdate(type, getSortingDirection(), getSortingType(), getSearchBoxMode()));
|
||||
RS.INSTANCE.network.sendToServer(new MessageWirelessGridSettingsUpdate(type, getSortingDirection(), getSortingType(), getSearchBoxMode(), tabSelected));
|
||||
|
||||
this.viewType = type;
|
||||
|
||||
@@ -135,7 +142,7 @@ public class WirelessGrid implements IGrid {
|
||||
|
||||
@Override
|
||||
public void onSortingTypeChanged(int type) {
|
||||
RS.INSTANCE.network.sendToServer(new MessageWirelessGridSettingsUpdate(getViewType(), getSortingDirection(), type, getSearchBoxMode()));
|
||||
RS.INSTANCE.network.sendToServer(new MessageWirelessGridSettingsUpdate(getViewType(), getSortingDirection(), type, getSearchBoxMode(), tabSelected));
|
||||
|
||||
this.sortingType = type;
|
||||
|
||||
@@ -144,7 +151,7 @@ public class WirelessGrid implements IGrid {
|
||||
|
||||
@Override
|
||||
public void onSortingDirectionChanged(int direction) {
|
||||
RS.INSTANCE.network.sendToServer(new MessageWirelessGridSettingsUpdate(getViewType(), direction, getSortingType(), getSearchBoxMode()));
|
||||
RS.INSTANCE.network.sendToServer(new MessageWirelessGridSettingsUpdate(getViewType(), direction, getSortingType(), getSearchBoxMode(), tabSelected));
|
||||
|
||||
this.sortingDirection = direction;
|
||||
|
||||
@@ -153,11 +160,20 @@ public class WirelessGrid implements IGrid {
|
||||
|
||||
@Override
|
||||
public void onSearchBoxModeChanged(int searchBoxMode) {
|
||||
RS.INSTANCE.network.sendToServer(new MessageWirelessGridSettingsUpdate(getViewType(), getSortingDirection(), getSortingType(), searchBoxMode));
|
||||
RS.INSTANCE.network.sendToServer(new MessageWirelessGridSettingsUpdate(getViewType(), getSortingDirection(), getSortingType(), searchBoxMode, tabSelected));
|
||||
|
||||
this.searchBoxMode = searchBoxMode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTabSelectionChanged(int tab) {
|
||||
RS.INSTANCE.network.sendToServer(new MessageWirelessGridSettingsUpdate(getViewType(), getSortingDirection(), getSortingType(), searchBoxMode, tab));
|
||||
|
||||
this.tabSelected = tab;
|
||||
|
||||
GuiGrid.markForSorting();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<GridFilteredItem> getFilteredItems() {
|
||||
return filteredItems;
|
||||
|
Reference in New Issue
Block a user