Files
OpenFrontIO/src/core/game/Stats.ts
T
Scott Anderson 2dad1dc9a6 Record MIRV warhead intercepted stats, perf improvements (#1220)
## Description:

- Record MIRV warhead intercepted stats.
- Refactor `nearbyUnits()` to accept a predicate, and combine related
unnecessary `filter()` and `map()` calls.

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I understand that submitting code with bugs that could have been
caught through manual testing blocks releases and new features for all
contributors

---------

Co-authored-by: Scott Anderson <662325+scottanderson@users.noreply.github.com>
Co-authored-by: evanpelle <evanpelle@gmail.com>
2025-06-19 12:58:27 -07:00

97 lines
2.7 KiB
TypeScript

import { AllPlayersStats } from "../Schemas";
import { NukeType, OtherUnitType, PlayerStats } from "../StatsSchemas";
import { Player, TerraNullius } from "./Game";
export interface Stats {
getPlayerStats(player: Player): PlayerStats | null;
stats(): AllPlayersStats;
// Player attacks target
attack(
player: Player,
target: Player | TerraNullius,
troops: number | bigint,
): void;
// Player cancels attack on target
attackCancel(
player: Player,
target: Player | TerraNullius,
troops: number | bigint,
): void;
// Player betrays another player
betray(player: Player): void;
// Player sends a trade ship to target
boatSendTrade(player: Player, target: Player): void;
// Player's trade ship arrives at target, both players earn gold
boatArriveTrade(player: Player, target: Player, gold: number | bigint): void;
// Player's trade ship, captured from target, arrives. Player earns gold.
boatCapturedTrade(
player: Player,
target: Player,
gold: number | bigint,
): void;
// Player destroys target's trade ship
boatDestroyTrade(player: Player, target: Player): void;
// Player sends a transport ship to target with troops
boatSendTroops(
player: Player,
target: Player | TerraNullius,
troops: number | bigint,
): void;
// Player's transport ship arrives at target with troops
boatArriveTroops(
player: Player,
target: Player | TerraNullius,
troops: number | bigint,
): void;
// Player destroys target's transport ship with troops
boatDestroyTroops(
player: Player,
target: Player,
troops: number | bigint,
): void;
// Player launches bomb at target
bombLaunch(
player: Player,
target: Player | TerraNullius,
type: NukeType,
): void;
// Player's bomb lands at target
bombLand(player: Player, target: Player | TerraNullius, type: NukeType): void;
// Player's SAM intercepts a bomb from attacker
bombIntercept(player: Player, type: NukeType, count: number | bigint): void;
// Player earns gold from conquering tiles or trade ships from captured
goldWar(player: Player, captured: Player, gold: number | bigint): void;
// Player earns gold from workers
goldWork(player: Player, gold: number | bigint): void;
// Player builds a unit of type
unitBuild(player: Player, type: OtherUnitType): void;
// Player captures a unit of type
unitCapture(player: Player, type: OtherUnitType): void;
// Player upgrades a unit of type
unitUpgrade(player: Player, type: OtherUnitType): void;
// Player destroys a unit of type
unitDestroy(player: Player, type: OtherUnitType): void;
// Player loses a unit of type
unitLose(player: Player, type: OtherUnitType): void;
}