Пример #1
0
    // Changes from one state to another
    void changeState(SubState newState)
    {
        switch (newState)
        {
        case SubState.Capturing:
            if (!aiUnit_.hasFlag)
            {
                StopAllCoroutines();
                StartCoroutine(aiUnit_.GetComponent <AIUnit>().capturing());
            }
            else
            {
                subState = SubState.DeliverFlag;
            }

            break;

        case SubState.Empty:

            Debug.Log("Is in empty Capture");
            StopAllCoroutines();
            aiUnit_.path_.Clear();
            //restartCaptureState();

            break;


        case SubState.DeliverFlag:

            if (!aiUnit_.isDelivering)
            {
                aiUnit_.path_.Clear();

                Node startNode = aiUnit_.getClosestNode();
                aiUnit_.getNewPath(startNode, aiUnit_.deliveryNode);

                if (aiUnit_.path_.Count > 0)
                {
                    aiUnit_.isDelivering = true;
                    StartCoroutine(aiUnit_.GetComponent <AIUnit>().deliverFlag());
                }
            }

            break;

        case SubState.Fighting:

            if (!aiUnit_.hasFlag && aiUnit_.isFighting == false)
            {
                //aiUnit_.isFighting = true;
                StartCoroutine(aiUnit_.GetComponent <AIUnit>().fight());
            }

            break;
        }
    }
Пример #2
0
    // Use this for initialization
    void Start()
    {
        aiUnit_  = this.GetComponent <AIUnit>();
        aiSight_ = aiSight_.GetComponent <AISight>();

        retreating_ = false;

        //Get Path to Flag
        aiUnit_.getNewPath(aiUnit_.startNode, aiUnit_.targetNode);

        subState = SubState.Capturing;
    }