package advancedsystemsmanager.tileentities.manager; import advancedsystemsmanager.AdvancedSystemsManager; import advancedsystemsmanager.client.gui.GuiSettings; import advancedsystemsmanager.helpers.ConfigHandler; import advancedsystemsmanager.network.ASMPacket; import advancedsystemsmanager.network.PacketHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import java.util.LinkedHashMap; import java.util.Map; public final class Settings { public static final String AUTO_CLOSE_GROUP = "autoCloseGroup"; public static final String LARGE_OPEN = "largeOpenHitBox"; public static final String LARGE_OPEN_MENU = "largeOpenHitBoxMenu"; public static final String QUICK_GROUP_OPEN = "quickGroupOpen"; public static final String COMMAND_TYPES = "commandTypes"; public static final String AUTO_SIDE = "autoSide"; public static final String AUTO_BLACKLIST = "autoBlacklist"; public static final String CRAFT_MOVE_FIRST = "priorityMoveFirst"; public static final String ENLARGE_INTERFACES = "enlargeInterfaces"; public static final String MIDDLE_CLICK = "middleClick"; static { settingsRegistry = new LinkedHashMap<String, Boolean>(9); registerSetting(AUTO_CLOSE_GROUP, false); registerSetting(LARGE_OPEN, true); registerSetting(LARGE_OPEN_MENU, true); registerSetting(QUICK_GROUP_OPEN, false); registerSetting(COMMAND_TYPES, false); registerSetting(AUTO_SIDE, true); registerSetting(AUTO_BLACKLIST, true); registerSetting(CRAFT_MOVE_FIRST, false); registerSetting(ENLARGE_INTERFACES, false); registerSetting(MIDDLE_CLICK, true); } public static Map<String, Boolean> settingsRegistry; private Settings() { } public static void registerSetting(String name, boolean value) { if (!settingsRegistry.containsKey(name)) settingsRegistry.put(name, value); } public static void setSetting(String name, boolean value) { settingsRegistry.put(name, value); AdvancedSystemsManager.configHandler.setConfigValue(name, String.valueOf(value)); } private static void save() { AdvancedSystemsManager.configHandler.saveSettings(settingsRegistry); } public static boolean getSetting(String name) { return settingsRegistry.get(name); } @SideOnly(Side.CLIENT) public static void openMenu(TileEntityManager manager) { manager.specialRenderer = new GuiSettings(manager); } public static void loadDefault() { settingsRegistry = new LinkedHashMap<String, Boolean>(ConfigHandler.managerSettings); } public static boolean isAutoCloseGroup() { return settingsRegistry.get(AUTO_CLOSE_GROUP); } public static boolean isLargeOpenHitBox() { return settingsRegistry.get(LARGE_OPEN); } public static boolean isLargeOpenHitBoxMenu() { return settingsRegistry.get(LARGE_OPEN_MENU); } public static boolean isQuickGroupOpen() { return settingsRegistry.get(QUICK_GROUP_OPEN); } public static boolean isCommandTypes() { return settingsRegistry.get(COMMAND_TYPES); } public static boolean isAutoSide() { return settingsRegistry.get(AUTO_SIDE); } public static boolean isAutoBlacklist() { return settingsRegistry.get(AUTO_BLACKLIST); } public static boolean isEnlargeInterfaces() { return settingsRegistry.get(ENLARGE_INTERFACES); } public static boolean isPriorityMoveFirst() { return settingsRegistry.get(CRAFT_MOVE_FIRST); } public static boolean isLimitless(TileEntityManager manager) { return (manager.getWorldObj().getBlockMetadata(manager.xCoord, manager.yCoord, manager.zCoord) & 1) != 0; } public static void setLimitless(TileEntityManager manager, boolean limitless) { if (manager.getWorldObj().isRemote) { ASMPacket packet = PacketHandler.getServerPacket(); packet.writeByte(PacketHandler.SETTING_MESSAGE); packet.writeBoolean(limitless); packet.sendServerPacket(); } else { manager.setSubtype(limitless ? 1 : 0); } } }