Made HasPressed function and implemented it #6

Merged
lustlion merged 2 commits from :master into master 2022-01-19 14:01:13 +00:00
3 changed files with 47 additions and 35 deletions

View File

@ -73,16 +73,16 @@ function Player:Smart()
if math.abs(self.vel.x) < self.zeroSpeed then self.vel.x = 0 end
if Keybind:Check(Keybind.move.left) then
if Keybind:CheckDown(Keybind.move.left) then
self.move_x = -self.moveSpeed
elseif Keybind:Check(Keybind.move.right) then
elseif Keybind:CheckDown(Keybind.move.right) then
self.move_x = self.moveSpeed
else
self.move_x = 0
end
self.vel.x = self.vel.x
if Keybind:Check(Keybind.move.jump) then
if Keybind:CheckDown(Keybind.move.jump) then
if self.isOnGround then
self.vel.y = -self.jumpImpulse
end
@ -90,18 +90,18 @@ function Player:Smart()
end
self.dashCooldownTimer = math.max(0,self.dashCooldownTimer - current_dt)
if Keybind:Check(Keybind.move.dash) then
if Keybind:CheckDown(Keybind.move.dash) then
if self.dashCooldownTimer == 0
and not self.isDashing
and self.dashCount > 0 then
self.dashCount = self.dashCount - 1
self.isDashing = true
local vertical = 0
if Keybind:Check(Keybind.move.down) then vertical = vertical + 1 end
if Keybind:Check(Keybind.move.up) then vertical = vertical - 1 end
if Keybind:CheckDown(Keybind.move.down) then vertical = vertical + 1 end
if Keybind:CheckDown(Keybind.move.up) then vertical = vertical - 1 end
local horizontal = 0
if Keybind:Check(Keybind.move.right) then horizontal = horizontal + 1 end
if Keybind:Check(Keybind.move.left) then horizontal = horizontal - 1 end
if Keybind:CheckDown(Keybind.move.right) then horizontal = horizontal + 1 end
if Keybind:CheckDown(Keybind.move.left) then horizontal = horizontal - 1 end
if horizontal == 0 and vertical == 0 then
horizontal = self.sprite_flip.x

View File

@ -3,8 +3,8 @@ Keybind.move = {}
Keybind.menu = {}
Keybind.debug = {}
function Keybind:Check(action)
for _, keyname in pairs(action) do
function Keybind:CheckDown(action)
for _, keyname in pairs(action.keys) do
if type(keyname) == "string" then
if love.keyboard.isDown(keyname) then return true end
else
@ -14,43 +14,55 @@ function Keybind:Check(action)
return false
end
function Keybind:Colision(cat, key)
function Keybind:HasPressed(action)
if Keybind:CheckDown(action) then
if not action.pressed then
action.pressed = true
return true
end
else
action.pressed = nil
end
return false
end
function Keybind:CheckCollision(cat, key)
for _, action in pairs(cat) do
for _, keyname in pairs(action) do
for _, keyname in pairs(action.keys) do
if key == keyname then return true end
end
end
return false
end
function Keybind:Add(action, key)
table.insert(action, key)
function Keybind:AddKey(action, key)
table.insert(action.keys, key)
end
function Keybind:Change(action, position, key)
action[position] = key
function Keybind:ChangeKey(action, position, key)
action.keys[position] = key
end
function Keybind:Remove(action)
action = {}
function Keybind:RemoveKeys(action)
action.keys = {}
end
function Keybind:Default()
--Menu
Keybind.menu.pause = {"escape"}
Keybind.menu.pause= { keys = {"escape"}}
--Move
Keybind.move.left = {"left", "a"}
Keybind.move.right = {"right", "d"}
Keybind.move.up = {"up", "w"}
Keybind.move.down = {"down", "s"}
Keybind.move.jump = {"z", "space"}
Keybind.move.attack = {"x", 1}
Keybind.move.dash = {"c", 2}
Keybind.move.left = { keys = {"left", "a"}}
Keybind.move.right = { keys = {"right", "d"}}
Keybind.move.up = { keys = {"up", "w"}}
Keybind.move.down = { keys = {"down", "s"}}
Keybind.move.jump = { keys = {"z", "space"}}
Keybind.move.attack = { keys = {"x", 1}}
Keybind.move.dash = { keys = {"c", 2}}
--Debug
Keybind.debug.debug = {"f1"}
Keybind.debug.reposition = {"f2"}
Keybind.debug.reload = {"f3"}
Keybind.debug.editor = {"f4"}
Keybind.debug.debug = { keys = {"f1"}}
Keybind.debug.reposition = { keys = {"f2"}}
Keybind.debug.reload = { keys = {"f3"}}
Keybind.debug.editor = { keys = {"f4"}}
end
-- Set default values at start

View File

@ -66,7 +66,7 @@ function love.update(dt)
--keypressed
if Keybind:Check(Keybind.menu.pause) then
if Keybind:HasPressed(Keybind.menu.pause) then
if do_pause then
do_pause = false
else
@ -75,7 +75,7 @@ function love.update(dt)
end
end
if Keybind:Check(Keybind.debug.debug) then
if Keybind:HasPressed(Keybind.debug.debug) then
if debug then
debug = false
debug_collision = true
@ -86,17 +86,17 @@ function love.update(dt)
end
end
if Keybind:Check(Keybind.debug.reposition) then
if Keybind:HasPressed(Keybind.debug.reposition) then
if not editor_mode then
main_Player.pos.x, main_Player.pos.y = 16,-10
end
end
if Keybind:Check(Keybind.debug.reload) then
if Keybind:HasPressed(Keybind.debug.reload) then
LoadLevel()
end
if Keybind:Check(Keybind.debug.editor) then
if Keybind:HasPressed(Keybind.debug.editor) then
if editor_mode then
editor_mode = false
else