Esempio n. 1
0
    public override void Init()
    {
        base.Init();

        this.animator  = GetComponent <Animator>();
        this.generator = GetComponent <EnergyGenerator>();
    }
        private static void Postfix(GameObject go)
        {
            if (!(bool)EasierBuildingsState.StateManager.State.ExtraPipeOutputs)
            {
                return;
            }
            ConduitPortInfo secondaryOutPort = new ConduitPortInfo(ConduitType.Liquid, new CellOffset(1, 0));

            go.AddOrGet <Storage>().capacityKg = 100f;

            EnergyGenerator energyGenerator = go.AddOrGet <EnergyGenerator>();

            energyGenerator.formula.outputs = new EnergyGenerator.OutputItem[]
            {
                new EnergyGenerator.OutputItem(SimHashes.CarbonDioxide, 0.5f, false, new CellOffset(0, 3), 383.15f),
                new EnergyGenerator.OutputItem(SimHashes.DirtyWater, 0.75f, true, new CellOffset(1, 1), 313.15f)
            };

            ConduitDispenser2 conduitDispenser2 = go.AddOrGet <ConduitDispenser2>();

            conduitDispenser2.secondaryOutput     = secondaryOutPort;
            conduitDispenser2.conduitType         = secondaryOutPort.conduitType;
            conduitDispenser2.invertElementFilter = true;
            conduitDispenser2.elementFilter       = new SimHashes[]
            {
                SimHashes.Petroleum,
                SimHashes.Ethanol,
                SimHashes.CarbonDioxide
            };
        }
Esempio n. 3
0
        public void Update(bool isFast, float pastRound, int round)
        {
            recoverTime += pastRound * GameConstants.RoundRecoverAddon * ((round >= GameConstants.RoundRecoverDoubleRound) ? 2 : 1);
            var need = isFast ? GameConstants.DrawManaTimeFast : GameConstants.DrawManaTime;

            if (recoverTime >= need)
            {
                recoverTime -= need;
                AddManaData(EnergyGenerator.NextAimMana, 1);
                EnergyGenerator.UseMana();
                EnergyGenerator.Next(round);
            }
            if (ManaChanged != null)//todo 先ws下
            {
                ManaChanged();
            }
            SpikeManager.OnRound(pastRound);
            comboTime -= pastRound;
            if (comboTime <= 0)
            {
                comboTime = 0;
                CardManager.UpdateCardCombo();
            }
            if (CardManager.HeroSkillCd > 0)
            {
                CardManager.HeroSkillCd -= pastRound;
                if (HeroSkillChanged != null && CardManager.HeroSkillCd <= 0)
                {
                    HeroSkillChanged(true);
                }
            }
        }
        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
            };
        }
Esempio n. 5
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>();
            }
Esempio n. 6
0
    private void OnCopySettings(object data)
    {
        GameObject      gameObject = (GameObject)data;
        EnergyGenerator component  = gameObject.GetComponent <EnergyGenerator>();

        if ((UnityEngine.Object)component != (UnityEngine.Object)null)
        {
            batteryRefillPercent = component.batteryRefillPercent;
        }
    }
Esempio n. 7
0
 public static void Postfix(GameObject go)
 {
     go.GetComponent <EnergyGenerator>()
     .formula = EnergyGenerator.CreateSimpleFormula(
         WoodLogConfig.TAG,
         1.2f,
         720f,
         SimHashes.CarbonDioxide,
         CarbonOption.Instance.CO2_lumbergen,
         CompatabilityPatches.GEN_STORE_OUTPUTS, new CellOffset(0, 1), 383.15f);
 }
Esempio n. 8
0
        private List <int[]> monsterAddonOnce = new List <int[]>();  //一次性的强化

        #endregion

        public Player(bool playerControl, bool isLeft)
        {
            IsLeft          = isLeft;
            IsAlive         = true;
            isPlayerControl = playerControl;
            CardManager     = new CardManager(this);
            EnergyGenerator = new EnergyGenerator();
            SpikeManager    = new SpikeManager(this);
            TrapHolder      = new TrapHolder(this);
            State           = new PlayerState();
        }
Esempio n. 9
0
 private static void Prefix(EnergyGenerator __instance, Storage ___storage, MeterController ___meter)
 {
     if (__instance.hasMeter)
     {
         float mass = 0;
         foreach (EnergyGenerator.InputItem inputItem in __instance.formula.inputs)
         {
             mass += ___storage.GetAmountAvailable(inputItem.tag);
         }
         ___meter.SetPositionPercent(mass / __instance.formula.inputs[0].maxStoredMass);
     }
 }
Esempio n. 10
0
 protected override void OnPrefabInit()
 {
     base.OnPrefabInit();
     Subscribe(-592767678, OnOperationalChangedDelegate);
     Subscribe(824508782, OnActiveChangedDelegate);
     workerStatusItem              = Db.Get().DuplicantStatusItems.GeneratingPower;
     attributeConverter            = Db.Get().AttributeConverters.MachinerySpeed;
     attributeExperienceMultiplier = DUPLICANTSTATS.ATTRIBUTE_LEVELING.PART_DAY_EXPERIENCE;
     skillExperienceSkillGroup     = Db.Get().SkillGroups.Technicals.Id;
     skillExperienceMultiplier     = SKILLS.PART_DAY_EXPERIENCE;
     EnergyGenerator.EnsureStatusItemAvailable();
 }
Esempio n. 11
0
            public static void Postfix(GameObject go, Tag prefab_tag)
            {
                var energyGenerator = go.GetComponent <EnergyGenerator>();

                energyGenerator.formula = EnergyGenerator.CreateSimpleFormula(
                    SimHashes.Carbon.CreateTag(),
                    1f,
                    600f,
                    SimHashes.CarbonDioxide,
                    CarbonOption.Instance.CO2_coalgen,
                    CompatabilityPatches.GEN_STORE_OUTPUTS,
                    new CellOffset(1, 2),
                    383.15f);
            }
Esempio n. 12
0
        protected void InitBase()
        {
            Lp = 3;
            Mp = 3;
            Pp = 3;
            EnergyGenerator.Next(0);

            var jobConfig = ConfigData.GetJobConfig(Job);

            if (jobConfig.SkillId > 0)
            {
                HeroSkillList.Add(jobConfig.SkillId);//添加职业技能
            }
        }
