Exemple #1
0
    public void OnUnitPathFinished(AIUnitController unit)
    {
        Vector3 location = unit.GetCurrentLocation();

        unit.SetNextLocation();
        if (location != unit.GetCurrentLocation())
        {
            MoveUnit(unit, unit.GetCurrentLocation());
        }

        else
        {
            IdleState state = new IdleState(unit);
            unit.ChangeState(state);
        }
    }
Exemple #2
0
    public void MoveUnit(AIUnitController unit, Vector3 location, int checkCount = 0)
    {
        Vector3         startingPosition = unit.GetCurrentTile().LocalLocation;
        List <GridTile> path             = _gridController.FindPath(startingPosition, location);

        int count          = checkCount + 1;
        int totalLocations = unit.GetLocationCount();

        if (path.Count > 0)
        {
            UnitState    nextState = new CallbackUnitState <AIUnitController>(unit, OnUnitPathFinished, unit as AIUnitController);
            WalkingState state     = new WalkingState(unit, nextState, path, OnUnitPathFail);

            unit.ChangeState(state);
            return;
        }

        else if (count < totalLocations)
        {
            unit.SetNextLocation();
            MoveUnit(unit, unit.GetCurrentLocation(), count);
        }
    }