21 lines
562 B
TypeScript
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));
|
|
}
|