public static int GetBuildingCost(Building b, TraverseParms traverseParms, Pawn pawn) { Building_Door building_Door = b as Building_Door; if (building_Door != null) { switch (traverseParms.mode) { case TraverseMode.NoPassClosedDoors: case TraverseMode.NoPassClosedDoorsOrWater: if (!building_Door.FreePassage) { return(2147483647); } goto IL_0113; case TraverseMode.ByPawn: break; default: goto IL_0113; } if (!traverseParms.canBash && building_Door.IsForbiddenToPass(pawn)) { if (DebugViewSettings.drawPaths) { PathFinder.DebugFlash(b.Position, b.Map, 0.77f, "forbid"); } return(2147483647); } if (!building_Door.FreePassage) { if (building_Door.PawnCanOpen(pawn)) { return(building_Door.TicksToOpenNow); } if (traverseParms.canBash) { return(300); } if (DebugViewSettings.drawPaths) { PathFinder.DebugFlash(b.Position, b.Map, 0.34f, "cant pass"); } return(2147483647); } } else if (pawn != null) { return(b.PathFindCostFor(pawn)); } goto IL_0113; IL_0113: return(0); }
private void DebugFlash(IntVec3 c, float colorPct, string str) { PathFinder.DebugFlash(c, this.map, colorPct, str); }
public static int GetBuildingCost(Building b, TraverseParms traverseParms, Pawn pawn) { Building_Door building_Door = b as Building_Door; if (building_Door != null) { switch (traverseParms.mode) { case TraverseMode.ByPawn: if (!traverseParms.canBash && building_Door.IsForbiddenToPass(pawn)) { if (DebugViewSettings.drawPaths) { PathFinder.DebugFlash(b.Position, b.Map, 0.77f, "forbid"); } return(2147483647); } if (building_Door.PawnCanOpen(pawn) && !building_Door.FreePassage) { return(building_Door.TicksToOpenNow); } if (building_Door.CanPhysicallyPass(pawn)) { return(0); } if (traverseParms.canBash) { return(300); } if (DebugViewSettings.drawPaths) { PathFinder.DebugFlash(b.Position, b.Map, 0.34f, "cant pass"); } return(2147483647); case TraverseMode.PassDoors: if (pawn != null && building_Door.PawnCanOpen(pawn) && !building_Door.IsForbiddenToPass(pawn) && !building_Door.FreePassage) { return(building_Door.TicksToOpenNow); } if ((pawn != null && building_Door.CanPhysicallyPass(pawn)) || building_Door.FreePassage) { return(0); } return(150); case TraverseMode.NoPassClosedDoors: case TraverseMode.NoPassClosedDoorsOrWater: if (building_Door.FreePassage) { return(0); } return(2147483647); case TraverseMode.PassAllDestroyableThings: case TraverseMode.PassAllDestroyableThingsNotWater: if (pawn != null && building_Door.PawnCanOpen(pawn) && !building_Door.IsForbiddenToPass(pawn) && !building_Door.FreePassage) { return(building_Door.TicksToOpenNow); } if ((pawn != null && building_Door.CanPhysicallyPass(pawn)) || building_Door.FreePassage) { return(0); } return(50 + (int)((float)building_Door.HitPoints * 0.2f)); } } else if (pawn != null) { return((int)b.PathFindCostFor(pawn)); } return(0); }