use snake class name and version from GameBoard and remove snake type and version from GameplayTrackingService init

This commit is contained in:
2026-04-06 23:24:37 +02:00
parent a2a79b7efb
commit 1b8fa67059
4 changed files with 12 additions and 10 deletions
+4
View File
@@ -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"] ]
-2
View File
@@ -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(
+2 -2
View File
@@ -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'
+6 -6
View File
@@ -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}"))