controller = { input = { kb=0, pad=1 }, keysdown = {}, kb_keys= { {name="up", code="keyup"}, {name="down", code="keydow"}, {name="left", code="keyleft"}, {name="right",code="keyright"}, {name="jump", code="keyjump"}, {name="shoot",code="keyshoot"}}, pad_keys= { {name="up", code="btnup"}, {name="down", code="btndown"}, {name="left", code="keleft"}, {name="right",code="btnright"}, {name="jump", code="btnjump"}, {name="shoot",code="btnshoot"}, {name="next", code="btncycle1"}, {name="prev", code="btncycle2"}, {name="pause",code="btnpause"}} } function controller:init() -- Configuració dels input keyUp = tonumber(config.key("keyup")) or key.UP keyDown = tonumber(config.key("keydown")) or key.DOWN keyLeft = tonumber(config.key("keyleft")) or key.LEFT keyRight = tonumber(config.key("keyright")) or key.RIGHT keyJump = tonumber(config.key("keyjump")) or key.UP keyShoot = tonumber(config.key("keyshoot")) or key.SPACE btnUp = tonumber(config.key("btnup")) or pad.UP btnDown = tonumber(config.key("btndown")) or pad.DOWN btnLeft = tonumber(config.key("btnleft")) or pad.LEFT btnRight = tonumber(config.key("btnright")) or pad.RIGHT btnJump = tonumber(config.key("btnjump")) or pad.B btnShoot = tonumber(config.key("btnshoot")) or pad.A btnCycle1 = tonumber(config.key("btncycle1")) or pad.RIGHTSHOULDER btnCycle2 = tonumber(config.key("btncycle2")) or pad.LEFTSHOULDER btnPause = tonumber(config.key("btnpause")) or pad.START end function controller:define(code, key_code) config.key(code, key_code) -- To do: comprovar que es un code valid return true end function controller:check(action) local result = false if action=="up" then result = key.down(keyUp) or pad.down(btnUp) elseif action=="down" then result = key.down(keyDown) or pad.down(btnDown) elseif action=="left" then result = key.down(keyLeft) or pad.down(btnLeft) elseif action=="right" then result = key.down(keyRight) or pad.down(btnRight) elseif action=="jump" then result = key.down(keyJump) or pad.down(btnJump) elseif action=="shoot" then -- result = key.down(keyShoot) or pad.down(btnShoot) result = self:key_release(keyShoot) or self:key_release(btnShoot) end return result end function controller:key_release(keyid) if keyid==nil then print("INVALID KEY") return end -- if keysdown[keyid] then print("Pressed "..keyid) end if key.down(keyid) or pad.down(keyid) then self.keysdown[keyid] = true elseif self.keysdown[keyid] then self.keysdown[keyid] = false return true end return false end