Пример #1
0
        public override void DoPostConfigureComplete(GameObject go)
        {
            go.AddOrGet <Storage>().capacityKg = 0.09999999f;
            go.AddOrGet <MassiveHeatSink>();
            go.AddOrGet <MinimumOperatingTemperature>().minimumTemperature = 120f;
            PrimaryElement component = go.GetComponent <PrimaryElement>();

            component.SetElement(SimHashes.Iron);
            component.Temperature = 294.15f;
            ConduitConsumer conduitConsumer = go.AddOrGet <ConduitConsumer>();

            conduitConsumer.conduitType          = ConduitType.Gas;
            conduitConsumer.consumptionRate      = 1f;
            conduitConsumer.capacityTag          = GameTagExtensions.Create(SimHashes.Hydrogen);
            conduitConsumer.capacityKG           = 0.09999999f;
            conduitConsumer.forceAlwaysSatisfied = true;
            conduitConsumer.wrongElementResult   = ConduitConsumer.WrongElementResult.Dump;
            go.AddOrGet <ElementConverter>().consumedElements = new ElementConverter.ConsumedElement[1]
            {
                new ElementConverter.ConsumedElement(ElementLoader.FindElementByHash(SimHashes.Hydrogen).tag, 0.01f)
            };
            ElementConverter elementConverter = go.AddOrGet <ElementConverter>();

            elementConverter.outputElements = new ElementConverter.OutputElement[] { };
            GeneratedBuildings.RegisterLogicPorts(go, BriskArcticConfig.INPUT_PORTS);
            go.AddOrGet <LogicOperationalController>();
            go.AddOrGetDef <PoweredActiveController.Def>();
        }
Пример #2
0
 public void UpdateTags()
 {
     if (ElementID == (SimHashes)0)
     {
         Debug.Log("UpdateTags() Primary element 0", base.gameObject);
     }
     else
     {
         KPrefabID component = GetComponent <KPrefabID>();
         if ((UnityEngine.Object)component != (UnityEngine.Object)null)
         {
             List <Tag> list    = new List <Tag>();
             Element    element = Element;
             list.Add(GameTagExtensions.Create(element.id));
             Tag[] oreTags = element.oreTags;
             foreach (Tag item in oreTags)
             {
                 list.Add(item);
             }
             if (component.HasAnyTags(metalTags))
             {
                 list.Add(GameTags.StoredMetal);
             }
             foreach (Tag item2 in list)
             {
                 component.AddTag(item2, false);
             }
         }
     }
 }
Пример #3
0
            public override void DoPostConfigureComplete(GameObject go)
            {
                GeneratedBuildings.RegisterLogicPorts(go, LogicOperationalController.INPUT_PORTS_N1_0);
                go.AddOrGet <LogicOperationalController>();
                go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery, false);
                go.AddOrGet <LoopingSounds>();
                go.AddOrGet <Storage>();
                ConduitConsumer conduitConsumer = go.AddOrGet <ConduitConsumer>();

                conduitConsumer.conduitType          = ConduitType.Gas;
                conduitConsumer.consumptionRate      = 1f;
                conduitConsumer.capacityTag          = GameTagExtensions.Create(SimHashes.Hydrogen);
                conduitConsumer.capacityKG           = 2f;
                conduitConsumer.forceAlwaysSatisfied = true;
                conduitConsumer.wrongElementResult   = ConduitConsumer.WrongElementResult.Dump;
                EnergyGenerator energyGenerator = go.AddOrGet <EnergyGenerator>();

                energyGenerator.formula = EnergyGenerator.CreateSimpleFormula(SimHashes.Hydrogen.CreateTag(), 0.1f, 2f, SimHashes.Void, 0f, true, default(CellOffset), 0f);
                energyGenerator.powerDistributionOrder     = 8;
                energyGenerator.ignoreBatteryRefillPercent = true;
                energyGenerator.meterOffset = Meter.Offset.Behind;

                Tinkerable.MakePowerTinkerable(go);
                go.AddOrGetDef <PoweredActiveController.Def>();
            }
