// 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; } }
// 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; }