Esempio n. 13
0
        public MirrorPlayer(int id, ActiveCards cpcards, bool isLeft)
            : base(false, isLeft)
        {
            PeopleId = id;

            PeopleConfig peopleConfig = ConfigData.GetPeopleConfig(id);

            Level = peopleConfig.Level;
            Job   = UserProfile.InfoBasic.Job;

            EnergyGenerator.SetRateNpc(peopleConfig);

            Cards = cpcards.GetCopy();
            InitBase();
        }
Esempio n. 14
0
        private void buttonBuildEnergyGenerator_Click(object sender, EventArgs e)
        {
            if (gameBoard.board[prevX, prevY].building != null)
            {
                return;
            }
            gameBoard.gameResource.energy -= EnergyGenerator.BUILD_COST;
            Building building = new EnergyGenerator(gameBoard.board[prevX, prevY], gameBoard.random);

            gameBoard.board[prevX, prevY].building = building;
            gameBoard.buildings.Add(building);
            panelBuildNew.Visible = false;
            panelBuilding.Visible = true;
            updateTile(prevX, prevY);
        }
Esempio n. 15
0
    protected override List <Spell> getSpells()
    {
        Spell spell1 = new EnergyGenerator(this);
        //Spell spell2 = new Fireball(this);
        Spell spell2 = new BigDamage(this);
        Spell spell3 = new StealLife(this);

        //Spell spell4 = new Empower(this);
        //Spell spell4 = new Knockback(this);
        //Spell spell4 = new EnergyHeal(this);
        //Spell spell4 = new Block(this);
        //Spell spell4 = new AOEAttack(this);
        //Spell spell4 = new Bomb(this);
        return(new List <Spell> {
            spell1, spell2, spell3
        });
    }
Esempio n. 16
0
        public static void Apply(GameObject go)
        {
            EnergyGenerator  origEnergyGenerator  = go.GetComponent <EnergyGenerator>();
            Storage          storage              = go.GetComponent <Storage>();
            ManualDeliveryKG origManualDeliveryKG = go.GetComponent <ManualDeliveryKG>();

            if (storage.capacityKg == 20000)
            {
                // the storage haven't been set. The sliders rely on it for max value. Set it to the max storage from other components.
                storage.capacityKg = Mathf.Max(origManualDeliveryKG.capacity, origEnergyGenerator.formula.inputs[0].maxStoredMass);
            }

            CoalEnergyGenerator energyGenerator = go.AddOrGet <CoalEnergyGenerator>();

            energyGenerator.powerDistributionOrder = origEnergyGenerator.powerDistributionOrder;
            energyGenerator.hasMeter = true;
            energyGenerator.formula  = origEnergyGenerator.formula;

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

            manualDeliveryKG.SetStorage(storage);
            manualDeliveryKG.requestedItemTag       = origManualDeliveryKG.requestedItemTag;
            manualDeliveryKG.ignoresOperationStatus = true;
            manualDeliveryKG.capacity   = origManualDeliveryKG.capacity;
            manualDeliveryKG.refillMass = origManualDeliveryKG.refillMass;
            manualDeliveryKG.choreTags  = new Tag[]
            {
                GameTags.ChoreTypes.Power
            };
            manualDeliveryKG.choreTypeIDHash = Db.Get().ChoreTypes.PowerFetch.IdHash;

            DualSlider dualSlider = go.AddOrGet <DualSlider>();

            dualSlider.fillUptoThreshold = manualDeliveryKG.capacity;
            dualSlider.refillThreshold   = manualDeliveryKG.refillMass;

            CoalDeliveryController controller = go.AddOrGet <CoalDeliveryController>();

            controller.batteryRefillPercent = 0.5f;

            AddStrings.AddString(manualDeliveryKG.RequestedItemTag.Name);

            UnityEngine.Object.DestroyImmediate(origEnergyGenerator);
            UnityEngine.Object.DestroyImmediate(origManualDeliveryKG);
        }
Esempio n. 17
0
        public AIPlayer(int id, string deck, bool isLeft, int rlevel, bool isPlayerControl)
            : base(isPlayerControl, isLeft)
        {
            PeopleId = id;

            Level = rlevel;
            PeopleConfig peopleConfig = ConfigData.GetPeopleConfig(id);

            Job = peopleConfig.Job;

            EnergyGenerator.SetRateNpc(peopleConfig);

            DeckCard[] cds = DeckBook.GetDeckByName(deck, Level);
            Cards = new ActiveCards(cds);
            //  PlayerAttr attr = new PlayerAttr();
            //  attr.ModifyMonsterData(HeroData);
            InitBase();
        }