Пример #4
0
        public override void DoPostConfigureComplete(GameObject go)
        {
            go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery);
            go.AddOrGet <MassiveHeatSink>();
            go.AddOrGet <MinimumOperatingTemperature>().minimumTemperature = 1f;
            PrimaryElement component = go.GetComponent <PrimaryElement>();

            component.SetElement(SimHashes.Iron);
            component.Temperature = 294.15f;
            go.AddOrGet <LoopingSounds>();
            go.AddOrGet <Storage>().capacityKg = 9.99999999f;
            ConduitConsumer conduitConsumer = go.AddOrGet <ConduitConsumer>();

            conduitConsumer.conduitType          = ConduitType.Liquid;
            conduitConsumer.consumptionRate      = 10f;
            conduitConsumer.capacityTag          = GameTagExtensions.Create(SimHashes.Mercury);
            conduitConsumer.capacityKG           = 9.99999999f;
            conduitConsumer.forceAlwaysSatisfied = true;
            conduitConsumer.wrongElementResult   = ConduitConsumer.WrongElementResult.Dump;
            go.AddOrGet <ElementConverter>().consumedElements = new ElementConverter.ConsumedElement[1]
            {
                new ElementConverter.ConsumedElement(ElementLoader.FindElementByHash(SimHashes.Mercury).tag, 1.0f)
            };
            go.AddOrGetDef <PoweredActiveController.Def>();
        }
    public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
    {
        go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.WashStation, false);
        go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.AdvancedWashStation, false);
        HandSanitizer handSanitizer = go.AddOrGet <HandSanitizer>();

        handSanitizer.massConsumedPerUse  = 0.07f;
        handSanitizer.consumedElement     = SimHashes.BleachStone;
        handSanitizer.diseaseRemovalCount = 480000;
        HandSanitizer.Work work = go.AddOrGet <HandSanitizer.Work>();
        work.overrideAnims = new KAnimFile[1]
        {
            Assets.GetAnim("anim_interacts_handsanitizer_kanim")
        };
        work.workTime  = 1.8f;
        work.trackUses = true;
        Storage storage = go.AddOrGet <Storage>();

        storage.SetDefaultStoredItemModifiers(Storage.StandardSealedStorage);
        go.AddOrGet <DirectionControl>();
        ManualDeliveryKG manualDeliveryKG = go.AddOrGet <ManualDeliveryKG>();

        manualDeliveryKG.SetStorage(storage);
        manualDeliveryKG.requestedItemTag = GameTagExtensions.Create(SimHashes.BleachStone);
        manualDeliveryKG.capacity         = 15f;
        manualDeliveryKG.refillMass       = 3f;
        manualDeliveryKG.choreTypeIDHash  = Db.Get().ChoreTypes.FetchCritical.IdHash;
    }
