Ejemplo n.º 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;
        }
    }