From 05a0e49f53345359da051ac34969d9c2d0a1334e Mon Sep 17 00:00:00 2001 From: Scribble Date: Mon, 29 Jan 2024 22:30:37 +0100 Subject: [PATCH] [VirtualInput] Fixed getVirtualEvents generating the wrong events - Added VirtualInputTest --- .../com/minecrafttas/tasmod/TASmodClient.java | 2 +- .../tasmod/virtual/VirtualKeyboard2.java | 11 +- .../tasmod/virtual/VirtualMouse2.java | 5 +- .../virtual/keyboard/VirtualInputTest.java | 110 ++++++++++++++++++ .../virtual/keyboard/VirtualKeyboardTest.java | 9 +- 5 files changed, 128 insertions(+), 9 deletions(-) create mode 100644 src/test/java/tasmod/virtual/keyboard/VirtualInputTest.java diff --git a/src/main/java/com/minecrafttas/tasmod/TASmodClient.java b/src/main/java/com/minecrafttas/tasmod/TASmodClient.java index 0b87ef7b..ae3d8a29 100644 --- a/src/main/java/com/minecrafttas/tasmod/TASmodClient.java +++ b/src/main/java/com/minecrafttas/tasmod/TASmodClient.java @@ -126,7 +126,7 @@ public void onInitializeClient() { } else { config.reset(ConfigOptions.FileToOpen); } -// virtual=new VirtualInput2(fileOnStart); TODO Move fileOnStart to PlaybackController + virtual=new VirtualInput2(); //TODO Move fileOnStart to PlaybackController // Initialize InfoHud hud = new InfoHud(); diff --git a/src/main/java/com/minecrafttas/tasmod/virtual/VirtualKeyboard2.java b/src/main/java/com/minecrafttas/tasmod/virtual/VirtualKeyboard2.java index dbd30500..3364118f 100644 --- a/src/main/java/com/minecrafttas/tasmod/virtual/VirtualKeyboard2.java +++ b/src/main/java/com/minecrafttas/tasmod/virtual/VirtualKeyboard2.java @@ -83,6 +83,7 @@ public VirtualKeyboard2(Set pressedKeys, List charList, List * @param character The character that is associated with that key. Can change between keyboards or whenever shift is held in combination. */ public void update(int keycode, boolean keystate, char character) { + charList.clear(); setPressed(keycode, keystate); addChar(character); @@ -175,9 +176,11 @@ private char getOrMinChar(Character charr){ */ public void getVirtualEvents(VirtualKeyboard2 nextKeyboard, Queue reference) { if (isParent()) { - getSubticks().forEach(keyboard -> { - keyboard.getDifference(nextKeyboard, reference); - }); + VirtualKeyboard2 currentSubtick = this; + for(VirtualKeyboard2 subtick : nextKeyboard.getSubticks()) { + currentSubtick.getDifference(subtick, reference); + currentSubtick = subtick; + } } } @@ -205,7 +208,7 @@ public String toString() { return String.format("%s;%s", super.toString(), charListToString(charList)); } } - + private String charListToString(List charList) { String charString = ""; if (!charList.isEmpty()) { diff --git a/src/main/java/com/minecrafttas/tasmod/virtual/VirtualMouse2.java b/src/main/java/com/minecrafttas/tasmod/virtual/VirtualMouse2.java index bbf163b8..7514a528 100644 --- a/src/main/java/com/minecrafttas/tasmod/virtual/VirtualMouse2.java +++ b/src/main/java/com/minecrafttas/tasmod/virtual/VirtualMouse2.java @@ -105,8 +105,8 @@ public void getDifference(VirtualMouse2 nextPeripheral, Queue public void getVirtualEvents(VirtualMouse2 nextPeripheral, Queue reference) { if(isParent()) { - getSubticks().forEach(mouse -> { - mouse.getDifference(nextPeripheral, reference); + nextPeripheral.getSubticks().forEach(mouse -> { + getDifference(mouse, reference); }); } } @@ -115,7 +115,6 @@ public void getVirtualEvents(VirtualMouse2 nextPeripheral, Queue expected = new ArrayList<>(); expected.add(new VirtualKeyboard2(new HashSet(Arrays.asList(VirtualKey2.W.getKeycode())), Arrays.asList('w'))); - expected.add(new VirtualKeyboard2(new HashSet(Arrays.asList(VirtualKey2.W.getKeycode(), VirtualKey2.A.getKeycode())), Arrays.asList('w', 'A'))); + expected.add(new VirtualKeyboard2(new HashSet(Arrays.asList(VirtualKey2.W.getKeycode(), VirtualKey2.A.getKeycode())), Arrays.asList('A'))); assertIterableEquals(expected, test.getSubticks()); } @@ -258,4 +259,10 @@ void testGetDifference(){ assertIterableEquals(expected, actual); } + + @Test + @Disabled + void testGetVirtualEvents() { + //TODO + } }