Пример #6
0
        public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
        {
            go.AddOrGet <LoopingSounds>();
            go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery);
            var defaultStorage = BuildingTemplates.CreateDefaultStorage(go);

            defaultStorage.showInUI   = true;
            defaultStorage.capacityKg = 1000f;
            defaultStorage.SetDefaultStoredItemModifiers(Storage.StandardSealedStorage);
            go.AddOrGet <AirFilter>().filterTag = GameTagExtensions.Create(SimHashes.Lime);
            var elementConsumer = go.AddOrGet <PassiveElementConsumer>();

            elementConsumer.elementToConsume  = SimHashes.CarbonDioxide;
            elementConsumer.consumptionRate   = CO2_CONSUMPTION_RATE * 2;
            elementConsumer.capacityKG        = CO2_CONSUMPTION_RATE * 2;
            elementConsumer.consumptionRadius = 6;
            elementConsumer.showInStatusPanel = true;
            elementConsumer.sampleCellOffset  = new Vector3(0.0f, 0.0f, 0.0f);
            elementConsumer.isRequired        = false;
            elementConsumer.storeOnConsume    = true;
            elementConsumer.showDescriptor    = false;

            // Add the bit where you deliver lime
            Prioritizable.AddRef(go);
            ManualDeliveryKG manualDeliveryKg = go.AddOrGet <ManualDeliveryKG>();

            manualDeliveryKg.SetStorage(defaultStorage);
            manualDeliveryKg.requestedItemTag = new Tag("Lime");
            manualDeliveryKg.capacity         = 1f;
            manualDeliveryKg.refillMass       = .5f;
            manualDeliveryKg.choreTypeIDHash  = Db.Get().ChoreTypes.FetchCritical.IdHash;

            // Drop refined carbon
            ElementDropper elementDropper = go.AddComponent <ElementDropper>();

            elementDropper.emitMass   = 10f;
            elementDropper.emitTag    = SimHashes.RefinedCarbon.CreateTag();
            elementDropper.emitOffset = new Vector3(0.0f, 0.0f, 0.0f);

            // Define conversions
            var elementConverter = go.AddOrGet <ElementConverter>();

            elementConverter.consumedElements = new ElementConverter.ConsumedElement[2]
            {
                new ElementConverter.ConsumedElement(GameTagExtensions.Create(SimHashes.Lime), LIME_CONSUMPTION_RATE),
                new ElementConverter.ConsumedElement(GameTagExtensions.Create(SimHashes.CarbonDioxide), CO2_CONSUMPTION_RATE)
            };
            elementConverter.outputElements = new ElementConverter.OutputElement[1]
            {
                new ElementConverter.OutputElement(CO2_CONSUMPTION_RATE, SimHashes.RefinedCarbon, 0.0f, false, true)
            };
            go.AddOrGet <KBatchedAnimController>().randomiseLoopedOffset = true;
        }
    public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
    {
        go.AddOrGet <LoopingSounds>();
        go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery, false);
        Storage storage = BuildingTemplates.CreateDefaultStorage(go, false);

        storage.showInUI   = true;
        storage.capacityKg = 30000f;
        storage.SetDefaultStoredItemModifiers(Storage.StandardSealedStorage);
        AirFilter airFilter = go.AddOrGet <AirFilter>();

        airFilter.filterTag = GameTagExtensions.Create(SimHashes.Water);
        ElementConsumer elementConsumer = go.AddOrGet <PassiveElementConsumer>();

        elementConsumer.elementToConsume  = SimHashes.CarbonDioxide;
        elementConsumer.consumptionRate   = 0.6f;
        elementConsumer.capacityKG        = 0.6f;
        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(GameTagExtensions.Create(SimHashes.Water), 1f),
            new ElementConverter.ConsumedElement(GameTagExtensions.Create(SimHashes.CarbonDioxide), 0.3f)
        };
        elementConverter.outputElements = new ElementConverter.OutputElement[1]
        {
            new ElementConverter.OutputElement(1f, SimHashes.DirtyWater, 0f, false, true, 0f, 0.5f, 1f, byte.MaxValue, 0)
        };
        ConduitConsumer conduitConsumer = go.AddOrGet <ConduitConsumer>();

        conduitConsumer.conduitType          = ConduitType.Liquid;
        conduitConsumer.consumptionRate      = 2f;
        conduitConsumer.capacityKG           = 2f;
        conduitConsumer.capacityTag          = ElementLoader.FindElementByHash(SimHashes.Water).tag;
        conduitConsumer.wrongElementResult   = ConduitConsumer.WrongElementResult.Store;
        conduitConsumer.forceAlwaysSatisfied = true;
        ConduitDispenser conduitDispenser = go.AddOrGet <ConduitDispenser>();

        conduitDispenser.conduitType         = ConduitType.Liquid;
        conduitDispenser.invertElementFilter = true;
        conduitDispenser.elementFilter       = new SimHashes[1]
        {
            SimHashes.Water
        };
        go.AddOrGet <KBatchedAnimController>().randomiseLoopedOffset = true;
    }
Пример #8
0
        private Chore CreateFetchChore(SMInstance smi)
        {
            PrimaryElement component      = smi.master.GetComponent <PrimaryElement>();
            Storage        storageProxy   = smi.master.storageProxy;
            PrimaryElement primaryElement = storageProxy.FindPrimaryElement(component.ElementID);
            float          amount         = component.Mass * 0.1f - ((!((UnityEngine.Object)primaryElement != (UnityEngine.Object)null)) ? 0f : primaryElement.Mass);

            Tag[] tags = new Tag[1]
            {
                GameTagExtensions.Create(component.ElementID)
            };
            return(new FetchChore(Db.Get().ChoreTypes.RepairFetch, smi.master.storageProxy, amount, tags, null, null, null, true, null, null, null, FetchOrder2.OperationalRequirement.None, 0));
        }
        private void OnEmptyComplete(Chore chore)
        {
            emptyChore = null;
            Tag tag = GameTagExtensions.Create(SimHashes.Salt);

            ListPool <GameObject, Desalinator> .PooledList pooledList = ListPool <GameObject, Desalinator> .Allocate();

            base.master.storage.Find(tag, pooledList);
            foreach (GameObject item in pooledList)
            {
                base.master.storage.Drop(item, true);
            }
            pooledList.Recycle();
        }
