KeyBindingHandler work - reads from configuration file and respects sidedness (client side only handling, common reading from configuration file)

This commit is contained in:
pahimar 2012-08-20 23:18:53 -04:00
parent 77cbbadb18
commit b4d0e5e675
7 changed files with 121 additions and 29 deletions

View file

@ -0,0 +1,22 @@
package ee3.client.core;
import net.minecraft.src.KeyBinding;
import cpw.mods.fml.client.registry.KeyBindingRegistry;
import ee3.client.core.handlers.KeyBindingHandler;
import ee3.client.lib.KeyBindings;
import ee3.common.core.CommonProxy;
public class ClientProxy extends CommonProxy {
@Override
public void registerKeyBindingHandler() {
KeyBindingRegistry.registerKeyBinding(new KeyBindingHandler());
}
@Override
public void setKeyBinding(String name, int value) {
KeyBindings.addKeyBinding(name, value);
KeyBindings.addIsRepeating(false);
}
}

View file

@ -1,4 +1,4 @@
package ee3.client.core;
package ee3.client.core.handlers;
import java.util.EnumSet;
@ -9,15 +9,12 @@ import cpw.mods.fml.client.registry.KeyBindingRegistry;
import cpw.mods.fml.common.Side;
import cpw.mods.fml.common.TickType;
import cpw.mods.fml.common.asm.SideOnly;
import ee3.client.lib.KeyBindings;
public class KeyBindingHandler extends KeyBindingRegistry.KeyHandler {
private static KeyBinding extra = new KeyBinding("ee3.mod.key.extra", Keyboard.KEY_C);
private static KeyBinding[] keyBindings = {extra};
private static boolean[] repeatings = {false};
public KeyBindingHandler() {
super(keyBindings, repeatings);
super(KeyBindings.gatherKeyBindings(), KeyBindings.gatherIsRepeating());
}
@Override

View file

@ -0,0 +1,41 @@
package ee3.client.lib;
import java.util.ArrayList;
import net.minecraft.src.KeyBinding;
public class KeyBindings {
public static ArrayList<KeyBinding> keyBindingsList;
public static ArrayList<Boolean> isRepeatingList;
public static void addKeyBinding(String name, int value) {
if (keyBindingsList == null) {
keyBindingsList = new ArrayList<KeyBinding>();
}
keyBindingsList.add(new KeyBinding(name, value));
}
public static void addIsRepeating(boolean value) {
if (isRepeatingList == null) {
isRepeatingList = new ArrayList<Boolean>();
}
isRepeatingList.add(value);
}
public static KeyBinding[] gatherKeyBindings() {
return keyBindingsList.toArray(new KeyBinding[keyBindingsList.size()]);
}
public static boolean[] gatherIsRepeating() {
boolean[] isRepeating = new boolean[isRepeatingList.size()];
for (int x = 0; x < isRepeating.length; x++) {
isRepeating[x] = isRepeatingList.get(x).booleanValue();
}
return isRepeating;
}
}

View file

@ -1,19 +1,17 @@
package ee3.common;
import org.lwjgl.input.Keyboard;
import cpw.mods.fml.client.registry.KeyBindingRegistry;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.Init;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.Mod.PostInit;
import cpw.mods.fml.common.Mod.PreInit;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.network.NetworkMod;
import ee3.client.core.KeyBindingHandler;
import ee3.common.core.ConfigurationManager;
import ee3.common.core.CommonProxy;
import ee3.common.core.handlers.ConfigurationHandler;
import ee3.common.lib.Reference;
import ee3.common.network.PacketHandler;
@ -24,20 +22,20 @@ public class EquivalentExchange3 {
@Instance
public static EquivalentExchange3 instance;
@SidedProxy(clientSide = "ee3.client.core.ClientProxy", serverSide = "ee3.core.common.CommonProxy")
public static CommonProxy proxy;
@PreInit
public void preInit(FMLPreInitializationEvent event) {
// Initialize the configuration
ConfigurationManager.init(event.getSuggestedConfigurationFile());
ConfigurationHandler.init(event.getSuggestedConfigurationFile());
}
@Init
public void load(FMLInitializationEvent event) {
// Initialize the KeyBinding handler
KeyBindingRegistry.registerKeyBinding(new KeyBindingHandler());
proxy.registerKeyBindingHandler();
}
@PostInit

View file

@ -0,0 +1,23 @@
package ee3.common.core;
import net.minecraft.src.EntityPlayer;
import net.minecraft.src.World;
import cpw.mods.fml.common.network.IGuiHandler;
public class CommonProxy implements IGuiHandler {
public void registerKeyBindingHandler() { }
public void setKeyBinding(String name, int value) { }
@Override
public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
return null;
}
@Override
public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
return null;
}
}

