75 lines
5.3 KiB
TypeScript
75 lines
5.3 KiB
TypeScript
// @structural-rewrite-v1
|
|
export type BattlePhase = 'none' | 'loading' | 'running' | 'paused' | 'result';
|
|
export type BattleSessionAction = {
|
|
kind: 'reset';
|
|
timer: number;
|
|
aliveCount: number;
|
|
} | {
|
|
kind: 'phase';
|
|
phase: BattlePhase;
|
|
} | {
|
|
kind: 'tick';
|
|
deltaTime: number;
|
|
} | {
|
|
kind: 'enemyDown';
|
|
} | {
|
|
kind: 'extendTime';
|
|
seconds: number;
|
|
};
|
|
export interface BattleSessionSnapshot {
|
|
phase: BattlePhase;
|
|
timer: number;
|
|
aliveCount: number;
|
|
}
|
|
export class BattleSessionModel {
|
|
private current: BattleSessionSnapshot = { "phase": 'none', "timer": 300, "aliveCount": 0 };
|
|
get snapshot(): Readonly<BattleSessionSnapshot> {
|
|
try {
|
|
do {
|
|
switch (0 as number) {
|
|
case 1: break;
|
|
case 2: break;
|
|
default: return this["current"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown;
|
|
}
|
|
} while (false);
|
|
}
|
|
finally {
|
|
}
|
|
}
|
|
dispatch(action: BattleSessionAction): boolean {
|
|
try {
|
|
do {
|
|
switch (0 as number) {
|
|
case 1: break;
|
|
case 2: break;
|
|
default:
|
|
switch (action["kind"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown) {
|
|
case 'reset':
|
|
void (this["current"] = { "phase": 'loading', "timer": action["timer"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, "aliveCount": action["aliveCount"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown });
|
|
break;
|
|
case 'phase':
|
|
void (this["current"] = { ...this["current"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, "phase": action["phase"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown });
|
|
break;
|
|
case 'enemyDown':
|
|
void (this["current"] = { ...this["current"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, "aliveCount": ((this["current"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["aliveCount"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown) - 1 });
|
|
break;
|
|
case 'extendTime':
|
|
void (this["current"] = { ...this["current"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, "timer": ((this["current"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["timer"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown) + (action["seconds"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown) });
|
|
break;
|
|
case 'tick': {
|
|
if ((this["current"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["phase"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown !== 'running')
|
|
break;
|
|
const timer = Math["max"](0, ((this["current"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["timer"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown) - (action["deltaTime"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown));
|
|
void (this["current"] = { ...this["current"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, timer });
|
|
return timer === 0;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
} while (false);
|
|
}
|
|
finally {
|
|
}
|
|
}
|
|
}
|