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