package framework.RWT; import java.awt.event.KeyEvent; public class RWTVirtualController { private boolean bKeyDown[][] = { {false, false, false, false, false, false, false, false}, {false, false, false, false, false, false, false, false}}; private boolean rawKeyDown[] = new boolean[256]; private boolean mouseButtonDown1 = false; private boolean mouseButtonDown2 = false; private boolean mouseButtonDown3 = false; private double mouseX = 0; private double mouseY = 0; private static RWTVirtualKey keyMap[] = new RWTVirtualKey[256]; public static final int UP = 0; public static final int DOWN = 1; public static final int RIGHT = 2; public static final int LEFT = 3; public static final int BUTTON_A = 4; public static final int BUTTON_B = 5; public static final int BUTTON_C = 6; public static final int BUTTON_D = 7; public RWTVirtualController() { // player1用のkeyBindの初期化 RWTVirtualController.keyBind(KeyEvent.VK_W, 0, RWTVirtualController.UP); // w RWTVirtualController.keyBind(KeyEvent.VK_D, 0, RWTVirtualController.RIGHT); //d RWTVirtualController.keyBind(KeyEvent.VK_A, 0, RWTVirtualController.LEFT); // a RWTVirtualController.keyBind(KeyEvent.VK_S, 0, RWTVirtualController.DOWN); // s RWTVirtualController.keyBind(KeyEvent.VK_V, 0, RWTVirtualController.BUTTON_B); // v RWTVirtualController.keyBind(KeyEvent.VK_B, 0, RWTVirtualController.BUTTON_A); // b RWTVirtualController.keyBind(KeyEvent.VK_SPACE, 0, RWTVirtualController.BUTTON_C); // space RWTVirtualController.keyBind(KeyEvent.VK_E, 0, RWTVirtualController.BUTTON_D); // e // player2用のkeyBindの初期化 RWTVirtualController.keyBind(KeyEvent.VK_O, 1, RWTVirtualController.UP); // o RWTVirtualController.keyBind(KeyEvent.VK_SEMICOLON, 1, RWTVirtualController.RIGHT); //; RWTVirtualController.keyBind(KeyEvent.VK_K, 1, RWTVirtualController.LEFT); // k RWTVirtualController.keyBind(KeyEvent.VK_L, 1, RWTVirtualController.DOWN); // l RWTVirtualController.keyBind(KeyEvent.VK_BACK_SLASH, 1, RWTVirtualController.BUTTON_B); // \ RWTVirtualController.keyBind(KeyEvent.VK_SHIFT, 1, RWTVirtualController.BUTTON_A); // shift RWTVirtualController.keyBind(KeyEvent.VK_CONTROL, 1, RWTVirtualController.BUTTON_C); // ctrl RWTVirtualController.keyBind(KeyEvent.VK_P, 1, RWTVirtualController.BUTTON_D); // p } static public void keyBind(int keyCode, int playerNo, int buttonNo) { keyMap[keyCode] = new RWTVirtualKey(playerNo, keyCode, buttonNo); } public boolean isKeyDown(int player, int keyNo) { return bKeyDown[player][keyNo]; } public boolean isKeyDown(int keyCode) { return rawKeyDown[keyCode]; } public void setKeyDown(int keyCode, boolean b) { if (keyMap[keyCode] != null) { bKeyDown[keyMap[keyCode].getPlayer()][keyMap[keyCode].getVirtualKey()] = b; } rawKeyDown[keyCode] = b; } public RWTVirtualKey getVirtualKey(int keyCode) { return keyMap[keyCode]; } public boolean isMouseButtonDown(int buttonNo) { switch (buttonNo) { case 0: return mouseButtonDown1; case 1: return mouseButtonDown2; case 2: return mouseButtonDown3; } return false; } public void setMouseButtonDown(int buttonNo, boolean b) { switch (buttonNo) { case 0: mouseButtonDown1 = b; break; case 1: mouseButtonDown2 = b; break; case 2: mouseButtonDown3 = b; break; } } public double getMouseX() { return mouseX; } public double getMouseY() { return mouseY; } public void setMousePosition(double x, double y) { mouseX = x; mouseY = y; } public void moveMousePosition(double dx, double dy) { mouseX += dx; mouseY += dy; } }