package net.minecraft.client.settings; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Set; import net.minecraft.client.resources.I18n; import net.minecraft.util.IntHashMap; @SideOnly(Side.CLIENT) public class KeyBinding implements Comparable { private static final List keybindArray = new ArrayList(); private static final IntHashMap hash = new IntHashMap(); private static final Set keybindSet = new HashSet(); private final String keyDescription; private final int keyCodeDefault; private final String keyCategory; private int keyCode; /** because _303 wanted me to call it that(Caironater) */ private boolean pressed; private int pressTime; private static final String __OBFID = "CL_00000628"; public static void onTick(int keyCode) { if (keyCode != 0) { KeyBinding keybinding = (KeyBinding)hash.lookup(keyCode); if (keybinding != null) { ++keybinding.pressTime; } } } public static void setKeyBindState(int keyCode, boolean pressed) { if (keyCode != 0) { KeyBinding keybinding = (KeyBinding)hash.lookup(keyCode); if (keybinding != null) { keybinding.pressed = pressed; } } } public static void unPressAllKeys() { Iterator iterator = keybindArray.iterator(); while (iterator.hasNext()) { KeyBinding keybinding = (KeyBinding)iterator.next(); keybinding.unpressKey(); } } public static void resetKeyBindingArrayAndHash() { hash.clearMap(); Iterator iterator = keybindArray.iterator(); while (iterator.hasNext()) { KeyBinding keybinding = (KeyBinding)iterator.next(); hash.addKey(keybinding.keyCode, keybinding); } } public static Set getKeybinds() { return keybindSet; } public KeyBinding(String description, int keyCode, String category) { this.keyDescription = description; this.keyCode = keyCode; this.keyCodeDefault = keyCode; this.keyCategory = category; keybindArray.add(this); hash.addKey(keyCode, this); keybindSet.add(category); } public boolean getIsKeyPressed() { return this.pressed; } public String getKeyCategory() { return this.keyCategory; } public boolean isPressed() { if (this.pressTime == 0) { return false; } else { --this.pressTime; return true; } } private void unpressKey() { this.pressTime = 0; this.pressed = false; } public String getKeyDescription() { return this.keyDescription; } public int getKeyCodeDefault() { return this.keyCodeDefault; } public int getKeyCode() { return this.keyCode; } public void setKeyCode(int keyCode) { this.keyCode = keyCode; } public int compareTo(KeyBinding p_compareTo_1_) { int i = I18n.format(this.keyCategory, new Object[0]).compareTo(I18n.format(p_compareTo_1_.keyCategory, new Object[0])); if (i == 0) { i = I18n.format(this.keyDescription, new Object[0]).compareTo(I18n.format(p_compareTo_1_.keyDescription, new Object[0])); } return i; } public int compareTo(Object p_compareTo_1_) { return this.compareTo((KeyBinding)p_compareTo_1_); } }