[NEW] Controller.lua - Gestiona tot lo relatiu al teclat i gamepad
[NEW] opcions_input.lua - Pantalla de definició de tecles per a teclat i pad - Modificat el abad per a que use controller
This commit is contained in:
81
data/controller.lua
Normal file
81
data/controller.lua
Normal file
@@ -0,0 +1,81 @@
|
||||
|
||||
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
|
||||
Reference in New Issue
Block a user