feat(battle-sim): implement battle simulation logic and metrics tracking

- Added WarBattleMetrics interface to track attacker and defender skills during battles.
- Enhanced WarUnit class with method to log activated skills.
- Introduced environment setup for battle simulation, including unit set loading and configuration resolution.
- Developed in-memory and Redis transport layers for handling battle simulation requests and results.
- Created types and interfaces for battle simulation payloads and responses.
- Implemented battle simulation processing logic, including logging and skill tracking.
- Added tests for battle simulation processor to ensure functionality and correctness.
This commit is contained in:
2025-12-30 11:17:28 +00:00
parent 97439f64a9
commit 56e662a7db
20 changed files with 1549 additions and 7 deletions
+4
View File
@@ -2,6 +2,7 @@ import type { GameSessionTokenPayload } from '@sammo-ts/common';
import type { DatabaseClient as InfraDatabaseClient } from '@sammo-ts/infra';
import type { TurnDaemonTransport } from './daemon/transport.js';
import type { BattleSimTransport } from './battleSim/transport.js';
export interface GameProfile {
id: string;
@@ -117,6 +118,7 @@ export type DatabaseClient = InfraDatabaseClient<
export interface GameApiContext {
db: DatabaseClient;
turnDaemon: TurnDaemonTransport;
battleSim: BattleSimTransport;
profile: GameProfile;
auth: GameSessionTokenPayload | null;
}
@@ -124,12 +126,14 @@ export interface GameApiContext {
export const createGameApiContext = (options: {
db: DatabaseClient;
turnDaemon: TurnDaemonTransport;
battleSim: BattleSimTransport;
profile: GameProfile;
auth: GameSessionTokenPayload | null;
}): GameApiContext => {
return {
db: options.db,
turnDaemon: options.turnDaemon,
battleSim: options.battleSim,
profile: options.profile,
auth: options.auth,
};