Files
Genarrative/src/games/bark-battle/domain/EnergyTugOfWar.ts

21 lines
562 B
TypeScript

export type AdvanceEnergyInput = {
energy: number;
playerPower: number;
opponentPower: number;
deltaMs: number;
balanceFactor: number;
};
export function advanceEnergy(input: AdvanceEnergyInput) {
const deltaSeconds = Math.max(0, input.deltaMs) / 1000;
const powerDelta = input.playerPower - input.opponentPower;
return clampEnergy(input.energy + powerDelta * input.balanceFactor * deltaSeconds);
}
export function clampEnergy(value: number) {
if (!Number.isFinite(value)) {
return 0;
}
return Math.min(100, Math.max(-100, value));
}