package mods.eln.client;
import cpw.mods.fml.client.registry.ClientRegistry;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.common.gameevent.InputEvent.KeyInputEvent;
import cpw.mods.fml.common.gameevent.TickEvent.ClientTickEvent;
import cpw.mods.fml.common.gameevent.TickEvent.Phase;
import mods.eln.Eln;
import mods.eln.misc.UtilsClient;
import mods.eln.wiki.Root;
import net.minecraft.client.Minecraft;
import net.minecraft.client.settings.KeyBinding;
import net.minecraft.util.StatCollector;
import org.lwjgl.input.Keyboard;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
//import mods.eln.wiki.Root;
public class ClientKeyHandler {
static public final int openWikiId = 0;
static public final int wrenchId = 1;
static final String openWiki = "Open Wiki";
static final String wrench = "Wrench";
private static final int[] keyValues = {Keyboard.KEY_X, Keyboard.KEY_C};
private static final String[] desc = {openWiki, wrench};
public static final KeyBinding[] keys = new KeyBinding[desc.length];
boolean[] states = new boolean[desc.length];
Minecraft mc;
public ClientKeyHandler() {
mc = Minecraft.getMinecraft();
for (int i = 0; i < desc.length; ++i) {
if (i != 3)
states[i] = false;
keys[i] = new KeyBinding(desc[i], keyValues[i], StatCollector.translateToLocal("ElectricalAge"));
ClientRegistry.registerKeyBinding(keys[i]);
}
}
@SubscribeEvent
public void onKeyInput(KeyInputEvent event) {
for (int i = 0; i < desc.length; ++i) {
boolean s = keys[i].getIsKeyPressed();
if (s == false) continue;
if (states[i])
setState(i, false);
setState(i, true);
}
}
@SubscribeEvent
public void tick(ClientTickEvent event) {
if (event.phase != Phase.START) return;
for (int i = 0; i < desc.length; ++i) {
boolean s = keys[i].getIsKeyPressed();
if (s == false && states[i] == true) {
setState(i, false);
}
}
}
void setState(int id, boolean state) {
states[id] = state;
if (id == openWikiId) {
UtilsClient.clientOpenGui(new Root(null));
}
ByteArrayOutputStream bos = new ByteArrayOutputStream(64);
DataOutputStream stream = new DataOutputStream(bos);
try {
stream.writeByte(Eln.packetPlayerKey);
stream.writeByte(id);
stream.writeBoolean(state);
} catch (IOException e) {
e.printStackTrace();
}
UtilsClient.sendPacketToServer(bos);
}
}