Fix emitting events for key presses.

Co-authored-by: r3cp3ct <45179536+r3cp3ct@users.noreply.github.com>
Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
main
sigonasr2 3 years ago
parent 627c788d05
commit 5b6796d50d
  1. 1
      src/sig/engine/Action.java
  2. 3
      src/sig/engine/Key.java
  3. 26
      src/sig/engine/KeyBind.java

@ -16,6 +16,7 @@ public enum Action {
PLAY_GAME(new Key(KeyEvent.VK_F1)),; PLAY_GAME(new Key(KeyEvent.VK_F1)),;
float val; float val;
Key controllingKey;
Action(Component...components) { Action(Component...components) {
KeyBind.KEYBINDS.put(this,new ArrayList<>(Arrays.asList(components))); KeyBind.KEYBINDS.put(this,new ArrayList<>(Arrays.asList(components)));

@ -118,6 +118,7 @@ public class Key implements Component{
public static void setKeyHeld(int keycode,boolean pressed) { public static void setKeyHeld(int keycode,boolean pressed) {
KEYS.put(KEY_CONVERSION_MAP.get(keycode),pressed); KEYS.put(KEY_CONVERSION_MAP.get(keycode),pressed);
//System.out.println(KEYS);
} }
public static boolean isKeyHeld(int keycode) { public static boolean isKeyHeld(int keycode) {
@ -129,7 +130,7 @@ public class Key implements Component{
} }
@Override @Override
public Identifier getIdentifier() { public Identifier.Key getIdentifier() {
return KEY_CONVERSION_MAP.get(keycode); return KEY_CONVERSION_MAP.get(keycode);
} }

@ -45,19 +45,33 @@ public class KeyBind {
public static void poll() { public static void poll() {
//Polls all KeyBinds based on device. //Polls all KeyBinds based on device.
for (Action a : Action.values()) { for (Action a : Action.values()) {
boolean held = false;
Component cc = null;
for (Component c : KEYBINDS.get(a)) { for (Component c : KEYBINDS.get(a)) {
if (c instanceof Key) { if (c instanceof Key) {
actionEventCheck(a,((Key)c).isKeyHeld()); held = ((Key)c).isKeyHeld();
actionEventCheck(a,held);
} else } else
if (c instanceof Identifier.Button) { if (c instanceof Identifier.Button) {
actionEventCheck(a,c.getPollData()>0.0f); held = c.getPollData()>0.0f;
actionEventCheck(a,held);
} else } else
if (c.getIdentifier()==Identifier.Axis.POV) { if (c.getIdentifier()==Identifier.Axis.POV) {
actionEventCheck(a,a.val==c.getPollData()); held = a.val==c.getPollData();
actionEventCheck(a,held);
} else } else
if (c.getIdentifier() instanceof Identifier.Axis) { if (c.getIdentifier() instanceof Identifier.Axis) {
actionEventCheck(a,c.getPollData()>=c.getDeadZone()&&Math.signum(c.getPollData())==Math.signum(a.val)); held = c.getPollData()>=c.getDeadZone()&&Math.signum(c.getPollData())==Math.signum(a.val);
actionEventCheck(a,held);
} }
if (held) {
cc=c;
break;
}
}
if (held) {
KEYBINDS.get(a).remove(cc);
KEYBINDS.get(a).add(0,cc);
} }
} }
} }
@ -73,9 +87,9 @@ public class KeyBind {
} }
private static void emitReleaseEvent(Action a) { private static void emitReleaseEvent(Action a) {
System.out.println("Release for "+a); //System.out.println("Release for "+a);
} }
private static void emitPressEvent(Action a) { private static void emitPressEvent(Action a) {
System.out.println("Press for "+a); //System.out.println("Press for "+a);
} }
} }
Loading…
Cancel
Save