package advancedsystemsmanager.registry; import advancedsystemsmanager.api.gui.IManagerButton; import advancedsystemsmanager.api.gui.IManagerButtonProvider; import advancedsystemsmanager.flow.FlowComponent; import advancedsystemsmanager.client.gui.ManagerButtonList; import advancedsystemsmanager.tileentities.manager.Settings; import advancedsystemsmanager.network.ASMPacket; import advancedsystemsmanager.reference.Names; import advancedsystemsmanager.tileentities.manager.DefaultButtonProvider; import advancedsystemsmanager.tileentities.manager.ManagerButton; import advancedsystemsmanager.tileentities.manager.TileEntityManager; import net.minecraft.client.gui.GuiScreen; import java.util.ArrayList; import java.util.List; public class ManagerButtonRegistry { private static List<IManagerButtonProvider> buttonProviders = new ArrayList<IManagerButtonProvider>(); static { registerButtonProvider(new DefaultButtonProvider()); } public static ManagerButtonList getButtons(TileEntityManager manager) { ManagerButtonList buttons = new ManagerButtonList(); getButtons(manager, buttons); return buttons; } public static void getButtons(TileEntityManager manager, List<IManagerButton> buttons) { for (IManagerButtonProvider provider : buttonProviders) buttons.addAll(provider.getButtons(manager)); buttons.add(new ManagerButton(manager, Names.PREFERENCES, 36, 36) { @Override public boolean readData(ASMPacket packet) { return false; } @Override public boolean validClick() { return true; } @Override public boolean writeData(ASMPacket packet) { Settings.openMenu(manager); return false; } }); buttons.add(new ManagerButton(manager, Names.EXIT_GROUP, 36, 90) { @Override public String getMouseOver() { for (FlowComponent item : manager.getFlowItems()) { if (item.isBeingMoved()) { return Names.EXIT_GROUP_DROP; } } return super.getMouseOver(); } @Override public boolean activateOnRelease() { for (FlowComponent item : manager.getFlowItems()) { if (item.isBeingMoved()) { return true; } } return false; } @Override public boolean readData(ASMPacket packet) { int id = packet.readInt(); FlowComponent component = manager.getFlowItem(id); boolean moveCluster = packet.readBoolean(); if (component.getParent() != null) { FlowComponent.moveComponents(component, component.getParent().getParent(), moveCluster); } return true; } @Override public boolean isVisible() { return manager.selectedGroup != null; } @Override public boolean validClick() { return true; } @Override public boolean writeData(ASMPacket packet) { for (FlowComponent item : manager.getFlowItems()) { if (item.isBeingMoved()) { //For the server only manager.serverPacket = true; packet.writeInt(item.getId()); packet.writeBoolean(GuiScreen.isShiftKeyDown()); item.resetPosition(); return true; } } //Client only manager.selectedGroup = manager.selectedGroup.getParent(); return false; } }); } public static void registerButtonProvider(IManagerButtonProvider provider) { buttonProviders.add(provider); } }