From 3d88fdeb1253db9d5cb96015e93215cef4c43452 Mon Sep 17 00:00:00 2001 From: Alberto Xamin Date: Thu, 26 Nov 2020 15:53:27 +0100 Subject: [PATCH] fix bug and new structure --- backend/__init__.py | 4 ++-- backend/{ => bang}/cards.py | 21 +++++++++++++-------- backend/{ => bang}/characters.py | 0 backend/{ => bang}/deck.py | 2 +- backend/bang/expansions/__init__.py | 5 +++++ backend/bang/expansions/dodge_city/cards.py | 13 +++++++++++++ backend/{ => bang}/game.py | 8 ++++---- backend/{ => bang}/players.py | 10 +++++----- backend/{ => bang}/roles.py | 0 9 files changed, 43 insertions(+), 20 deletions(-) rename backend/{ => bang}/cards.py (96%) rename backend/{ => bang}/characters.py (100%) rename backend/{ => bang}/deck.py (98%) create mode 100644 backend/bang/expansions/__init__.py create mode 100644 backend/bang/expansions/dodge_city/cards.py rename backend/{ => bang}/game.py (98%) rename backend/{ => bang}/players.py (99%) rename backend/{ => bang}/roles.py (100%) diff --git a/backend/__init__.py b/backend/__init__.py index 1c730cc..1d6cd71 100644 --- a/backend/__init__.py +++ b/backend/__init__.py @@ -4,8 +4,8 @@ from typing import List import eventlet import socketio -from game import Game -from players import Player +from bang.game import Game +from bang.players import Player sio = socketio.Server(cors_allowed_origins="*") app = socketio.WSGIApp(sio, static_files={ diff --git a/backend/cards.py b/backend/bang/cards.py similarity index 96% rename from backend/cards.py rename to backend/bang/cards.py index bbed56d..a5c1084 100644 --- a/backend/cards.py +++ b/backend/bang/cards.py @@ -1,7 +1,7 @@ from typing import List, Set, Dict, Tuple, Optional from abc import ABC, abstractmethod from enum import IntEnum -import roles as r +import bang.roles as r class Suit(IntEnum): DIAMONDS = 0 # ♦ @@ -57,7 +57,7 @@ class Card(ABC): for i in range(len(player.equipment)): print('tipo',type(self)) if type(player.equipment[i]) == type(self): - player.game.deck.scrap(self.equipment[i]) + player.game.deck.scrap(player.equipment[i]) player.equipment[i] = self break else: @@ -162,7 +162,7 @@ class Bang(Card): if player.has_played_bang and not any([isinstance(c, Volcanic) for c in player.equipment]) and against != None: return False elif against != None: - import characters as chars + import bang.characters as chars super().play_card(player, against=against) player.has_played_bang = not isinstance( player.character, chars.WillyTheKid) @@ -199,7 +199,7 @@ class CatBalou(Card): def play_card(self, player, against): if against != None and (len(player.game.get_player_named(against).hand) + len(player.game.get_player_named(against).equipment)) > 0: super().play_card(player, against=against) - from players import PendingAction + from bang.players import PendingAction player.pending_action = PendingAction.CHOOSE player.choose_action = 'discard' player.target_p = against @@ -281,7 +281,7 @@ class Mancato(Card): self.desc = "Usa questa carta per annullare un bang" def play_card(self, player, against): - import characters as chars + import bang.characters as chars if (not player.has_played_bang and against != None and isinstance(player.character, chars.CalamityJanet)): player.sio.emit('chat_message', room=player.game.name, data=f'{player.name} ha giocato {self.name} come un BANG! contro {against}.') @@ -301,7 +301,7 @@ class Panico(Card): def play_card(self, player, against): if against != None and (len(player.game.get_player_named(against).hand) + len(player.game.get_player_named(against).equipment)) > 0: super().play_card(player, against=against) - from players import PendingAction + from bang.players import PendingAction player.pending_action = PendingAction.CHOOSE player.choose_action = 'steal' player.target_p = against @@ -339,8 +339,9 @@ class WellsFargo(Card): return True -def get_starting_deck() -> List[Card]: - return [ +def get_starting_deck(expansions:List[str]) -> List[Card]: + from bang.expansions import DodgeCity + base_cards = [ Barile(Suit.SPADES, 'Q'), Barile(Suit.SPADES, 'K'), Dinamite(Suit.HEARTS, 2), @@ -422,3 +423,7 @@ def get_starting_deck() -> List[Card]: Saloon(Suit.HEARTS, 5), WellsFargo(Suit.HEARTS, 3), ] + if 'dodge_city' in expansions: + base_cards.extend(DodgeCity.get_cards()) + return base_cards + diff --git a/backend/characters.py b/backend/bang/characters.py similarity index 100% rename from backend/characters.py rename to backend/bang/characters.py diff --git a/backend/deck.py b/backend/bang/deck.py similarity index 98% rename from backend/deck.py rename to backend/bang/deck.py index 202fbe0..c9ebdb0 100644 --- a/backend/deck.py +++ b/backend/bang/deck.py @@ -1,6 +1,6 @@ from typing import List, Set, Dict, Tuple, Optional import random -import cards as cs +import bang.cards as cs class Deck: def __init__(self, game): diff --git a/backend/bang/expansions/__init__.py b/backend/bang/expansions/__init__.py new file mode 100644 index 0000000..aebf978 --- /dev/null +++ b/backend/bang/expansions/__init__.py @@ -0,0 +1,5 @@ + +from bang.expansions.dodge_city import cards +class DodgeCity(): + def get_cards(): + return cards.get_starting_deck() \ No newline at end of file diff --git a/backend/bang/expansions/dodge_city/cards.py b/backend/bang/expansions/dodge_city/cards.py new file mode 100644 index 0000000..58a95d8 --- /dev/null +++ b/backend/bang/expansions/dodge_city/cards.py @@ -0,0 +1,13 @@ +from bang.cards import * + +class Riparo(Mustang): + def __init__(self, suit, number): + super().__init__(suit, number) + self.name = 'Riparo' + self.icon = '⛰' + +def get_starting_deck() -> List[Card]: + return [ + Riparo(Suit.DIAMONDS, 'K'), + Mustang(Suit.DIAMONDS, 'K'), + ]*100 diff --git a/backend/game.py b/backend/bang/game.py similarity index 98% rename from backend/game.py rename to backend/bang/game.py index 961e608..4fb6d1f 100644 --- a/backend/game.py +++ b/backend/bang/game.py @@ -2,10 +2,10 @@ from typing import List, Set, Dict, Tuple, Optional import random import socketio -import players -import characters -from deck import Deck -import roles +import bang.players as players +import bang.characters as characters +from bang.deck import Deck +import bang.roles as roles class Game: def __init__(self, name, sio:socketio): diff --git a/backend/players.py b/backend/bang/players.py similarity index 99% rename from backend/players.py rename to backend/bang/players.py index 0c5fe0f..d4ab136 100644 --- a/backend/players.py +++ b/backend/bang/players.py @@ -2,10 +2,10 @@ from enum import IntEnum import json from random import randrange import socketio -import deck -import roles as r -import cards as cs -import characters as chars +import bang.deck as deck +import bang.roles as r +import bang.cards as cs +import bang.characters as chars class PendingAction(IntEnum): PICK = 0 @@ -17,9 +17,9 @@ class PendingAction(IntEnum): class Player: - import game as g def __init__(self, name, sid, sio): + import bang.game as g super().__init__() self.name = name self.sid = sid diff --git a/backend/roles.py b/backend/bang/roles.py similarity index 100% rename from backend/roles.py rename to backend/bang/roles.py