public void Enqueue(Prioritizable p) { if (p == null) { throw new NullReferenceException("PriorityQueue does not accept null objects"); } float min = 0; if (list.Count == 0) { list.Add(p); } else { min = p.getPriority(); for (int j = 0; j < list.Count; j++) { float dist = list[j].getPriority(); if (dist < min) { list.Insert(j, p); break; } else if (j == list.Count - 1) { list.Add(p); break; } } } }
public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag) { go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery); var energyGenerator = go.AddOrGet <EnergyGenerator>(); energyGenerator.formula = EnergyGenerator.CreateSimpleFormula(SimHashes.RefinedCarbon.CreateTag(), 1f, 600f, SimHashes.CarbonDioxide, 0.25f, true, CellOffset.none, 700f); energyGenerator.meterOffset = Meter.Offset.Behind; energyGenerator.SetSliderValue(50f, 0); energyGenerator.powerDistributionOrder = 9; var storage = go.AddOrGet <Storage>(); storage.capacityKg = 600f; go.AddOrGet <LoopingSounds>(); Prioritizable.AddRef(go); var manualDeliveryKg = go.AddOrGet <ManualDeliveryKG>(); manualDeliveryKg.SetStorage(storage); manualDeliveryKg.requestedItemTag = SimHashes.RefinedCarbon.CreateTag(); manualDeliveryKg.capacity = storage.capacityKg; manualDeliveryKg.refillMass = 100f; manualDeliveryKg.choreTypeIDHash = Db.Get().ChoreTypes.PowerFetch.IdHash; Tinkerable.MakePowerTinkerable(go); ConduitDispenser conduitDispenser = go.AddOrGet <ConduitDispenser>(); conduitDispenser.conduitType = ConduitType.Gas; conduitDispenser.invertElementFilter = false; conduitDispenser.elementFilter = new [] { SimHashes.CarbonDioxide }; }
public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag) { Prioritizable.AddRef(go); Storage storage = go.AddOrGet <Storage>(); storage.SetDefaultStoredItemModifiers(Storage.StandardSealedStorage); storage.showDescriptor = true; storage.storageFilters = STORAGEFILTERS.LIQUIDS; storage.capacityKg = 350f; storage.allowItemRemoval = true; storage.showInUI = true; go.AddOrGet <DropAllWorkable>(); LiquidBottler liquidBottler = go.AddOrGet <LiquidBottler>(); liquidBottler.storage = storage; liquidBottler.workTime = 9f; ConduitConsumer conduitConsumer = go.AddOrGet <ConduitConsumer>(); conduitConsumer.storage = storage; conduitConsumer.conduitType = ConduitType.Liquid; conduitConsumer.ignoreMinMassCheck = true; //conduitConsumer.forceAlwaysSatisfied = true; //conduitConsumer.alwaysConsume = true; conduitConsumer.capacityKG = storage.capacityKg; conduitConsumer.keepZeroMassObject = false; }
// Big copy paste of the game code public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag) { go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery); Electrolyzer electrolyzer = go.AddOrGet <Electrolyzer>(); electrolyzer.maxMass = 1.8f; electrolyzer.hasMeter = true; ConduitConsumer conduitConsumer = go.AddOrGet <ConduitConsumer>(); conduitConsumer.conduitType = ConduitType.Liquid; conduitConsumer.consumptionRate = 1f; conduitConsumer.capacityTag = ElementLoader.FindElementByHash(SimHashes.DirtyWater).tag; conduitConsumer.wrongElementResult = ConduitConsumer.WrongElementResult.Dump; Storage storage = go.AddOrGet <Storage>(); storage.capacityKg = 2f; storage.showInUI = true; ElementConverter elementConverter = go.AddOrGet <ElementConverter>(); elementConverter.consumedElements = new ElementConverter.ConsumedElement[] { new ElementConverter.ConsumedElement(new Tag("DirtyWater"), 1f) }; elementConverter.outputElements = new ElementConverter.OutputElement[] { new ElementConverter.OutputElement(0.888f, SimHashes.ContaminatedOxygen, OXYGEN_TEMPERATURE, false, 0f, 1f, false, 1f, byte.MaxValue, 0), new ElementConverter.OutputElement(0.111999989f, SimHashes.Hydrogen, OXYGEN_TEMPERATURE, false, 0f, 1f, false, 1f, byte.MaxValue, 0) }; Prioritizable.AddRef(go); }
public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag) { GeneratedBuildings.MakeBuildingAlwaysOperational(go); BuildingConfigManager.Instance.IgnoreDefaultKComponent(typeof(RequiresFoundation), prefab_tag); var simCellOccupier = go.AddOrGet <SimCellOccupier>(); simCellOccupier.doReplaceElement = true; simCellOccupier.notifyOnMelt = true; go.AddOrGet <TileTemperature>(); var storage = BuildingTemplates.CreateDefaultStorage(go, false); storage.SetDefaultStoredItemModifiers(Storage.StandardSealedStorage); var plantablePlot = go.AddOrGet <PlantablePlot>(); plantablePlot.occupyingObjectRelativePosition = new Vector3(0f, 1f); plantablePlot.AddDepositTag(GameTags.CropSeed); plantablePlot.AddDepositTag(GameTags.WaterSeed); plantablePlot.SetFertilizationFlags(true, true); var copyBuildingSettings = go.AddOrGet <CopyBuildingSettings>(); copyBuildingSettings.copyGroupTag = GameTags.Farm; go.AddOrGet <AnimTileable>(); go.AddOrGet <DropAllWorkable>(); Prioritizable.AddRef(go); go.AddOrGet <AquaticFarm>(); AddPassiveElementConsumer(go, new Vector3(0f, 1f)); AddPassiveElementConsumer(go, new Vector3(0f, -1f)); AddPassiveElementConsumer(go, new Vector3(1f, 0f)); AddPassiveElementConsumer(go, new Vector3(-1f, 0f)); }
public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag) { Storage storage = go.AddOrGet <Storage>(); storage.SetDefaultStoredItemModifiers(Storage.StandardInsulatedStorage); storage.showInUI = true; storage.capacityKg = 30f; Storage storage2 = go.AddComponent <Storage>(); storage2.SetDefaultStoredItemModifiers(Storage.StandardInsulatedStorage); storage2.showInUI = true; storage2.capacityKg = 150f; storage2.allowItemRemoval = true; storage2.ignoreSourcePriority = true; storage2.allowUIItemRemoval = true; go.AddOrGet <LoopingSounds>(); Prioritizable.AddRef(go); IceMachine iceMachine = go.AddOrGet <IceMachine>(); iceMachine.SetStorages(storage, storage2); iceMachine.targetTemperature = 253.15f; iceMachine.heatRemovalRate = 20f; ManualDeliveryKG manualDeliveryKG = go.AddOrGet <ManualDeliveryKG>(); manualDeliveryKG.SetStorage(storage); manualDeliveryKG.requestedItemTag = GameTags.Water; manualDeliveryKG.capacity = 30f; manualDeliveryKG.refillMass = 6f; manualDeliveryKG.minimumMass = 10f; manualDeliveryKG.choreTypeIDHash = Db.Get().ChoreTypes.MachineFetch.IdHash; }
public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag) { go.AddOrGet <LoreBearer>(); go.AddOrGet <Telepad>(); Light2D light2D = go.AddOrGet <Light2D>(); light2D.Color = LIGHT2D.HEADQUARTERS_COLOR; light2D.Range = 5f; light2D.Offset = LIGHT2D.HEADQUARTERS_OFFSET; light2D.overlayColour = LIGHT2D.HEADQUARTERS_OVERLAYCOLOR; light2D.shape = LightShape.Circle; light2D.drawOverlay = true; go.AddOrGet <DropAllWorkable>(); Prioritizable.AddRef(go); go.AddOrGet <BuildingComplete>().isManuallyOperated = false; ComplexFabricator fabricator = go.AddOrGet <ComplexFabricator>(); BuildingTemplates.CreateComplexFabricatorStorage(go, fabricator); Storage storage = go.AddOrGet <Storage>(); storage.showInUI = true; storage.allowItemRemoval = false; storage.showDescriptor = false; storage.storageFilters = STORAGEFILTERS.NOT_EDIBLE_SOLIDS; storage.storageFullMargin = STORAGE.STORAGE_LOCKER_FILLED_MARGIN; storage.fetchCategory = Storage.FetchCategory.GeneralStorage; // todo storage.Serialize }
public override void DoPostConfigureComplete(GameObject go) { SoundEventVolumeCache.instance.AddVolume("storagelocker_kanim", "StorageLocker_Hit_metallic_low", TUNING.NOISE_POLLUTION.NOISY.TIER1); Prioritizable.AddRef(go); go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery, false); go.GetComponent <KPrefabID>().AddTag(GameTags.OverlayBehindConduits, false); go.AddOrGet <EnergyConsumer>(); go.AddOrGet <Reservoir>(); Storage defaultStorage = BuildingTemplates.CreateDefaultStorage(go, false); defaultStorage.showDescriptor = true; defaultStorage.allowItemRemoval = false; defaultStorage.storageFilters = STORAGEFILTERS.LIQUIDS; defaultStorage.capacityKg = TrashcansConfigChecker.LiquidTrashCapicityKG; defaultStorage.showInUI = true; defaultStorage.SetDefaultStoredItemModifiers(GasReservoirConfig.ReservoirStoredItemModifiers); ConduitConsumer conduitConsumer = go.AddOrGet <ConduitConsumer>(); conduitConsumer.conduitType = ConduitType.Liquid; conduitConsumer.ignoreMinMassCheck = true; conduitConsumer.forceAlwaysSatisfied = true; conduitConsumer.alwaysConsume = false; conduitConsumer.capacityKG = defaultStorage.capacityKg; go.AddOrGet <Trashcan>(); go.AddOrGet <UserNameable>(); go.AddOrGet <ReservoirTrashcanAnim>(); }
public override void DoPostConfigureComplete(GameObject go) { var def = go.AddOrGetDef <RanchStation.Def>(); def.isCreatureEligibleToBeRanchedCb = delegate(GameObject creature_go, RanchStation.Instance ranch_station_smi) { var butcherStation = ranch_station_smi.GetComponent <ButcherStation>(); return(butcherStation?.IsCreatureEligibleToBeButched(creature_go) ?? false); }; def.onRanchCompleteCb = delegate(GameObject creature_go) { ButcherStation.ButchCreature(creature_go, true); }; def.getTargetRanchCell = delegate(RanchStation.Instance smi) { if (!smi.IsNullOrStopped()) { int cell = Grid.CellBelow(Grid.PosToCell(smi.transform.GetPosition())); cell = Grid.OffsetCell(cell, 0, -FishingStationGuide.GetDepthAvailable(smi.gameObject, out _)); if (Grid.IsValidCell(cell)) { return(cell); } } return(Grid.InvalidCell); }; def.interactLoopCount = 1; def.rancherInteractAnim = "anim_interacts_fishingstation_kanim"; def.ranchedPreAnim = "bitehook"; def.ranchedLoopAnim = "caught_loop"; def.ranchedPstAnim = "trapped_pre"; def.synchronizeBuilding = true; Prioritizable.AddRef(go); go.AddOrGet <FishingStationGuide>().type = FishingStationGuide.GuideType.Complete; }
public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag) { go.AddOrGet <Filterable>().filterElementState = Filterable.ElementState.Solid; go.AddOrGet <InfiniteSourceFlowControl>(); go.AddOrGet <InfiniteSource>().Type = ConduitType.Solid; SoundEventVolumeCache.instance.AddVolume("conveyorin_kanim", "StorageLocker_Hit_metallic_low", NOISE_POLLUTION.NOISY.TIER1); Prioritizable.AddRef(go); Storage storage = go.AddOrGet <Storage>(); storage.showInUI = true; storage.allowItemRemoval = false; storage.showDescriptor = true; storage.fetchCategory = Storage.FetchCategory.GeneralStorage; List <Tag> tagList = new List <Tag>(); tagList.AddRange((IEnumerable <Tag>)STORAGEFILTERS.NOT_EDIBLE_SOLIDS); tagList.AddRange((IEnumerable <Tag>)STORAGEFILTERS.FOOD); storage.storageFilters = tagList; CopyBuildingSettings copyBuildingSettings = go.AddOrGet <CopyBuildingSettings>(); copyBuildingSettings.copyGroupTag = GameTags.StorageLocker; go.AddOrGet <SolidConduitDispenser>(); }
public override void DoPostConfigureComplete(GameObject go) { BuildingTemplates.DoPostConfigure(go); go.AddOrGet <EnergyConsumer>(); Prioritizable.AddRef(go); go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery); List <Tag> tagList = new List <Tag>(); tagList.AddRange((IEnumerable <Tag>)STORAGEFILTERS.NOT_EDIBLE_SOLIDS); tagList.AddRange((IEnumerable <Tag>)STORAGEFILTERS.FOOD); Storage storage = go.AddOrGet <Storage>(); storage.capacityKg = 0f; storage.showInUI = true; storage.showDescriptor = true; storage.storageFilters = tagList; storage.allowItemRemoval = false; storage.onlyTransferFromLowerPriority = false; go.AddOrGet <Automatable>(); go.AddOrGet <TreeFilterable>(); SolidConduitFilter filterLogic = go.AddOrGet <SolidConduitFilter>(); filterLogic.SecondaryPort = secondaryPort; go.GetComponent <KPrefabID>().prefabInitFn += (KPrefabID.PrefabFn)(game_object => new PoweredActiveController.Instance((IStateMachineTarget)game_object.GetComponent <KPrefabID>()) { ShowWorkingStatus = true }.StartSM()); }
public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag) { SimCellOccupier simCellOccupier = go.AddOrGet <SimCellOccupier>(); simCellOccupier.doReplaceElement = true; go.AddOrGet <TileTemperature>(); ConduitConsumer conduitConsumer = go.AddOrGet <ConduitConsumer>(); conduitConsumer.conduitType = ConduitType.Liquid; conduitConsumer.consumptionRate = 1f; conduitConsumer.capacityKG = 5f; conduitConsumer.capacityTag = GameTags.Liquid; conduitConsumer.wrongElementResult = ConduitConsumer.WrongElementResult.Dump; go.AddOrGet <Storage>(); PlantablePlot plantablePlot = go.AddOrGet <PlantablePlot>(); plantablePlot.AddDepositTag(GameTags.CropSeed); plantablePlot.AddDepositTag(GameTags.WaterSeed); plantablePlot.occupyingObjectRelativePosition.y = 1f; plantablePlot.SetFertilizationFlags(true, true); CopyBuildingSettings copyBuildingSettings = go.AddOrGet <CopyBuildingSettings>(); copyBuildingSettings.copyGroupTag = GameTags.Farm; Storage storage = BuildingTemplates.CreateDefaultStorage(go, false); storage.SetDefaultStoredItemModifiers(Storage.StandardSealedStorage); go.AddOrGet <PlanterBox>(); go.AddOrGet <AnimTileable>(); go.AddOrGet <DropAllWorkable>(); Prioritizable.AddRef(go); }
public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag) { Prioritizable.AddRef(go); go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery); var storage = go.AddOrGet <Storage>(); storage.capacityKg = float.PositiveInfinity; storage.allowItemRemoval = true; storage.SetDefaultStoredItemModifiers( new List <Storage.StoredItemModifier> { Storage.StoredItemModifier.Insulate, Storage.StoredItemModifier.Hide, Storage.StoredItemModifier.Seal, } ); storage.storageFilters = STORAGEFILTERS.NOT_EDIBLE_SOLIDS; storage.fetchCategory = Storage.FetchCategory.GeneralStorage; storage.showInUI = false; go.AddOrGet <CopyBuildingSettings>().copyGroupTag = GameTags.StorageLocker; go.AddOrGet <InfiniteStorage>(); go.AddOrGet <ShowHideContentsButton>(); go.AddOrGet <UserNameable>(); }
public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag) { Prioritizable.AddRef(go); Electrolyzer electrolyzer = go.AddOrGet <Electrolyzer>(); electrolyzer.maxMass = 3.0f; electrolyzer.hasMeter = true; Storage storage = go.AddOrGet <Storage>(); storage.capacityKg = 80f; storage.showInUI = true; ElementConverter elementConverter = go.AddOrGet <ElementConverter>(); elementConverter.consumedElements = new ElementConverter.ConsumedElement[] { new ElementConverter.ConsumedElement(new Tag("SwampLilyFlower"), 1.0f) }; elementConverter.outputElements = new ElementConverter.OutputElement[] { new ElementConverter.OutputElement(0.25f, SimHashes.ChlorineGas, 348.15f, false, false, 0f, 1f, 1f, byte.MaxValue, 0), new ElementConverter.OutputElement(0.66f, SimHashes.Algae, 323.15f, false, true, 0f, 0.5f, 1f, byte.MaxValue, 0) }; ElementDropper elementDropper = go.AddComponent <ElementDropper>(); elementDropper.emitMass = 10f; elementDropper.emitTag = SimHashes.Algae.CreateTag(); elementDropper.emitOffset = new Vector3(0.5f, 0.5f, 0f); ManualDeliveryKG manualDeliveryKG = go.AddOrGet <ManualDeliveryKG>(); manualDeliveryKG.SetStorage(storage); manualDeliveryKG.requestedItemTag = new Tag("SwampLilyFlower"); manualDeliveryKG.capacity = 80f; manualDeliveryKG.refillMass = 32f; manualDeliveryKG.choreTypeIDHash = Db.Get().ChoreTypes.MachineFetch.IdHash; }
public override void DoPostConfigureComplete(GameObject prefab) { BuildingTemplates.DoPostConfigure(prefab); SymbolOverrideControllerUtil.AddToPrefab(prefab); GeneratedBuildings.RegisterLogicPorts(prefab, LogicOperationalController.INPUT_PORTS_0_0); prefab.AddOrGet <LogicOperationalController>(); Lure.Def def = prefab.AddOrGetDef <Lure.Def>(); def.lurePoints = new CellOffset[13] { new CellOffset(0, 0), new CellOffset(-1, 4), new CellOffset(0, 4), new CellOffset(1, 4), new CellOffset(-2, 3), new CellOffset(-1, 3), new CellOffset(0, 3), new CellOffset(1, 3), new CellOffset(2, 3), new CellOffset(-1, 2), new CellOffset(0, 2), new CellOffset(1, 2), new CellOffset(0, 1) }; def.radius = 32; Prioritizable.AddRef(prefab); }
public override void DoPostConfigureComplete(GameObject go) { Door door = go.AddOrGet <Door>(); door.unpoweredAnimSpeed = 1f; door.doorType = Door.DoorType.Internal; door.doorOpeningSoundEventName = "Open_DoorInternal"; door.doorClosingSoundEventName = "Close_DoorInternal"; AccessControl accessControl = go.AddOrGet <AccessControl>(); accessControl.controlEnabled = true; CopyBuildingSettings copyBuildingSettings = go.AddOrGet <CopyBuildingSettings>(); copyBuildingSettings.copyGroupTag = GameTags.Door; Workable workable = go.AddOrGet <Workable>(); workable.workTime = 3f; KBatchedAnimController component = go.GetComponent <KBatchedAnimController>(); component.initialAnim = "closed"; go.AddOrGet <ZoneTile>(); go.AddOrGet <KBoxCollider2D>(); Prioritizable.AddRef(go); GeneratedBuildings.RegisterLogicPorts(go, INPUT_PORTS_0_0); Object.DestroyImmediate(go.GetComponent <BuildingEnabledButton>()); }
public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag) { Prioritizable.AddRef(go); Electrolyzer electrolyzer = go.AddOrGet <Electrolyzer>(); electrolyzer.maxMass = 1.8f; electrolyzer.hasMeter = false; Storage storage = go.AddOrGet <Storage>(); storage.capacityKg = 330f; storage.showInUI = true; ElementConverter elementConverter = go.AddOrGet <ElementConverter>(); elementConverter.consumedElements = new ElementConverter.ConsumedElement[1] { new ElementConverter.ConsumedElement(new Tag("Algae"), 0.55f) }; elementConverter.outputElements = new ElementConverter.OutputElement[1] { new ElementConverter.OutputElement(0.5f, SimHashes.Oxygen, 303.15f, false, false, 0f, 1f, 1f, byte.MaxValue, 0) }; ManualDeliveryKG manualDeliveryKG = go.AddOrGet <ManualDeliveryKG>(); manualDeliveryKG.SetStorage(storage); manualDeliveryKG.requestedItemTag = new Tag("Algae"); manualDeliveryKG.capacity = 330f; manualDeliveryKG.refillMass = 132f; manualDeliveryKG.choreTypeIDHash = Db.Get().ChoreTypes.FetchCritical.IdHash; }
protected override void OnDragTool(int cell, int distFromOrigin) { for (int i = 0; i < 39; i++) { if (IsActiveLayer((ObjectLayer)i)) { GameObject gameObject = Grid.Objects[cell, i]; if (!((Object)gameObject == (Object)null)) { EmptyConduitWorkable component = gameObject.GetComponent <EmptyConduitWorkable>(); if (!((Object)component == (Object)null)) { if (DebugHandler.InstantBuildMode) { component.EmptyPipeContents(); } else { component.MarkForEmptying(); Prioritizable component2 = gameObject.GetComponent <Prioritizable>(); if ((Object)component2 != (Object)null) { component2.SetMasterPriority(ToolMenu.Instance.PriorityScreen.GetLastSelectedPriority()); } } } } } } }
public override void DoPostConfigureComplete(GameObject go) { Door door = go.AddOrGet <Door>(); door.hasComplexUserControls = true; door.unpoweredAnimSpeed = 0.65f; door.poweredAnimSpeed = 5f; door.doorClosingSoundEventName = "MechanizedAirlock_closing"; door.doorOpeningSoundEventName = "MechanizedAirlock_opening"; go.AddOrGet <AccessControl>(); go.AddOrGet <KBoxCollider2D>(); Prioritizable.AddRef(go); Workable workable = go.AddOrGet <Workable>(); workable.workTime = 5f; GeneratedBuildings.RegisterLogicPorts(go, DoorConfig.INPUT_PORTS); Object.DestroyImmediate(go.GetComponent <BuildingEnabledButton>()); BuildingTemplates.DoPostConfigure(go); AccessControl component = go.GetComponent <AccessControl>(); component.controlEnabled = true; KBatchedAnimController component2 = go.GetComponent <KBatchedAnimController>(); component2.initialAnim = "closed"; }
protected override void OnDragTool(int cell, int distFromOrigin) { GameObject gameObject = Grid.Objects[cell, 3]; if (!((Object)gameObject == (Object)null)) { ObjectLayerListItem objectLayerListItem = gameObject.GetComponent <Pickupable>().objectLayerListItem; while (objectLayerListItem != null) { GameObject gameObject2 = objectLayerListItem.gameObject; objectLayerListItem = objectLayerListItem.nextItem; if (!((Object)gameObject2 == (Object)null) && !((Object)gameObject2.GetComponent <MinionIdentity>() != (Object)null)) { Clearable component = gameObject2.GetComponent <Clearable>(); if (component.isClearable) { gameObject2.GetComponent <Clearable>().MarkForClear(false); Prioritizable component2 = gameObject2.GetComponent <Prioritizable>(); if ((Object)component2 != (Object)null) { component2.SetMasterPriority(ToolMenu.Instance.PriorityScreen.GetLastSelectedPriority()); } } } } } }
public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag) { go.AddOrGet <BuildingComplete>().isManuallyOperated = true; Prioritizable.AddRef(go); Storage storage = go.AddOrGet <Storage>(); storage.capacityKg = 1000f; storage.showInUI = true; ManualDeliveryKG manualDeliveryKG = go.AddOrGet <ManualDeliveryKG>(); manualDeliveryKG.SetStorage(storage); manualDeliveryKG.requestedItemTag = INPUT_MATERIAL; manualDeliveryKG.refillMass = 150f; manualDeliveryKG.capacity = 750f; manualDeliveryKG.choreTypeIDHash = Db.Get().ChoreTypes.ResearchFetch.IdHash; ResearchCenter researchCenter = go.AddOrGet <ResearchCenter>(); researchCenter.overrideAnims = new KAnimFile[1] { Assets.GetAnim("anim_interacts_research_center_kanim") }; researchCenter.research_point_type_id = "alpha"; researchCenter.inputMaterial = INPUT_MATERIAL; researchCenter.mass_per_point = 50f; ElementConverter elementConverter = go.AddOrGet <ElementConverter>(); elementConverter.consumedElements = new ElementConverter.ConsumedElement[1] { new ElementConverter.ConsumedElement(INPUT_MATERIAL, 1.16f) }; elementConverter.showDescriptors = false; go.AddOrGetDef <PoweredController.Def>(); }
public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag) { go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery); go.AddOrGet <LoopingSounds>(); Prioritizable.AddRef(go); Tinkerable.MakePowerTinkerable(go); }
/* public override void DoPostConfigurePreview(BuildingDef def, GameObject go) * { * GeneratedBuildings.RegisterLogicPorts(go, UniversalHeaterConfig.OUTPUT_PORT); * } * * public override void DoPostConfigureUnderConstruction(GameObject go) * { * GeneratedBuildings.RegisterLogicPorts(go, UniversalHeaterConfig.OUTPUT_PORT); * }*/ public override void DoPostConfigureComplete(GameObject go) { List <Tag> mod = new List <Tag>(); mod.AddRange((IEnumerable <Tag>)STORAGEFILTERS.NOT_EDIBLE_SOLIDS); mod.AddRange((IEnumerable <Tag>)STORAGEFILTERS.LIQUIDS); mod.AddRange((IEnumerable <Tag>)STORAGEFILTERS.GASES); // GeneratedBuildings.RegisterLogicPorts(go, UniversalHeaterConfig.OUTPUT_PORT); Storage storage = go.AddOrGet <Storage>(); storage.showInUI = true; storage.showDescriptor = true; storage.storageFilters = mod; storage.allowItemRemoval = true; storage.capacityKg = 1000000f; storage.storageFullMargin = STORAGE.STORAGE_LOCKER_FILLED_MARGIN; storage.fetchCategory = Storage.FetchCategory.GeneralStorage; Prioritizable.AddRef(go); go.AddOrGet <TreeFilterable>(); go.AddOrGet <UniversalHeater>().simulatedInternalTemperature = 373.15f; go.AddOrGet <UniversalHeater>().simulatedInternalHeatCapacity = 4000f; go.AddOrGet <UniversalHeater>().simulatedThermalConductivity = 1000f; go.AddOrGet <DropAllWorkable>(); go.AddOrGetDef <StorageController.Def>(); }
public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag) { go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery, false); Storage defaultStorage = BuildingTemplates.CreateDefaultStorage(go, false); defaultStorage.SetDefaultStoredItemModifiers(Storage.StandardSealedStorage); defaultStorage.storageFilters = new List <Tag>() { new Tag("BleachStone") }; defaultStorage.capacityKg = 400f + 20f; go.AddOrGet <HexiLiquidGermScrubber>(); Prioritizable.AddRef(go); GermScrubConverter elementConverter = go.AddOrGet <GermScrubConverter>(); elementConverter.SetStorage(defaultStorage); ConduitConsumer conduitConsumer = go.AddOrGet <ConduitConsumer>(); conduitConsumer.conduitType = ConduitType.Liquid; conduitConsumer.consumptionRate = 10f; conduitConsumer.capacityKG = 20f; conduitConsumer.capacityTag = GameTags.Liquid; conduitConsumer.forceAlwaysSatisfied = true; conduitConsumer.wrongElementResult = ConduitConsumer.WrongElementResult.Dump; ManualDeliveryKG manualDeliveryKg = go.AddComponent <ManualDeliveryKG>(); manualDeliveryKg.SetStorage(defaultStorage); manualDeliveryKg.requestedItemTag = ElementLoader.FindElementByHash(SimHashes.BleachStone).tag; manualDeliveryKg.capacity = 400f; manualDeliveryKg.refillMass = 100f; manualDeliveryKg.choreTypeIDHash = Db.Get().ChoreTypes.FetchCritical.IdHash; }
public override void DoPostConfigureComplete(GameObject go) { GeneratedBuildings.RegisterLogicPorts(go, DoorConfig.INPUT_PORTS_N1_0); Door door = go.AddOrGet <Door>(); door.unpoweredAnimSpeed = 0.01f; door.poweredAnimSpeed = 0.1f; door.hasComplexUserControls = true; door.allowAutoControl = false; door.doorOpeningSoundEventName = "BunkerDoor_opening"; door.doorClosingSoundEventName = "BunkerDoor_closing"; door.verticalOrientation = Orientation.R90; Workable workable = go.AddOrGet <Workable>(); workable.workTime = 3f; KBatchedAnimController component = go.GetComponent <KBatchedAnimController>(); component.initialAnim = "closed"; component.visibilityType = KAnimControllerBase.VisibilityType.OffscreenUpdate; go.AddOrGet <ZoneTile>(); go.AddOrGet <KBoxCollider2D>(); Prioritizable.AddRef(go); Object.DestroyImmediate(go.GetComponent <BuildingEnabledButton>()); KPrefabID component2 = go.GetComponent <KPrefabID>(); component2.AddTag(GameTags.Bunker, false); }
public Prioritizable Dequeue() { Prioritizable p = list[0]; list.RemoveAt(0); return(p); }
public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag) { go.AddOrGet <KPrefabID>().AddTag(GameTags.NotRocketInteriorBuilding); go.AddOrGet <BuildingComplete>().isManuallyOperated = true; Prioritizable.AddRef(go); go.AddOrGetDef <PoweredController.Def>(); go.AddOrGet <ClusterLargeTelescopeWorkable>().efficiencyMultiplier = 1f + (LargeTelescopeOptions.Instance.efficiency_multiplier / 100f); var def = go.AddOrGetDef <ClusterTelescope.Def>(); def.clearScanCellRadius = 6; def.analyzeClusterRadius = LargeTelescopeOptions.Instance.analyze_cluster_radius; def.workableOverrideAnims = new KAnimFile[] { Assets.GetAnim("anim_interacts_telescope_kanim") }; def.providesOxygen = true; var storage = go.AddOrGet <Storage>(); storage.capacityKg = 1000f; storage.showInUI = true; var conduitConsumer = go.AddOrGet <ConduitConsumer>(); conduitConsumer.conduitType = ConduitType.Gas; conduitConsumer.consumptionRate = ConduitFlow.MAX_GAS_MASS; conduitConsumer.capacityTag = GameTags.Oxygen; conduitConsumer.wrongElementResult = ConduitConsumer.WrongElementResult.Dump; conduitConsumer.capacityKG = OXYGEN_CAPACITY; conduitConsumer.forceAlwaysSatisfied = true; }
public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag) { go.AddOrGet <DropAllWorkable>(); go.AddOrGet <BuildingComplete>().isManuallyOperated = true; GlassForge inductor = go.AddOrGet <GlassForge>(); inductor.sideScreenStyle = ComplexFabricatorSideScreen.StyleSetting.ListQueueHybrid; go.AddOrGet <CopyBuildingSettings>(); ComplexFabricatorWorkable complexFabricatorWorkable = go.AddOrGet <ComplexFabricatorWorkable>(); inductor.duplicantOperated = false; BuildingTemplates.CreateComplexFabricatorStorage(go, inductor); inductor.outStorage.capacityKg = 2000f; inductor.storeProduced = true; inductor.inStorage.SetDefaultStoredItemModifiers(InductorConfig.RefineryStoredItemModifiers); inductor.buildStorage.SetDefaultStoredItemModifiers(InductorConfig.RefineryStoredItemModifiers); inductor.outStorage.SetDefaultStoredItemModifiers(InductorConfig.RefineryStoredItemModifiers); inductor.outputOffset = new Vector3(1f, 0.5f); complexFabricatorWorkable.overrideAnims = new KAnimFile[] { Assets.GetAnim("anim_interacts_metalrefinery_kanim") }; inductor.resultState = ComplexFabricator.ResultState.Melted; ConduitDispenser conduitDispenser = go.AddOrGet <ConduitDispenser>(); conduitDispenser.storage = inductor.outStorage; conduitDispenser.conduitType = ConduitType.Liquid; conduitDispenser.elementFilter = null; conduitDispenser.alwaysDispense = true; this.ConfigureRecipes(); Prioritizable.AddRef(go); }
public override void DoPostConfigureComplete(GameObject go) { Door door = go.AddOrGet <Door>(); door.hasComplexUserControls = true; door.unpoweredAnimSpeed = 0.9f; door.poweredAnimSpeed = 6f; door.doorClosingSoundEventName = "MechanizedAirlock_closing"; door.doorOpeningSoundEventName = "MechanizedAirlock_opening"; go.AddOrGet <ZoneTile>(); go.AddOrGet <AccessControl>(); go.AddOrGet <KBoxCollider2D>(); Prioritizable.AddRef(go); CopyBuildingSettings copyBuildingSettings = go.AddOrGet <CopyBuildingSettings>(); copyBuildingSettings.copyGroupTag = GameTags.Door; Workable workable = go.AddOrGet <Workable>(); workable.workTime = 10f; UnityEngine.Object.DestroyImmediate(go.GetComponent <BuildingEnabledButton>()); AccessControl component = go.GetComponent <AccessControl>(); component.controlEnabled = true; KBatchedAnimController component2 = go.GetComponent <KBatchedAnimController>(); component2.initialAnim = "closed"; }
public override void DoPostConfigureComplete(GameObject go) { BuildingTemplates.DoPostConfigure(go); Prioritizable.AddRef(go); go.AddOrGet <EnergyConsumer>(); go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery); var tagList = new List <Tag>(); tagList.AddRange(STORAGEFILTERS.NOT_EDIBLE_SOLIDS); tagList.AddRange(STORAGEFILTERS.FOOD); var storage = go.AddOrGet <Storage>(); storage.capacityKg = 0f; storage.showInUI = true; storage.showDescriptor = true; storage.storageFilters = tagList; storage.allowItemRemoval = false; storage.onlyTransferFromLowerPriority = false; go.AddOrGet <Automatable>(); go.AddOrGet <TreeFilterable>(); var filterLogic = go.AddOrGet <ConveyorFilter>(); filterLogic.SecondaryPort = _secondaryPort; go.AddOrGetDef <PoweredActiveController.Def>().showWorkingStatus = true; }
public void Enqueue (Prioritizable p) { if (p == null) { throw new NullReferenceException("PriorityQueue does not accept null objects"); } float min = 0; if (list.Count == 0) { list.Add(p); } else { min = p.getPriority(); for (int j = 0; j < list.Count; j++) { float dist = list[j].getPriority(); if (dist < min) { list.Insert(j, p); break; } else if (j == list.Count - 1) { list.Add(p); break; } } } }