public CellPassabilityRule_PathGrid(PathfindData pathfindData) : base(pathfindData)
        {
            edificeGrid = pathfindData.map.edificeGrid;
            pathGrid    = pathfindData.map.pathGrid;
            pawn        = pathfindData.traverseParms.pawn;
            TraverseMode mode = pathfindData.traverseParms.mode;

            canDestroy = mode == TraverseMode.PassAllDestroyableThings ||
                         mode == TraverseMode.PassAllDestroyableThingsNotWater;
        }
 public static void GetMoveTicks(PathfindData pathfindData, out int moveTicksCardinal, out int moveTicksDiagonal)
 {
     if (pathfindData.traverseParms.pawn != null)
     {
         moveTicksCardinal = pathfindData.traverseParms.pawn.TicksPerMoveCardinal;
         moveTicksDiagonal = pathfindData.traverseParms.pawn.TicksPerMoveDiagonal;
     }
     else
     {
         moveTicksCardinal = DefaultMoveTicksCardinal;
         moveTicksDiagonal = DefaultMoveTicksDiagonal;
     }
 }
Esempio n. 3
0
        private static void FlashRulePassability(DebugCellPassRule rule, Pawn pawn, TraverseMode traverseMode, bool canBash)
        {
            Map             map           = pawn.Map;
            CellRef         pawnPosition  = map.GetCellRef(pawn.Position);
            TraverseParms   traverseParms = TraverseParms.For(pawn, mode: traverseMode, canBash: canBash);
            LocalTargetInfo targetInfo    = new LocalTargetInfo(pawnPosition);
            PathfindData    pathfindData  = new PathfindData(map, pawnPosition, targetInfo, traverseParms, PathEndMode.OnCell);

            CellPassabilityRule passRule = rule.ruleFactory.Invoke(pathfindData);

            if (passRule.Applies())
            {
                foreach (IntVec3 c in map.AllCells)
                {
                    float color = passRule.IsPassable(map.GetCellRef(c)) ? 0.5f : 0f;
                    map.debugDrawer.FlashCell(c, color);
                }
            }
            DebugActionsUtility.DustPuffFrom(pawn);
        }
        private static void FlashRuleCost(DebugCellCostRule rule, Pawn pawn, TraverseMode traverseMode, bool canBash)
        {
            Map             map           = pawn.Map;
            CellRef         pawnPosition  = map.GetCellRef(pawn.Position);
            TraverseParms   traverseParms = TraverseParms.For(pawn, mode: traverseMode, canBash: canBash);
            LocalTargetInfo targetInfo    = new LocalTargetInfo(pawnPosition);
            PathfindData    pathfindData  = new PathfindData(map, pawnPosition, targetInfo, traverseParms, PathEndMode.OnCell);

            CellCostRule costRule = rule.ruleFactory.Invoke(pathfindData);

            if (costRule.Applies())
            {
                foreach (IntVec3 c in map.AllCells)
                {
                    int cost = costRule.GetCost(map.GetCellRef(c));
                    map.debugDrawer.FlashCell(c, cost / 100f, cost.ToString());
                }
            }
            DebugActionsUtility.DustPuffFrom(pawn);
        }
Esempio n. 5
0
 protected CostRule(PathfindData pathfindData) : base(pathfindData)
 {
 }
Esempio n. 6
0
 public CellCostRule_Doors(PathfindData pathfindData) : base(pathfindData)
 {
     edificeGrid = pathfindData.map.edificeGrid;
     pawn        = pathfindData.traverseParms.pawn;
     mode        = pathfindData.traverseParms.mode;
 }
Esempio n. 7
0
 public CellCostRule_AvoidGrid(PathfindData pathfindData) : base(pathfindData)
 {
     avoidGrid = pathfindData.traverseParms.pawn?.GetAvoidGrid(true);
 }
Esempio n. 8
0
 public CellCostRule_Pawns(PathfindData pathfindData) : base(pathfindData)
 {
     pawn = pathfindData.traverseParms.pawn;
 }
Esempio n. 9
0
 public CellPassabilityRule_NoPassDoors(PathfindData pathfindData) : base(pathfindData)
 {
     edificeGrid = pathfindData.map.edificeGrid;
 }
 public PassabilityRule_Diagonals(PathfindData pathfindData) : base(pathfindData)
 {
 }
 public CostRule_MoveTicks(PathfindData pathfindData) : base(pathfindData)
 {
     GetMoveTicks(pathfindData, out moveTicksCardinal, out moveTicksDiagonal);
 }
Esempio n. 12
0
 /// <summary>
 /// Trailblazer constructs a new version of all rules for each given pathfinding request, then queries that rule
 /// object for the duration of the pathfinding job. The constructor should initialize and cache as much info as
 /// possible to minimize the work done during pathfinding.  (Only if such caching would be less work than
 /// calculating the data on the fly, of course)
 /// </summary>
 /// <param name="pathfindData">Path data.</param>
 protected Rule(PathfindData pathfindData)
 {
     this.pathfindData = pathfindData;
 }
 public CellCostRule_AllowedArea(PathfindData pathfindData) : base(pathfindData)
 {
     allowedArea = GetAllowedArea(pathfindData.traverseParms.pawn);
 }
 public CellPassabilityRule_DoorByPawn(PathfindData pathfindData) : base(pathfindData)
 {
     edificeGrid = pathfindData.map.edificeGrid;
     pawn        = pathfindData.traverseParms.pawn;
     canBash     = pathfindData.traverseParms.canBash;
 }
 public CellCostRule_PathGrid(PathfindData pathfindData) : base(pathfindData)
 {
     pathGrid    = pathfindData.map.pathGrid;
     terrainGrid = pathfindData.map.terrainGrid;
     pawnDrafted = pathfindData.traverseParms.pawn?.Drafted ?? false;
 }
Esempio n. 16
0
 public CellCostRule_Buildings(PathfindData pathfindData) : base(pathfindData)
 {
     edificeGrid = pathfindData.map.edificeGrid;
     pawn        = pathfindData.traverseParms.pawn;
 }
 /// <summary>
 /// Trailblazer constructs a new version of all rules for each given pathfinding request, then queries that rule
 /// object for the duration of the pathfinding job. The constructor should be used to perform all initialization
 /// that only needs to happen once per path to minimize the work done in GetConstantCost and GetCostMultiplier.
 /// </summary>
 /// <param name="pathfindData">Path data.</param>
 protected CellPassabilityRule(PathfindData pathfindData) : base(pathfindData)
 {
 }
Esempio n. 18
0
 public CellPassabilityRule_Water(PathfindData pathfindData) : base(pathfindData)
 {
 }
Esempio n. 19
0
 public PathfindToLocationTask(PathfindData pathfindData)
 {
     _pathfindData = pathfindData;
     _movementAI   = new MovementAI(pathfindData.Character, new AStarPathfinding());
 }
 public CellCostRule_Blueprints(PathfindData pathfindData) : base(pathfindData)
 {
     blueprintGrid = pathfindData.map.blueprintGrid;
     pawn          = pathfindData.traverseParms.pawn;
 }