public override IEnumerator Execute(BattleContext battleContext) { // アイテム一覧の表示 battleContext.windowBattleItemCommand.CreateSelectableText(battleContext.player.GetStringOfItem()); yield return(null); battleContext.windowBattleItemCommand.Open(); yield return(new WaitUntil(() => Input.GetKeyDown(KeyCode.Space) || Input.GetKeyDown(KeyCode.Escape))); if (Input.GetKeyDown(KeyCode.Space)) { // 選択したアイテム int currentID = battleContext.windowBattleItemCommand.currentID; // コマンドの設定 battleContext.player.selectCommand = battleContext.player.inventory[currentID]; //ターゲットの設定 battleContext.player.SetTarget(); next = new EnemyPhase(); } else { // escの処理 battleContext.windowBattleMenuCommand.Select(); next = new ChooseCommandPhase(); } battleContext.windowBattleItemCommand.gameObject.SetActive(false); }
// 引数で必要なデータを受け取ればいいのでは? public override IEnumerator Execute(BattleContext battleContext) { // 技選択をしたら次のフェーズにいく yield return(new WaitUntil(() => Input.GetKeyDown(KeyCode.Space))); int currentID = battleContext.windowBattleMenuCommand.currentID; if (currentID == 0) { // 0なら攻撃 battleContext.player.selectCommand = battleContext.player.commands[0]; battleContext.player.target = battleContext.enemy; next = new EnemyPhase(); } else if (currentID == 1) { next = new ChooseSpellCommandPhase(); } else if (currentID == 3) { // アイテム使用 next = new ChooseItemCommandPhase(); } else { // それ以外なら再度ChooseCommandPhaseになる next = new ChooseCommandPhase(); } Debug.Log("ChooseCommandPhase"); }
public override IEnumerator Execute(BattleContext battleContext) { yield return(null); Debug.Log("StartPhase"); battleContext.SetEnemy(); battleContext.windowBattleMenuCommand.Open(); battleContext.windowLog.ShowLog(battleContext.enemy.name + "があらわれた!"); next = new ChooseCommandPhase(); }
public override IEnumerator Execute(BattleContext battleContext) { yield return(battleContext.windowLog.WaitWriting()); battleContext.windowBattleMenuCommand.Close(); battleContext.windowBattleSpellCommand.Close(); battleContext.player.selectCommand.Execute(battleContext.player, battleContext.player.target); battleContext.enemy.selectCommand.Execute(battleContext.enemy, battleContext.enemy.target); battleContext.windowLog.ShowLog("Executeフェーズ"); // どちらかが死亡したら if (battleContext.player.hp <= 0 || battleContext.enemy.hp <= 0) { next = new ResultPhase(); } else { battleContext.windowBattleMenuCommand.Open(); next = new ChooseCommandPhase(); } Debug.Log("ExecutePhase"); }