Interm implementation of keyboardEvent for ModLoader.

This commit is contained in:
LexManos 2012-06-06 01:43:49 -07:00
parent c6de498904
commit 5997bd3b87
9 changed files with 51 additions and 1 deletions

View File

@ -143,6 +143,7 @@ public class FMLClientHandler implements IFMLSidedHandler
private HashMap<String, ArrayList<OverrideInfo>> overrideInfo = new HashMap<String, ArrayList<OverrideInfo>>();
private HashMap<Integer, BlockRenderInfo> blockModelIds = new HashMap<Integer, BlockRenderInfo>();
private HashMap<KeyBinding, ModContainer> keyBindings = new HashMap<KeyBinding, ModContainer>();
private List<IKeyHandler> keyHandlers = new ArrayList<IKeyHandler>();
private HashSet<OverrideInfo> animationSet = new HashSet<OverrideInfo>();
private List<TextureFX> addedTextureFX = new ArrayList<TextureFX>();
@ -256,6 +257,7 @@ public class FMLClientHandler implements IFMLSidedHandler
keys[i++]=(KeyBinding)key.getKeyBinding();
keyBindings.put((KeyBinding) key.getKeyBinding(), key.getOwningContainer());
}
keyHandlers = allKeys;
return keys;
}
/**
@ -278,6 +280,10 @@ public class FMLClientHandler implements IFMLSidedHandler
FMLCommonHandler.instance().worldTickEnd();
FMLCommonHandler.instance().tickEnd(TickType.WORLDGUI, 0.0f, client.field_6313_p);
}
for (IKeyHandler entry : keyHandlers)
{
entry.onEndTick();
}
}
public void onWorldLoadTick()

View File

@ -14,6 +14,9 @@
package cpw.mods.fml.client;
import org.lwjgl.input.Keyboard;
import org.lwjgl.input.Mouse;
import net.minecraft.src.KeyBinding;
import cpw.mods.fml.common.IKeyHandler;
import cpw.mods.fml.common.ModContainer;
@ -29,6 +32,7 @@ public class KeyBindingHandler implements IKeyHandler
private boolean shouldRepeat;
private KeyBinding keyBinding;
private ModContainer modContainer;
private boolean lastState = false;
/**
* @param keyHandler
@ -55,4 +59,16 @@ public class KeyBindingHandler implements IKeyHandler
{
return modContainer;
}
@Override
public void onEndTick()
{
int keyCode = keyBinding.field_1370_b;
boolean state = (keyCode < 0 ? Mouse.isButtonDown(keyCode + 100) : Keyboard.isKeyDown(keyCode));
if (state && (!lastState || (lastState && shouldRepeat)))
{
modContainer.keyBindEvent(keyBinding);
}
lastState = state;
}
}

View File

@ -30,6 +30,11 @@ public abstract class BaseMod implements cpw.mods.fml.common.modloader.BaseMod
{
// CALLBACK MECHANISMS
public void keyBindingEvent(Object keybinding)
{
this.keyboardEvent((KeyBinding)keybinding);
}
/**
* @param minecraftInstance
* @return

View File

@ -406,4 +406,12 @@ public class FMLModContainer implements ModContainer
// TODO Auto-generated method stub
return null;
}
/* (non-Javadoc)
* @see cpw.mods.fml.common.ModContainer#keyBindEvernt(java.lang.Object)
*/
@Override
public void keyBindEvent(Object keyBinding)
{
// TODO Auto-generated method stub
}
}

View File

@ -27,5 +27,7 @@ public interface IKeyHandler
* @return
*/
ModContainer getOwningContainer();
void onEndTick();
}

View File

@ -245,4 +245,6 @@ public interface ModContainer
* @return
*/
ProxyInjector findSidedProxy();
void keyBindEvent(Object keyBinding);
}

View File

@ -86,4 +86,5 @@ public interface BaseMod extends IWorldGenerator, IPickupNotifier, IDispenseHand
*/
String getVersion();
void keyBindingEvent(Object keybinding);
}

View File

@ -700,4 +700,13 @@ public class ModLoaderModContainer implements ModContainer
}
return sidedProxy == NULLPROXY ? null : sidedProxy;
}
/* (non-Javadoc)
* @see cpw.mods.fml.common.ModContainer#keyBindEvernt(java.lang.Object)
*/
@Override
public void keyBindEvent(Object keybinding)
{
mod.keyBindingEvent(keybinding);
}
}

View File

@ -28,7 +28,8 @@ import cpw.mods.fml.common.ModContainer.TickType;
public abstract class BaseMod implements cpw.mods.fml.common.modloader.BaseMod
{
// CALLBACK MECHANISMS
public void keyBindingEvent(Object keybinding){}
/**
* @param minecraftInstance
* @return