From 0c3ff913b1e39572f5c1ce464839ccadca84173d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 29 Mar 2022 04:22:55 +0000 Subject: [PATCH 1/6] Bump vue-i18n from 8.27.0 to 8.27.1 in /frontend Bumps [vue-i18n](https://github.com/kazupon/vue-i18n) from 8.27.0 to 8.27.1. - [Release notes](https://github.com/kazupon/vue-i18n/releases) - [Changelog](https://github.com/kazupon/vue-i18n/blob/v8.x/CHANGELOG.md) - [Commits](https://github.com/kazupon/vue-i18n/compare/v8.27.0...v8.27.1) --- updated-dependencies: - dependency-name: vue-i18n dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- frontend/package.json | 2 +- frontend/yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index d1de466..b5e045f 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -15,7 +15,7 @@ "socket.io-client": "^4.4.1", "vue": "^2.6.14", "vue-clipboard2": "^0.3.3", - "vue-i18n": "^8.27.0", + "vue-i18n": "^8.27.1", "vue-router": "^3.5.3", "vue-socket.io": "^3.0.10" }, diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 6ad06fe..fbd234e 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -7807,10 +7807,10 @@ vue-hot-reload-api@^2.3.0: version "2.3.4" resolved "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz" -vue-i18n@^8.27.0: - version "8.27.0" - resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-8.27.0.tgz#3e3b3ed2c107ccbd7f20dbdd7a96763a9990253e" - integrity sha512-SX35iJHL5PJ4Gfh0Mo/q0shyHiI2V6Zkh51c+k8E9O1RKv5BQyYrCxRzpvPrsIOJEnLaeiovet3dsUB0e/kDzw== +vue-i18n@^8.27.1: + version "8.27.1" + resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-8.27.1.tgz#fe660f6c14793ae404d6a715875d772594a3324f" + integrity sha512-lWrGm4F25qReJ7XxSnFVb2h3PfW54ldnM4C+YLBGGJ75+Myt/kj4hHSTKqsyDLamvNYpvINMicSOdW+7yuqgIQ== "vue-loader-v16@npm:vue-loader@^16.1.0": version "16.8.3" From fdf4c97176f32c60e8dc56733404e7b3560f3f0e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 30 Mar 2022 04:20:56 +0000 Subject: [PATCH 2/6] Bump caniuse-lite from 1.0.30001320 to 1.0.30001322 in /frontend Bumps [caniuse-lite](https://github.com/browserslist/caniuse-lite) from 1.0.30001320 to 1.0.30001322. - [Release notes](https://github.com/browserslist/caniuse-lite/releases) - [Commits](https://github.com/browserslist/caniuse-lite/compare/1.0.30001320...1.0.30001322) --- updated-dependencies: - dependency-name: caniuse-lite dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- frontend/package.json | 2 +- frontend/yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index d1de466..88283cb 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -8,7 +8,7 @@ "lint": "vue-cli-service lint" }, "dependencies": { - "caniuse-lite": "^1.0.30001320", + "caniuse-lite": "^1.0.30001322", "core-js": "^3.16.2", "pretty-checkbox-vue": "^1.1.9", "register-service-worker": "^1.7.2", diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 6ad06fe..c5aea07 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -2244,10 +2244,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001286, caniuse-lite@^1.0.30001320: - version "1.0.30001320" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001320.tgz#8397391bec389b8ccce328636499b7284ee13285" - integrity sha512-MWPzG54AGdo3nWx7zHZTefseM5Y1ccM7hlQKHRqJkPozUaw3hNbBTMmLn16GG2FUzjR13Cr3NPfhIieX5PzXDA== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001286, caniuse-lite@^1.0.30001322: + version "1.0.30001322" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001322.tgz#2e4c09d11e1e8f852767dab287069a8d0c29d623" + integrity sha512-neRmrmIrCGuMnxGSoh+x7zYtQFFgnSY2jaomjU56sCkTA6JINqQrxutF459JpWcWRajvoyn95sOXq4Pqrnyjew== case-sensitive-paths-webpack-plugin@^2.3.0: version "2.4.0" From 7aebb2318bb8ba0707152e8878b431bc8307f48f Mon Sep 17 00:00:00 2001 From: Giulio Date: Wed, 30 Mar 2022 12:20:01 +0200 Subject: [PATCH 3/6] typo in rpc_log --- backend/bang/game.py | 5 ++++- backend/server.py | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/backend/bang/game.py b/backend/bang/game.py index ad5dd2a..ec43232 100644 --- a/backend/bang/game.py +++ b/backend/bang/game.py @@ -116,7 +116,10 @@ class Game: player.end_turn() if cmd[1] == 'play_card': data = json.loads(cmd[2]) - player.play_card(data['index'], data['against'], data['with']) + if len(data) != 0: + player.play_card(data['index'], data['against'], data['with']) + else: + player.special(data) #TODO: remove this, is only for the typo in the log if cmd[1] == 'respond': player.respond(int(cmd[2])) if cmd[1] == 'choose': diff --git a/backend/server.py b/backend/server.py index 0908df2..820807f 100644 --- a/backend/server.py +++ b/backend/server.py @@ -331,7 +331,7 @@ def scrap(sid, card_index): @sio.event def special(sid, data): ses: Player = sio.get_session(sid) - ses.game.rpc_log.append(f'{ses.name};play_card;{json.dumps(data)}') + ses.game.rpc_log.append(f'{ses.name};special;{json.dumps(data)}') ses.special(data) @sio.event From f985d8448379f09731314c13aac805f33fb06c09 Mon Sep 17 00:00:00 2001 From: Giulio Date: Wed, 30 Mar 2022 12:22:27 +0200 Subject: [PATCH 4/6] 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() From 4bed4484b5e884b0653886cd038519cb563d21b1 Mon Sep 17 00:00:00 2001 From: Giulio Date: Wed, 30 Mar 2022 12:29:46 +0200 Subject: [PATCH 5/6] fix rissa --- backend/bang/expansions/dodge_city/cards.py | 12 +++++++++--- backend/bang/game.py | 4 +++- backend/bang/players.py | 9 ++++----- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/backend/bang/expansions/dodge_city/cards.py b/backend/bang/expansions/dodge_city/cards.py index ecc0b68..56a1e40 100644 --- a/backend/bang/expansions/dodge_city/cards.py +++ b/backend/bang/expansions/dodge_city/cards.py @@ -75,12 +75,18 @@ class Rissa(CatBalou): def play_card(self, player, against, _with): if _with != None: - players_with_cards = [p.name for p in player.game.players if p != player and (len(p.hand)+len(p.equipment)) > 0] - if len(players_with_cards) == 0: + if len([p.name for p in player.game.players if p != player and (len(p.hand)+len(p.equipment)) > 0]) == 0: return False + #se sono qui vuol dire che ci sono giocatori con carte in mano oltre a me + self.rissa_targets = [] + target = player.game.get_player(player.name, next=True) + while target != player: + if len(target.hand) + len(target.equipment) > 0: + self.rissa_target.append(target) + target = player.game.get_player(target.name, next=True) player.game.deck.scrap(_with) player.event_type = 'rissa' - super().play_card(player, against=players_with_cards[0]) + super().play_card(player, against=self.rissa_targets.pop(0)) player.sio.emit('chat_message', room=player.game.name, data=f'_play_card|{player.name}|{self.name}') return True return False diff --git a/backend/bang/game.py b/backend/bang/game.py index e93e8a5..152ff6d 100644 --- a/backend/bang/game.py +++ b/backend/bang/game.py @@ -396,7 +396,9 @@ class Game: {'name':nextPlayer.name,'cards': self.available_cards}, default=lambda o: o.__dict__)) nextPlayer.notify_self() - def get_player_named(self, name:str): + def get_player_named(self, name:str, next=False): + if next: + return self.players[(self.players_map[name]+1) % len(self.players)] return self.players[self.players_map[name]] def responders_did_respond_resume_turn(self, did_lose=False): diff --git a/backend/bang/players.py b/backend/bang/players.py index d5e413f..7887cd1 100644 --- a/backend/bang/players.py +++ b/backend/bang/players.py @@ -61,6 +61,7 @@ class Player: self.target_p: str = None self.is_drawing = False self.special_use_count = 0 + self.rissa_targets = [] self.committed_suit_manette = None self.not_chosen_character = None try: @@ -657,7 +658,7 @@ class Player: def choose(self, card_index): if self.pending_action != PendingAction.CHOOSE: return - if self.target_p and self.target_p != '': # panico, cat balou + if self.target_p and self.target_p != '': # panico, cat balou, rissa target = self.game.get_player_named(self.target_p) card = None if (target.name == self.name): @@ -672,15 +673,13 @@ class Player: self.hand.append(card) else: self.game.deck.scrap(card, True) - if self.event_type != 'rissa' or (self.event_type == 'rissa' and (len([p.name for p in self.game.get_alive_players() if p != self and (len(p.hand)+len(p.equipment)) > 0]) == 0 or self.target_p == [p.name for p in self.game.get_alive_players() if p != self and (len(p.hand)+len(p.equipment)) > 0][-1])): + if self.event_type != 'rissa' or len(self.rissa_targets) == 0: self.event_type = '' self.target_p = '' self.choose_action = '' self.pending_action = PendingAction.PLAY else: - self.target_p = self.game.players[(self.game.players_map[self.target_p]+1)%len(self.game.players)].name - while self.target_p == self.name or len(self.game.players[self.game.players_map[self.target_p]].hand) + len(self.game.players[self.game.players_map[self.target_p]].equipment) == 0: - self.target_p = self.game.players[(self.game.players_map[self.target_p]+1)%len(self.game.players)].name + self.target_p = self.rissa_targets.pop(0).name self.notify_self() elif self.choose_text == 'choose_ricercato': player = self.game.get_player_named(self.available_cards[card_index]['name']) From b90c5553e39dfc6611a3388c67842895d3a787c2 Mon Sep 17 00:00:00 2001 From: Giulio Date: Wed, 30 Mar 2022 12:45:47 +0200 Subject: [PATCH 6/6] fix rissa 2 --- backend/bang/expansions/dodge_city/cards.py | 13 +++++++------ backend/bang/players.py | 2 ++ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/backend/bang/expansions/dodge_city/cards.py b/backend/bang/expansions/dodge_city/cards.py index 56a1e40..b62c0d2 100644 --- a/backend/bang/expansions/dodge_city/cards.py +++ b/backend/bang/expansions/dodge_city/cards.py @@ -75,18 +75,19 @@ class Rissa(CatBalou): def play_card(self, player, against, _with): if _with != None: - if len([p.name for p in player.game.players if p != player and (len(p.hand)+len(p.equipment)) > 0]) == 0: + if len([p for p in player.game.players if p != player and (len(p.hand)+len(p.equipment)) > 0]) == 0: return False #se sono qui vuol dire che ci sono giocatori con carte in mano oltre a me - self.rissa_targets = [] - target = player.game.get_player(player.name, next=True) + player.rissa_targets = [] + target = player.game.get_player_named(player.name, next=True) while target != player: if len(target.hand) + len(target.equipment) > 0: - self.rissa_target.append(target) - target = player.game.get_player(target.name, next=True) + player.rissa_targets.append(target) + target = player.game.get_player_named(target.name, next=True) player.game.deck.scrap(_with) player.event_type = 'rissa' - super().play_card(player, against=self.rissa_targets.pop(0)) + print(f'rissa targets: {player.rissa_targets}') + super().play_card(player, against=player.rissa_targets.pop(0).name) player.sio.emit('chat_message', room=player.game.name, data=f'_play_card|{player.name}|{self.name}') return True return False diff --git a/backend/bang/players.py b/backend/bang/players.py index 7887cd1..fe45fa9 100644 --- a/backend/bang/players.py +++ b/backend/bang/players.py @@ -208,6 +208,7 @@ class Player: ser.pop('on_pick_cb') ser.pop('on_failed_response_cb') ser.pop('attacker') + ser.pop('rissa_targets') if self.attacker: ser['attacker'] = self.attacker.name ser['sight'] = self.get_sight() @@ -680,6 +681,7 @@ class Player: self.pending_action = PendingAction.PLAY else: self.target_p = self.rissa_targets.pop(0).name + print(f'rissa targets: {self.rissa_targets}') self.notify_self() elif self.choose_text == 'choose_ricercato': player = self.game.get_player_named(self.available_cards[card_index]['name'])