Пример #10
0
    public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
    {
        go.AddOrGet <LoopingSounds>();

        go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery);

        Storage storage = BuildingTemplates.CreateDefaultStorage(go, false);

        storage.showInUI   = true;
        storage.capacityKg = 30f;
        storage.SetDefaultStoredItemModifiers(Storage.StandardSealedStorage);

        InverseElectrolyzerAlt airFilter = go.AddOrGet <InverseElectrolyzerAlt>();

        airFilter.filterTag = GameTagExtensions.Create(SimHashes.Hydrogen);
        airFilter.portInfo  = this.secondaryInputPort;
    }
 private Element[] GetRecipeElements(Recipe recipe)
 {
     Element[] array = new Element[recipe.Ingredients.Count];
     for (int i = 0; i < recipe.Ingredients.Count; i++)
     {
         Tag tag = recipe.Ingredients[i].tag;
         foreach (Element element in ElementLoader.elements)
         {
             Tag a = GameTagExtensions.Create(element.id);
             if (a == tag)
             {
                 array[i] = element;
                 break;
             }
         }
     }
     return(array);
 }
Пример #12
0
        public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
        {
            //not super sure what these do
            go.AddOrGet <LoopingSounds>();
            ShinseiChiller shinseiChiller = go.AddOrGet <ShinseiChiller>();

            //go.AddOrGet<KAnimControllerBase>().TintColour = Color();

            //For a heater, this only allows it to run until it hits that temp
            //For a chiller, if it gets that hot (can't cool enough) it stops trying
            //Basically, should equal melting for a cooler
            shinseiChiller.targetTemperature = 1600.15f;

            //this requires an ElementConverter, it's basically an internal anti-entrophy machine
            go.AddOrGet <MassiveHeatSink>();

            //can hold 1kg of whatever (in this case, hydrogen, which is a bit)
            go.AddOrGet <Storage>().capacityKg = 1f;

            //required ElementConverter that is the consumer, with a list (of size one) of elements it eats
            go.AddOrGet <ElementConverter>().consumedElements = new ElementConverter.ConsumedElement[]
            {
                new ElementConverter.ConsumedElement(ElementLoader.FindElementByHash(SimHashes.Hydrogen).tag, 0.01f)
            };

            //here's how that hydrogen above is going to actually get to the converter
            ConduitConsumer conduitConsumer = go.AddOrGet <ConduitConsumer>();

            conduitConsumer.conduitType          = ConduitType.Gas;
            conduitConsumer.consumptionRate      = 1f;
            conduitConsumer.capacityTag          = GameTagExtensions.Create(SimHashes.Hydrogen);
            conduitConsumer.capacityKG           = 1f;
            conduitConsumer.forceAlwaysSatisfied = true;
            conduitConsumer.wrongElementResult   = ConduitConsumer.WrongElementResult.Dump;

            //required ElementConverter that is the producer, with a list (of nothing, no output) of elements it generates
            ElementConverter elementConverter = go.AddOrGet <ElementConverter>();

            elementConverter.outputElements = new ElementConverter.OutputElement[0];

            //sets the minimum temperature of the building before it stops working
            //CRUCIAL if a heat-negating building, otherwise you get a crash
            go.AddOrGet <MinimumOperatingTemperature>().minimumTemperature = 120f;
        }
    private static bool ManifestSubstanceForElement(Element elem, ref Hashtable substanceList, SubstanceTable substanceTable)
    {
        elem.substance = null;
        if (substanceList.ContainsKey(elem.id))
        {
            elem.substance = (substanceList[elem.id] as Substance);
            return(false);
        }
        if ((UnityEngine.Object)substanceTable != (UnityEngine.Object)null)
        {
            elem.substance = substanceTable.GetSubstance(elem.id);
        }
        if (elem.substance == null)
        {
            elem.substance = new Substance();
            substanceTable.GetList().Add(elem.substance);
        }
        elem.substance.elementID       = elem.id;
        elem.substance.renderedByWorld = elem.IsSolid;
        elem.substance.idx             = substanceList.Count;
        if ((Color)elem.substance.uiColour == noColour)
        {
            int count = elements.Count;
            int idx   = elem.substance.idx;
            elem.substance.uiColour = Color.HSVToRGB((float)idx / (float)count, 1f, 1f);
        }
        string text = UI.StripLinkFormatting(elem.name);

        elem.substance.name = text;
        if (Array.IndexOf((SimHashes[])Enum.GetValues(typeof(SimHashes)), elem.id) >= 0)
        {
            elem.substance.nameTag = GameTagExtensions.Create(elem.id);
        }
        else
        {
            elem.substance.nameTag = ((text == null) ? Tag.Invalid : TagManager.Create(text));
        }
        elem.substance.audioConfig = ElementsAudio.Instance.GetConfigForElement(elem.id);
        substanceList.Add(elem.id, elem.substance);
        return(true);
    }
    public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
    {
        go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery, false);
        Polymerizer polymerizer = go.AddOrGet <Polymerizer>();

        polymerizer.emitMass       = 30f;
        polymerizer.emitTag        = GameTagExtensions.Create(SimHashes.Polypropylene);
        polymerizer.emitOffset     = new Vector3(-1.5f, 1f, 0f);
        polymerizer.exhaustElement = SimHashes.Steam;
        ConduitConsumer conduitConsumer = go.AddOrGet <ConduitConsumer>();

        conduitConsumer.conduitType          = ConduitType.Liquid;
        conduitConsumer.consumptionRate      = 1.66666663f;
        conduitConsumer.capacityTag          = GameTagExtensions.Create(SimHashes.Petroleum);
        conduitConsumer.capacityKG           = 1.66666663f;
        conduitConsumer.forceAlwaysSatisfied = true;
        conduitConsumer.wrongElementResult   = ConduitConsumer.WrongElementResult.Dump;
        ConduitDispenser conduitDispenser = go.AddOrGet <ConduitDispenser>();

        conduitDispenser.conduitType         = ConduitType.Gas;
        conduitDispenser.invertElementFilter = false;
        conduitDispenser.elementFilter       = new SimHashes[1]
        {
            SimHashes.CarbonDioxide
        };
        ElementConverter elementConverter = go.AddOrGet <ElementConverter>();

        elementConverter.consumedElements = new ElementConverter.ConsumedElement[1]
        {
            new ElementConverter.ConsumedElement(GameTagExtensions.Create(SimHashes.Petroleum), 0.8333333f)
        };
        elementConverter.outputElements = new ElementConverter.OutputElement[3]
        {
            new ElementConverter.OutputElement(0.5f, SimHashes.Polypropylene, 348.15f, false, true, 0f, 0.5f, 1f, byte.MaxValue, 0),
            new ElementConverter.OutputElement(0.008333334f, SimHashes.Steam, 473.15f, false, true, 0f, 0.5f, 1f, byte.MaxValue, 0),
            new ElementConverter.OutputElement(0.008333334f, SimHashes.CarbonDioxide, 423.15f, false, true, 0f, 0.5f, 1f, byte.MaxValue, 0)
        };
        go.AddOrGet <DropAllWorkable>();
        Prioritizable.AddRef(go);
    }