Esempio n. 18
0
    public override void DoPostConfigureComplete(GameObject go)
    {
        GeneratedBuildings.RegisterLogicPorts(go, LogicOperationalController.INPUT_PORTS_0_0);
        go.AddOrGet <LogicOperationalController>();
        go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery, false);
        go.AddOrGet <LoopingSounds>();
        Storage storage = go.AddOrGet <Storage>();

        storage.capacityKg = 50f;
        ConduitConsumer conduitConsumer = go.AddOrGet <ConduitConsumer>();

        conduitConsumer.conduitType          = ConduitType.Gas;
        conduitConsumer.consumptionRate      = 0.900000036f;
        conduitConsumer.capacityTag          = GameTags.CombustibleGas;
        conduitConsumer.capacityKG           = 0.900000036f;
        conduitConsumer.forceAlwaysSatisfied = true;
        conduitConsumer.wrongElementResult   = ConduitConsumer.WrongElementResult.Dump;
        EnergyGenerator energyGenerator = go.AddOrGet <EnergyGenerator>();

        energyGenerator.powerDistributionOrder     = 8;
        energyGenerator.ignoreBatteryRefillPercent = true;
        EnergyGenerator.Formula formula = default(EnergyGenerator.Formula);
        formula.inputs = new EnergyGenerator.InputItem[1]
        {
            new EnergyGenerator.InputItem(GameTags.CombustibleGas, 0.09f, 0.900000036f)
        };
        formula.outputs = new EnergyGenerator.OutputItem[2]
        {
            new EnergyGenerator.OutputItem(SimHashes.DirtyWater, 0.0675f, false, new CellOffset(1, 1), 313.15f),
            new EnergyGenerator.OutputItem(SimHashes.CarbonDioxide, 0.0225f, true, new CellOffset(0, 2), 383.15f)
        };
        energyGenerator.formula = formula;
        ConduitDispenser conduitDispenser = go.AddOrGet <ConduitDispenser>();

        conduitDispenser.conduitType         = ConduitType.Gas;
        conduitDispenser.invertElementFilter = true;
        conduitDispenser.elementFilter       = new SimHashes[2]
        {
            SimHashes.Methane,
            SimHashes.Syngas
        };
        Tinkerable.MakePowerTinkerable(go);
        go.AddOrGetDef <PoweredActiveController.Def>();
    }
        public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
        {
            go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery);
            CoalEnergyGenerator energyGenerator = go.AddOrGet <CoalEnergyGenerator>();

            energyGenerator.formula = EnergyGenerator.CreateSimpleFormula(SimHashes.Carbon.CreateTag(), 1f, 600f, SimHashes.Void, 0f, true);
            energyGenerator.powerDistributionOrder = 9;
            Storage storage = go.AddOrGet <Storage>();

            storage.capacityKg = 600f;
            go.AddOrGet <LoopingSounds>();
            Prioritizable.AddRef(go);
            CoalManualDeliveryKG manualDeliveryKG = go.AddOrGet <CoalManualDeliveryKG>();

            manualDeliveryKG.SetStorage(storage);
            manualDeliveryKG.requestedItemTag       = new Tag("Coal");
            manualDeliveryKG.ignoresOperationStatus = true;
            manualDeliveryKG.capacity   = storage.capacityKg;
            manualDeliveryKG.refillMass = 100f;
            manualDeliveryKG.choreTags  = new Tag[]
            {
                GameTags.ChoreTypes.Power
            };
            manualDeliveryKG.choreTypeIDHash = Db.Get().ChoreTypes.PowerFetch.IdHash;

            BuildingElementEmitter buildingElementEmitter = go.AddOrGet <BuildingElementEmitter>();

            buildingElementEmitter.emitRate       = 0.02f;
            buildingElementEmitter.temperature    = 310f;
            buildingElementEmitter.element        = SimHashes.CarbonDioxide;
            buildingElementEmitter.modifierOffset = new Vector2(1f, 2f);

            DualSlider dualSlider = go.AddOrGet <DualSlider>();

            dualSlider.fillUptoThreshold = manualDeliveryKG.capacity;
            dualSlider.refillThreshold   = manualDeliveryKG.refillMass;

            CoalDeliveryController controller = go.AddOrGet <CoalDeliveryController>();

            controller.batteryRefillPercent = 0.5f;

            Tinkerable.MakePowerTinkerable(go);
        }
Esempio n. 20
0
        public RandomPlayer(int id, bool isLeft, bool isplayerControl)
            : base(isplayerControl, isLeft)
        {
            PeopleId = id;

            PeopleConfig peopleConfig = ConfigData.GetPeopleConfig(id);

            Level = peopleConfig.Level;
            Job   = UserProfile.InfoBasic.Job;

            EnergyGenerator.SetRateNpc(peopleConfig);

            DeckCard[] cd = new DeckCard[GameConstants.DeckCardCount];
            for (int i = 0; i < GameConstants.DeckCardCount; i++)
            {
                cd[i] = new DeckCard(CardConfigManager.GetRandomCard(0, -1), 1, 0);
            }
            Cards = new ActiveCards(cd);
            InitBase();
        }
Esempio n. 21
0
        public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
        {
            go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery, false);
            EnergyGenerator energyGenerator = go.AddOrGet <EnergyGenerator>();

            energyGenerator.formula                = EnergyGenerator.CreateSimpleFormula(SimHashes.Water.CreateTag(), 1f, 10f, SimHashes.Water, 1f, true, new CellOffset(0, 0), 0f);
            energyGenerator.meterOffset            = Meter.Offset.Behind;
            energyGenerator.powerDistributionOrder = 15;
            go.AddOrGet <LoopingSounds>();
            Prioritizable.AddRef(go);
            Storage storage = go.AddOrGet <Storage>();

            storage.capacityKg = 10f;

            storage.showInUI         = true;
            storage.allowItemRemoval = false;
            storage.showDescriptor   = true;
            storage.fetchCategory    = Storage.FetchCategory.GeneralStorage;
            Tinkerable.MakePowerTinkerable(go);
            go.AddOrGet <BrisInfiniteGenerator>();
        }
