diff options
Diffstat (limited to 'model.py')
| -rw-r--r-- | model.py | 30 |
1 files changed, 23 insertions, 7 deletions
@@ -1,7 +1,6 @@ from math import floor from csv import reader from typing import Tuple -from pathlib import Path from dataclasses import dataclass MIN_LEVEL = 1 @@ -12,7 +11,7 @@ PLAYER_PER_COURT = 4 @dataclass class Player: name: str - skill: int = 0 + skill: int = 1 status: bool = False @@ -56,6 +55,7 @@ class CourtList: @dataclass class PlayerList: location: str + guests: int = 0 def __post_init__(self) -> None: with open("data/" + self.location, newline="") as file: @@ -64,8 +64,19 @@ class PlayerList: players = { id: Player(row[0], int(row[1])) for id, row in enumerate(pointer) } + self.guest_id_start = len(players) + 1 self.players = players + def increment_guests(self): + self.guests = self.guests + 1 + return self.guests + + def decrement_guests(self): + if self.guests == 0: + return 0 + self.guests = self.guests - 1 + return self.guests + def get_player_status(self, player_number: int) -> bool: return self.players[player_number].status @@ -78,10 +89,15 @@ class PlayerList: return self.players def get_possible_game_count(self) -> int: - active_player_count = len(self.get_active_players()) - possible_games = floor(active_player_count / PLAYER_PER_COURT) + total_players = len(self.get_potential_players()) + possible_games = floor(total_players / PLAYER_PER_COURT) return possible_games - def get_active_players(self) -> Tuple[dict, dict]: - active_players = {k: v for k, v in self.players.items() if v.status} - return active_players + def get_potential_players(self) -> dict: + players = {k: v for k, v in self.players.items() if v.status} + guests = { + self.guest_id_start + k: Player(name=f"Guest {k}") + for k in range(1, self.guests + 1) + } + players.update(guests) + return players |