Пример #15
0
    public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
    {
        go.GetComponent <KPrefabID>().AddTag(GameTags.Decoration);
        Storage storage1 = go.AddOrGet <Storage>();

        storage1.showInUI = true;

        ConduitConsumer conduitConsumer = go.AddOrGet <ConduitConsumer>();

        conduitConsumer.conduitType          = ConduitType.Liquid;
        conduitConsumer.consumptionRate      = 1.5f;
        conduitConsumer.capacityTag          = GameTagExtensions.Create(SimHashes.DirtyWater);
        conduitConsumer.capacityKG           = 10f;
        conduitConsumer.forceAlwaysSatisfied = true;
        conduitConsumer.wrongElementResult   = ConduitConsumer.WrongElementResult.Dump;

        ManualDeliveryKG manualDeliveryKg1 = go.AddOrGet <ManualDeliveryKG>();

        manualDeliveryKg1.SetStorage(storage1);
        manualDeliveryKg1.requestedItemTag = "BasicFabric";
        manualDeliveryKg1.capacity         = 2f;
        manualDeliveryKg1.refillMass       = 1f;
        manualDeliveryKg1.minimumMass      = 1f;
        manualDeliveryKg1.choreTypeIDHash  = Db.Get().ChoreTypes.OperateFetch.IdHash;
        go.AddOrGet <WaterPurifier>();

        ElementConverter elementConverter = go.AddComponent <ElementConverter>();

        elementConverter.consumedElements = new ElementConverter.ConsumedElement[2]
        {
            new ElementConverter.ConsumedElement("BasicFabric", 0.000375f),
            new ElementConverter.ConsumedElement(SimHashes.DirtyWater.CreateTag(), 0.02f)
        };
        elementConverter.outputElements = new ElementConverter.OutputElement[1]
        {
            new ElementConverter.OutputElement(0.02f, SimHashes.ContaminatedOxygen, 303.15f, false, 0.0f, 1f, true),
        };

        Prioritizable.AddRef(go);
    }
