public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag) { Storage storage1 = go.AddOrGet <Storage>(); storage1.showInUI = true; Storage storage2 = go.AddComponent <Storage>(); storage2.capacityKg = 5f; storage2.showInUI = true; storage2.SetDefaultStoredItemModifiers(PollutedWaterStorageModifiers); storage2.allowItemRemoval = false; storage2.storageFilters = new List <Tag> { SimHashes.Algae.CreateTag(), SimHashes.CarbonDioxide.CreateTag() }; ManualDeliveryKG manualDeliveryKg1 = go.AddOrGet <ManualDeliveryKG>(); manualDeliveryKg1.SetStorage(storage1); manualDeliveryKg1.requestedItemTag = SimHashes.Fertilizer.CreateTag(); manualDeliveryKg1.capacity = 90f; manualDeliveryKg1.refillMass = 18f; manualDeliveryKg1.choreTypeIDHash = Db.Get().ChoreTypes.OperateFetch.IdHash; ManualDeliveryKG manualDeliveryKg2 = go.AddComponent <ManualDeliveryKG>(); manualDeliveryKg2.SetStorage(storage1); manualDeliveryKg2.requestedItemTag = SimHashes.Water.CreateTag(); manualDeliveryKg2.capacity = 360f; manualDeliveryKg2.refillMass = 72f; manualDeliveryKg2.allowPause = true; manualDeliveryKg2.choreTypeIDHash = Db.Get().ChoreTypes.OperateFetch.IdHash; AlgaeGrower algaeHabitat = go.AddOrGet <AlgaeGrower>(); algaeHabitat.pressureSampleOffset = new CellOffset(0, 1); ElementConverter elementConverter = go.AddComponent <ElementConverter>(); elementConverter.consumedElements = new ElementConverter.ConsumedElement[3] { new ElementConverter.ConsumedElement(SimHashes.CarbonDioxide.CreateTag(), 0.01375f), new ElementConverter.ConsumedElement(SimHashes.Fertilizer.CreateTag(), 0.000625f), new ElementConverter.ConsumedElement(SimHashes.Water.CreateTag(), 0.005625f) }; elementConverter.outputElements = new ElementConverter.OutputElement[2] { new ElementConverter.OutputElement(0.005f, SimHashes.Oxygen, 303.15f, false, 0.0f, 1f), new ElementConverter.OutputElement(0.015f, SimHashes.Algae, 303.15f, true, 0.0f, 1f) }; ElementDropper elementDropper = go.AddComponent <ElementDropper>(); elementDropper.emitMass = 5; elementDropper.emitTag = SimHashes.Algae.CreateTag(); ElementConsumer elementConsumer = go.AddOrGet <ElementConsumer>(); elementConsumer.elementToConsume = SimHashes.CarbonDioxide; elementConsumer.consumptionRate = 0.01375f; elementConsumer.consumptionRadius = 3; elementConsumer.showInStatusPanel = true; elementConsumer.storeOnConsume = true; elementConsumer.sampleCellOffset = new Vector3(0.0f, 1f, 0.0f); elementConsumer.isRequired = true; PassiveElementConsumer passiveElementConsumer = go.AddComponent <PassiveElementConsumer>(); passiveElementConsumer.elementToConsume = SimHashes.Water; passiveElementConsumer.consumptionRate = 1.2f; passiveElementConsumer.consumptionRadius = 1; passiveElementConsumer.showDescriptor = false; passiveElementConsumer.storeOnConsume = true; passiveElementConsumer.capacityKG = 360f; passiveElementConsumer.showInStatusPanel = false; go.AddOrGet <AnimTileable>(); Prioritizable.AddRef(go); }
public static void ProcessPost(BuildingDef buildingDef) { float multiplier; bool flag = CustomizeBuildingsState.StateManager.State.MachineMultiplier.TryGetValue(buildingDef.PrefabID, out multiplier); if (!flag) { flag = CustomizeBuildingsState.StateManager.State.MachineMultiplier.TryGetValue(BuildingConfigManager_RegisterBuilding.FindBetweenLink.Match(buildingDef.Name).Groups[1].Value, out multiplier); } if (flag) { ElementConverter[] converters = buildingDef.BuildingComplete.GetComponents <ElementConverter>(); for (int j = 0; j < converters.Count(); j++) { ElementConverter converter = converters[j]; for (int i = 0; i < converter.consumedElements.Count(); i++) { converter.consumedElements[i].massConsumptionRate *= (float)multiplier; } for (int i = 0; i < converter.outputElements.Count(); i++) { converter.outputElements[i].massGenerationRate *= (float)multiplier; } //converter.SetWorkSpeedMultiplier((float)multiplier); Debug.Log("Multiplier: " + buildingDef.PrefabID + " x" + multiplier); } //if(converters.Count() == 0) Debug.Log("Muliplier: converter was null for " + buildingDef.PrefabID); Storage[] storages = buildingDef.BuildingComplete.GetComponents <Storage>(); for (int i = 0; i < storages.Count(); i++) { storages[i].capacityKg *= multiplier; } ManualDeliveryKG[] manualDeliveryKGs = buildingDef.BuildingComplete.GetComponents <ManualDeliveryKG>(); for (int i = 0; i < manualDeliveryKGs.Count(); i++) { manualDeliveryKGs[i].capacity *= multiplier; } ConduitConsumer conduitConsumer = buildingDef.BuildingComplete.GetComponent <ConduitConsumer>(); if (conduitConsumer != null) { conduitConsumer.capacityKG *= multiplier; } PassiveElementConsumer elementConsumer = buildingDef.BuildingComplete.GetComponent <PassiveElementConsumer>(); if (elementConsumer != null) { elementConsumer.consumptionRate *= multiplier; elementConsumer.capacityKG *= multiplier; } BuildingElementEmitter buildingElementEmitter = buildingDef.BuildingComplete.GetComponent <BuildingElementEmitter>(); if (buildingElementEmitter != null) { buildingElementEmitter.emitRate *= multiplier; } AlgaeDistillery algaeDistillery = buildingDef.BuildingComplete.GetComponent <AlgaeDistillery>(); if (algaeDistillery != null) { algaeDistillery.emitMass *= multiplier; } ElementDropper elementDropper = buildingDef.BuildingComplete.GetComponent <ElementDropper>(); if (elementDropper != null) { elementDropper.emitMass *= multiplier; } } }
public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag) { Storage storage1 = go.AddOrGet <Storage>(); storage1.showInUI = true; Storage storage2 = go.AddComponent <Storage>(); storage2.capacityKg = 5f; storage2.showInUI = true; storage2.SetDefaultStoredItemModifiers(PollutedWaterStorageModifiers); storage2.allowItemRemoval = false; storage2.storageFilters = new List <Tag> { ElementLoader.FindElementByHash(SimHashes.DirtyWater).tag }; ManualDeliveryKG manualDeliveryKg1 = go.AddOrGet <ManualDeliveryKG>(); manualDeliveryKg1.SetStorage(storage1); manualDeliveryKg1.requestedItemTag = new Tag("Algae"); manualDeliveryKg1.capacity = 90f; manualDeliveryKg1.refillMass = 18f; manualDeliveryKg1.choreTypeIDHash = Db.Get().ChoreTypes.OperateFetch.IdHash; ManualDeliveryKG manualDeliveryKg2 = go.AddComponent <ManualDeliveryKG>(); manualDeliveryKg2.SetStorage(storage1); manualDeliveryKg2.requestedItemTag = new Tag("Water"); manualDeliveryKg2.capacity = 360f; manualDeliveryKg2.refillMass = 72f; manualDeliveryKg2.allowPause = true; manualDeliveryKg2.choreTypeIDHash = Db.Get().ChoreTypes.OperateFetch.IdHash; PipedAlgaeTerrarium algaeHabitat = go.AddOrGet <PipedAlgaeTerrarium>(); algaeHabitat.lightBonusMultiplier = 1.1f; algaeHabitat.pressureSampleOffset = new CellOffset(0, 1); ElementConverter elementConverter = go.AddComponent <ElementConverter>(); elementConverter.consumedElements = new ElementConverter.ConsumedElement[2] { new ElementConverter.ConsumedElement(new Tag("Algae"), 0.03f), new ElementConverter.ConsumedElement(new Tag("Water"), 0.3f) }; elementConverter.outputElements = new ElementConverter.OutputElement[2] { new ElementConverter.OutputElement(0.04f, SimHashes.Oxygen, 303.15f, false, 0.0f, 1f, false, 1f, byte.MaxValue, 0), new ElementConverter.OutputElement(0.2903333f, SimHashes.DirtyWater, 303.15f, true, 0.0f, 1f, false, 1f, byte.MaxValue, 0) }; ConduitDispenser conduitDispenser = go.AddOrGet <ConduitDispenser>(); conduitDispenser.conduitType = ConduitType.Liquid; conduitDispenser.invertElementFilter = true; conduitDispenser.elementFilter = new SimHashes[1] { SimHashes.Water }; ElementConsumer elementConsumer = go.AddOrGet <ElementConsumer>(); elementConsumer.elementToConsume = SimHashes.CarbonDioxide; elementConsumer.consumptionRate = 0.0003333333f; elementConsumer.consumptionRadius = (byte)3; elementConsumer.showInStatusPanel = true; elementConsumer.sampleCellOffset = new Vector3(0.0f, 1f, 0.0f); elementConsumer.isRequired = false; PassiveElementConsumer passiveElementConsumer = go.AddComponent <PassiveElementConsumer>(); passiveElementConsumer.elementToConsume = SimHashes.Water; passiveElementConsumer.consumptionRate = 1.2f; passiveElementConsumer.consumptionRadius = (byte)1; passiveElementConsumer.showDescriptor = false; passiveElementConsumer.storeOnConsume = true; passiveElementConsumer.capacityKG = 360f; passiveElementConsumer.showInStatusPanel = false; go.AddOrGet <AnimTileable>(); Prioritizable.AddRef(go); }
public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag) { Storage storage = go.AddOrGet <Storage>(); storage.showInUI = true; List <Tag> list = new List <Tag>(); list.Add(SimHashes.DirtyWater.CreateTag()); List <Tag> storageFilters = list; Tag tag = SimHashes.Algae.CreateTag(); Tag tag2 = SimHashes.Water.CreateTag(); Storage storage2 = go.AddComponent <Storage>(); storage2.capacityKg = 360f; storage2.showInUI = true; storage2.SetDefaultStoredItemModifiers(PollutedWaterStorageModifiers); storage2.allowItemRemoval = false; storage2.storageFilters = storageFilters; ManualDeliveryKG manualDeliveryKG = go.AddOrGet <ManualDeliveryKG>(); manualDeliveryKG.SetStorage(storage); manualDeliveryKG.requestedItemTag = tag; manualDeliveryKG.capacity = 90f; manualDeliveryKG.refillMass = 18f; manualDeliveryKG.choreTypeIDHash = Db.Get().ChoreTypes.FetchCritical.IdHash; ManualDeliveryKG manualDeliveryKG2 = go.AddComponent <ManualDeliveryKG>(); manualDeliveryKG2.SetStorage(storage); manualDeliveryKG2.requestedItemTag = tag2; manualDeliveryKG2.capacity = 360f; manualDeliveryKG2.refillMass = 72f; manualDeliveryKG2.allowPause = true; manualDeliveryKG2.choreTypeIDHash = Db.Get().ChoreTypes.FetchCritical.IdHash; KAnimFile[] overrideAnims = new KAnimFile[1] { Assets.GetAnim("anim_interacts_algae_terarrium_kanim") }; AlgaeHabitatEmpty algaeHabitatEmpty = go.AddOrGet <AlgaeHabitatEmpty>(); algaeHabitatEmpty.workTime = 5f; algaeHabitatEmpty.overrideAnims = overrideAnims; algaeHabitatEmpty.workLayer = Grid.SceneLayer.BuildingFront; AlgaeHabitat algaeHabitat = go.AddOrGet <AlgaeHabitat>(); algaeHabitat.lightBonusMultiplier = 1.1f; algaeHabitat.pressureSampleOffset = new CellOffset(0, 1); ElementConverter elementConverter = go.AddComponent <ElementConverter>(); elementConverter.consumedElements = new ElementConverter.ConsumedElement[2] { new ElementConverter.ConsumedElement(tag, 0.0300000012f), new ElementConverter.ConsumedElement(tag2, 0.3f) }; elementConverter.outputElements = new ElementConverter.OutputElement[1] { new ElementConverter.OutputElement(0.0400000028f, SimHashes.Oxygen, 303.15f, false, false, 0f, 1f, 1f, byte.MaxValue, 0) }; ElementConverter elementConverter2 = go.AddComponent <ElementConverter>(); elementConverter2.outputElements = new ElementConverter.OutputElement[1] { new ElementConverter.OutputElement(0.290333331f, SimHashes.DirtyWater, 303.15f, false, true, 0f, 1f, 1f, byte.MaxValue, 0) }; ElementConsumer elementConsumer = go.AddOrGet <ElementConsumer>(); elementConsumer.elementToConsume = SimHashes.CarbonDioxide; elementConsumer.consumptionRate = 0.0003333333f; elementConsumer.consumptionRadius = 3; elementConsumer.showInStatusPanel = true; elementConsumer.sampleCellOffset = new Vector3(0f, 1f, 0f); elementConsumer.isRequired = false; PassiveElementConsumer passiveElementConsumer = go.AddComponent <PassiveElementConsumer>(); passiveElementConsumer.elementToConsume = SimHashes.Water; passiveElementConsumer.consumptionRate = 1.2f; passiveElementConsumer.consumptionRadius = 1; passiveElementConsumer.showDescriptor = false; passiveElementConsumer.storeOnConsume = true; passiveElementConsumer.capacityKG = 360f; passiveElementConsumer.showInStatusPanel = false; go.AddOrGet <KBatchedAnimController>().randomiseLoopedOffset = true; go.AddOrGet <AnimTileable>(); Prioritizable.AddRef(go); }