1 | package g0803.bindingofshiba.gui.keyboard; | |
2 | ||
3 | import com.googlecode.lanterna.input.InputProvider; | |
4 | import com.googlecode.lanterna.input.KeyStroke; | |
5 | import com.googlecode.lanterna.input.KeyType; | |
6 | import java.io.IOException; | |
7 | ||
8 | public class LanternaKeyboard implements Keyboard { | |
9 | ||
10 | private final InputProvider inputProvider; | |
11 | private boolean isClosed = false; | |
12 | ||
13 | private Key lastKeyPressed = Key.NONE; | |
14 | private long lastKeyPressStart = System.currentTimeMillis(); | |
15 | ||
16 | public LanternaKeyboard(InputProvider inputProvider) { | |
17 | this.inputProvider = inputProvider; | |
18 | } | |
19 | ||
20 | @Override | |
21 | public boolean isKeyPressed(Key key) { | |
22 |
2
1. isKeyPressed : negated conditional → KILLED 2. isKeyPressed : replaced boolean return with true for g0803/bindingofshiba/gui/keyboard/LanternaKeyboard::isKeyPressed → KILLED |
return this.lastKeyPressed == key; |
23 | } | |
24 | ||
25 | @Override | |
26 | public Key getPressedKey() { | |
27 |
1
1. getPressedKey : replaced return value with null for g0803/bindingofshiba/gui/keyboard/LanternaKeyboard::getPressedKey → NO_COVERAGE |
return lastKeyPressed; |
28 | } | |
29 | ||
30 | @Override | |
31 | public long getKeyPressDuration() { | |
32 |
2
1. getKeyPressDuration : Replaced long subtraction with addition → KILLED 2. getKeyPressDuration : replaced long return with 0 for g0803/bindingofshiba/gui/keyboard/LanternaKeyboard::getKeyPressDuration → KILLED |
return System.currentTimeMillis() - this.lastKeyPressStart; |
33 | } | |
34 | ||
35 | @Override | |
36 | public boolean isClosed() { | |
37 |
2
1. isClosed : replaced boolean return with false for g0803/bindingofshiba/gui/keyboard/LanternaKeyboard::isClosed → KILLED 2. isClosed : replaced boolean return with true for g0803/bindingofshiba/gui/keyboard/LanternaKeyboard::isClosed → KILLED |
return isClosed; |
38 | } | |
39 | ||
40 | @Override | |
41 | public void update() throws IOException { | |
42 |
1
1. update : negated conditional → KILLED |
if (this.isClosed) return; |
43 | ||
44 | KeyStroke keyStroke = this.getLastKeyStroke(); | |
45 |
2
1. update : negated conditional → KILLED 2. update : negated conditional → KILLED |
if (keyStroke != null && keyStroke.getKeyType() == KeyType.EOF) this.isClosed = true; |
46 | ||
47 | Key currentKey = getCurrentKeyFromKeyStroke(keyStroke); | |
48 |
1
1. update : negated conditional → KILLED |
if (this.lastKeyPressed != currentKey) { |
49 | this.lastKeyPressStart = System.currentTimeMillis(); | |
50 | this.lastKeyPressed = currentKey; | |
51 | } | |
52 | } | |
53 | ||
54 | private KeyStroke getLastKeyStroke() throws IOException { | |
55 | KeyStroke lastKeyStroke = null; | |
56 | ||
57 | KeyStroke currentKeyStroke; | |
58 |
1
1. getLastKeyStroke : negated conditional → KILLED |
while ((currentKeyStroke = this.inputProvider.pollInput()) != null) { |
59 | lastKeyStroke = currentKeyStroke; | |
60 |
1
1. getLastKeyStroke : negated conditional → KILLED |
if (lastKeyStroke.getKeyType() == KeyType.EOF) break; |
61 | } | |
62 | ||
63 |
1
1. getLastKeyStroke : replaced return value with null for g0803/bindingofshiba/gui/keyboard/LanternaKeyboard::getLastKeyStroke → KILLED |
return lastKeyStroke; |
64 | } | |
65 | ||
66 | private Key getCurrentKeyFromKeyStroke(KeyStroke keyStroke) { | |
67 |
2
1. getCurrentKeyFromKeyStroke : negated conditional → KILLED 2. getCurrentKeyFromKeyStroke : replaced return value with null for g0803/bindingofshiba/gui/keyboard/LanternaKeyboard::getCurrentKeyFromKeyStroke → KILLED |
if (keyStroke == null) return Key.NONE; |
68 | ||
69 | KeyType keyType = keyStroke.getKeyType(); | |
70 | ||
71 |
1
1. getCurrentKeyFromKeyStroke : replaced return value with null for g0803/bindingofshiba/gui/keyboard/LanternaKeyboard::getCurrentKeyFromKeyStroke → KILLED |
return switch (keyType) { |
72 | case ArrowUp -> Key.ARROW_UP; | |
73 | case ArrowDown -> Key.ARROW_DOWN; | |
74 | case ArrowLeft -> Key.ARROW_LEFT; | |
75 | case ArrowRight -> Key.ARROW_RIGHT; | |
76 | case Enter -> Key.ENTER; | |
77 | case Escape -> Key.ESCAPE; | |
78 | case Character -> this.getCurrentKeyFromCharacter(keyStroke.getCharacter()); | |
79 | default -> Key.NONE; | |
80 | }; | |
81 | } | |
82 | ||
83 | private Key getCurrentKeyFromCharacter(Character character) { | |
84 |
1
1. getCurrentKeyFromCharacter : replaced return value with null for g0803/bindingofshiba/gui/keyboard/LanternaKeyboard::getCurrentKeyFromCharacter → KILLED |
return switch (Character.toUpperCase(character)) { |
85 | case 'W' -> Key.W; | |
86 | case 'A' -> Key.A; | |
87 | case 'S' -> Key.S; | |
88 | case 'D' -> Key.D; | |
89 | case ' ' -> Key.SPACE; | |
90 | default -> Key.NONE; | |
91 | }; | |
92 | } | |
93 | } | |
Mutations | ||
22 |
1.1 2.2 |
|
27 |
1.1 |
|
32 |
1.1 2.2 |
|
37 |
1.1 2.2 |
|
42 |
1.1 |
|
45 |
1.1 2.2 |
|
48 |
1.1 |
|
58 |
1.1 |
|
60 |
1.1 |
|
63 |
1.1 |
|
67 |
1.1 2.2 |
|
71 |
1.1 |
|
84 |
1.1 |