Пример #16
0
        public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
        {
            go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery);
            EnergyGenerator energyGenerator = go.AddOrGet <EnergyGenerator>();

            energyGenerator.formula = EnergyGenerator.CreateSimpleFormula(
                SimHashes.Hydrogen.CreateTag(), HYDROGEN_BURN_RATE, 10f,
                SimHashes.Iron, IRON_CREATE_RATE, true, new CellOffset(0, 0), 473.15f);

            energyGenerator.meterOffset                = Meter.Offset.Behind;
            energyGenerator.powerDistributionOrder     = 9;
            energyGenerator.ignoreBatteryRefillPercent = true;

            Storage storage = go.AddOrGet <Storage>();

            storage.capacityKg = STORAGE_SIZE;

            ConduitConsumer conduitConsumer = go.AddOrGet <ConduitConsumer>();

            conduitConsumer.conduitType          = ConduitType.Gas;
            conduitConsumer.consumptionRate      = 2f;
            conduitConsumer.capacityKG           = 8f;
            conduitConsumer.forceAlwaysSatisfied = true;
            conduitConsumer.capacityTag          = GameTagExtensions.Create(SimHashes.Hydrogen);
            conduitConsumer.wrongElementResult   = ConduitConsumer.WrongElementResult.Dump;

            ElementDropper elementDropper = go.AddOrGet <ElementDropper>();

            elementDropper.emitTag    = new Tag("Iron");
            elementDropper.emitMass   = 10f;
            elementDropper.emitOffset = new Vector3(0f, 0f, 0f);

            //FusionReactor reactor = go.AddOrGet<FusionReactor>();

            go.AddOrGet <LoopingSounds>();
            Prioritizable.AddRef(go);
            Tinkerable.MakePowerTinkerable(go);
            go.AddOrGet <MinimumOperatingTemperature>().minimumTemperature = 373.15f;
        }
    public virtual IList <Tag> GetTagOptions()
    {
        List <Tag> list = new List <Tag>();

        list.Add(GameTags.Void);
        foreach (Element element in ElementLoader.elements)
        {
            if (!element.disabled)
            {
                bool flag = true;
                if (filterElementState != 0)
                {
                    switch (filterElementState)
                    {
                    case ElementState.Gas:
                        flag = element.IsGas;
                        break;

                    case ElementState.Liquid:
                        flag = element.IsLiquid;
                        break;

                    case ElementState.Solid:
                        flag = element.IsSolid;
                        break;
                    }
                }
                if (flag)
                {
                    Tag item = GameTagExtensions.Create(element.id);
                    list.Add(item);
                }
            }
        }
        return(list);
    }
