Advertisement
Guest User

LWJGL Input Wrapper Class

a guest
Dec 4th, 2013
338
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 11.15 KB | None | 0 0
  1. package com.mygame;
  2.  
  3. import java.util.ArrayList;
  4.  
  5. import org.lwjgl.input.Keyboard;
  6. import org.lwjgl.input.Mouse;
  7.  
  8. // A wrapper around the LWJGL's input system. Holds track of pressed and released keys and buttons
  9. public class Input {
  10.     private static ArrayList<Integer> currentKeys = new ArrayList<Integer>();
  11.     private static ArrayList<Integer> downKeys = new ArrayList<Integer>();
  12.     private static ArrayList<Integer> upKeys = new ArrayList<Integer>();
  13.    
  14.     private static ArrayList<Integer> currentMouse = new ArrayList<Integer>();
  15.     private static ArrayList<Integer> downMouse = new ArrayList<Integer>();
  16.     private static ArrayList<Integer> upMouse = new ArrayList<Integer>();
  17.    
  18.     private static final int NUM_KEYS = 255;
  19.     private static final int NUM_BUTTONS = 3;
  20.    
  21.     private static int dx;
  22.     private static int dy;
  23.    
  24.     //All these constants come from LWJGL's Keyboard class
  25.     public static final int KEY_NONE            = 0x00;
  26.     public static final int KEY_ESCAPE          = 0x01;
  27.     public static final int KEY_1               = 0x02;
  28.     public static final int KEY_2               = 0x03;
  29.     public static final int KEY_3               = 0x04;
  30.     public static final int KEY_4               = 0x05;
  31.     public static final int KEY_5               = 0x06;
  32.     public static final int KEY_6               = 0x07;
  33.     public static final int KEY_7               = 0x08;
  34.     public static final int KEY_8               = 0x09;
  35.     public static final int KEY_9               = 0x0A;
  36.     public static final int KEY_0               = 0x0B;
  37.     public static final int KEY_MINUS           = 0x0C; /* - on main keyboard */
  38.     public static final int KEY_EQUALS          = 0x0D;
  39.     public static final int KEY_BACK            = 0x0E; /* backspace */
  40.     public static final int KEY_TAB             = 0x0F;
  41.     public static final int KEY_Q               = 0x10;
  42.     public static final int KEY_W               = 0x11;
  43.     public static final int KEY_E               = 0x12;
  44.     public static final int KEY_R               = 0x13;
  45.     public static final int KEY_T               = 0x14;
  46.     public static final int KEY_Y               = 0x15;
  47.     public static final int KEY_U               = 0x16;
  48.     public static final int KEY_I               = 0x17;
  49.     public static final int KEY_O               = 0x18;
  50.     public static final int KEY_P               = 0x19;
  51.     public static final int KEY_LBRACKET        = 0x1A;
  52.     public static final int KEY_RBRACKET        = 0x1B;
  53.     public static final int KEY_RETURN          = 0x1C; /* Enter on main keyboard */
  54.     public static final int KEY_LCONTROL        = 0x1D;
  55.     public static final int KEY_A               = 0x1E;
  56.     public static final int KEY_S               = 0x1F;
  57.     public static final int KEY_D               = 0x20;
  58.     public static final int KEY_F               = 0x21;
  59.     public static final int KEY_G               = 0x22;
  60.     public static final int KEY_H               = 0x23;
  61.     public static final int KEY_J               = 0x24;
  62.     public static final int KEY_K               = 0x25;
  63.     public static final int KEY_L               = 0x26;
  64.     public static final int KEY_SEMICOLON       = 0x27;
  65.     public static final int KEY_APOSTROPHE      = 0x28;
  66.     public static final int KEY_GRAVE           = 0x29; /* accent grave */
  67.     public static final int KEY_LSHIFT          = 0x2A;
  68.     public static final int KEY_BACKSLASH       = 0x2B;
  69.     public static final int KEY_Z               = 0x2C;
  70.     public static final int KEY_X               = 0x2D;
  71.     public static final int KEY_C               = 0x2E;
  72.     public static final int KEY_V               = 0x2F;
  73.     public static final int KEY_B               = 0x30;
  74.     public static final int KEY_N               = 0x31;
  75.     public static final int KEY_M               = 0x32;
  76.     public static final int KEY_COMMA           = 0x33;
  77.     public static final int KEY_PERIOD          = 0x34; /* . on main keyboard */
  78.     public static final int KEY_SLASH           = 0x35; /* / on main keyboard */
  79.     public static final int KEY_RSHIFT          = 0x36;
  80.     public static final int KEY_MULTIPLY        = 0x37; /* * on numeric keypad */
  81.     public static final int KEY_LMENU           = 0x38; /* left Alt */
  82.     public static final int KEY_LALT            = KEY_LMENU; /* left Alt */
  83.     public static final int KEY_SPACE           = 0x39;
  84.     public static final int KEY_CAPITAL         = 0x3A;
  85.     public static final int KEY_F1              = 0x3B;
  86.     public static final int KEY_F2              = 0x3C;
  87.     public static final int KEY_F3              = 0x3D;
  88.     public static final int KEY_F4              = 0x3E;
  89.     public static final int KEY_F5              = 0x3F;
  90.     public static final int KEY_F6              = 0x40;
  91.     public static final int KEY_F7              = 0x41;
  92.     public static final int KEY_F8              = 0x42;
  93.     public static final int KEY_F9              = 0x43;
  94.     public static final int KEY_F10             = 0x44;
  95.     public static final int KEY_NUMLOCK         = 0x45;
  96.     public static final int KEY_SCROLL          = 0x46; /* Scroll Lock */
  97.     public static final int KEY_NUMPAD7         = 0x47;
  98.     public static final int KEY_NUMPAD8         = 0x48;
  99.     public static final int KEY_NUMPAD9         = 0x49;
  100.     public static final int KEY_SUBTRACT        = 0x4A; /* - on numeric keypad */
  101.     public static final int KEY_NUMPAD4         = 0x4B;
  102.     public static final int KEY_NUMPAD5         = 0x4C;
  103.     public static final int KEY_NUMPAD6         = 0x4D;
  104.     public static final int KEY_ADD             = 0x4E; /* + on numeric keypad */
  105.     public static final int KEY_NUMPAD1         = 0x4F;
  106.     public static final int KEY_NUMPAD2         = 0x50;
  107.     public static final int KEY_NUMPAD3         = 0x51;
  108.     public static final int KEY_NUMPAD0         = 0x52;
  109.     public static final int KEY_DECIMAL         = 0x53; /* . on numeric keypad */
  110.     public static final int KEY_F11             = 0x57;
  111.     public static final int KEY_F12             = 0x58;
  112.     public static final int KEY_F13             = 0x64; /*                     (NEC PC98) */
  113.     public static final int KEY_F14             = 0x65; /*                     (NEC PC98) */
  114.     public static final int KEY_F15             = 0x66; /*                     (NEC PC98) */
  115.     public static final int KEY_KANA            = 0x70; /* (Japanese keyboard)            */
  116.     public static final int KEY_CONVERT         = 0x79; /* (Japanese keyboard)            */
  117.     public static final int KEY_NOCONVERT       = 0x7B; /* (Japanese keyboard)            */
  118.     public static final int KEY_YEN             = 0x7D; /* (Japanese keyboard)            */
  119.     public static final int KEY_NUMPADEQUALS    = 0x8D; /* = on numeric keypad (NEC PC98) */
  120.     public static final int KEY_CIRCUMFLEX      = 0x90; /* (Japanese keyboard)            */
  121.     public static final int KEY_AT              = 0x91; /*                     (NEC PC98) */
  122.     public static final int KEY_COLON           = 0x92; /*                     (NEC PC98) */
  123.     public static final int KEY_UNDERLINE       = 0x93; /*                     (NEC PC98) */
  124.     public static final int KEY_KANJI           = 0x94; /* (Japanese keyboard)            */
  125.     public static final int KEY_STOP            = 0x95; /*                     (NEC PC98) */
  126.     public static final int KEY_AX              = 0x96; /*                     (Japan AX) */
  127.     public static final int KEY_UNLABELED       = 0x97; /*                        (J3100) */
  128.     public static final int KEY_NUMPADENTER     = 0x9C; /* Enter on numeric keypad */
  129.     public static final int KEY_RCONTROL        = 0x9D;
  130.     public static final int KEY_NUMPADCOMMA     = 0xB3; /* , on numeric keypad (NEC PC98) */
  131.     public static final int KEY_DIVIDE          = 0xB5; /* / on numeric keypad */
  132.     public static final int KEY_SYSRQ           = 0xB7;
  133.     public static final int KEY_RMENU           = 0xB8; /* right Alt */
  134.     public static final int KEY_RALT            = KEY_RMENU; /* right Alt */
  135.     public static final int KEY_PAUSE           = 0xC5; /* Pause */
  136.     public static final int KEY_HOME            = 0xC7; /* Home on arrow keypad */
  137.     public static final int KEY_UP              = 0xC8; /* UpArrow on arrow keypad */
  138.     public static final int KEY_PRIOR           = 0xC9; /* PgUp on arrow keypad */
  139.     public static final int KEY_LEFT            = 0xCB; /* LeftArrow on arrow keypad */
  140.     public static final int KEY_RIGHT           = 0xCD; /* RightArrow on arrow keypad */
  141.     public static final int KEY_END             = 0xCF; /* End on arrow keypad */
  142.     public static final int KEY_DOWN            = 0xD0; /* DownArrow on arrow keypad */
  143.     public static final int KEY_NEXT            = 0xD1; /* PgDn on arrow keypad */
  144.     public static final int KEY_INSERT          = 0xD2; /* Insert on arrow keypad */
  145.     public static final int KEY_DELETE          = 0xD3; /* Delete on arrow keypad */
  146.     public static final int KEY_LMETA           = 0xDB; /* Left Windows/Option key */
  147.     public static final int KEY_LWIN            = KEY_LMETA; /* Left Windows key */
  148.     public static final int KEY_RMETA           = 0xDC; /* Right Windows/Option key */
  149.     public static final int KEY_RWIN            = KEY_RMETA; /* Right Windows key */
  150.     public static final int KEY_APPS            = 0xDD; /* AppMenu key */
  151.     public static final int KEY_POWER           = 0xDE;
  152.     public static final int KEY_SLEEP           = 0xDF;
  153.    
  154.     public static void update() {
  155.         updateKeyboard();
  156.         updateMouse();
  157.     }
  158.    
  159.     private static void updateKeyboard() {
  160.         downKeys.clear();
  161.         upKeys.clear();
  162.        
  163.         for (int i=0; i<NUM_KEYS; i++) {
  164.             if (isKeyDown(i) && !currentKeys.contains(i)) {
  165.                 downKeys.add(i);
  166.             }
  167.         }
  168.        
  169.         for (int i=0; i<NUM_KEYS; i++) {
  170.             if (!isKeyDown(i) && currentKeys.contains(i)) {
  171.                 upKeys.add(i);
  172.             }
  173.         }
  174.        
  175.         currentKeys.clear();
  176.        
  177.         for (int i=0; i<NUM_KEYS; i++) {
  178.             if (isKeyDown(i)) {
  179.                 currentKeys.add(i);
  180.             }
  181.         }
  182.     }
  183.    
  184.     private static void updateMouse() {
  185.         downMouse.clear();
  186.         upMouse.clear();
  187.        
  188.         for (int i=0; i<NUM_BUTTONS; i++) {
  189.             if (isMouseDown(i) && !currentMouse.contains(i)) {
  190.                 downMouse.add(i);
  191.             }
  192.         }
  193.        
  194.         for (int i=0; i<NUM_BUTTONS; i++) {
  195.             if (!isMouseDown(i) && currentMouse.contains(i)) {
  196.                 upMouse.add(i);
  197.             }
  198.         }
  199.        
  200.         currentMouse.clear();
  201.        
  202.         for (int i=0; i<NUM_BUTTONS; i++) {
  203.             if (isMouseDown(i)) {
  204.                 currentMouse.add(i);
  205.             }
  206.         }
  207.        
  208.         dx = Mouse.getDX();
  209.         dy = Mouse.getDY();
  210.     }
  211.    
  212.  
  213.     public static boolean isKeyDown(int keyCode) {
  214.         return Keyboard.isKeyDown(keyCode);
  215.     }
  216.    
  217.     public static boolean isKeyPressed(int keyCode) {
  218.         return downKeys.contains(keyCode);
  219.     }
  220.    
  221.     public static boolean isKeyUp(int keyCode) {
  222.         return upKeys.contains(keyCode);
  223.     }
  224.    
  225.    
  226.     public static boolean isMouseDown(int buttonCode) {
  227.         return Mouse.isButtonDown(buttonCode);
  228.     }
  229.    
  230.     public static boolean isMouseClicked(int buttonCode) {
  231.         return downMouse.contains(buttonCode);
  232.     }
  233.    
  234.     public static boolean isMouseUp(int buttonCode) {
  235.         return upMouse.contains(buttonCode);
  236.     }
  237.  
  238.     public static int getDX() {
  239.         return dx;
  240.     }
  241.  
  242.     public static int getDY() {
  243.         return dy;
  244.     }
  245. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement