Compare commits

..

1 Commits

Author SHA1 Message Date
dependabot[bot]
bf22ba3db0
Bump certifi from 2022.12.7 to 2024.7.4 in /backend
Bumps [certifi](https://github.com/certifi/python-certifi) from 2022.12.7 to 2024.7.4.
- [Commits](https://github.com/certifi/python-certifi/compare/2022.12.07...2024.07.04)

---
updated-dependencies:
- dependency-name: certifi
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-05 21:47:04 +00:00
7 changed files with 31 additions and 88 deletions

View File

@ -4,23 +4,20 @@ on:
branches: main branches: main
jobs: jobs:
build-platform: buildx:
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy:
matrix:
platform: [linux/amd64, linux/arm/v7, linux/arm64/v8]
steps: steps:
- name: Checkout -
name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
-
- name: Set up QEMU name: Set up QEMU
uses: docker/setup-qemu-action@v3 uses: docker/setup-qemu-action@v3
-
- name: Set up Docker Buildx name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v3
-
- name: Cache Docker layers name: Cache Docker layers
uses: actions/cache@v4 uses: actions/cache@v4
id: cache id: cache
with: with:
@ -28,44 +25,27 @@ jobs:
key: ${{ runner.os }}-buildx-${{ github.sha }} key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: | restore-keys: |
${{ runner.os }}-buildx- ${{ runner.os }}-buildx-
-
- name: Login to DockerHub name: Login to DockerHub
uses: docker/login-action@v3 uses: docker/login-action@v3
with: with:
username: ${{ secrets.DOCKER_USERNAME }} username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }} password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build and push
- name: Prepare Platform Tag
id: platform_tag
run: echo "platform_tag=$(echo ${{ matrix.platform }} | sed 's|/|-|g')" >> $GITHUB_ENV
- name: Build and push platform-specific image
uses: docker/build-push-action@v5 uses: docker/build-push-action@v5
with: with:
context: . context: .
platforms: ${{ matrix.platform }} platforms: linux/arm/v7,linux/amd64
push: true push: true
tags: albertoxamin/bang:${{ env.platform_tag }} tags: albertoxamin/bang:latest
cache-from: type=registry,ref=albertoxamin/bang:${{ env.platform_tag }} cache-from: type=registry,ref=user/app:latest
cache-to: type=inline cache-to: type=inline
create-manifest: - name: Notify discord
runs-on: ubuntu-latest uses: th0th/notify-discord@v0.4.1
needs: build-platform if: ${{ always() }}
steps: env:
- name: Set up Docker Buildx DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
uses: docker/setup-buildx-action@v3 GITHUB_ACTOR: ${{ github.actor }}
GITHUB_JOB_NAME: "Docker image main :latest"
- name: Login to DockerHub GITHUB_JOB_STATUS: ${{ job.status }}
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Create and push multi-arch manifest
run: |
docker buildx imagetools create \
--tag albertoxamin/bang:latest \
albertoxamin/bang:linux-amd64 \
albertoxamin/bang:linux-arm-v7 \
albertoxamin/bang:linux-arm64-v8

View File

@ -122,7 +122,6 @@ class Game:
self.rpc_log = [] self.rpc_log = []
self.is_replay = False self.is_replay = False
self.replay_speed = 1 self.replay_speed = 1
self.owner: str | None = None
def shuffle_players(self): def shuffle_players(self):
if not self.started: if not self.started:
@ -255,7 +254,6 @@ class Game:
"available_expansions": self.available_expansions, "available_expansions": self.available_expansions,
"is_replay": self.is_replay, "is_replay": self.is_replay,
"characters_to_distribute": self.characters_to_distribute, "characters_to_distribute": self.characters_to_distribute,
"owner": self.owner,
}, },
) )
G.sio.emit("debug", room=self.name, data=self.debug) G.sio.emit("debug", room=self.name, data=self.debug)
@ -310,8 +308,6 @@ class Game:
if player.is_admin(): if player.is_admin():
self.feature_flags() self.feature_flags()
self.players.append(player) self.players.append(player)
if len(self.players) == 1:
self.owner = player.name
if len(self.players) > 7: if len(self.players) > 7:
if "dodge_city" not in self.expansions: if "dodge_city" not in self.expansions:
self.expansions.append("dodge_city") self.expansions.append("dodge_city")
@ -478,10 +474,6 @@ class Game:
if p.get_discarded(attacker=attacker, card_name=card_name): if p.get_discarded(attacker=attacker, card_name=card_name):
self.waiting_for += 1 self.waiting_for += 1
p.notify_self() p.notify_self()
elif card_name == "Tornado" and len(p.hand) == 0:
self.deck.draw(player=p)
self.deck.draw(player=p)
p.notify_self()
if self.waiting_for == 0: if self.waiting_for == 0:
attacker.pending_action = PendingAction.PLAY attacker.pending_action = PendingAction.PLAY
attacker.notify_self() attacker.notify_self()
@ -993,8 +985,6 @@ class Game:
self.deck = None self.deck = None
return True return True
else: else:
self.owner = next((p.name for p in self.players if not p.is_bot), None)
self.notify_room()
return False return False
def player_death(self, player: pl.Player, disconnected=False): def player_death(self, player: pl.Player, disconnected=False):

View File

@ -1574,10 +1574,6 @@ class Player:
self.game.deck.scrap(self.hand.pop(card_index), player=self) self.game.deck.scrap(self.hand.pop(card_index), player=self)
self.mancato_needed -= 1 self.mancato_needed -= 1
else: else:
if self.attacker and "gold_rush" in self.game.expansions and not self.is_ghost:
if isinstance(self.attacker, Player):
self.attacker.gold_nuggets += 1
self.attacker.notify_self()
self.lives -= 1 self.lives -= 1
self.mancato_needed = 0 self.mancato_needed = 0
if self.mancato_needed <= 0: if self.mancato_needed <= 0:
@ -1872,8 +1868,7 @@ class Player:
): ):
self.expected_response.append(cs.Bang(0, 0).name) self.expected_response.append(cs.Bang(0, 0).name)
if self.character.check(self.game, chw.BigSpencer): if self.character.check(self.game, chw.BigSpencer):
self.expected_response = self.game.deck.mancato_cards.copy() self.expected_response = []
self.expected_response.remove(cs.Mancato(0, 0).name)
if any((isinstance(c, trt.Caboose) for c in self.equipment)): if any((isinstance(c, trt.Caboose) for c in self.equipment)):
self.expected_response.append([c.name for c in self.equipment if not c.usable_next_turn]) self.expected_response.append([c.name for c in self.equipment if not c.usable_next_turn])
self.on_failed_response_cb = self.take_damage_response self.on_failed_response_cb = self.take_damage_response
@ -1947,7 +1942,6 @@ class Player:
self.choose_text = "choose_poker" self.choose_text = "choose_poker"
if card_name == "Bandidos": if card_name == "Bandidos":
self.choose_text = "choose_bandidos" self.choose_text = "choose_bandidos"
self.attacker = attacker
self.mancato_needed = min(2, len(self.hand)) self.mancato_needed = min(2, len(self.hand))
self.available_cards.append( self.available_cards.append(
{"name": "-1hp", "icon": "💔", "noDesc": True} {"name": "-1hp", "icon": "💔", "noDesc": True}

View File

@ -1,4 +1,4 @@
certifi==2022.12.7 certifi==2024.7.4
dnspython==2.3.0 dnspython==2.3.0
eventlet==0.35.2 eventlet==0.35.2
python-engineio==4.3.4 python-engineio==4.3.4

View File

@ -226,29 +226,6 @@ def test_bandidos():
assert p1.pending_action == PendingAction.WAIT assert p1.pending_action == PendingAction.WAIT
assert p.pending_action == PendingAction.PLAY assert p.pending_action == PendingAction.PLAY
def test_bandidos_with_gold_rush():
g = Game('test')
g.expansions = ['gold_rush']
ps = [Player(f'p{i}', f'p{i}') for i in range(2)]
for p in ps:
g.add_player(p)
g.start_game()
for p in ps:
p.available_characters = [Character('test_char', 4)]
p.set_character(p.available_characters[0].name)
p = g.players[g.turn]
p1 = g.players[(g.turn+1)%3]
p.draw('')
p.hand = [Bandidos(0,0), Bandidos(0,0)]
p.play_card(0)
assert len(p.hand) == 1
assert p.pending_action == PendingAction.WAIT
assert p1.pending_action == PendingAction.CHOOSE
p1.choose(len(p1.hand))
assert p1.lives == 3
assert p.pending_action == PendingAction.PLAY
assert p.gold_nuggets == 1
# test Poker # test Poker
def test_poker(): def test_poker():
g = Game('test') g = Game('test')

View File

@ -483,7 +483,6 @@ export default {
fullScreenEffects: [], fullScreenEffects: [],
showPopup: false, showPopup: false,
selectedExpansionInfo: {}, selectedExpansionInfo: {},
owner: undefined,
}), }),
sockets: { sockets: {
expansion_info(data) { expansion_info(data) {
@ -504,7 +503,6 @@ export default {
this.togglable_expansions = data.available_expansions; this.togglable_expansions = data.available_expansions;
this.expansions = data.expansions; this.expansions = data.expansions;
this.is_replay = data.is_replay; this.is_replay = data.is_replay;
this.owner = data.owner;
this.characters_to_distribute = data.characters_to_distribute; this.characters_to_distribute = data.characters_to_distribute;
this.players = data.players.map((x) => { this.players = data.players.map((x) => {
return { return {
@ -731,7 +729,11 @@ export default {
return ""; return "";
}, },
isRoomOwner() { isRoomOwner() {
return this.owner === this.username; if (this.players.length > 0) {
let pls = this.players.filter((x) => !x.is_bot);
return pls.length > 0 && pls[0].name == this.username;
}
return false;
}, },
startGameCard() { startGameCard() {
if (!this.started && this.players.length > 2 && this.isRoomOwner) { if (!this.started && this.players.length > 2 && this.isRoomOwner) {

View File

@ -542,7 +542,7 @@
}, },
"Fratelli Di Sangue": { "Fratelli Di Sangue": {
"name": "Blood Brothers", "name": "Blood Brothers",
"desc": "At the begin of their turn, players can lose 1 hp (except the last one) to give it to another player" "desc": "At the begin of their turn, payers can lose 1 hp (except the last one) to give it to another player"
}, },
"I Dalton": { "I Dalton": {
"name": "The Daltons", "name": "The Daltons",