diff --git a/bundle/main.lua b/bundle/main.lua index 0a8d7a8..531f094 100644 --- a/bundle/main.lua +++ b/bundle/main.lua @@ -21,7 +21,6 @@ local flash_player_red_counter = 0 local slimes = {} local last_key_pressed = nil -local last_direction_moved = nil local move_repeat_counter = nil local gamemodes = {normal = 0, won = 1, lost = 2, config = 3} @@ -667,14 +666,6 @@ end function step(direction) if game_mode == gamemodes.normal then - 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() if direction ~= directions.inplace then @@ -1069,8 +1060,8 @@ 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) + if move_repeat_counter <= 0 and last_key_pressed ~= nil then + love.keypressed(last_key_pressed) end end @@ -1106,7 +1097,12 @@ function love.keypressed(key) game_mode = gamemodes.normal end else - last_key_pressed = key + if last_key_pressed == key then + -- Repeat faster after the initial threshold for repetition has been met + move_repeat_counter = 0.1 + else + move_repeat_counter = 0.3 + end if key == control_keys.configure and game_mode == gamemodes.normal then direction_keys = {} @@ -1118,8 +1114,10 @@ function love.keypressed(key) newGame() elseif key == control_keys.autoexplore then autoexplore() + last_key_pressed = key elseif direction_keys[key] ~= nil then step(direction_keys[key]) + last_key_pressed = key elseif key == 'pause' then debug = not debug end @@ -1128,7 +1126,7 @@ end function love.keyreleased(key) if last_key_pressed == key then - last_direction_moved = nil + last_key_pressed = nil move_repeat_counter = nil end end