fast forward in replay

This commit is contained in:
Giulio 2022-03-30 12:22:27 +02:00
parent 7aebb2318b
commit f985d84483
2 changed files with 11 additions and 4 deletions

View File

@ -81,12 +81,12 @@ class Game:
eventlet.sleep(0.5) eventlet.sleep(0.5)
self.notify_room() self.notify_room()
def replay(self, log): def replay(self, log, speed=1.0, fast_forward = -1):
from tests.dummy_socket import DummySocket from tests.dummy_socket import DummySocket
self.players = [] self.players = []
self.is_hidden = True self.is_hidden = True
self.is_replay = True self.is_replay = True
self.replay_speed = 1 self.replay_speed = speed
for i in range(len(log)-1): for i in range(len(log)-1):
print('replay:', i, 'of', len(log)-3, '->', log[i]) print('replay:', i, 'of', len(log)-3, '->', log[i])
if (log[i] == "@@@"): if (log[i] == "@@@"):
@ -134,6 +134,9 @@ class Game:
player.buy_gold_rush_card(int(cmd[2])) player.buy_gold_rush_card(int(cmd[2]))
# if cmd[1] == 'chat_message': # if cmd[1] == 'chat_message':
# chat_message(None, cmd[2], player) # 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(max(self.replay_speed, 0.1))
eventlet.sleep(6) eventlet.sleep(6)
if self.is_replay: if self.is_replay:

View File

@ -368,12 +368,16 @@ def chat_message(sid, msg, pl=None):
return return
if '/replay' in msg and not '/replayspeed' in msg: if '/replay' in msg and not '/replayspeed' in msg:
_cmd = msg.split() _cmd = msg.split()
if len(_cmd) == 2: if len(_cmd) >= 2:
replay_id = _cmd[1] replay_id = _cmd[1]
response = requests.get(f"https://www.toptal.com/developers/hastebin/raw/{replay_id}") response = requests.get(f"https://www.toptal.com/developers/hastebin/raw/{replay_id}")
log = response.text.splitlines() log = response.text.splitlines()
ses.game.spectators.append(ses) ses.game.spectators.append(ses)
if len(_cmd) == 2:
ses.game.replay(log) ses.game.replay(log)
if len(_cmd) == 3:
line = int(_cmd[2])
ses.game.replay(log, speed=0.1, fast_forward=line)
return return
if '/replayspeed' in msg: if '/replayspeed' in msg:
_cmd = msg.split() _cmd = msg.split()