/// <summary> /// 자신의 행동을 결정하는 함수입니다. 행동 이름을 우선 결정하고, 대상을 결정하는 Coroutine을 호출합니다. /// </summary> /// <param name="behaviorName">행동 이름</param> public void MakeBehavior(string behaviorName) { // 자신이 사망했거나 빙결되어 행동할 수 없는 경우 if (isDead || isFreezed || bm.GetEnd()) { if (playerNum == 1) { Debug.Log("You cannot make behavior."); } return; } BasicBehavior bb = new BasicBehavior(behaviorName); // 행동 이름이 존재하지 않는 경우 int skillType = BehaviorManager.GetSkillType(bb); if (skillType == -1) { Debug.LogWarning("Bad behavior in MakeBehavior."); return; } // 행동이 스킬이고 자신이 침묵되어 스킬을 사용할 수 없는 경우 else if ((skillType == 1 || skillType == 2) && isSilenced) { Debug.Log("You cannot invoke skill in this turn."); return; } // 행동에 필요한 마나가 부족한 경우 if (!BehaviorManager.EnoughMana(bb, mana)) { Debug.Log("Not enough mana."); return; } // 행동에서 지정해야 하는 대상 수가 지정 가능한 대상 수보다 많은 경우 if (!BehaviorManager.TargetsExist(bb, this)) { Debug.Log("Targets don't exist."); return; } // TODO 다수 대상 행동을 지정할 대상이 없을 때 행동을 제한할 필요가 있다. // TODO 이때 인공지능의 경우 다른 행동으로 다시 결정하게 할 필요가 있다. 지금은 여기서 return하면 그 턴에 아무 행동도 결정하지 않는다. behavior = new Behavior(bb, this); isTargetDecide = true; StartCoroutine("SelectTarget", behavior); }