Exemplo n.º 1
0
        private WorldPath GenerateNewPath()
        {
            int num = (!moving || nextTile < 0 || !IsNextTilePassable()) ? warObject.Tile : nextTile;

            lastPathedTargetTile = destTile;
            WorldPath worldPath = Verse.Find.WorldPathFinder.FindPath(num, destTile, null); //caravan=null

            if (worldPath.Found && num != warObject.Tile)
            {
                if (worldPath.NodesLeftCount >= 2 && worldPath.Peek(1) == warObject.Tile)
                {
                    worldPath.ConsumeNextNode();
                    if (moving)
                    {
                        previousTileForDrawingIfInDoubt = nextTile;
                        nextTile         = warObject.Tile;
                        nextTileCostLeft = nextTileCostTotal - nextTileCostLeft;
                    }
                }
                else
                {
                    worldPath.AddNodeAtStart(warObject.Tile);
                }
            }
            return(worldPath);
        }
        private WorldPath GenerateNewPath()
        {
            int num = (moving && nextTile >= 0 && IsNextTilePassable()) ? nextTile : caravan.Tile;

            lastPathedTargetTile = destTile;
            WorldPath worldPath = WorldVehiclePathfinder.Instance.FindPath(num, destTile, caravan, null);

            if (worldPath.Found && num != caravan.Tile)
            {
                if (worldPath.NodesLeftCount >= 2 && worldPath.Peek(1) == caravan.Tile)
                {
                    worldPath.ConsumeNextNode();
                    if (moving)
                    {
                        previousTileForDrawingIfInDoubt = nextTile;
                        nextTile         = caravan.Tile;
                        nextTileCostLeft = nextTileCostTotal - nextTileCostLeft;
                    }
                }
                else
                {
                    worldPath.AddNodeAtStart(caravan.Tile);
                }
            }
            return(worldPath);
        }
Exemplo n.º 3
0
        private WorldPath FinalizedPath(int lastTile)
        {
            WorldPath emptyWorldPath = Find.WorldPathPool.GetEmptyWorldPath();
            int       num            = lastTile;

            for (;;)
            {
                int parentTile = calcGrid[num].parentTile;
                int num2       = num;
                emptyWorldPath.AddNodeAtStart(num2);
                if (num2 == parentTile)
                {
                    break;
                }
                num = parentTile;
            }
            emptyWorldPath.SetupFound(calcGrid[lastTile].knownCost);
            return(emptyWorldPath);
        }
Exemplo n.º 4
0
        private WorldPath FinalizedPath(int lastTile)
        {
            WorldPath emptyWorldPath = Find.WorldPathPool.GetEmptyWorldPath();
            int       num            = lastTile;

            while (true)
            {
                WorldShipPathFinder.PathFinderNodeFast pathFinderNodeFast = this.calcGrid[num];
                int parentTile = pathFinderNodeFast.parentTile;
                int num2       = num;
                emptyWorldPath.AddNodeAtStart(num2);
                if (num2 == parentTile)
                {
                    break;
                }
                num = parentTile;
            }
            emptyWorldPath.SetupFound((float)this.calcGrid[lastTile].knownCost);
            return(emptyWorldPath);
        }