Move in one direction by holding down the key

This commit is contained in:
Juhani Krekelä 2019-06-29 11:21:09 +03:00
parent 809a88e366
commit 3da02b2aa5
1 changed files with 53 additions and 35 deletions

View File

@ -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