View file

@ -1,15 +1,12 @@
package ee3.common.core;
package ee3.common.core.handlers;
import java.io.File;
import java.util.logging.Level;
import org.lwjgl.input.Keyboard;
import net.minecraftforge.common.Configuration;
import cpw.mods.fml.common.FMLLog;
import ee3.common.EquivalentExchange3;
import net.minecraftforge.common.Configuration;
import static net.minecraftforge.common.Configuration.*;
import static ee3.common.lib.Reference.*;
/**
* TODO Class Description
@ -17,7 +14,7 @@ import static net.minecraftforge.common.Configuration.*;
* @license Lesser GNU Public License v3 (http://www.gnu.org/licenses/lgpl.html)
*
*/
public class ConfigurationManager {
public class ConfigurationHandler {
private static final String CATEGORY_KEYBIND = "keybinds";
@ -31,6 +28,8 @@ public class ConfigurationManager {
try {
configuration.load();
// TODO: Clean up property names
/* General Configs */
ENABLE_SOUNDS = configuration.getOrCreateBooleanProperty("enable_sounds", CATEGORY_GENERAL, true).getBoolean(false);
ENABLE_PARTICLES = configuration.getOrCreateBooleanProperty("enable_particles", CATEGORY_GENERAL, true).getBoolean(false);
@ -40,13 +39,14 @@ public class ConfigurationManager {
/* Item Configs */
/* Keybinding Configs */
configuration.getOrCreateIntProperty("extra", CATEGORY_KEYBIND, Keyboard.KEY_C);
configuration.getOrCreateIntProperty("charge", CATEGORY_KEYBIND, Keyboard.KEY_V);
configuration.getOrCreateIntProperty("toggle", CATEGORY_KEYBIND, Keyboard.KEY_G);
configuration.getOrCreateIntProperty("release", CATEGORY_KEYBIND, Keyboard.KEY_R);
/* KeyBinding Configs */
EquivalentExchange3.proxy.setKeyBinding(KEYBINDING_EXTRA_NAME, configuration.getOrCreateIntProperty(KEYBINDING_EXTRA_NAME, CATEGORY_KEYBIND, KEYBINDING_EXTRA_DEFAULT).getInt(KEYBINDING_EXTRA_DEFAULT));
EquivalentExchange3.proxy.setKeyBinding(KEYBINDING_CHARGE_NAME, configuration.getOrCreateIntProperty(KEYBINDING_CHARGE_NAME, CATEGORY_KEYBIND, KEYBINDING_CHARGE_DEFAULT).getInt(KEYBINDING_CHARGE_DEFAULT));
EquivalentExchange3.proxy.setKeyBinding(KEYBINDING_TOGGLE_NAME, configuration.getOrCreateIntProperty(KEYBINDING_TOGGLE_NAME, CATEGORY_KEYBIND, KEYBINDING_TOGGLE_DEFAULT).getInt(KEYBINDING_TOGGLE_DEFAULT));
EquivalentExchange3.proxy.setKeyBinding(KEYBINDING_RELEASE_NAME, configuration.getOrCreateIntProperty(KEYBINDING_RELEASE_NAME, CATEGORY_KEYBIND, KEYBINDING_RELEASE_DEFAULT).getInt(KEYBINDING_RELEASE_DEFAULT));
}
catch (Exception e) {
// TODO: Clean up the logging message
FMLLog.log(Level.SEVERE, e, "Equivalent Exchange 3 has had a problem loading its configuration");
}
finally {

View file

@ -2,8 +2,19 @@ package ee3.common.lib;
public class Reference {
/* General Mod related constants */
public static final String MOD_ID = "EE3";
public static final String MOD_NAME = "Equivalent Exchange 3";
public static final String VERSION = "1.0.0.0";
public static final String CHANNEL_NAME = MOD_ID;
/* KeyBinding related constants */
public static final String KEYBINDING_EXTRA_NAME = "mod.ee3.extra_key";
public static final int KEYBINDING_EXTRA_DEFAULT = 46;
public static final String KEYBINDING_RELEASE_NAME = "mod.ee3.release_key";
public static final int KEYBINDING_RELEASE_DEFAULT = 19;
public static final String KEYBINDING_TOGGLE_NAME = "mod.ee3.toggle_key";
public static final int KEYBINDING_TOGGLE_DEFAULT = 34;
public static final String KEYBINDING_CHARGE_NAME = "mod.ee3.charge_key";
public static final int KEYBINDING_CHARGE_DEFAULT = 47;
}