53 lines
1.7 KiB
TypeScript
53 lines
1.7 KiB
TypeScript
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
|
|
import { BattleStateComp } from "./BattleStateComp";
|
|
import { BattleManager } from "./BattleManager";
|
|
|
|
@ecs.register('BattlePhaseSystem')
|
|
export class BattlePhaseSystem extends ecs.ComblockSystem {
|
|
filter(): ecs.IMatcher {
|
|
return ecs.allOf(BattleStateComp);
|
|
|
|
}
|
|
|
|
update(e: ecs.Entity) {
|
|
const state = e.get(BattleStateComp);
|
|
|
|
switch(state.phase) {
|
|
case BattleStateComp.Phase.Preparation:
|
|
this.handlePreparation(state);
|
|
break;
|
|
case BattleStateComp.Phase.Fighting:
|
|
this.handleFighting(state);
|
|
break;
|
|
case BattleStateComp.Phase.Victory:
|
|
this.handleVictory(state);
|
|
break;
|
|
case BattleStateComp.Phase.Defeat:
|
|
this.handleDefeat(state);
|
|
break;
|
|
}
|
|
}
|
|
|
|
private handlePreparation(state: BattleStateComp) {
|
|
// 准备阶段逻辑:角色选择、装备检查等
|
|
if (state.startTime > 0) {
|
|
state.setPhase(BattleStateComp.Phase.Fighting);
|
|
}
|
|
}
|
|
|
|
private handleFighting(state: BattleStateComp) {
|
|
// 实时战斗逻辑:由其他系统处理
|
|
}
|
|
|
|
private handleVictory(state: BattleStateComp) {
|
|
// 胜利结算逻辑
|
|
BattleManager.endBattleWithUI(true);
|
|
state.setPhase(BattleStateComp.Phase.Preparation);
|
|
}
|
|
|
|
private handleDefeat(state: BattleStateComp) {
|
|
// 失败结算逻辑
|
|
BattleManager.endBattleWithUI(false);
|
|
state.setPhase(BattleStateComp.Phase.Preparation);
|
|
}
|
|
}
|