Advertisement
Serafim

Untitled

Jan 2nd, 2015
716
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. namespace Raid:Input:
  2.   class Key
  3.     pressed = $private 'pressed'
  4.     kpress  = $private 'kpress'
  5.     kdown   = $private 'kdown'
  6.     kup     = $private 'kup'
  7.  
  8.     #
  9.     constructor: ->
  10.       @[kpress] = []
  11.       @[kdown]  = []
  12.       @[kup]    = []
  13.       @[pressed]= {}
  14.  
  15.       getKeyEvent = (e) ->
  16.         event =
  17.           original: e
  18.           code:     e.keyCode
  19.           char:     e.charCode
  20.           keyShift: e.shiftKey
  21.           keyAlt:   e.altKey
  22.           keyCtrl:  e.ctrlKey
  23.  
  24.       document.addEventListener 'keypress', (e) =>
  25.         i(getKeyEvent(e)) for i in @[kpress]
  26.       , false
  27.  
  28.       document.addEventListener 'keydown', (e) =>
  29.         i(getKeyEvent(e)) for i in @[kdown]
  30.         @[pressed][e.keyCode] = true
  31.       , false
  32.  
  33.       document.addEventListener 'keyup', (e) =>
  34.         i(getKeyEvent(e)) for i in @[kup]
  35.         delete @[pressed][e.keyCode]
  36.       , false
  37.  
  38.     #
  39.     press: (callback)  ->
  40.       @[kpress].push callback
  41.  
  42.     #
  43.     down: (callback)   ->
  44.       @[kdown].push callback
  45.  
  46.     #
  47.     up: (callback)     ->
  48.       @[kup].push callback
  49.  
  50.     #
  51.     pressed: (keycode, callback) ->
  52.       check = (keycode) =>
  53.         if @[pressed][keycode]
  54.           callback() if callback?
  55.           return true
  56.         return false
  57.  
  58.       if nameof(keycode) is 'Array'
  59.         for i in keycode
  60.           return true if check i
  61.         return false
  62.       return check keycode
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement