//public override void Destroy(DestroyMode mode = DestroyMode.Vanish) public static void Prefix(Frame __instance, DestroyMode mode) { if (mode != DestroyMode.Vanish && mode != DestroyMode.FailConstruction && mode != DestroyMode.KillFinalize) { DestroyedBuildings.RemoveAt(__instance.Position, __instance.Map); } }
//public override void DeSpawn(DestroyMode mode = DestroyMode.Vanish) public static void Prefix(Blueprint __instance, DestroyMode mode) { if (mode != DestroyMode.Vanish) { DestroyedBuildings.RemoveAt(__instance.Position, __instance.Map); } }
//public static Thing Spawn(Thing newThing, IntVec3 loc, Map map, Rot4 rot, WipeMode wipeMode = WipeMode.Vanish, bool respawningAfterLoad = false) public static Thing CheckForRevival(Thing newThing, IntVec3 loc, Map map, Rot4 rot, WipeMode wipeMode = WipeMode.Vanish, bool respawningAfterLoad = false) { Thing thing = GenSpawn.Spawn(newThing, loc, map, rot, wipeMode, respawningAfterLoad); DestroyedBuildings.ReviveBuilding(thing, loc, map); //After spawn so SpawnSetup is called, comps created. return(thing); }
public static void RemoveAt(IntVec3 pos, Map map) { DestroyedBuildings comp = map.GetComponent <DestroyedBuildings>(); if (comp.destroyedBuildings.TryGetValue(pos, out Thing building)) { Log.Message($"Forgetting destroyed: {building}"); //Probably should set building.mapIndexOrState to -2 comp.destroyedBuildings.Remove(pos); } }
public static void SaveBuilding(Thing thing, Map map) { if (!BuildingReviver.CanDo(thing)) { return; } DestroyedBuildings comp = map.GetComponent <DestroyedBuildings>(); Log.Message($"Saving {thing} to {map}:{thing.Position}"); comp.destroyedBuildings[thing.Position] = thing; }
public static void ReviveBuilding(Thing newBuilding, IntVec3 pos, Map map) { DestroyedBuildings comp = map.GetComponent <DestroyedBuildings>(); if (comp.destroyedBuildings.TryGetValue(pos, out Thing building)) { Log.Message($"got {building}"); BuildingReviver.Transfer(building, newBuilding); comp.destroyedBuildings.Remove(pos); } }