From f985d8448379f09731314c13aac805f33fb06c09 Mon Sep 17 00:00:00 2001 From: Giulio Date: Wed, 30 Mar 2022 12:22:27 +0200 Subject: [PATCH] fast forward in replay --- backend/bang/game.py | 7 +++++-- backend/server.py | 8 ++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/backend/bang/game.py b/backend/bang/game.py index ec43232..e93e8a5 100644 --- a/backend/bang/game.py +++ b/backend/bang/game.py @@ -81,12 +81,12 @@ class Game: eventlet.sleep(0.5) self.notify_room() - def replay(self, log): + def replay(self, log, speed=1.0, fast_forward = -1): from tests.dummy_socket import DummySocket self.players = [] self.is_hidden = True self.is_replay = True - self.replay_speed = 1 + self.replay_speed = speed for i in range(len(log)-1): print('replay:', i, 'of', len(log)-3, '->', log[i]) if (log[i] == "@@@"): @@ -134,6 +134,9 @@ class Game: player.buy_gold_rush_card(int(cmd[2])) # if cmd[1] == 'chat_message': # chat_message(None, cmd[2], player) + if i == fast_forward: + self.replay_speed = 1.0 + eventlet.sleep(max(self.replay_speed, 0.1)) eventlet.sleep(6) if self.is_replay: diff --git a/backend/server.py b/backend/server.py index 820807f..c9fbe64 100644 --- a/backend/server.py +++ b/backend/server.py @@ -368,12 +368,16 @@ def chat_message(sid, msg, pl=None): return if '/replay' in msg and not '/replayspeed' in msg: _cmd = msg.split() - if len(_cmd) == 2: + if len(_cmd) >= 2: replay_id = _cmd[1] response = requests.get(f"https://www.toptal.com/developers/hastebin/raw/{replay_id}") log = response.text.splitlines() ses.game.spectators.append(ses) - ses.game.replay(log) + if len(_cmd) == 2: + ses.game.replay(log) + if len(_cmd) == 3: + line = int(_cmd[2]) + ses.game.replay(log, speed=0.1, fast_forward=line) return if '/replayspeed' in msg: _cmd = msg.split()