67 lines
1.6 KiB
Lua
67 lines
1.6 KiB
Lua
Input = {}
|
|
|
|
Input.playermovekeys = { up = "up", down = "down", left = "left", right = "right" }
|
|
Input.playerswitchkeys = { ["1"] = "1", ["2"] = "2", ["3"] = "3"}
|
|
Input.colorfromkey = {"red", "green", "blue"}
|
|
Input.moveRepeatDelay = .28
|
|
Input.moveRepeatInterval = .09
|
|
Input.heldMoveKey = nil
|
|
Input.moveRepeatElapsed = 0
|
|
Input.moveRepeatStarted = false
|
|
|
|
function Input:handler(dt)
|
|
local key = self.heldMoveKey
|
|
if key and not love.keyboard.isDown(key) then
|
|
key = nil
|
|
for _, candidate in ipairs({"up", "down", "left", "right"}) do
|
|
if love.keyboard.isDown(candidate) then key = candidate; break end
|
|
end
|
|
self.heldMoveKey = key
|
|
self.moveRepeatElapsed = 0
|
|
self.moveRepeatStarted = false
|
|
end
|
|
|
|
if not key then return nil end
|
|
self.moveRepeatElapsed = self.moveRepeatElapsed + dt
|
|
if not self.moveRepeatStarted then
|
|
if self.moveRepeatElapsed >= self.moveRepeatDelay then
|
|
self.moveRepeatElapsed = 0
|
|
self.moveRepeatStarted = true
|
|
return key
|
|
end
|
|
elseif self.moveRepeatElapsed >= self.moveRepeatInterval then
|
|
self.moveRepeatElapsed = 0
|
|
return key
|
|
end
|
|
end
|
|
|
|
function Input:beginMove(key)
|
|
self.heldMoveKey = key
|
|
self.moveRepeatElapsed = 0
|
|
self.moveRepeatStarted = false
|
|
end
|
|
|
|
function Input:stopMoveRepeat()
|
|
self.heldMoveKey = nil
|
|
self.moveRepeatElapsed = 0
|
|
self.moveRepeatStarted = false
|
|
|
|
end
|
|
|
|
function Input.isPlayerMove(key)
|
|
if Input.playermovekeys[key] then
|
|
return true
|
|
end
|
|
return false
|
|
end
|
|
|
|
function Input.isPlayerSwitch(key)
|
|
if Input.playerswitchkeys[key] then
|
|
return true
|
|
end
|
|
return false
|
|
end
|
|
|
|
function Input.playerColor(key)
|
|
return Input.colorfromkey[tonumber(key)]
|
|
end
|