Home Reference Source

src/client/js/lib/keyboard.js

/**
 * Key listener function, adapted from https://github.com/kittykatattack/learningPixi#keyboard
 * Please refer to this link for extended documentation.
 * @param {number} keyCode ASCII key code for the key to listen. For best results declare the key codes in GLOBAL.js 
 */
import { isFocused, getIngame } from '../pixigame';

export function keyboard(keyCode) {
  let key = {};
  key.code = keyCode;
  key.isDown = false;
  key.isUp = true;
  key.press = undefined;
  key.release = undefined;
  //If this is a mobile device & the joystick is being used, this will disable the handlers to stop interference.
  key.mobile = false; 
  //The `downHandler`
  key.downHandler = event => {
      if (event.keyCode === key.code && !key.mobile) {
        if (isFocused() && getIngame()) {
          if (key.isUp && key.press){
            key.press();
          }
          key.isDown = true;
          key.isUp = false;
        }
        //If 
        else{
          key.isDown = false;
          key.isUp = true;
        }
    // event.preventDefault();
      }
  };

  //The `upHandler`
  key.upHandler = event => {
      if (event.keyCode === key.code && !key.mobile) {
        if(isFocused() && getIngame()){
          if (key.isDown && key.release){
            key.release();
          }
          key.isDown = false;
          key.isUp = true;
        }
        else{
          key.isDown = false;
          key.isUp = true;
        }
      }
    // event.preventDefault();
  };

  //Attach event listeners
  window.addEventListener(
    "keydown", key.downHandler.bind(key), false
  );
  window.addEventListener(
    "keyup", key.upHandler.bind(key), false
  );
  return key;
}