public IEnumerator UpdateUnit(CombatUnit unit)
    {
        HexCell nextMove = null;

        if (unit.CurrentStance == CombatUnit.Stance.UNASSIGNED)
        {
            AssignStance(unit);
        }

        nextMove = GetNextMove(unit);

        if (!nextMove)
        {
            nextMove = unit.Behaviour.Patrol(cityState.GetCity().GetHexCell(), 2);
        }

        if (!nextMove || nextMove == unit.HexUnit.Location)
        {
            unit.EndTurn();
        }
        else
        {
            unit.SetPath(nextMove);
            while (unit.AttackUnit && unit.HexUnit.pathToTravel != null && unit.HexUnit.pathToTravel.Count != 0)
            {
                yield return(new WaitForFixedUpdate());
            }
        }
    }