private static List<Unit> ReadUnits(List<XElement> xelems, ElementConverter<Unit> converter) { return xelems.ConvertAll(x => converter(x)); }
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); }
public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag) { go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery, false); go.AddOrGet <PipedRustDeoxidizer>().maxMass = 1.8f; Storage storage = go.AddOrGet <Storage>(); storage.SetDefaultStoredItemModifiers(Storage.StandardSealedStorage); storage.showInUI = true; bool alwaysDispense = false; bool invertElementFilter = false; MultiOutput multiOut = go.AddOrGet <MultiOutput>(); SimHashes[] filter = new SimHashes[1] { SimHashes.Oxygen }; OutputPort oxyOut = multiOut.AddOutputPort(ConduitType.Gas, new CellOffset(1, 1), PortIconColors.Oxygen, alwaysDispense, filter, invertElementFilter); filter = new SimHashes[1] { SimHashes.ChlorineGas }; OutputPort chloriOut = multiOut.AddOutputPort(ConduitType.Gas, new CellOffset(0, 1), PortIconColors.ChlorineGas, alwaysDispense, filter, invertElementFilter); //MultiInput multiIn = go.AddOrGet<MultiInput>(); //InputPort in1 = multiIn.AddInputPort(ConduitType.Gas, new CellOffset(1, 0), PortIconColors.NaturalGas, 1f, 2f, new Tag("Methane"), true); //InputPort in2 = multiIn.AddInputPort(ConduitType.Gas, new CellOffset(0, 0), PortIconColors.Hydrogen, 1f, 3f, new Tag("Hydrogen"), true); //in1.RequiresConnection = false; ManualDeliveryKG manualDeliveryKG = go.AddOrGet <ManualDeliveryKG>(); manualDeliveryKG.SetStorage(storage); manualDeliveryKG.requestedItemTag = new Tag("Rust"); manualDeliveryKG.capacity = 585f; manualDeliveryKG.refillMass = 193.05f; manualDeliveryKG.choreTypeIDHash = Db.Get().ChoreTypes.FetchCritical.IdHash; ManualDeliveryKG manualDeliveryKG2 = go.AddComponent <ManualDeliveryKG>(); manualDeliveryKG2.SetStorage(storage); manualDeliveryKG2.requestedItemTag = new Tag("Salt"); manualDeliveryKG2.capacity = 195f; manualDeliveryKG2.refillMass = 64.3500061f; manualDeliveryKG2.allowPause = true; manualDeliveryKG2.choreTypeIDHash = Db.Get().ChoreTypes.FetchCritical.IdHash; ElementConverter elementConverter = go.AddOrGet <ElementConverter>(); //elementConverter.consumedElements = new ElementConverter.ConsumedElement[2] //{ // new ElementConverter.ConsumedElement(new Tag("Methane"), 0.1f), // new ElementConverter.ConsumedElement(new Tag("Hydrogen"), 0.1f) //}; elementConverter.consumedElements = new ElementConverter.ConsumedElement[2] { new ElementConverter.ConsumedElement(new Tag("Rust"), RUST_KG_CONSUMPTION_RATE), new ElementConverter.ConsumedElement(new Tag("Salt"), SALT_KG_CONSUMPTION_RATE) }; elementConverter.outputElements = new ElementConverter.OutputElement[3] { new ElementConverter.OutputElement(OXYGEN_CONVERSION_RATIO, SimHashes.Oxygen, OXYGEN_TEMPERATURE, false, true, 0.0f, 1f, 1f, byte.MaxValue, 0), new ElementConverter.OutputElement(CHLORINE_CONVERSION_RATIO, SimHashes.ChlorineGas, OXYGEN_TEMPERATURE, false, true, 0.0f, 1f, 1f, byte.MaxValue, 0), new ElementConverter.OutputElement(IRON_CONVERSION_RATIO, SimHashes.IronOre, OXYGEN_TEMPERATURE, false, true, 0.0f, 1f, 1f, byte.MaxValue, 0) }; //elementConverter.outputElements = new ElementConverter.OutputElement[3] //{ // new ElementConverter.OutputElement(OXYGEN_CONVERSION_RATIO, SimHashes.Oxygen, OXYGEN_TEMPERATURE, false, true, 0.0f, 1f, 1f, byte.MaxValue, 0), // new ElementConverter.OutputElement(CHLORINE_CONVERSION_RATIO, SimHashes.ChlorineGas, OXYGEN_TEMPERATURE, false, true, 0.0f, 1f, 1f, byte.MaxValue, 0), // new ElementConverter.OutputElement(IRON_CONVERSION_RATIO, SimHashes.IronOre, OXYGEN_TEMPERATURE, false, true, 0.0f, 1f, 1f, byte.MaxValue, 0) //}; ElementDropper elementDropper = go.AddComponent <ElementDropper>(); elementDropper.emitMass = 24f; elementDropper.emitTag = SimHashes.IronOre.CreateTag(); elementDropper.emitOffset = new Vector3(0.0f, 1f, 0.0f); 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) { go.AddOrGet <LoopingSounds>(); Prioritizable.AddRef(go); Storage storage = BuildingTemplates.CreateDefaultStorage(go); storage.showInUI = true; storage.capacityKg = 20000f; storage.SetDefaultStoredItemModifiers(Storage.StandardSealedStorage); ConduitDispenser conduitDispenser = go.AddOrGet <ConduitDispenser>(); conduitDispenser.conduitType = ConduitType.Gas; conduitDispenser.invertElementFilter = false; conduitDispenser.elementFilter = new SimHashes[1] { SimHashes.Oxygen }; ElementConsumer elementConsumer = go.AddOrGet <ElementConsumer>(); elementConsumer.elementToConsume = SimHashes.CarbonDioxide; elementConsumer.consumptionRate = 1000f; elementConsumer.consumptionRadius = 10; elementConsumer.showInStatusPanel = true; elementConsumer.sampleCellOffset = new Vector3(0f, 0f, 0f); elementConsumer.isRequired = false; elementConsumer.storeOnConsume = true; elementConsumer.showDescriptor = false; ElementDropper elementDropper = go.AddComponent <ElementDropper>(); elementDropper.emitMass = 100f; elementDropper.emitTag = new Tag("Carbon"); elementDropper.emitOffset = new Vector3(0f, 0f, 0f); ElementConverter elementConverter = go.AddOrGet <ElementConverter>(); elementConverter.consumedElements = new ElementConverter.ConsumedElement[] { new ElementConverter.ConsumedElement(new Tag("Filter"), 0.1f), new ElementConverter.ConsumedElement(new Tag("CarbonDioxide"), 1.0f) }; elementConverter.outputElements = new ElementConverter.OutputElement[] { new ElementConverter.OutputElement(0.27f, SimHashes.Carbon, 0f, true, 0f, 0.5f, false, 0f, byte.MinValue), new ElementConverter.OutputElement(0.73f, SimHashes.Oxygen, 0f, true, 0f, 0f, false, 0f, byte.MinValue) }; ManualDeliveryKG manualDeliveryKG = go.AddOrGet <ManualDeliveryKG>(); manualDeliveryKG.SetStorage(storage); manualDeliveryKG.requestedItemTag = new Tag("Filter"); manualDeliveryKG.capacity = 100f; manualDeliveryKG.refillMass = 1f; manualDeliveryKG.choreTypeIDHash = Db.Get().ChoreTypes.FetchCritical.IdHash; CoalScrubberPiped coalScrubber = go.AddOrGet <CoalScrubberPiped>(); coalScrubber.filterTag = new Tag("Filter"); go.AddOrGet <KBatchedAnimController>().randomiseLoopedOffset = true; }
public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag) { go.AddOrGet <LoopingSounds>(); //go.AddOrGet<InverseElectrolyzer>(); go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery); //go.AddOrGet<Pump>(); //Storage storage = BuildingTemplates.CreateDefaultStorage(go, false); //storage.SetDefaultStoredItemModifiers(Storage.StandardSealedStorage); /* * Storage storage = go.AddOrGet<Storage>(); * storage.capacityKg = 50f; * storage.showInUI = true; */ Storage storage = BuildingTemplates.CreateDefaultStorage(go, false); storage.showInUI = true; storage.capacityKg = 30f; storage.SetDefaultStoredItemModifiers(Storage.StandardSealedStorage); InverseElectrolyzer airFilter = go.AddOrGet <InverseElectrolyzer>(); airFilter.filterTag = GameTagExtensions.Create(SimHashes.Hydrogen); //Prioritizable.AddRef(go); /* * elementConverter.consumedElements = new ElementConverter.ConsumedElement[2] * { * new ElementConverter.ConsumedElement(new Tag("Filter"), 1f), * new ElementConverter.ConsumedElement(new Tag("DirtyWater"), 5f) * }; * elementConverter.outputElements = new ElementConverter.OutputElement[2] * { * new ElementConverter.OutputElement(5f, SimHashes.Water, 313.15f, true, 0f, 0.5f, false, 0.75f, 255, 0), * new ElementConverter.OutputElement(0.2f, SimHashes.ToxicSand, 313.15f, true, 0f, 0.5f, false, 0.25f, 255, 0) * }; */ /* * ElementConsumer elementConsumer = go.AddOrGet<ElementConsumer>(); * elementConsumer.configuration = ElementConsumer.Configuration.AllGas; * elementConsumer.consumptionRate = 1f; * elementConsumer.storeOnConsume = true; * elementConsumer.showInStatusPanel = false; * elementConsumer.consumptionRadius = 2; */ ElementConsumer elementConsumer = go.AddOrGet <PassiveElementConsumer>(); elementConsumer.elementToConsume = SimHashes.Oxygen; elementConsumer.consumptionRate = 1f; elementConsumer.capacityKG = 1f; elementConsumer.consumptionRadius = 3; elementConsumer.showInStatusPanel = true; elementConsumer.sampleCellOffset = new Vector3(0f, 0f, 0f); elementConsumer.isRequired = false; elementConsumer.storeOnConsume = true; elementConsumer.showDescriptor = false; ElementConverter elementConverter = go.AddOrGet <ElementConverter>(); elementConverter.consumedElements = new ElementConverter.ConsumedElement[2] { //new ElementConverter.ConsumedElement(new Tag("Oxygen"), 5*0.888f), //new ElementConverter.ConsumedElement(new Tag("Hydrogen"), 5*0.111999989f) new ElementConverter.ConsumedElement(GameTagExtensions.Create(SimHashes.Oxygen), 0.888f), new ElementConverter.ConsumedElement(GameTagExtensions.Create(SimHashes.Hydrogen), 0.111999989f) }; elementConverter.outputElements = new ElementConverter.OutputElement[1] { new ElementConverter.OutputElement(1f, SimHashes.Steam, 523.15f, true, 0f, 0.5f, false, 0.75f, 255, 0) }; /* * ElementDropper elementDropper = go.AddComponent<ElementDropper>(); * elementDropper.emitMass = 10f; * elementDropper.emitTag = new Tag("ToxicSand"); * elementDropper.emitOffset = new Vector3(0f, 1f, 0f); * * ManualDeliveryKG manualDeliveryKG = go.AddComponent<ManualDeliveryKG>(); * manualDeliveryKG.SetStorage(storage); * manualDeliveryKG.requestedItemTag = new Tag("Filter"); * manualDeliveryKG.capacity = 1200f; * manualDeliveryKG.refillMass = 300f; * manualDeliveryKG.choreTypeIDHash = Db.Get().ChoreTypes.OperateFetch.IdHash; */ ConduitConsumer conduitConsumer = go.AddOrGet <ConduitConsumer>(); conduitConsumer.conduitType = ConduitType.Gas; conduitConsumer.consumptionRate = 2f; conduitConsumer.capacityKG = 5 * 0.111999989f; conduitConsumer.capacityTag = ElementLoader.FindElementByHash(SimHashes.Hydrogen).tag; //GameTagExtensions.Create(SimHashes.Hydrogen);//GameTags.Oxygen; conduitConsumer.forceAlwaysSatisfied = true; conduitConsumer.alwaysConsume = true; //conduitConsumer.wrongElementResult = ConduitConsumer.WrongElementResult.Store; conduitConsumer.wrongElementResult = ConduitConsumer.WrongElementResult.Dump; /* * ConduitConsumer conduitConsumer2 = go.AddOrGet<ConduitConsumer>(); * conduitConsumer2.conduitType = ConduitType.Gas; * //conduitConsumer.consumptionRate = 1f; * conduitConsumer2.capacityKG = 5*0.888f; * conduitConsumer2.capacityTag = ElementLoader.FindElementByHash(SimHashes.Oxygen).tag; //GameTagExtensions.Create(SimHashes.Oxygen);//GameTags.Oxygen; * conduitConsumer2.forceAlwaysSatisfied = true; * //conduitConsumer.wrongElementResult = ConduitConsumer.WrongElementResult.Store; * conduitConsumer2.wrongElementResult = ConduitConsumer.WrongElementResult.Dump; */ ConduitDispenser conduitDispenser = go.AddOrGet <ConduitDispenser>(); conduitDispenser.conduitType = ConduitType.Gas; //conduitDispenser.invertElementFilter = true; conduitDispenser.elementFilter = new SimHashes[1] { SimHashes.Steam }; }
public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag) { go.AddOrGet <LoopingSounds>(); go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.Toilet); go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.FlushToilet); FlushToilet flushToilet = go.AddOrGet <FlushToilet>(); flushToilet.massConsumedPerUse = 5f; flushToilet.massEmittedPerUse = 11.7f; flushToilet.diseaseId = "FoodPoisoning"; flushToilet.diseasePerFlush = 0; flushToilet.diseaseOnDupePerFlush = 0; KAnimFile[] kanimFileArray = new KAnimFile[1] { Assets.GetAnim((HashedString)"anim_interacts_toiletflush_kanim") }; ToiletWorkableUse toiletWorkableUse = go.AddOrGet <ToiletWorkableUse>(); toiletWorkableUse.overrideAnims = kanimFileArray; toiletWorkableUse.workLayer = Grid.SceneLayer.BuildingFront; toiletWorkableUse.resetProgressOnStop = true; ConduitConsumer conduitConsumer = go.AddOrGet <ConduitConsumer>(); conduitConsumer.conduitType = ConduitType.Liquid; conduitConsumer.capacityTag = ElementLoader.FindElementByHash(SimHashes.Water).tag; conduitConsumer.capacityKG = 5f; conduitConsumer.wrongElementResult = ConduitConsumer.WrongElementResult.Store; ConduitDispenser conduitDispenser = go.AddOrGet <ConduitDispenser>(); conduitDispenser.conduitType = ConduitType.Liquid; conduitDispenser.invertElementFilter = true; conduitDispenser.elementFilter = new SimHashes[1] { SimHashes.Water }; Storage storage = go.AddOrGet <Storage>(); storage.capacityKg = 25f; storage.doDiseaseTransfer = false; storage.SetDefaultStoredItemModifiers(Storage.StandardSealedStorage); Ownable ownable = go.AddOrGet <Ownable>(); ownable.slotID = Db.Get().AssignableSlots.Toilet.Id; ownable.canBePublic = true; go.AddOrGet <RequireOutputs>().ignoreFullPipe = true; ManualDeliveryKG manualDeliveryKg1 = go.AddOrGet <ManualDeliveryKG>(); manualDeliveryKg1.SetStorage(storage); manualDeliveryKg1.requestedItemTag = SimHashes.BleachStone.CreateTag(); manualDeliveryKg1.capacity = 2f; manualDeliveryKg1.refillMass = 1f; manualDeliveryKg1.minimumMass = 1f; manualDeliveryKg1.choreTypeIDHash = Db.Get().ChoreTypes.FetchCritical.IdHash; ElementConverter elementConverter = go.AddComponent <ElementConverter>(); elementConverter.consumedElements = new ElementConverter.ConsumedElement[1] { new ElementConverter.ConsumedElement(SimHashes.BleachStone.CreateTag(), 0.0005f), }; elementConverter.outputElements = new ElementConverter.OutputElement[0] { }; }
protected void OnSpawn(GameObject go) { if (!isSet) { setConfiguration(go); } if (//go.GetComponent<GeneticTraitComponent>().IsBaby() || go.GetComponent <GeneticTraitComponent>().IsAdult() //||go.GetComponent<GeneticTraitComponent>().IsEgg() ) { var ID = ElementConverterGoodTrait.ID_Type; var reduction_factor = 4; var consumptionRate = 0.2f / reduction_factor; var outputKgPerSecond = 0.2f / reduction_factor; var element1 = ElementLoader.FindElementByHash(element_input); var element2 = ElementLoader.FindElementByHash(element_output); var string_holder = go.AddComponent <StringHolderComponent>(); string_holder.text = "This critter skin absorbs small quantities of " + element1.name + " and drops " + element2.name; string_holder.id = ID; go.AddOrGet <Storage>().capacityKg = 10f; ElementConsumer elementConsumer = (ElementConsumer)go.AddOrGet <PassiveElementConsumer>(); elementConsumer.elementToConsume = element_input; elementConsumer.consumptionRate = consumptionRate; elementConsumer.capacityKG = 10f; elementConsumer.consumptionRadius = (byte)3; elementConsumer.showInStatusPanel = true; elementConsumer.sampleCellOffset = new Vector3(0.0f, 0.0f, 0.0f); elementConsumer.isRequired = false; elementConsumer.storeOnConsume = true; elementConsumer.showDescriptor = false; elementConsumer.EnableConsumption(true); if (element2.IsGas) { DebugHelper.Log("element2.IsGas"); go.AddOrGet <UpdateElementConsumerPosition>(); ElementConverter elementConverter = go.AddOrGet <ElementConverter>(); elementConverter.consumedElements = new ElementConverter.ConsumedElement[1] { new ElementConverter.ConsumedElement(element_input.CreateTag(), consumptionRate) }; elementConverter.outputElements = new ElementConverter.OutputElement[1] { new ElementConverter.OutputElement(outputKgPerSecond, element_output, 0.0f, true, false, 0.0f, 0.5f, 1f, byte.MaxValue, 0) }; } if (element2.IsLiquid) { DebugHelper.Log("element2.IsLiquid"); go.AddOrGet <UpdateElementConsumerPosition>(); BubbleSpawner bubbleSpawner = go.AddComponent <BubbleSpawner>(); bubbleSpawner.element = element_output; bubbleSpawner.emitMass = 2f; bubbleSpawner.emitVariance = 0.5f; bubbleSpawner.initialVelocity = (Vector2) new Vector2f(0, 1); ElementConverter elementConverter = go.AddOrGet <ElementConverter>(); elementConverter.consumedElements = new ElementConverter.ConsumedElement[1] { new ElementConverter.ConsumedElement(element_input.CreateTag(), consumptionRate) }; elementConverter.outputElements = new ElementConverter.OutputElement[1] { new ElementConverter.OutputElement(outputKgPerSecond, element_output, 0.0f, true, true, 0.0f, 0.5f, 1f, byte.MaxValue, 0) }; } if (element2.IsSolid) { DebugHelper.Log("element2.IsSolid"); go.AddOrGet <UpdateElementConsumerPosition>(); ElementDropper elementDropper = go.AddComponent <ElementDropper>(); elementDropper.emitMass = 2f; elementDropper.emitTag = element_output.CreateTag(); elementDropper.emitOffset = new Vector3(0.0f, 0.0f, 0.0f); ElementConverter elementConverter = go.AddOrGet <ElementConverter>(); elementConverter.consumedElements = new ElementConverter.ConsumedElement[1] { new ElementConverter.ConsumedElement(element_input.CreateTag(), consumptionRate) }; elementConverter.outputElements = new ElementConverter.OutputElement[1] { new ElementConverter.OutputElement(outputKgPerSecond, element_output, 0.0f, true, true, 0.0f, 0.5f, 1f, byte.MaxValue, 0) }; } } }
public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag) { go.AddOrGet <LoopingSounds>(); go.AddOrGet <DropAllWorkable>(); Prioritizable.AddRef(go); List <Storage.StoredItemModifier> mod = new List <Storage.StoredItemModifier> { Storage.StoredItemModifier.Hide, Storage.StoredItemModifier.Insulate, Storage.StoredItemModifier.Preserve, Storage.StoredItemModifier.Seal }; Storage storage = BuildingTemplates.CreateDefaultStorage(go); storage.SetDefaultStoredItemModifiers(mod); storage.showInUI = true; storage.capacityKg = 20000f; storage.SetDefaultStoredItemModifiers(Storage.StandardSealedStorage); ElementConsumer elementConsumer = go.AddOrGet <ElementConsumer>(); elementConsumer.elementToConsume = SimHashes.Methane; elementConsumer.consumptionRate = 1000f; elementConsumer.consumptionRadius = 10; elementConsumer.showInStatusPanel = true; elementConsumer.sampleCellOffset = new Vector3(0f, 0f, 0f); elementConsumer.isRequired = false; elementConsumer.storeOnConsume = true; elementConsumer.showDescriptor = false; ElementDropper elementDropper = go.AddComponent <ElementDropper>(); elementDropper.emitMass = 100f; elementDropper.emitTag = new Tag("SolidMethane"); elementDropper.emitOffset = new Vector3(0f, 0f, 0f); ElementConverter elementConverter = go.AddOrGet <ElementConverter>(); elementConverter.consumedElements = new ElementConverter.ConsumedElement[] { new ElementConverter.ConsumedElement(new Tag("Ice"), 1f), new ElementConverter.ConsumedElement(new Tag("Methane"), 1.0f) }; elementConverter.outputElements = new ElementConverter.OutputElement[] { new ElementConverter.OutputElement(1.0f, SimHashes.SolidMethane, 50.15f, storeOutput: true, 0f, 0f, apply_input_temperature: false, diseaseWeight: 0f, addedDiseaseIdx: byte.MinValue) }; ManualDeliveryKG manualDeliveryKG = go.AddOrGet <ManualDeliveryKG>(); manualDeliveryKG.SetStorage(storage); manualDeliveryKG.requestedItemTag = new Tag("Ice"); manualDeliveryKG.capacity = 1000f; manualDeliveryKG.refillMass = 10f; manualDeliveryKG.choreTypeIDHash = Db.Get().ChoreTypes.FetchCritical.IdHash; NaturalGasScrubber NaturalGasScrubber = go.AddOrGet <NaturalGasScrubber>(); NaturalGasScrubber.filterTag = new Tag("Ice"); go.AddOrGet <KBatchedAnimController>().randomiseLoopedOffset = true; }
public SMInstance(AlgaeGrower master) : base(master) { _operational = master.GetComponent <Operational>(); _converter = master.GetComponent <ElementConverter>(); }
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 SMInstance(PipedAlgaeTerrarium master) : base(master) { Converter = master.GetComponent <ElementConverter>(); _operational = master.GetComponent <Operational>(); _dispenser = master.GetComponent <ConduitDispenser>(); }