public override void OnLoad(Harmony harmony) { BuildingUtils.AddBuildingToPlanScreen(GameStrings.PlanMenuCategory.Base, ItemPermeableTileConfig.ID); LocString.CreateLocStringKeys(typeof(STRINGS), null); base.OnLoad(harmony); }
public static void Postfix() { BuildingUtils.AddBuildingToTechnology( GameStrings.Technology.Power.AdvancedPowerRegulation, SmallTransformerConfig.Id ); }
public static void Postfix() { BuildingUtils.AddBuildingToTechnology( GameStrings.Technology.Liquids.Sanitation, ItemPermeableTileConfig.ID ); }
public static void Setup() { BuildingUtils.AddStrings(ID, "Tall Pneumatic Door", STRINGS.BUILDINGS.PREFABS.DOOR.DESC, STRINGS.BUILDINGS.PREFABS.DOOR.EFFECT); BuildingUtils.AddBuilding(ID, "Base", DoorConfig.ID); }
public static void Setup() { BuildingUtils.AddStrings(ID, "Space Ladder", "Slippery when wet.", "Extremely resistant to damage."); BuildingUtils.AddBuilding(ID, "Base", LadderConfig.ID, "BasicRocketry"); }
public static void Setup() { BuildingUtils.AddStrings(ID, "Space Glass", "A remarkable alloy, transparent to light and Space Scanners, opaque to fluids and meteors. Repels water. Still attracts fingerprints and dust.", "Can withstand extreme pressures and impacts. Allows " + STRINGS.UI.FormatAsLink("Light", "LIGHT") + " and " + STRINGS.UI.FormatAsLink("Decor", "DECOR") + " to pass through."); BuildingUtils.AddBuilding(ID, "Base", GlassTileConfig.ID, "SkyDetectors"); }
public static void Postfix() { BuildingUtils.AddBuildingToPlanScreen(GermicideLampConfig.ID, GameStrings.PlanMenuCategory.Utilities); BuildingUtils.AddBuildingToPlanScreen(CeilingGermicideLampConfig.ID, GameStrings.PlanMenuCategory.Utilities); BuildingUtils.AddBuildingToTech(GermicideLampConfig.ID, GameStrings.Technology.Medicine.PathogenDiagnostics); BuildingUtils.AddBuildingToTech(CeilingGermicideLampConfig.ID, GameStrings.Technology.Medicine.PathogenDiagnostics); }
public static void Setup() { BuildingUtils.AddStrings(ID, "Rocket Door", STRINGS.BUILDINGS.PREFABS.BUNKERDOOR.DESC + " Perfectly sized for rockets.", STRINGS.BUILDINGS.PREFABS.BUNKERDOOR.EFFECT); BuildingUtils.AddBuilding(ID, "Base", DoorConfig.ID, "EnginesI"); }
internal static void Setup() { BuildingUtils.AddStrings(ID, "Space Mesh", "Nikola tried to teach me how this works, but I'm pretty sure it's just magic.", "Resists " + STRINGS.UI.FormatAsLink("gas", "ELEMENTS_GAS") + " flow without obstructing " + STRINGS.UI.FormatAsLink("liquids", "ELEMENTS_LIQUID") + ". Falling liquids may force gas up into and through this block. "); BuildingUtils.AddBuilding(ID, "Base", GasPermeableMembraneConfig.ID, "Jetpacks"); }
public static void Setup() { BuildingUtils.AddStrings(ID, "Artifact Bin", "Of what, then, is an empty launchpad a sign? - Abe", "Stores up to 50 space artifacts. Use caution when emptying."); BuildingUtils.AddBuilding(ID, "Base", StorageLockerConfig.ID, "CargoI"); }
internal static void Setup() { BuildingUtils.AddStrings(ID, "Artifact Pedestal", "Ergonomic!", "A display " + STRINGS.UI.FormatAsLink("Pedestal", ItemPedestalConfig.ID) + " specifically designed for space artifacts."); BuildingUtils.AddBuilding(ID, "Furniture", ItemPedestalConfig.ID, "Artistry"); }
public static void Postfix() { BuildingUtils.AddBuildingToPlanScreen(ThresholdWallConfig.ID, GameStrings.PlanMenuCategory.Utilities); BuildingUtils.AddBuildingToPlanScreen(CautionThresholdWallConfig.ID, GameStrings.PlanMenuCategory.Utilities); BuildingUtils.AddBuildingToPlanScreen(MetalThresholdWallConfig.ID, GameStrings.PlanMenuCategory.Utilities); BuildingUtils.AddBuildingToTech(CautionThresholdWallConfig.ID, GameStrings.Technology.Exosuits.HazardProtection); BuildingUtils.AddBuildingToTech(ThresholdWallConfig.ID, GameStrings.Technology.Decor.HomeLuxuries); BuildingUtils.AddBuildingToTech(MetalThresholdWallConfig.ID, GameStrings.Technology.SolidMaterial.RefinedRenovations); }
public void RenderAfterWorld(WorldRenderer wr, World world) { var position = wr.Position(wr.Viewport.ViewToWorldPx(Viewport.LastMousePos)).ToCPos(); var topLeft = position - FootprintUtils.AdjustForBuildingSize(BuildingInfo); var actorInfo = Rules.Info[Building]; foreach (var dec in actorInfo.Traits.WithInterface <IPlaceBuildingDecoration>()) { dec.Render(wr, world, actorInfo, position.CenterPosition); /* hack hack */ } var cells = new Dictionary <CPos, bool>(); // Linebuild for walls. // Assumes a 1x1 footprint; weird things will happen for other footprints if (Rules.Info[Building].Traits.Contains <LineBuildInfo>()) { foreach (var t in BuildingUtils.GetLineBuildCells(world, topLeft, Building, BuildingInfo)) { cells.Add(t, BuildingInfo.IsCloseEnoughToBase(world, world.LocalPlayer, Building, t)); } } else { if (!initialized) { var rbi = Rules.Info[Building].Traits.Get <RenderBuildingInfo>(); var palette = rbi.Palette ?? (Producer.Owner != null ? rbi.PlayerPalette + Producer.Owner.InternalName : null); preview = rbi.RenderPreview(Rules.Info[Building], wr.Palette(palette)); initialized = true; } var offset = topLeft.CenterPosition + FootprintUtils.CenterOffset(BuildingInfo) - WPos.Zero; foreach (var r in preview) { r.OffsetBy(offset).Render(wr); } var res = world.WorldActor.Trait <ResourceLayer>(); var isCloseEnough = BuildingInfo.IsCloseEnoughToBase(world, world.LocalPlayer, Building, topLeft); foreach (var t in FootprintUtils.Tiles(Building, BuildingInfo, topLeft)) { cells.Add(t, isCloseEnough && world.IsCellBuildable(t, BuildingInfo) && res.GetResource(t) == null); } } var pal = wr.Palette("terrain"); foreach (var c in cells) { var tile = c.Value ? buildOk : buildBlocked; new SpriteRenderable(tile, c.Key.CenterPosition, WVec.Zero, -511, pal, 1f, true).Render(wr); } }
public static void Postfix() { Debug.Log("Permeable Plastic Tiles: Adding buildings to game..."); BuildingUtils.AddBuildingToPlanScreen(PlasticMeshTileConfig.ID, GameStrings.PlanMenuCategory.Base, PlasticTileConfig.ID); BuildingUtils.AddBuildingToTech(PlasticMeshTileConfig.ID, GameStrings.Technology.Decor.HomeLuxuries); BuildingUtils.AddBuildingToPlanScreen(PlasticMembraneTileConfig.ID, GameStrings.PlanMenuCategory.Base, PlasticMeshTileConfig.ID); BuildingUtils.AddBuildingToTech(PlasticMembraneTileConfig.ID, GameStrings.Technology.Decor.HomeLuxuries); }
//ACOES private void saveBuildingName(UITextField u) { string value = u.text; Singleton <BuildingManager> .instance.StartCoroutine(BuildingUtils.SetBuildingName(m_buildingIdSelecionado.Building, value, () => { buildingNameField.text = Singleton <BuildingManager> .instance.GetBuildingName(m_buildingIdSelecionado.Building, default(InstanceID)); EventOnBuildingSelChanged?.Invoke(m_buildingIdSelecionado.Building); })); }
public static void Prefix() { BuildingUtils.AddBuildingToTechnology("LiquidPiping", "asquared31415.PipedLiquidBottler"); BuildingUtils.AddBuildingToTechnology("SolidTransport", "asquared31415.ConveyorBottleEmptier"); BuildingUtils.AddBuildingToTechnology("SolidTransport", "asquared31415.ConveyorGasPipeFillerConfig"); BuildingUtils.AddBuildingToTechnology("SolidTransport", "asquared31415.ConveyorLiquidPipeFillerConfig"); BuildingUtils.AddBuildingToTechnology("SolidTransport", "asquared31415.ConveyorGasLoaderConfig"); BuildingUtils.AddBuildingToTechnology("SolidTransport", "asquared31415.ConveyorLiquidLoaderConfig"); LocString.CreateLocStringKeys(typeof(STRINGS.BUILDINGS)); }
public static void RegisterBuildings() { BuildingUtils.AddStrings(KingDoorConfig.ID, KingDoorConfig.DisplayName, KingDoorConfig.Description, KingDoorConfig.Effect); BuildingUtils.AddToPlanning("Base", KingDoorConfig.ID, "Door"); BuildingUtils.AddToTechnology("Jobs", KingDoorConfig.ID); BuildingUtils.AddStrings(KingPowerDoorConfig.ID, KingPowerDoorConfig.DisplayName, KingPowerDoorConfig.Description, KingPowerDoorConfig.Effect); BuildingUtils.AddToPlanning("Base", KingPowerDoorConfig.ID, "PressureDoor"); BuildingUtils.AddToTechnology("RefinedObjects", KingPowerDoorConfig.ID); }
public void RenderBeforeWorld(WorldRenderer wr, World world) { var position = Game.viewport.ViewToWorld(Viewport.LastMousePos); var topLeft = position - FootprintUtils.AdjustForBuildingSize(BuildingInfo); var actorInfo = Rules.Info[Building]; foreach (var dec in actorInfo.Traits.WithInterface <IPlaceBuildingDecoration>()) { dec.Render(wr, world, actorInfo, Traits.Util.CenterOfCell(position)); /* hack hack */ } var cells = new Dictionary <CPos, bool>(); // Linebuild for walls. // Assumes a 1x1 footprint; weird things will happen for other footprints if (Rules.Info[Building].Traits.Contains <LineBuildInfo>()) { foreach (var t in BuildingUtils.GetLineBuildCells(world, topLeft, Building, BuildingInfo)) { cells.Add(t, BuildingInfo.IsCloseEnoughToBase(world, world.LocalPlayer, Building, t)); } } else { if (!initialized) { var rbi = Rules.Info[Building].Traits.Get <RenderBuildingInfo>(); var palette = rbi.Palette ?? (Producer.Owner != null ? rbi.PlayerPalette + Producer.Owner.InternalName : null); preview = rbi.RenderPreview(Rules.Info[Building], wr.Palette(palette)); initialized = true; } foreach (var r in preview) { r.Sprite.DrawAt(topLeft.ToPPos().ToFloat2() + r.Pos, r.Palette.Index, r.Scale * r.Sprite.size); } var res = world.WorldActor.Trait <ResourceLayer>(); var isCloseEnough = BuildingInfo.IsCloseEnoughToBase(world, world.LocalPlayer, Building, topLeft); foreach (var t in FootprintUtils.Tiles(Building, BuildingInfo, topLeft)) { cells.Add(t, isCloseEnough && world.IsCellBuildable(t, BuildingInfo) && res.GetResource(t) == null); } } foreach (var c in cells) { (c.Value ? buildOk : buildBlocked).DrawAt(wr, c.Key.ToPPos().ToFloat2(), "terrain"); } }
IEnumerable <IRenderable> IOrderGenerator.RenderAboveShroud(WorldRenderer wr, World world) { var topLeft = TopLeft; var footprint = new Dictionary <CPos, PlaceBuildingCellType>(); var activeVariant = variants[variant]; var actorInfo = activeVariant.ActorInfo; var buildingInfo = activeVariant.BuildingInfo; var plugInfo = activeVariant.PlugInfo; var lineBuildInfo = activeVariant.LineBuildInfo; var preview = activeVariant.Preview; var owner = queue.Actor.Owner; if (plugInfo != null) { if (buildingInfo.Dimensions.X != 1 || buildingInfo.Dimensions.Y != 1) { throw new InvalidOperationException("Plug requires a 1x1 sized Building"); } footprint.Add(topLeft, MakeCellType(AcceptsPlug(topLeft, plugInfo))); } else if (lineBuildInfo != null && owner.Shroud.IsExplored(topLeft)) { // Linebuild for walls. if (buildingInfo.Dimensions.X != 1 || buildingInfo.Dimensions.Y != 1) { throw new InvalidOperationException("LineBuild requires a 1x1 sized Building"); } if (!Game.GetModifierKeys().HasModifier(Modifiers.Shift)) { foreach (var t in BuildingUtils.GetLineBuildCells(world, topLeft, actorInfo, buildingInfo, owner)) { var lineBuildable = world.IsCellBuildable(t.Cell, actorInfo, buildingInfo); var lineCloseEnough = buildingInfo.IsCloseEnoughToBase(world, world.LocalPlayer, actorInfo, t.Cell); footprint.Add(t.Cell, MakeCellType(lineBuildable && lineCloseEnough, true)); } } var buildable = world.IsCellBuildable(topLeft, actorInfo, buildingInfo); var closeEnough = buildingInfo.IsCloseEnoughToBase(world, world.LocalPlayer, actorInfo, topLeft); footprint[topLeft] = MakeCellType(buildable && closeEnough); } else { var isCloseEnough = buildingInfo.IsCloseEnoughToBase(world, world.LocalPlayer, actorInfo, topLeft); foreach (var t in buildingInfo.Tiles(topLeft)) { footprint.Add(t, MakeCellType(isCloseEnough && world.IsCellBuildable(t, actorInfo, buildingInfo) && (resourceLayer == null || resourceLayer.GetResource(t).Type == null))); } } return(preview?.Render(wr, topLeft, footprint) ?? Enumerable.Empty <IRenderable>()); }
public override void OnLoad(Harmony harmony) { BuildingUtils.AddBuildingToPlanScreen(GameStrings.PlanMenuCategory.Power, SmallTransformerConfig.Id); StringUtils.AddBuildingStrings( SmallTransformerConfig.Id, SmallTransformerConfig.DisplayName, SmallTransformerConfig.Description, SmallTransformerConfig.Effect ); base.OnLoad(harmony); }
public static void Setup() { BuildingUtils.AddStrings(ID, DisplayName, Description, Effect); if (CritterPathingPatches.config.TreatDefaultDoorsAsCritterProof) { return; } else if (CritterPathingPatches.config.EnableCritterProofMechanisedAirlock) { BuildingUtils.AddToPlanning("Base", ID, "PressureDoor"); BuildingUtils.AddToTechnology("AnimalControl", ID); } }
public static void RegisterBuildings() { BuildingUtils.AddToPlanning("Base", BuildablePOIFacilityDoorConfig.ID, "ManualPressureDoor"); BuildingUtils.AddToTechnology("RefinedObjects", BuildablePOIFacilityDoorConfig.ID); BuildingUtils.AddToPlanning("Base", BuildablePOISecurityDoorConfig.ID, "PressureDoor"); BuildingUtils.AddToTechnology("RefinedObjects", BuildablePOISecurityDoorConfig.ID); BuildingUtils.AddToPlanning("Base", BuildablePOIInternalDoorConfig.ID, "Door"); BuildingUtils.AddToTechnology("RefinedObjects", BuildablePOIInternalDoorConfig.ID); LocString.CreateLocStringKeys(typeof(BuildablePOIDoorsStrings.BUILDINGS)); }
public static void Setup() { BuildingUtils.AddStrings(ID, DisplayName, Description, Effect); if (CritterPathingPatches.config.TreatDefaultDoorsAsCritterProof) { return; } else if (CritterPathingPatches.config.EnablePneumaticCritterProofDoor) { BuildingUtils.AddToPlanning("Base", ID, "Door"); BuildingUtils.AddToTechnology("Ranching", ID); } }
public static void Postfix() { BuildingUtils.AddBuildingToPlanScreen(InfiniteLiquidSourceConfig.ID, GameStrings.PlanMenuCategory.Plumbing); BuildingUtils.AddBuildingToTech(InfiniteLiquidSourceConfig.ID, GameStrings.Technology.Liquids.Plumbing); BuildingUtils.AddBuildingToPlanScreen(InfiniteLiquidSinkConfig.ID, GameStrings.PlanMenuCategory.Plumbing); BuildingUtils.AddBuildingToTech(InfiniteLiquidSinkConfig.ID, GameStrings.Technology.Liquids.Plumbing); BuildingUtils.AddBuildingToPlanScreen(InfiniteGasSourceConfig.ID, GameStrings.PlanMenuCategory.Ventilation); BuildingUtils.AddBuildingToTech(InfiniteGasSourceConfig.ID, GameStrings.Technology.Gases.Ventilation); BuildingUtils.AddBuildingToPlanScreen(InfiniteGasSinkConfig.ID, GameStrings.PlanMenuCategory.Ventilation); BuildingUtils.AddBuildingToTech(InfiniteGasSinkConfig.ID, GameStrings.Technology.Gases.Ventilation); }
private static void Postfix() { BuildingUtils.AddBuildingToPlanScreen(GasFanConfig.Id, GameStrings.PlanMenuCategory.Ventilation); BuildingUtils.AddBuildingToPlanScreen(HighPressureGasFan.Id, GameStrings.PlanMenuCategory.Ventilation); BuildingUtils.AddBuildingToPlanScreen(CompressorGasFanConfig.Id, GameStrings.PlanMenuCategory.Ventilation); BuildingUtils.AddBuildingToPlanScreen(LiquidFanConfig.Id, GameStrings.PlanMenuCategory.Plumbing); BuildingUtils.AddBuildingToPlanScreen(CompressorLiquidFanConfig.Id, GameStrings.PlanMenuCategory.Plumbing); BuildingUtils.AddBuildingToTech(GasFanConfig.Id, GameStrings.Technology.Gases.Ventilation); BuildingUtils.AddBuildingToTech(HighPressureGasFan.Id, GameStrings.Technology.Gases.ImprovedVentilation); BuildingUtils.AddBuildingToTech(CompressorGasFanConfig.Id, GameStrings.Technology.Gases.HVAC); BuildingUtils.AddBuildingToTech(LiquidFanConfig.Id, GameStrings.Technology.Liquids.Plumbing); BuildingUtils.AddBuildingToTech(CompressorLiquidFanConfig.Id, GameStrings.Technology.Liquids.LiquidTuning); }
public static void RegisterBuildings() { BuildingUtils.AddStrings(GasTrashcanConfig.ID, GasTrashcanConfig.Name, GasTrashcanConfig.Description, GasTrashcanConfig.Effect); BuildingUtils.AddToPlanning("Base", GasTrashcanConfig.ID, "GasReservoir"); BuildingUtils.AddToTechnology("SmartStorage", GasTrashcanConfig.ID); BuildingUtils.AddStrings(LiquidTrashcanConfig.ID, LiquidTrashcanConfig.Name, LiquidTrashcanConfig.Description, LiquidTrashcanConfig.Effect); BuildingUtils.AddToPlanning("Base", LiquidTrashcanConfig.ID, "LiquidReservoir"); BuildingUtils.AddToTechnology("SmartStorage", LiquidTrashcanConfig.ID); BuildingUtils.AddStrings(SolidTrashcanConfig.ID, SolidTrashcanConfig.Name, SolidTrashcanConfig.Description, SolidTrashcanConfig.Effect); BuildingUtils.AddToPlanning("Base", SolidTrashcanConfig.ID, "StorageLockerSmart"); BuildingUtils.AddToTechnology("SmartStorage", SolidTrashcanConfig.ID); }
public static void RegisterBuildings() { BuildingUtils.AddStrings(WirelessSenderConfig.ID, WirelessSenderConfig.Name, WirelessSenderConfig.Description, WirelessSenderConfig.Effect); BuildingUtils.AddToPlanning("Power", WirelessSenderConfig.ID, "BatterySmart"); BuildingUtils.AddToTechnology("PrettyGoodConductors", WirelessSenderConfig.ID); BuildingUtils.AddStrings(WirelessReceiverConfig.ID, WirelessReceiverConfig.Name, WirelessReceiverConfig.Description, WirelessReceiverConfig.Effect); BuildingUtils.AddToPlanning("Power", WirelessReceiverConfig.ID, "BatterySmart"); BuildingUtils.AddToTechnology("PrettyGoodConductors", WirelessReceiverConfig.ID); BuildingUtils.AddStrings(WirelessBatteryConfig.ID, WirelessBatteryConfig.Name, WirelessBatteryConfig.Description, WirelessBatteryConfig.Effect); BuildingUtils.AddToPlanning("Power", WirelessBatteryConfig.ID, "BatterySmart"); BuildingUtils.AddToTechnology("PrettyGoodConductors", WirelessBatteryConfig.ID); }
public void PlaceBuilding(Coordinate coordinate) { if (m_BuildingMap[coordinate] == Building.NONE) { m_BuildingMap[coordinate] = Building.ONE; MapGrid.MapTiles[coordinate].CurrentBuilding = Building.ONE; } else { Building nextBuilding = BuildingUtils.NextBuilding(m_BuildingMap[coordinate]); m_BuildingMap[coordinate] = nextBuilding; MapGrid.MapTiles[coordinate].CurrentBuilding = nextBuilding; } }
protected override IEnumerable <IRenderable> RenderAboveShroud(WorldRenderer wr, World world) { var topLeft = TopLeft; var footprint = new Dictionary <CPos, PlaceBuildingCellType>(); var plugInfo = actorInfo.TraitInfoOrDefault <PlugInfo>(); if (plugInfo != null) { if (buildingInfo.Dimensions.X != 1 || buildingInfo.Dimensions.Y != 1) { throw new InvalidOperationException("Plug requires a 1x1 sized Building"); } footprint.Add(topLeft, MakeCellType(AcceptsPlug(topLeft, plugInfo))); } else if (actorInfo.HasTraitInfo <LineBuildInfo>()) { // Linebuild for walls. if (buildingInfo.Dimensions.X != 1 || buildingInfo.Dimensions.Y != 1) { throw new InvalidOperationException("LineBuild requires a 1x1 sized Building"); } if (!Game.GetModifierKeys().HasModifier(Modifiers.Shift)) { foreach (var t in BuildingUtils.GetLineBuildCells(world, topLeft, actorInfo, buildingInfo)) { var lineBuildable = world.IsCellBuildable(t.First, actorInfo, buildingInfo); var lineCloseEnough = buildingInfo.IsCloseEnoughToBase(world, world.LocalPlayer, actorInfo, t.First); footprint.Add(t.First, MakeCellType(lineBuildable && lineCloseEnough, true)); } } var buildable = world.IsCellBuildable(topLeft, actorInfo, buildingInfo); var closeEnough = buildingInfo.IsCloseEnoughToBase(world, world.LocalPlayer, actorInfo, topLeft); footprint[topLeft] = MakeCellType(buildable && closeEnough); } else { var res = world.WorldActor.TraitOrDefault <ResourceLayer>(); var isCloseEnough = buildingInfo.IsCloseEnoughToBase(world, world.LocalPlayer, actorInfo, topLeft); foreach (var t in buildingInfo.Tiles(topLeft)) { footprint.Add(t, MakeCellType(isCloseEnough && world.IsCellBuildable(t, actorInfo, buildingInfo) && (res == null || res.GetResource(t) == null))); } } return(preview != null?preview.Render(wr, topLeft, footprint) : Enumerable.Empty <IRenderable>()); }
public static void OnLoad() { CaiLib.Logger.Logger.LogInit(); BuildingUtils.AddBuildingToPlanScreen(GameStrings.PlanMenuCategory.Base, DeepItemStorage.Id); BuildingUtils.AddBuildingToTechnology( GameStrings.Technology.SolidMaterial.SolidManagement, DeepItemStorage.Id ); BuildingUtils.AddBuildingToPlanScreen(GameStrings.PlanMenuCategory.Base, DeepLiquidStorage.Id); BuildingUtils.AddBuildingToTechnology(GameStrings.Technology.Liquids.LiquidTuning, DeepLiquidStorage.Id); BuildingUtils.AddBuildingToPlanScreen(GameStrings.PlanMenuCategory.Base, DeepGasStorage.Id); BuildingUtils.AddBuildingToTechnology(GameStrings.Technology.Gases.HVAC, DeepGasStorage.Id); LocString.CreateLocStringKeys(typeof(STRINGS), null); }