using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
///
/// 战斗 - 模拟器
///
public class BattleSimulator {
/// 当前行动
public DataCombatRole actionRole;
/// 战斗队列
public BattleQueue battleQueue = new BattleQueue();
/// 当前阶段
public IPhase currentPhase;
/// 阶段字典
public Dictionary dictionary = new Dictionary();
public BattleSimulator(BattleTeam team1, BattleTeam team2) {
team1.Initial();
team2.Initial();
team1.Settings(1, 1);
team2.Settings(2, 1);
battleQueue.Add(team1.battles);
battleQueue.Add(team2.battles);
dictionary.Add(PhaseType.先攻阶段, new PhaseInitiative(this));
dictionary.Add(PhaseType.突袭阶段, new PhaseAssault(this));
dictionary.Add(PhaseType.回合阶段, new PhaseFormal(this));
dictionary.Add(PhaseType.行动阶段, new PhaseAction(this));
dictionary.Add(PhaseType.选择角色, new PhaseActionRoleSelect(this));
dictionary.Add(PhaseType.角色攻击, new PhaseActionRoleAttack(this));
dictionary.Add(PhaseType.结算阶段, new PhaseFinish(this));
}
/// 阶段过渡
public void Transition(PhaseType phaseType) {
// 检查阶段字典中是否存在指定的阶段类型
if (!dictionary.TryGetValue(phaseType, out IPhase newPhase)) { return; }
currentPhase = newPhase;
currentPhase?.Execute();
}
}