private void PlaceBlueprint(SketchEntity entity, ThingDef preferredStuffIfNone) { SketchBuildable sketchBuildable; if ((sketchBuildable = entity as SketchBuildable) != null && !entity.IsSameSpawnedOrBlueprintOrFrame(entity.pos + base.Position, base.Map) && !entity.IsSpawningBlocked(entity.pos + base.Position, base.Map) && BuildCopyCommandUtility.FindAllowedDesignator(sketchBuildable.Buildable) != null) { SketchThing sketchThing; SketchTerrain sketchTerrain; if ((sketchThing = entity as SketchThing) != null && sketchThing.def.MadeFromStuff && sketchThing.stuff == null && preferredStuffIfNone != null && preferredStuffIfNone.stuffProps.CanMake(sketchThing.def)) { sketchThing.stuff = preferredStuffIfNone; entity.Spawn(entity.pos + base.Position, base.Map, Faction.OfPlayer, Sketch.SpawnMode.Blueprint); sketchThing.stuff = null; } else if ((sketchTerrain = entity as SketchTerrain) != null && sketchTerrain.stuffForComparingSimilar == null && preferredStuffIfNone != null) { sketchTerrain.stuffForComparingSimilar = preferredStuffIfNone; entity.Spawn(entity.pos + base.Position, base.Map, Faction.OfPlayer, Sketch.SpawnMode.Blueprint); sketchTerrain.stuffForComparingSimilar = null; } else { entity.Spawn(entity.pos + base.Position, base.Map, Faction.OfPlayer, Sketch.SpawnMode.Blueprint); } } }
public static Building GetFirstAdjacentBuilding(SketchEntity entity, IntVec3 offset, List <Thing> monumentThings, Map map) { if (entity.IsSameSpawnedOrBlueprintOrFrame(entity.pos + offset, map)) { return(null); } foreach (IntVec3 edgeCell in entity.OccupiedRect.MovedBy(offset).ExpandedBy(1).EdgeCells) { if (edgeCell.InBounds(map)) { Building firstBuilding = edgeCell.GetFirstBuilding(map); if (firstBuilding != null && !monumentThings.Contains(firstBuilding) && (firstBuilding.Faction == null || firstBuilding.Faction == Faction.OfPlayer)) { return(firstBuilding); } } } return(null); }