Esempio n. 22
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 static void Postfix(GameObject go)
        {
            EnergyGenerator  origEnergyGenerator  = go.GetComponent <EnergyGenerator>();
            Storage          storage              = go.GetComponent <Storage>();
            ManualDeliveryKG origManualDeliveryKG = go.GetComponent <ManualDeliveryKG>();

            CoalEnergyGenerator energyGenerator = go.AddOrGet <CoalEnergyGenerator>();

            energyGenerator.powerDistributionOrder = origEnergyGenerator.powerDistributionOrder;
            energyGenerator.hasMeter = true;
            energyGenerator.formula  = origEnergyGenerator.formula;

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

            manualDeliveryKG.SetStorage(storage);
            manualDeliveryKG.requestedItemTag       = origManualDeliveryKG.requestedItemTag;
            manualDeliveryKG.ignoresOperationStatus = true;
            manualDeliveryKG.capacity   = origManualDeliveryKG.capacity;
            manualDeliveryKG.refillMass = origManualDeliveryKG.refillMass;
            manualDeliveryKG.choreTags  = new Tag[]
            {
                GameTags.ChoreTypes.Power
            };
            manualDeliveryKG.choreTypeIDHash = Db.Get().ChoreTypes.PowerFetch.IdHash;

            DualSlider dualSlider = go.AddOrGet <DualSlider>();

            dualSlider.fillUptoThreshold = manualDeliveryKG.capacity;
            dualSlider.refillThreshold   = manualDeliveryKG.refillMass;

            CoalDeliveryController controller = go.AddOrGet <CoalDeliveryController>();

            controller.batteryRefillPercent = 0.5f;

            AddStrings.AddString(manualDeliveryKG.RequestedItemTag.Name);

            UnityEngine.Object.DestroyImmediate(origEnergyGenerator);
            UnityEngine.Object.DestroyImmediate(origManualDeliveryKG);
        }
    public override void DoPostConfigureComplete(GameObject go)
    {
        GeneratedBuildings.RegisterLogicPorts(go, LogicOperationalController.INPUT_PORTS_0_0);
        go.AddOrGet <LogicOperationalController>();
        go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery, false);
        go.AddOrGet <LoopingSounds>();
        go.AddOrGet <Storage>();
        BuildingDef def = go.GetComponent <Building>().Def;
        float       num = 20f;

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

        conduitConsumer.conduitType          = def.InputConduitType;
        conduitConsumer.consumptionRate      = 10f;
        conduitConsumer.capacityTag          = GameTags.CombustibleLiquid;
        conduitConsumer.capacityKG           = num;
        conduitConsumer.forceAlwaysSatisfied = true;
        conduitConsumer.wrongElementResult   = ConduitConsumer.WrongElementResult.Dump;
        EnergyGenerator energyGenerator = go.AddOrGet <EnergyGenerator>();

        energyGenerator.powerDistributionOrder     = 8;
        energyGenerator.ignoreBatteryRefillPercent = true;
        energyGenerator.hasMeter = true;
        EnergyGenerator.Formula formula = default(EnergyGenerator.Formula);
        formula.inputs = new EnergyGenerator.InputItem[1]
        {
            new EnergyGenerator.InputItem(GameTags.CombustibleLiquid, 2f, num)
        };
        formula.outputs = new EnergyGenerator.OutputItem[2]
        {
            new EnergyGenerator.OutputItem(SimHashes.CarbonDioxide, 0.5f, false, new CellOffset(0, 3), 383.15f),
            new EnergyGenerator.OutputItem(SimHashes.DirtyWater, 0.75f, false, new CellOffset(1, 1), 313.15f)
        };
        energyGenerator.formula = formula;
        Tinkerable.MakePowerTinkerable(go);
        go.AddOrGetDef <PoweredActiveController.Def>();
    }
    public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
    {
        go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery, false);
        EnergyGenerator energyGenerator = go.AddOrGet <EnergyGenerator>();

        energyGenerator.formula     = EnergyGenerator.CreateSimpleFormula(SimHashes.Carbon.CreateTag(), 1f, 600f, SimHashes.CarbonDioxide, 0.02f, false, new CellOffset(1, 2), 383.15f);
        energyGenerator.meterOffset = Meter.Offset.Behind;
        energyGenerator.SetSliderValue(50f, 0);
        energyGenerator.powerDistributionOrder = 9;
        Storage storage = go.AddOrGet <Storage>();

        storage.capacityKg = 600f;
        go.AddOrGet <LoopingSounds>();
        Prioritizable.AddRef(go);
        ManualDeliveryKG manualDeliveryKG = go.AddOrGet <ManualDeliveryKG>();

        manualDeliveryKG.SetStorage(storage);
        manualDeliveryKG.requestedItemTag = new Tag("Coal");
        manualDeliveryKG.capacity         = storage.capacityKg;
        manualDeliveryKG.refillMass       = 100f;
        manualDeliveryKG.choreTypeIDHash  = Db.Get().ChoreTypes.PowerFetch.IdHash;
        Tinkerable.MakePowerTinkerable(go);
    }
Esempio n. 26
0
        public HumanPlayer(bool isLeft)
            : base(true, isLeft)
        {
            PeopleId = 0;
            Level    = UserProfile.InfoBasic.Level;
            Job      = UserProfile.InfoBasic.Job;

            DeckCard[] cd = new DeckCard[GameConstants.DeckCardCount];
            for (int i = 0; i < GameConstants.DeckCardCount; i++)
            {
                int id = UserProfile.InfoCard.SelectedDeck.GetCardAt(i);
                cd[i] = new DeckCard(UserProfile.InfoCard.GetDeckCardById(id));
            }
            Cards = new ActiveCards(cd);

            int[] energyRate = { 0, 0, 0 };
            int[] equipOn    = Array.ConvertAll(UserProfile.InfoEquip.Equipon, a => a.BaseId);
            CalculateEquipAndSkill(equipOn, energyRate);
            EnergyGenerator.SetRate(energyRate, UserProfile.InfoBasic.Job);

            InitBase();

            BattleManager.Instance.RuleData.CheckPlayerData(this);
        }
Esempio n. 27
0
 public void HardDelete(EnergyGenerator energyGenerator)
 {
     this.energyGeneratorRepository.HardDelete(energyGenerator);
     this.energyGeneratorRepository.SaveChanges();
 }
Esempio n. 28
0
 public void Update(EnergyGenerator energyGenerator)
 {
     this.energyGeneratorRepository.Update(energyGenerator);
     this.energyGeneratorRepository.SaveChanges();
 }
