Exemplo n.º 1
0
    private void HandleQuestStatus()
    {
        switch (_currQuestActivity)
        {
        case QuestActivity.cannotDo:
            if (_currentQ)
            {
                _currentQ.AbandonQuestButtonClicked();
            }
            FindNewQuest();
            break;

        case QuestActivity.doingActivity:
            if (!_attachedNavMeshAgent.isStopped)
            {
                _attachedNavMeshAgent.isStopped = true;
            }

            if (!Target)
            {
                _currQuestActivity = QuestActivity.needNewTarget;
                _attachedNavMeshAgent.isStopped = false;
            }
            else
            {
                DoActivity();
            }
            break;

        case QuestActivity.needNewTarget:
            GetNewQuestTarget();
            break;

        case QuestActivity.onMyWay:
            TryStartActivity();
            break;

        case QuestActivity.gettingNewQuest:
            // if in range of the target
            if ((transform.position - _currQuestSource.transform.position).sqrMagnitude < 5.0f)
            {
                // get a quest

                GameObject qObj = _currQuestSource.GetRandomQuest();
                if (qObj)
                {
                    // and go do it
                    QuestParchment qParch = qObj.GetComponent <QuestParchment>();
                    if (qParch)
                    {
                        qParch.AcceptQuestNPC(GetComponent <QuestHolderNPC>());
                        FindNewQuest();
                    }
                }
            }

            break;
        }
    }