Esempio n. 1
0
    // 이 함수는 Coroutine 함수입니다.
    /// <summary>
    /// 행동 결정 단계 중 대상을 결정하는 동안 실행되는 Coroutine입니다. 적절한 대상을 정할 때까지 대기하고, 대상 결정이 끝나면 행동 결정을 완료합니다.
    /// </summary>
    /// <param name="behavior"></param>
    /// <returns></returns>
    IEnumerator SelectTarget(Behavior behavior)
    {
        while (true)
        {
            // 결정 버튼이 눌릴 때까지 대기
            yield return(new WaitUntil(() => isDecideClicked));

            isDecideClicked = false;
            // 적절한 대상을 선택하면
            if (BehaviorManager.VerificateTarget(behavior))
            {
                // 행동 결정을 확정하고 완료한다.
                bm.AddBehavior(behavior);
                //if (playerNum == 1) Debug.Log("Player" + playerNum + " has decided.");
                hasDecided     = true;
                isTargetDecide = false;
                break;
            }
            else
            {
                if (playerNum == 1)
                {
                    Debug.Log("Invalid target. Please select targets again. (" + behavior.GetBehavior().Name + ")");
                }
            }
            // TODO 통찰의 경우 두 번 선택하도록 만들기
            // TODO 선택 취소 기능 만들기
        }
    }