Move in one direction by holding down the key
This commit is contained in:
parent
809a88e366
commit
3da02b2aa5
|
@ -12,6 +12,10 @@ local player_x = nil
|
|||
local player_y = nil
|
||||
local player_direction = nil
|
||||
|
||||
local last_key_pressed = nil
|
||||
local last_direction_moved = nil
|
||||
local move_repeat_counter = nil
|
||||
|
||||
-- ------------------------------------------------------------------
|
||||
-- Cavern generation
|
||||
-- ------------------------------------------------------------------
|
||||
|
@ -510,63 +514,77 @@ function movePlayer(direction)
|
|||
end
|
||||
|
||||
-- ------------------------------------------------------------------
|
||||
-- Callbacks
|
||||
-- Gameloop functions
|
||||
-- ------------------------------------------------------------------
|
||||
|
||||
function love.load()
|
||||
math.randomseed(os.time())
|
||||
|
||||
function newGame()
|
||||
generateCavern()
|
||||
spawnPlayer()
|
||||
generateVisibilityMap()
|
||||
initializeRememberedCavern()
|
||||
end
|
||||
|
||||
function step(direction)
|
||||
if last_direction_moved == direction then
|
||||
-- Repeat faster after the initial threshold for repetition has been met
|
||||
move_repeat_counter = 0.1
|
||||
else
|
||||
last_direction_moved = direction
|
||||
move_repeat_counter = 0.3
|
||||
end
|
||||
|
||||
rememberVisible()
|
||||
movePlayer(direction)
|
||||
generateVisibilityMap()
|
||||
end
|
||||
|
||||
-- ------------------------------------------------------------------
|
||||
-- Callbacks
|
||||
-- ------------------------------------------------------------------
|
||||
|
||||
function love.load()
|
||||
math.randomseed(os.time())
|
||||
|
||||
newGame()
|
||||
end
|
||||
|
||||
function love.update(dt)
|
||||
if move_repeat_counter ~= nil and move_repeat_counter > 0 then
|
||||
move_repeat_counter = move_repeat_counter - dt
|
||||
if move_repeat_counter <= 0 then
|
||||
step(last_direction_moved)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function love.keypressed(key)
|
||||
last_key_pressed = key
|
||||
if key == 'r' then
|
||||
generateCavern()
|
||||
spawnPlayer()
|
||||
generateVisibilityMap()
|
||||
initializeRememberedCavern()
|
||||
newGame()
|
||||
elseif key == 'i' then
|
||||
rememberVisible()
|
||||
movePlayer(directions.up)
|
||||
generateVisibilityMap()
|
||||
step(directions.up)
|
||||
elseif key == 'j' then
|
||||
rememberVisible()
|
||||
movePlayer(directions.left)
|
||||
generateVisibilityMap()
|
||||
step(directions.left)
|
||||
elseif key == 'k' then
|
||||
rememberVisible()
|
||||
movePlayer(directions.down)
|
||||
generateVisibilityMap()
|
||||
step(directions.down)
|
||||
elseif key == 'l' then
|
||||
rememberVisible()
|
||||
movePlayer(directions.right)
|
||||
generateVisibilityMap()
|
||||
step(directions.right)
|
||||
elseif key == 'u' then
|
||||
rememberVisible()
|
||||
movePlayer(directions.upleft)
|
||||
generateVisibilityMap()
|
||||
step(directions.upleft)
|
||||
elseif key == 'm' then
|
||||
rememberVisible()
|
||||
movePlayer(directions.downleft)
|
||||
generateVisibilityMap()
|
||||
step(directions.downleft)
|
||||
elseif key == '.' then
|
||||
rememberVisible()
|
||||
movePlayer(directions.downright)
|
||||
generateVisibilityMap()
|
||||
step(directions.downright)
|
||||
elseif key == 'o' then
|
||||
rememberVisible()
|
||||
movePlayer(directions.upright)
|
||||
generateVisibilityMap()
|
||||
step(directions.upright)
|
||||
elseif key == 'q' then
|
||||
love.event.quit()
|
||||
else
|
||||
display_inputinfo_counter = 1
|
||||
end
|
||||
end
|
||||
|
||||
function love.keyreleased(key)
|
||||
if last_key_pressed == key then
|
||||
last_direction_moved = nil
|
||||
move_repeat_counter = nil
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in New Issue