Ejemplo n.º 1
0
 public static void Postfix(ref AcceptanceReport __result, Designator_RemoveBridge __instance, IntVec3 c)
 {
     if (c.InBounds(__instance.Map) && c.GetTerrain(__instance.Map) == TerrainDefOf.ConcreteBridge)
     {
         __result = true;
         RoadsOfTheRim.DebugLog(c.GetTerrain(__instance.Map).label);
     }
 }
Ejemplo n.º 2
0
 public static bool Prefix(ref AcceptanceReport __result, Designator_RemoveBridge __instance, IntVec3 c)
 {
     if (c.InBounds(__instance.Map) && c.GetTerrain(__instance.Map).IsBiomesBridge())
     {
         __result = (AcceptanceReport)BaseCanDesignateCellInfo.Invoke(null, new object[] { __instance, c });
         return(false);
     }
     return(true);
 }
Ejemplo n.º 3
0
        public static bool Prefix(IntVec3 c, ref AcceptanceReport __result, ref Designator_RemoveBridge __instance)
        {
            var terrainDef = c.GetTerrain(__instance.Map);

            if (Prefs.DevMode)
            {
                Log.Message($"terrainDef: {terrainDef}");
            }

            if (!terrainDef.defName.StartsWith("HeavyBridge") && !terrainDef.defName.StartsWith("DeepWaterBridge"))
            {
                return(true);
            }

            __result = AcceptanceReport.WasAccepted;
            if (!c.InBounds(__instance.Map) || c.Fogged(__instance.Map))
            {
                __result = false;
            }

            if (__instance.Map.designationManager.DesignationAt(c, DesignationDefOf.RemoveFloor) != null)
            {
                __result = false;
            }

            var edifice = c.GetEdifice(__instance.Map);

            if (edifice != null && edifice.def.Fillage == FillCategory.Full &&
                edifice.def.passability == Traversability.Impassable)
            {
                __result = false;
            }

            if (!__instance.Map.terrainGrid.CanRemoveTopLayerAt(c))
            {
                __result = "TerrainMustBeRemovable".Translate();
            }

            if (WorkGiver_ConstructRemoveFloor.AnyBuildingBlockingFloorRemoval(c, __instance.Map))
            {
                __result = false;
            }

            return(false);
        }