|
|
@ -11,12 +11,10 @@ class Game(db.Model): |
|
|
|
state = db.Column(db.Enum(GameState), server_default=GameState(1).name, nullable=False) |
|
|
|
state = db.Column(db.Enum(GameState), server_default=GameState(1).name, nullable=False) |
|
|
|
start_time = db.Column(db.DateTime) |
|
|
|
start_time = db.Column(db.DateTime) |
|
|
|
end_time = db.Column(db.DateTime) |
|
|
|
end_time = db.Column(db.DateTime) |
|
|
|
game_players = db.relationship( |
|
|
|
players = db.relationship( |
|
|
|
'GamePlayer', |
|
|
|
'GamePlayer', |
|
|
|
back_populates='game', |
|
|
|
back_populates='game', |
|
|
|
cascade="save-update, merge, delete, delete-orphan") |
|
|
|
cascade="save-update, merge, delete, delete-orphan") |
|
|
|
players = association_proxy('game_players', 'user', |
|
|
|
|
|
|
|
creator=lambda user: GamePlayer(user=user)) |
|
|
|
|
|
|
|
users = association_proxy('game_players', 'user', |
|
|
|
users = association_proxy('game_players', 'user', |
|
|
|
creator=lambda user: GamePlayer(user=user)) |
|
|
|
creator=lambda user: GamePlayer(user=user)) |
|
|
|
objectives = db.relationship( |
|
|
|
objectives = db.relationship( |
|
|
@ -31,19 +29,22 @@ class Game(db.Model): |
|
|
|
cascade="save-update, merge, delete, delete-orphan") |
|
|
|
cascade="save-update, merge, delete, delete-orphan") |
|
|
|
|
|
|
|
|
|
|
|
def last_player_locations(self): |
|
|
|
def last_player_locations(self): |
|
|
|
return [user.last_location(self) for user in self.players if user.locations] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def bunnies(self): |
|
|
|
|
|
|
|
# pylint: disable=not-an-iterable |
|
|
|
# pylint: disable=not-an-iterable |
|
|
|
return [gameplayer.user for gameplayer in self.game_players if gameplayer.role == Role.bunny] |
|
|
|
return [player.last_location() for player in self.players if player.user.locations] |
|
|
|
|
|
|
|
|
|
|
|
def last_locations(self, players): |
|
|
|
def last_locations(self, players): |
|
|
|
locations = [] |
|
|
|
locations = [] |
|
|
|
for player in players: |
|
|
|
for player in players: |
|
|
|
|
|
|
|
if isinstance(player, GamePlayer): |
|
|
|
|
|
|
|
player = player.user |
|
|
|
locations.append(player.last_location(self)) |
|
|
|
locations.append(player.last_location(self)) |
|
|
|
return locations |
|
|
|
return locations |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def bunnies(self): |
|
|
|
|
|
|
|
# pylint: disable=not-an-iterable |
|
|
|
|
|
|
|
return [gameplayer for gameplayer in self.players if gameplayer.role == Role.bunny] |
|
|
|
|
|
|
|
|
|
|
|
def owned_by(self, user): |
|
|
|
def owned_by(self, user): |
|
|
|
# pylint: disable=not-an-iterable |
|
|
|
# pylint: disable=not-an-iterable |
|
|
|
'''given user is an owner of this game''' |
|
|
|
'''given user is an owner of this game''' |
|
|
|
return user in [gameplayer.user for gameplayer in self.game_players if gameplayer.role == Role.owner] |
|
|
|
return user in [gameplayer.user for gameplayer in self.players if gameplayer.role == Role.owner] |
|
|
|