22
33import java .awt .event .KeyEvent ;
44import java .awt .event .KeyListener ;
5+ import java .awt .im .InputContext ;
56
67import com .redomar .game .lib .SleepThread ;
78import com .redomar .game .script .PopUp ;
1011
1112public class InputHandler implements KeyListener {
1213
14+ private boolean isAzertyCountry ;
15+
1316 public InputHandler (Game game ) {
17+ InputContext context = InputContext .getInstance ();
18+ // Important to know wether the keyboard is in Azerty or Qwerty.
19+ // Azerty countries used QZSD instead of WASD keys.
20+ isAzertyCountry = context .getLocale ().getCountry ().equals ("BE" )
21+ || context .getLocale ().getCountry ().equals ("FR" );
1422 game .addKeyListener (this );
1523 }
1624
@@ -32,8 +40,8 @@ public void toggle(boolean isPressed) {
3240 numTimesPressed ++;
3341 }
3442 }
35-
36- public void off (){
43+
44+ public void off () {
3745 pressed = false ;
3846 numTimesPressed = 0 ;
3947 }
@@ -48,7 +56,7 @@ public void off(){
4856 private int map ;
4957 private boolean ignoreInput = false ;
5058 private PopUp popup = new PopUp ();
51-
59+
5260 public void keyPressed (KeyEvent e ) {
5361 toggleKey (e .getKeyCode (), true );
5462 }
@@ -62,21 +70,34 @@ public void keyTyped(KeyEvent e) {
6270 }
6371
6472 public void toggleKey (int keyCode , boolean isPressed ) {
65- if (isIgnoreInput () == false ){
66- if (keyCode == KeyEvent .VK_W || keyCode == KeyEvent .VK_UP ) {
67- getUp ().toggle (isPressed );
73+ if (isIgnoreInput () == false ) {
74+ if (isAzertyCountry ) {
75+ if (keyCode == KeyEvent .VK_Z || keyCode == KeyEvent .VK_UP ) {
76+ getUp ().toggle (isPressed );
77+ }
78+
79+ if (keyCode == KeyEvent .VK_Q || keyCode == KeyEvent .VK_LEFT ) {
80+ getLeft ().toggle (isPressed );
81+ }
82+ } else {
83+ if (keyCode == KeyEvent .VK_W || keyCode == KeyEvent .VK_UP ) {
84+ getUp ().toggle (isPressed );
85+ }
86+
87+ if (keyCode == KeyEvent .VK_A || keyCode == KeyEvent .VK_LEFT ) {
88+ getLeft ().toggle (isPressed );
89+ }
6890 }
91+
6992 if (keyCode == KeyEvent .VK_S || keyCode == KeyEvent .VK_DOWN ) {
7093 getDown ().toggle (isPressed );
7194 }
72- if (keyCode == KeyEvent .VK_A || keyCode == KeyEvent .VK_LEFT ) {
73- getLeft ().toggle (isPressed );
74- }
95+
7596 if (keyCode == KeyEvent .VK_D || keyCode == KeyEvent .VK_RIGHT ) {
7697 getRight ().toggle (isPressed );
7798 }
7899 }
79- if (isIgnoreInput () == true ){
100+ if (isIgnoreInput () == true ) {
80101 getUp ().toggle (false );
81102 getDown ().toggle (false );
82103 getLeft ().toggle (false );
@@ -85,24 +106,41 @@ public void toggleKey(int keyCode, boolean isPressed) {
85106 if (keyCode == KeyEvent .VK_M ) {
86107 this .setPlayMusic (true );
87108 }
88- if (keyCode == KeyEvent .VK_Z ) {
89- // if (map == 0){
90- // Game.getGame().setMap("/levels/water_level.png");
91- // map++;
92- // } else{
93- // Game.getGame().setMap("/levels/custom_level.png");
94- // map--;
95- // }
96- if (Game .getMap () == 2 ) {
97- Game .setChangeLevel (true );
98- Game .setNpc (false );
109+
110+ if (isAzertyCountry ) {
111+ if (keyCode == KeyEvent .VK_W ) {
112+ // if (map == 0){
113+ // Game.getGame().setMap("/levels/water_level.png");
114+ // map++;
115+ // } else{
116+ // Game.getGame().setMap("/levels/custom_level.png");
117+ // map--;
118+ // }
119+ if (Game .getMap () == 2 ) {
120+ Game .setChangeLevel (true );
121+ Game .setNpc (false );
122+ }
123+ }
124+ } else {
125+ if (keyCode == KeyEvent .VK_Z ) {
126+ // if (map == 0){
127+ // Game.getGame().setMap("/levels/water_level.png");
128+ // map++;
129+ // } else{
130+ // Game.getGame().setMap("/levels/custom_level.png");
131+ // map--;
132+ // }
133+ if (Game .getMap () == 2 ) {
134+ Game .setChangeLevel (true );
135+ Game .setNpc (false );
136+ }
99137 }
100138 }
101139 if (keyCode == KeyEvent .VK_N ) {
102- if (Game .getPlayer ().isMoving ()){
140+ if (Game .getPlayer ().isMoving ()) {
103141 setIgnoreInput (true );
104142 int n = popup .Warn ("Stop moving before spawing dummy AI" );
105- if (n == 0 ){
143+ if (n == 0 ) {
106144 setIgnoreInput (false );
107145 }
108146 return ;
@@ -120,31 +158,47 @@ public void toggleKey(int keyCode, boolean isPressed) {
120158 print .print ("Dummy has been despawned" , PrintTypes .GAME );
121159 }
122160 }
123- if (keyCode == KeyEvent .VK_Q ){
124- Game .setClosing (true );
125- try {
126- Thread .sleep (1000 );
127- } catch (InterruptedException e ) {
128- e .printStackTrace ();
161+ if (isAzertyCountry ) {
162+ if (keyCode == KeyEvent .VK_A ) {
163+ Game .setClosing (true );
164+ try {
165+ Thread .sleep (1000 );
166+ } catch (InterruptedException e ) {
167+ e .printStackTrace ();
168+ }
169+ Game .getLevel ().removeEntity (
170+ Game .getPlayer ().getSantizedUsername ());
171+ Game .setRunning (false );
172+ Game .getFrame ().dispose ();
173+ System .exit (1 );
174+ }
175+ } else {
176+ if (keyCode == KeyEvent .VK_Q ) {
177+ Game .setClosing (true );
178+ try {
179+ Thread .sleep (1000 );
180+ } catch (InterruptedException e ) {
181+ e .printStackTrace ();
182+ }
183+ Game .getLevel ().removeEntity (
184+ Game .getPlayer ().getSantizedUsername ());
185+ Game .setRunning (false );
186+ Game .getFrame ().dispose ();
187+ System .exit (1 );
129188 }
130- Game .getLevel ().removeEntity (Game .getPlayer ().getSantizedUsername ());
131- Game .setRunning (false );
132- Game .getFrame ().dispose ();
133- System .exit (1 );
134189 }
135190
136- if (keyCode == KeyEvent .VK_BACK_QUOTE ){
137- if (Game .isClosing () == false && Game .isDevMode () == false ){
191+ if (keyCode == KeyEvent .VK_BACK_QUOTE ) {
192+ if (Game .isClosing () == false && Game .isDevMode () == false ) {
138193 Game .setDevMode (true );
139194 new Thread (new SleepThread ());
140195 }
141196 }
142197 }
143-
144- public void untoggle (boolean toggle ){
198+
199+ public void untoggle (boolean toggle ) {
145200 this .ignoreInput = toggle ;
146201 }
147-
148202
149203 public int getMap () {
150204 return map ;
0 commit comments