Esempio n. 29
0
        public static async Task SeedDatabase(ApplicationDbContext context,
                                              UserManager <ApplicationUser> userManager)
        {
            if (!context.Users.Any())
            {
                var personsWithPasswords = new List <PersonWithPassword>
                {
                    new PersonWithPassword
                    (
                        new ApplicationUser
                    {
                        UserName = "******",
                        Email    = "*****@*****.**",
                        Address  = "45 Long Beach Blvd, Miami"
                    },
                        new Person
                    {
                        FirstName = "John",
                        LastName  = "Doe"
                    },
                        "NewPassword123$"
                    ),
                    new PersonWithPassword
                    (
                        new ApplicationUser
                    {
                        UserName = "******",
                        Email    = "*****@*****.**",
                        Address  = "15 Square Ave, London"
                    },
                        new Person
                    {
                        FirstName = "Michael",
                        LastName  = "Jordan"
                    },
                        "FreshPassword123$"
                    )
                };

                foreach (var personWithPassword in personsWithPasswords)
                {
                    var applicationUser = personWithPassword.AppUser;

                    IdentityResult result =
                        await userManager.CreateAsync(applicationUser, personWithPassword.Password);

                    if (result.Succeeded)
                    {
                        var person = personWithPassword.Person;

                        person.ApplicationUserId = applicationUser.Id;

                        context.Persons.Add(person);
                    }
                }

                context.SaveChanges();
            }

            if (!context.Manufacturers.Any())
            {
                var manufacturers = new List <Manufacturer>
                {
                    new Manufacturer()
                    {
                        Name = "Philips"
                    },
                    new Manufacturer()
                    {
                        Name = "Siemens"
                    },
                    new Manufacturer()
                    {
                        Name = "Samsung"
                    },
                    new Manufacturer()
                    {
                        Name = "Asus"
                    },
                    new Manufacturer()
                    {
                        Name = "IBM"
                    },
                    new Manufacturer()
                    {
                        Name = "Whirlpool"
                    },
                    new Manufacturer()
                    {
                        Name = "LG"
                    },
                    new Manufacturer()
                    {
                        Name = "Solar City"
                    },
                    new Manufacturer()
                    {
                        Name = "Tesla"
                    },
                    new Manufacturer()
                    {
                        Name = "Teledyne Energy Systems"
                    },
                };

                context.Manufacturers.AddRange(manufacturers);

                context.SaveChanges();
            }

            if (!context.ElectricalDeviceTypes.Any())
            {
                var electricalDeviceTypes = new List <ElectricalDeviceType>
                {
                    new ElectricalDeviceType()
                    {
                        TypeName = "LED Light"
                    },
                    new ElectricalDeviceType()
                    {
                        TypeName = "Washing Machine"
                    },
                    new ElectricalDeviceType()
                    {
                        TypeName = "Air conditioner"
                    },
                    new ElectricalDeviceType()
                    {
                        TypeName = "Computer"
                    },
                    new ElectricalDeviceType()
                    {
                        TypeName = "Refridgerator"
                    },
                    new ElectricalDeviceType()
                    {
                        TypeName = "Electronic Microscope"
                    },
                    new ElectricalDeviceType()
                    {
                        TypeName = "Water Pump"
                    },
                    new ElectricalDeviceType()
                    {
                        TypeName = "Water Heater"
                    },
                    new ElectricalDeviceType()
                    {
                        TypeName = "Energy Generator"
                    },
                    new ElectricalDeviceType()
                    {
                        TypeName = "Solar panel"
                    },
                    new ElectricalDeviceType()
                    {
                        TypeName = "Radioisotope Thermoelectric Generator"
                    },
                    new ElectricalDeviceType()
                    {
                        TypeName = "Battery Pack"
                    }
                };

                context.ElectricalDeviceTypes.AddRange(electricalDeviceTypes);

                context.SaveChanges();
            }

            if (!context.ElectricalDeviceModels.Any())
            {
                var philips   = context.Manufacturers.FirstOrDefault(m => m.Name == "Philips");
                var siemens   = context.Manufacturers.FirstOrDefault(m => m.Name == "Siemens");
                var samsung   = context.Manufacturers.FirstOrDefault(m => m.Name == "Samsung");
                var whirlpool = context.Manufacturers.FirstOrDefault(m => m.Name == "Whirlpool");
                var lg        = context.Manufacturers.FirstOrDefault(m => m.Name == "LG");
                var solarCity = context.Manufacturers.FirstOrDefault(m => m.Name == "Solar City");
                var tesla     = context.Manufacturers.FirstOrDefault(m => m.Name == "Tesla");
                var teledyne  = context.Manufacturers.FirstOrDefault(m => m.Name == "Teledyne Energy Systems");

                var electricalDeviceModels = new List <ElectricalDeviceModel>
                {
                    new ElectricalDeviceModel()
                    {
                        ModelName              = "Philips CH5 Air Conditioner",
                        MeasuringUnit          = "Degrees (C)",
                        MinValue               = 18.0d,
                        MaxValue               = 30.0d,
                        Step                   = 1.0d,
                        PowerPerStep           = 5.6d,
                        PowerAtLowestUnitLevel = 30.0d,
                        ModelIdentifier        = "KL54-PLPS",
                        Manufacturer           = philips,
                        ElectricalDeviceType   =
                            context.ElectricalDeviceTypes.FirstOrDefault(edt => edt.TypeName == "Air conditioner")
                    },
                    new ElectricalDeviceModel()
                    {
                        ModelName              = "Siemens LED Light FC83H",
                        MeasuringUnit          = "Lumens",
                        MinValue               = 30.0d,
                        MaxValue               = 90.0d,
                        Step                   = 5.0d,
                        PowerPerStep           = 0.6,
                        PowerAtLowestUnitLevel = 4.0d,
                        ModelIdentifier        = "9DE4-SMNS",
                        Manufacturer           = siemens,
                        ElectricalDeviceType   =
                            context.ElectricalDeviceTypes.FirstOrDefault(edt => edt.TypeName == "LED Light")
                    },
                    new ElectricalDeviceModel()
                    {
                        ModelName              = "Samsung Fridge DL23M",
                        MeasuringUnit          = "Degrees (C)",
                        MinValue               = -15.0d,
                        MaxValue               = 6.0d,
                        Step                   = 1.0d,
                        PowerPerStep           = 7.0d,
                        PowerAtLowestUnitLevel = 35.0d,
                        ModelIdentifier        = "CV7J-SMSG",
                        Manufacturer           = samsung,
                        ElectricalDeviceType   =
                            context.ElectricalDeviceTypes.FirstOrDefault(edt => edt.TypeName == "Refridgerator")
                    },
                    new ElectricalDeviceModel()
                    {
                        ModelName              = "Whirlpool Water Pump DH4F",
                        MeasuringUnit          = "LitresPerMin",
                        MinValue               = 0.5d,
                        MaxValue               = 20.0d,
                        Step                   = 0.5d,
                        PowerPerStep           = 7.0d,
                        PowerAtLowestUnitLevel = 45.0d,
                        ModelIdentifier        = "JE3C-WHPL",
                        Manufacturer           = whirlpool,
                        ElectricalDeviceType   =
                            context.ElectricalDeviceTypes.FirstOrDefault(edt => edt.TypeName == "Water Pump")
                    },
                    new ElectricalDeviceModel()
                    {
                        ModelName              = "LG Water Heater KD25",
                        MeasuringUnit          = "Degrees (C)",
                        MinValue               = 20.0d,
                        MaxValue               = 80.0d,
                        Step                   = 1.0d,
                        PowerPerStep           = 0.5d,
                        PowerAtLowestUnitLevel = 22.0d,
                        ModelIdentifier        = "90QW-LGLG",
                        Manufacturer           = lg,
                        ElectricalDeviceType   =
                            context.ElectricalDeviceTypes.FirstOrDefault(edt => edt.TypeName == "Water Heater")
                    },
                    new ElectricalDeviceModel()
                    {
                        ModelName              = "Solar City MX45 Panel",
                        MeasuringUnit          = "Watts",
                        MinValue               = 0.0d,
                        MaxValue               = 80.0d,
                        Step                   = 1.0d,
                        PowerPerStep           = 0.5d,
                        PowerAtLowestUnitLevel = 0.0d,
                        ModelIdentifier        = "34FD-SLCT",
                        Manufacturer           = solarCity,
                        ElectricalDeviceType   =
                            context.ElectricalDeviceTypes.FirstOrDefault(edt => edt.TypeName == "Solar panel")
                    },
                    new ElectricalDeviceModel()
                    {
                        ModelName              = "Teledyne HJ24 MMRTG",
                        MeasuringUnit          = "Degrees (C)",
                        MinValue               = 0.0d,
                        MaxValue               = 120.0d,
                        Step                   = 1.0d,
                        PowerPerStep           = 0.5d,
                        PowerAtLowestUnitLevel = 0.0d,
                        ModelIdentifier        = "3F4F-TLDN",
                        Manufacturer           = teledyne,
                        ElectricalDeviceType   =
                            context.ElectricalDeviceTypes.FirstOrDefault(edt => edt.TypeName == "Radioisotope Thermoelectric Generator")
                    },
                    new ElectricalDeviceModel()
                    {
                        ModelName              = "Tesla 24CF Power Pack",
                        Capacity               = 50000,
                        MeasuringUnit          = "Degrees (C)",
                        MinValue               = 0.0d,
                        MaxValue               = 250.0d,
                        Step                   = 1.0d,
                        PowerPerStep           = 0.5d,
                        PowerAtLowestUnitLevel = 0.0d,
                        ModelIdentifier        = "90QW-TSLA",
                        Manufacturer           = tesla,
                        ElectricalDeviceType   =
                            context.ElectricalDeviceTypes.FirstOrDefault(edt => edt.TypeName == "Battery Pack")
                    }
                };

                context.ElectricalDeviceModels.AddRange(electricalDeviceModels);

                context.SaveChanges();

                if (!context.EnergyGenerators.Any())
                {
                    var energyGenerators = new List <EnergyGenerator>();

                    var teledyneRadioisotopeGeneratorModel =
                        context.ElectricalDeviceModels.FirstOrDefault(edm => edm.ModelName == "Teledyne HJ24 MMRTG");

                    var radioisotopeGenerator = new EnergyGenerator()
                    {
                        SerialNumber          = "VC23-DF42-OK49-3F4F-TLDN",
                        ElectricalDeviceModel = teledyneRadioisotopeGeneratorModel
                    };

                    energyGenerators.Add(radioisotopeGenerator);

                    var radioisotopeGeneratorSecond = new EnergyGenerator()
                    {
                        SerialNumber          = "LQ21-CA30-SQ1P-3F4F-TLDN",
                        ElectricalDeviceModel = teledyneRadioisotopeGeneratorModel
                    };

                    energyGenerators.Add(radioisotopeGeneratorSecond);

                    string[] setOfStrings = new string[]
                    {
                        "JFC9", "PO92", "CXO9", "AZ39", "PO9W", "QE31", "SXL4", "BA6G"
                    };

                    var solarCityPanelModel =
                        context.ElectricalDeviceModels.FirstOrDefault(edm => edm.ModelName == "Solar City MX45 Panel");

                    int setLength = setOfStrings.Length;

                    Random randomGenerator = new Random();

                    for (int i = 0; i < 20; i++)
                    {
                        StringBuilder sb = new StringBuilder();

                        for (int j = 0; j < 3; j++)
                        {
                            string randomString = setOfStrings[randomGenerator.Next(0, setLength)];
                            sb.AppendFormat("{0}-", randomString);
                        }

                        var energyGenerator = new EnergyGenerator()
                        {
                            SerialNumber          = sb.ToString(),
                            ElectricalDeviceModel = solarCityPanelModel
                        };

                        energyGenerators.Add(energyGenerator);
                    }

                    context.EnergyGenerators.AddRange(energyGenerators);

                    context.SaveChanges();
                }

                if (!context.BatteryPacks.Any())
                {
                    var battery = new BatteryPack()
                    {
                        SerialNumber          = "D3AP-W24C-QW2X-90QW-TSLA",
                        ElectricalDeviceModel =
                            context.ElectricalDeviceModels.FirstOrDefault(edm => edm.ModelName == "Tesla 24CF Power Pack")
                    };

                    context.BatteryPacks.Add(battery);

                    context.SaveChanges();
                }
            }

            if (!context.BaseUnits.Any())
            {
                context.BaseUnits.AddRange
                (
                    new BaseUnit {
                    Name = "Living Space"
                },
                    new BaseUnit {
                    Name = "Green House"
                }
                );
                context.SaveChanges();
            }

            if (!context.ElectricalSystemTypes.Any())
            {
                var electricalSystemTypes = new List <ElectricalSystemType>
                {
                    new ElectricalSystemType {
                        Name = "Air-Conditining System"
                    },
                    new ElectricalSystemType {
                        Name = "Lighting System"
                    },
                    new ElectricalSystemType {
                        Name = "Fridge System"
                    },
                    new ElectricalSystemType {
                        Name = "Water Pumping System"
                    },
                    new ElectricalSystemType {
                        Name = "Water Heating System"
                    }
                };

                context.ElectricalSystemTypes.AddRange(electricalSystemTypes);

                context.SaveChanges();
            }


            if (!context.ElectricalSystems.Any())
            {
                var livingSpaceBaseUnit = context.BaseUnits.FirstOrDefault(u => u.Name == "Living Space");

                var greenHouseBaseUnit = context.BaseUnits.FirstOrDefault(bu => bu.Name == "Green House");

                var airConditioningSystemType =
                    context.ElectricalSystemTypes.FirstOrDefault(est => est.Name == "Air-Conditining System");

                var ligthingSystemType =
                    context.ElectricalSystemTypes.FirstOrDefault(est => est.Name == "Lighting System");

                var fridgeSystemType =
                    context.ElectricalSystemTypes.FirstOrDefault(est => est.Name == "Fridge System");

                var waterPumpingSystemType =
                    context.ElectricalSystemTypes.FirstOrDefault(est => est.Name == "Water Pumping System");

                var waterHeatingSystemType =
                    context.ElectricalSystemTypes.FirstOrDefault(est => est.Name == "Water Heating System");

                var airConditioningLivingSpace = new ElectricalSystem()
                {
                    Name                 = "Air Conditioning System (Living Space)",
                    BaseUnit             = livingSpaceBaseUnit,
                    ElectricalSystemType = airConditioningSystemType
                };

                var airConditioningGreenHouse = new ElectricalSystem()
                {
                    Name                 = "Air Conditioning System (Green House)",
                    BaseUnit             = greenHouseBaseUnit,
                    ElectricalSystemType = airConditioningSystemType
                };

                var lightsSystemLivingSpace = new ElectricalSystem()
                {
                    Name                 = "LED Lights (Living Space)",
                    BaseUnit             = livingSpaceBaseUnit,
                    ElectricalSystemType = ligthingSystemType
                };

                var lightsSystemGreenHouse = new ElectricalSystem()
                {
                    Name                 = "LED Lights (Green House)",
                    BaseUnit             = greenHouseBaseUnit,
                    ElectricalSystemType = ligthingSystemType
                };

                var fridgeSystemLivingSpace = new ElectricalSystem()
                {
                    Name                 = "Fridge System (Living Space)",
                    BaseUnit             = livingSpaceBaseUnit,
                    ElectricalSystemType = fridgeSystemType
                };

                var fridgeSystemGreenHouse = new ElectricalSystem()
                {
                    Name                 = "Fridge System (Green House)",
                    BaseUnit             = greenHouseBaseUnit,
                    ElectricalSystemType = fridgeSystemType
                };

                var waterPumpSystemLivingSpace = new ElectricalSystem()
                {
                    Name                 = "Water Pumping System (Living Space)",
                    BaseUnit             = livingSpaceBaseUnit,
                    ElectricalSystemType = waterPumpingSystemType
                };

                var waterPumpSystemGreenHouse = new ElectricalSystem()
                {
                    Name                 = "Water Pumping System (Green House)",
                    BaseUnit             = greenHouseBaseUnit,
                    ElectricalSystemType = waterPumpingSystemType
                };

                var waterHeatingSystemLivingSpace = new ElectricalSystem()
                {
                    Name                 = "Water Heating System (Living Space)",
                    BaseUnit             = livingSpaceBaseUnit,
                    ElectricalSystemType = waterHeatingSystemType
                };

                var waterHeatingSystemGreenHouse = new ElectricalSystem()
                {
                    Name                 = "Water Heating System (Green House)",
                    BaseUnit             = greenHouseBaseUnit,
                    ElectricalSystemType = waterHeatingSystemType
                };

                var electricalSystems = new List <ElectricalSystem>
                {
                    airConditioningLivingSpace,
                    airConditioningGreenHouse,
                    lightsSystemLivingSpace,
                    lightsSystemGreenHouse,
                    fridgeSystemLivingSpace,
                    fridgeSystemGreenHouse,
                    waterPumpSystemLivingSpace,
                    waterPumpSystemGreenHouse,
                    waterHeatingSystemLivingSpace,
                    waterHeatingSystemGreenHouse
                };

                context.ElectricalSystems.AddRange(electricalSystems);

                context.SaveChanges();
            }

            if (!context.ElectricalDevices.Any())
            {
                var ledLightsLivingSpaceSystem =
                    context.ElectricalSystems.FirstOrDefault(es => es.Name == "LED Lights (Living Space)");

                var ledLightsGreenHouseSystem =
                    context.ElectricalSystems.FirstOrDefault(es => es.Name == "LED Lights (Living Space)");

                var philipsCH5AirConditioner =
                    context.ElectricalDeviceModels.FirstOrDefault(es => es.ModelName == "Philips CH5 Air Conditioner");

                var siemensLEDLightFC83H = context.ElectricalDeviceModels.FirstOrDefault(es => es.ModelName == "Siemens LED Light FC83H");

                var samsungFridgeDL23M = context.ElectricalDeviceModels.FirstOrDefault(es => es.ModelName == "Samsung Fridge DL23M");

                var whirlpoolWaterPumpDH4F = context.ElectricalDeviceModels.FirstOrDefault(es => es.ModelName == "Whirlpool Water Pump DH4F");

                var lgWaterHeaterKD25 = context.ElectricalDeviceModels.FirstOrDefault(es => es.ModelName == "LG Water Heater KD25");

                var electricalDevices = new List <ElectricalDevice>
                {
                    new ElectricalDevice()
                    {
                        SerialNumber          = "4HDE-BHRU-98CH-KL54-PLPS",
                        ElectricalDeviceModel = philipsCH5AirConditioner,
                        ElectricalSystem      =
                            context.ElectricalSystems.FirstOrDefault(es => es.Name == "Air Conditioning System (Living Space)"),
                        MeasuringUnitCurrentLevel = 21.0d
                    },
                    new ElectricalDevice()
                    {
                        SerialNumber          = "BNMV-RT65-AS9K-KL54-PLPS",
                        ElectricalDeviceModel = philipsCH5AirConditioner,
                        ElectricalSystem      =
                            context.ElectricalSystems.FirstOrDefault(es => es.Name == "Air Conditioning System (Green House)"),
                        MeasuringUnitCurrentLevel = 21.0d
                    },
                    new ElectricalDevice()
                    {
                        SerialNumber              = "8XCD-GHJD-82WD-9DE4-SMNS",
                        ElectricalDeviceModel     = siemensLEDLightFC83H,
                        ElectricalSystem          = ledLightsLivingSpaceSystem,
                        MeasuringUnitCurrentLevel = 30.0d
                    },
                    new ElectricalDevice()
                    {
                        SerialNumber              = "KERL-PKS1-DF9A-9DE4-SMNS",
                        ElectricalDeviceModel     = siemensLEDLightFC83H,
                        ElectricalSystem          = ledLightsLivingSpaceSystem,
                        MeasuringUnitCurrentLevel = 30.0d
                    },
                    new ElectricalDevice()
                    {
                        SerialNumber              = "BCRE-MGHW-KSD3-9DE4-SMNS",
                        ElectricalDeviceModel     = siemensLEDLightFC83H,
                        ElectricalSystem          = ledLightsGreenHouseSystem,
                        MeasuringUnitCurrentLevel = 45.0d
                    },
                    new ElectricalDevice()
                    {
                        SerialNumber              = "PA8G-LM2A-DF9A-9DE4-SMNS",
                        ElectricalDeviceModel     = siemensLEDLightFC83H,
                        ElectricalSystem          = ledLightsGreenHouseSystem,
                        MeasuringUnitCurrentLevel = 45.0d
                    },
                    new ElectricalDevice()
                    {
                        SerialNumber          = "PKLC-WERP-CVBH-CV7J-SMSG",
                        ElectricalDeviceModel = samsungFridgeDL23M,
                        ElectricalSystem      =
                            context.ElectricalSystems.FirstOrDefault(es => es.Name == "Fridge System (Living Space)"),
                        MeasuringUnitCurrentLevel = 4.0d
                    },
                    new ElectricalDevice()
                    {
                        SerialNumber          = "MVC8-KDKD-CD9K-CV7J-SMSG",
                        ElectricalDeviceModel = samsungFridgeDL23M,
                        ElectricalSystem      =
                            context.ElectricalSystems.FirstOrDefault(es => es.Name == "Fridge System (Green House)"),
                        MeasuringUnitCurrentLevel = 4.0d
                    },
                    new ElectricalDevice()
                    {
                        SerialNumber          = "FH3S-DE4C-CF5D-JE3C-WHPL",
                        ElectricalDeviceModel = whirlpoolWaterPumpDH4F,
                        ElectricalSystem      =
                            context.ElectricalSystems.FirstOrDefault(es => es.Name == "Water Pumping System (Living Space)"),
                        MeasuringUnitCurrentLevel = 14.0d
                    },
                    new ElectricalDevice()
                    {
                        SerialNumber          = "MVC8-KDKD-CD9K-JE3C-WHPL",
                        ElectricalDeviceModel = whirlpoolWaterPumpDH4F,
                        ElectricalSystem      =
                            context.ElectricalSystems.FirstOrDefault(es => es.Name == "Water Pumping System (Green House)"),
                        MeasuringUnitCurrentLevel = 0.5d
                    },
                    new ElectricalDevice()
                    {
                        SerialNumber          = "8XCD-GHJD-82WD-90QW-LGLG",
                        ElectricalDeviceModel = lgWaterHeaterKD25,
                        ElectricalSystem      =
                            context.ElectricalSystems.FirstOrDefault(es => es.Name == "Water Heating System (Living Space)"),
                        MeasuringUnitCurrentLevel = 70.0d
                    },
                    new ElectricalDevice()
                    {
                        SerialNumber          = "KL2W-AS2E-WE3C-90QW-LGLG",
                        ElectricalDeviceModel = lgWaterHeaterKD25,
                        ElectricalSystem      =
                            context.ElectricalSystems.FirstOrDefault(es => es.Name == "Water Heating System (Green House)"),
                        MeasuringUnitCurrentLevel = 20.0d
                    }
                };

                context.ElectricalDevices.AddRange(electricalDevices);

                context.SaveChanges();
            }
        }
        internal static PortDisplayOutput AddOutput(GameObject go, CellOffset offset, SimHashes elementHash)
        {
            Element     element     = ElementLoader.GetElement(elementHash.CreateTag());
            ConduitType conduitType = element.IsGas ? ConduitType.Gas : element.IsLiquid ? ConduitType.Liquid : ConduitType.Solid;

            // port color
            Color32 color = element.substance.conduitColour;

            color.a = 255; // for some reason the alpha channel is set to invisible for some elements (hydrogen only?)

            if (color.r == 0 && color.g == 0 && color.b == 0)
            {
                // avoid completely black icons since the background is black
                color.r = 25;
                color.g = 25;
                color.b = 25;
            }

            PortDisplayOutput outputPort = new PortDisplayOutput(conduitType, offset, null, color);

            PortDisplayController controller = go.AddOrGet <PortDisplayController>();

            controller.Init(go);

            controller.AssignPort(go, outputPort);

            ElementConverter converter = go.GetComponent <ElementConverter>();

            if (converter != null)
            {
                for (int i = 0; i < converter.outputElements.Length; ++i)
                {
                    ElementConverter.OutputElement item = converter.outputElements[i];
                    if (item.elementHash == elementHash)
                    {
                        converter.outputElements[i].storeOutput = true;

                        PipedDispenser dispenser = go.AddComponent <PipedDispenser>();
                        dispenser.elementFilter = new SimHashes[] { elementHash };
                        dispenser.AssignPort(outputPort);
                        dispenser.alwaysDispense     = true;
                        dispenser.SkipSetOperational = true;

                        PipedOptionalExhaust exhaust = go.AddComponent <PipedOptionalExhaust>();
                        exhaust.dispenser   = dispenser;
                        exhaust.elementHash = elementHash;
                        exhaust.elementTag  = elementHash.CreateTag();
                        exhaust.capacity    = item.massGenerationRate * converter.OutputMultiplier * 5;

                        break;
                    }
                }
            }
            else
            {
                EnergyGenerator energyGenerator = go.GetComponent <EnergyGenerator>();
                if (energyGenerator != null)
                {
                    for (int i = 0; i < energyGenerator.formula.outputs.Length; ++i)
                    {
                        EnergyGenerator.OutputItem item = energyGenerator.formula.outputs[i];
                        if (item.element == elementHash)
                        {
                            energyGenerator.formula.outputs[i].store = true;

                            PipedDispenser dispenser = go.AddComponent <PipedDispenser>();
                            dispenser.elementFilter = new SimHashes[] { elementHash };
                            dispenser.AssignPort(outputPort);
                            dispenser.alwaysDispense     = true;
                            dispenser.SkipSetOperational = true;

                            PipedOptionalExhaust exhaust = go.AddComponent <PipedOptionalExhaust>();
                            exhaust.dispenser   = dispenser;
                            exhaust.elementHash = elementHash;
                            exhaust.elementTag  = elementHash.CreateTag();
                            exhaust.capacity    = item.creationRate * 5;

                            break;
                        }
                    }
                }
            }
            return(outputPort);
        }