/* * Copyright (c) CovertJaguar, 2014 http://railcraft.info * * This code is the property of CovertJaguar * and may only be used with explicit written * permission unless otherwise specified on the * license page at http://railcraft.info/wiki/info:license. */ package mods.railcraft.client.core; import cpw.mods.fml.client.registry.ClientRegistry; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.TickEvent; import mods.railcraft.common.core.Railcraft; import mods.railcraft.common.plugins.forge.ChatPlugin; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiChat; import net.minecraft.client.settings.KeyBinding; import net.minecraft.entity.player.EntityPlayer; import org.lwjgl.input.Keyboard; import java.util.EnumMap; import java.util.EnumSet; import java.util.Map; import mods.railcraft.common.items.ItemGoggles.GoggleAura; /** * @author CovertJaguar <http://www.railcraft.info> */ public class AuraKeyHandler { public static final AuraKeyHandler INSTANCE = new AuraKeyHandler(); private static EnumSet<GoggleAura> activeAuras = EnumSet.noneOf(GoggleAura.class); private static EnumMap<GoggleAura, KeyBinding> keyBindings; private AuraKeyHandler() { keyBindings = new EnumMap<GoggleAura, KeyBinding>(GoggleAura.class); keyBindings.put(GoggleAura.ANCHOR, new KeyBinding("railcraft.keybind.aura.anchor", Keyboard.KEY_F9, Railcraft.MOD_ID)); keyBindings.put(GoggleAura.TUNING, new KeyBinding("railcraft.keybind.aura.tuning", Keyboard.KEY_P, Railcraft.MOD_ID)); keyBindings.put(GoggleAura.SURVEYING, new KeyBinding("railcraft.keybind.aura.surveying", Keyboard.KEY_O, Railcraft.MOD_ID)); keyBindings.put(GoggleAura.SIGNALLING, new KeyBinding("railcraft.keybind.aura.signalling", Keyboard.KEY_I, Railcraft.MOD_ID)); for (KeyBinding binding : keyBindings.values()) ClientRegistry.registerKeyBinding(binding); } public static boolean isAuraEnabled(GoggleAura aura) { return activeAuras.contains(aura); } @SubscribeEvent public void tick(TickEvent.ClientTickEvent event) { if (Minecraft.getMinecraft().currentScreen instanceof GuiChat) return; EntityPlayer player = Minecraft.getMinecraft().thePlayer; for (Map.Entry<GoggleAura, KeyBinding> keyBinding : keyBindings.entrySet()) { if (keyBinding.getValue().isPressed()) { GoggleAura aura = keyBinding.getKey(); if (isAuraEnabled(aura)) { activeAuras.remove(aura); ChatPlugin.sendLocalizedChat(player, "railcraft.gui.aura.disable", "\u00A75" + aura + "\u00A77"); } else { activeAuras.add(aura); ChatPlugin.sendLocalizedChat(player, "railcraft.gui.aura.enable", "\u00A75" + aura + "\u00A77"); } } } } }