Compare commits

..

7 Commits

Author SHA1 Message Date
Ishaan Bhardwaj
d0fdaf30ab Merge pull request #81 from Tetro48/std-rs-lockpatch
Patch standard.lua to prevent midair lock
2023-10-19 04:27:06 -04:00
Aymir Dmitrievich Danilov
8062f6e3fa Patch standard.lua to prevent midair lock 2023-10-19 14:33:25 +07:00
Ishaan Bhardwaj
7c3cf0b1bd Merge pull request #79 from aur9ra/feat-save-replay-once-per-game-only
Ensure replays are only saved once per game
2023-08-25 19:28:34 -04:00
aur9ra
52ddbbc174 Ensure replays are only saved once per game 2023-08-20 22:22:36 -07:00
Ishaan Bhardwaj
5f81c35677 Merge pull request #78 from Tetro48/replay-qol
Replay frame stepping
2023-08-14 11:26:56 -04:00
Tetro48
635ef6270f Changed frame step input to rotate_left 2023-08-14 21:52:22 +07:00
Tetro48
649dd5f31d Added frame stepping for replays
`menu_decide` for frame step action is temporary
2023-08-14 21:46:00 +07:00
3 changed files with 13 additions and 1 deletions

View File

@@ -38,6 +38,7 @@ function ReplayScene:new(replay, game_mode, ruleset)
self.replay_index = 1 self.replay_index = 1
self.replay_speed = 1 self.replay_speed = 1
self.show_invisible = false self.show_invisible = false
self.frame_steps = 0
DiscordRPC:update({ DiscordRPC:update({
details = "Viewing a replay", details = "Viewing a replay",
state = self.game.name, state = self.game.name,
@@ -47,7 +48,10 @@ end
function ReplayScene:update() function ReplayScene:update()
local frames_left = self.replay_speed local frames_left = self.replay_speed
if not self.paused then if not self.paused or self.frame_steps > 0 then
if self.frame_steps > 0 then
self.frame_steps = self.frame_steps - 1
end
while frames_left > 0 do while frames_left > 0 do
frames_left = frames_left - 1 frames_left = frames_left - 1
self.inputs = self.replay["inputs"][self.replay_index]["inputs"] self.inputs = self.replay["inputs"][self.replay_index]["inputs"]
@@ -123,6 +127,9 @@ function ReplayScene:onInputPress(e)
self.paused = not self.paused self.paused = not self.paused
if self.paused then pauseBGM() if self.paused then pauseBGM()
else resumeBGM() end else resumeBGM() end
--frame step
elseif e.input == "rotate_left" then
self.frame_steps = self.frame_steps + 1
elseif e.input == "left" then elseif e.input == "left" then
self.replay_speed = self.replay_speed - 1 self.replay_speed = self.replay_speed - 1
if self.replay_speed < 1 then if self.replay_speed < 1 then

View File

@@ -179,6 +179,9 @@ function GameMode:update(inputs, ruleset)
if self.game_over or self.completed then if self.game_over or self.completed then
if self.save_replay and self.game_over_frames == 0 then if self.save_replay and self.game_over_frames == 0 then
self:saveReplay() self:saveReplay()
-- ensure replays are only saved once per game, incase self.game_over_frames == 0 for longer than one frame
self.save_replay = false
end end
self.game_over_frames = self.game_over_frames + 1 self.game_over_frames = self.game_over_frames + 1
return return

View File

@@ -93,6 +93,8 @@ function SRS:onPieceMove(piece, grid)
if piece.manipulations >= SRS.MANIPULATIONS_MAX then if piece.manipulations >= SRS.MANIPULATIONS_MAX then
piece.locked = true piece.locked = true
end end
else
piece.locked = false
end end
end end