Пример #18
0
    public Ingredient[] GetAllIngredients(IList <Element> selected_elements)
    {
        List <Ingredient> list = new List <Ingredient>();

        for (int i = 0; i < Ingredients.Count; i++)
        {
            int  num  = (int)Ingredients[i].amount;
            bool flag = false;
            if (i < selected_elements.Count)
            {
                Element element = selected_elements[i];
                if (element != null && element.HasTag(Ingredients[i].tag))
                {
                    list.Add(new Ingredient(GameTagExtensions.Create(element.id), (float)num));
                    flag = true;
                }
            }
            if (!flag)
            {
                list.Add(new Ingredient(Ingredients[i].tag, (float)num));
            }
        }
        return(list.ToArray());
    }
        public void UpdateStorageLeft()
        {
            Tag tag = GameTagExtensions.Create(SimHashes.Salt);

            base.master.SaltStorageLeft = base.master.maxSalt - base.master.storage.GetMassAvailable(tag);
        }
    public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
    {
        go.GetComponent <KPrefabID>().AddPrefabTag(RoomConstraints.ConstraintTags.IndustrialMachinery);
        //go.AddOrGet<Pump>();
        //Storage storage = BuildingTemplates.CreateDefaultStorage(go, false);
        //storage.SetDefaultStoredItemModifiers(Storage.StandardSealedStorage);
        Storage storage = go.AddOrGet <Storage>();

        storage.showInUI = true;

        go.AddOrGet <InverseElectrolyzer>();
        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;
         */


        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)
        };
        elementConverter.outputElements = new ElementConverter.OutputElement[1]
        {
            new ElementConverter.OutputElement(5f, SimHashes.Water, 313.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      = 1f;
        conduitConsumer.capacityKG           = 2f;
        conduitConsumer.capacityTag          = GameTagExtensions.Create(SimHashes.Hydrogen);//GameTags.Oxygen;
        conduitConsumer.forceAlwaysSatisfied = true;
        //conduitConsumer.wrongElementResult = ConduitConsumer.WrongElementResult.Store;
        conduitConsumer.wrongElementResult = ConduitConsumer.WrongElementResult.Dump;

        ConduitDispenser conduitDispenser = go.AddOrGet <ConduitDispenser>();

        conduitDispenser.conduitType         = ConduitType.Liquid;
        conduitDispenser.invertElementFilter = true;

        /*
         * conduitDispenser.elementFilter = new SimHashes[1]
         * {
         *      SimHashes.DirtyWater
         * };
         */
    }
Пример #21
0
            public static void Postfix(ColdBreatherConfig __instance, ref GameObject __result)
            {
                TemperatureVulnerable temperatureVulnerable = __result.AddOrGet <TemperatureVulnerable>();

                temperatureVulnerable.Configure(50f, 10f, 900f, 1000f);

                ColdBreather coldBreather = __result.AddOrGet <ColdBreather>();

                coldBreather.deltaEmitTemperature = -10f;
                coldBreather.emitOffsetCell       = new Vector3(0f, 2f);

                Storage storage = BuildingTemplates.CreateDefaultStorage(__result);

                storage.showInUI = true;

                ElementConsumer elementConsumer = __result.AddOrGet <ElementConsumer>();

                elementConsumer.capacityKG        = 20f;
                elementConsumer.consumptionRate   = 5f;
                elementConsumer.consumptionRadius = 5;

                ElementConverter elementConverter = __result.AddOrGet <ElementConverter>();
                var newConsumedElements           = new[] { new ElementConverter.ConsumedElement(GameTagExtensions.Create(SimHashes.CarbonDioxide), 3f) };
                var newOutputElements             = new[]
                {
                    new ElementConverter.OutputElement(1f, SimHashes.Carbon, 323.15f, true, 0f, 0.5f, false, 1f, byte.MaxValue, 0),
                    new ElementConverter.OutputElement(2f, SimHashes.Oxygen, 323.15f, true, 0f, 0.5f, false, 1f, byte.MaxValue, 0)
                };

                elementConverter.consumedElements = newConsumedElements;
                elementConverter.outputElements   = newOutputElements;
                ElementDropper elementDropper = __result.AddComponent <ElementDropper>();

                elementDropper.emitMass   = 100f;
                elementDropper.emitTag    = SimHashes.Carbon.CreateTag();
                elementDropper.emitOffset = new Vector3(0.5f, 1f, 0f);
            }
Пример #22
0
            public static void Postfix(PolymerizerConfig __instance, ref GameObject go)
            {
                float ratio;

                ratio = DynamicBuildingsState.StateManager.State.liquidandgas / 0.8f;
                Polymerizer polymerizer = go.AddOrGet <Polymerizer>();

                polymerizer.emitMass = 30f * ratio;
                ConduitConsumer conduitConsumer = go.AddOrGet <ConduitConsumer>();

                conduitConsumer.consumptionRate = 1.6f * ratio;
                conduitConsumer.capacityKG      = 10f * ratio;
                ElementConverter elementConverter = go.AddOrGet <ElementConverter>();
                var newConsumedElements           = new[] { new ElementConverter.ConsumedElement(GameTagExtensions.Create(SimHashes.Petroleum), 0.8f * ratio) };
                var newOutputElements             = new[]
                {
                    new ElementConverter.OutputElement(0.5f * ratio, SimHashes.Polypropylene, 348.15f, true, 0f, 0.5f, false, 1f, byte.MaxValue, 0),
                    new ElementConverter.OutputElement(0.008333334f * ratio, SimHashes.Steam, 473.15f, true, 0f, 0.5f, false, 1f, byte.MaxValue, 0),
                    new ElementConverter.OutputElement(0.008333334f * ratio, SimHashes.CarbonDioxide, 423.15f, true, 0f, 0.5f, false, 1f, byte.MaxValue, 0)
                };

                elementConverter.consumedElements = newConsumedElements;
                elementConverter.outputElements   = newOutputElements;
            }
Пример #23
0
        public override void DoPostConfigureComplete(GameObject go)
        {
            go.AddOrGet <LoopingSounds>();
            Light2D light2D = go.AddOrGet <Light2D>();

            light2D.overlayColour = LIGHT2D.FLOORLAMP_OVERLAYCOLOR;
            light2D.Color         = KELVIN1500;
            light2D.Range         = RANGE;
            light2D.Offset        = new Vector2(0f, 0.5f);
            light2D.shape         = LightShape.Circle;
            light2D.drawOverlay   = true;
            light2D.Lux           = LUX;
            light2D.overlayColour = Color.red;

            go.AddOrGet <Lantern>();
            SimHashes element    = SimHashes.CrudeOil; //Config.SettingsManager.Settings.LanternPowerSource == "Oil" ? SimHashes.CrudeOil : SimHashes.Petroleum;
            Tag       elementTag = element.CreateTag();

            Storage storage = go.AddOrGet <Storage>();

            storage.capacityKg       = CAPACITY;
            storage.showInUI         = true;
            storage.allowItemRemoval = false;
            storage.storageFilters   = new List <Tag> {
                elementTag
            };

            ManualDeliveryKG manualDeliveryKG = go.AddOrGet <ManualDeliveryKG>();

            manualDeliveryKG.SetStorage(storage);
            manualDeliveryKG.requestedItemTag       = elementTag;
            manualDeliveryKG.capacity               = CAPACITY;
            manualDeliveryKG.refillMass             = 1.5f;
            manualDeliveryKG.choreTypeIDHash        = Db.Get().ChoreTypes.FetchCritical.IdHash;
            manualDeliveryKG.operationalRequirement = FetchOrder2.OperationalRequirement.Functional;
            manualDeliveryKG.allowPause             = true;

            ConduitConsumer conduitConsumer = go.AddOrGet <ConduitConsumer>();

            conduitConsumer.conduitType          = ConduitType.Liquid;
            conduitConsumer.consumptionRate      = CONSUMPTION_RATE;
            conduitConsumer.capacityTag          = GameTagExtensions.Create(element);
            conduitConsumer.capacityKG           = CAPACITY;
            conduitConsumer.forceAlwaysSatisfied = true;
            conduitConsumer.ignoreMinMassCheck   = true;
            conduitConsumer.alwaysConsume        = true;
            conduitConsumer.wrongElementResult   = ConduitConsumer.WrongElementResult.Dump;

            ElementConverter elementConverter = go.AddComponent <ElementConverter>();

            elementConverter.consumedElements = new ElementConverter.ConsumedElement[1]
            {
                new ElementConverter.ConsumedElement(ElementLoader.FindElementByHash(element).tag, CONSUMPTION_RATE)
            };
            elementConverter.outputElements = new ElementConverter.OutputElement[]
            {
                new ElementConverter.OutputElement(0.01f, SimHashes.CarbonDioxide, 303.15f, false, false, 0f, 1f, 1f, byte.MaxValue, 0)
            };
            go.AddOrGetDef <LightController.Def>();

            go.GetComponent <RequireInputs>().SetRequirements(false, false);
            Prioritizable.AddRef(go);
        }