diff --git a/server/GameBoard.py b/server/GameBoard.py index cdc8d36..d76fd12 100644 --- a/server/GameBoard.py +++ b/server/GameBoard.py @@ -20,6 +20,10 @@ class GameBoard: self.url = self._get_game_url(True if ruleset["version"] == "cli" else False) self.timeout = 500 + # Snake Helper Functions + def get_snake_name_and_version(self) -> tuple[str, str]: + return self.snake_class.name, self.snake_class.version + # Setter Functions def _set_snakes(self, snakes:list[dict]): self.other_snakes = [ x for x in snakes if x["id"] != self.my_snake["id"] ] diff --git a/server/Server.py b/server/Server.py index 1068388..d18cade 100644 --- a/server/Server.py +++ b/server/Server.py @@ -97,8 +97,6 @@ class Server: self.gameplay_tracking = GameplayTrackingService( gameplay_database=self.gameplay_database, - snake_type=self.snake_type, - snake_version=self.snake_version, logger=self.logger, ) self.dashboard_query = DashboardQueryService( diff --git a/server/blueprints/battlesnake.py b/server/blueprints/battlesnake.py index 1fc807c..c2681aa 100644 --- a/server/blueprints/battlesnake.py +++ b/server/blueprints/battlesnake.py @@ -48,8 +48,8 @@ def create_battlesnake_blueprint(server:'Server') -> Blueprint: server.metrics_collector.record_http_request('start') await server.game_runtime.prune_stale_games() game_state = await request.get_json() - await server.game_runtime.create_game_board(game_state) - await server.gameplay_tracking.record_gameplay_start(game_state) + game_board = await server.game_runtime.create_game_board(game_state) + await server.gameplay_tracking.record_gameplay_start(game_state, game_board) await await_log(server.logger.info(f'GAME START: {game_state['game']}')) return 'ok' diff --git a/server/services/gameplay_tracking.py b/server/services/gameplay_tracking.py index b012f64..d312dc6 100644 --- a/server/services/gameplay_tracking.py +++ b/server/services/gameplay_tracking.py @@ -4,20 +4,20 @@ from server.database import GameplayDatabase from server.GameBoard import GameBoard class GameplayTrackingService: - def __init__(self, gameplay_database:GameplayDatabase, snake_type:str, snake_version:str, logger:logging): + def __init__(self, gameplay_database:GameplayDatabase, logger:logging): self.gameplay_database = gameplay_database - self.snake_type = snake_type - self.snake_version = snake_version self.logger = logger - async def record_gameplay_start(self, game_state:dict) -> None: + async def record_gameplay_start(self, game_state:dict, game_board:GameBoard) -> None: + snake_name, snake_version = game_board.get_snake_name_and_version() + if self.gameplay_database is None: return try: await self.gameplay_database.record_game_start( game_state, - snake_type=self.snake_type, - snake_version=self.snake_version, + snake_type=snake_name, + snake_version=snake_version, ) except Exception as error: await await_log(self.logger.warning(f"Gameplay DB start record failed:{error}"))