protected void doSetup(string powerPriority, float smallGridMW, float largeGridMW, params MyEntityUpdateEnum[] updateCycles)
        {
            NeedsUpdate        |= MyEntityUpdateEnum.EACH_10TH_FRAME;
            Entity.NeedsUpdate |= MyEntityUpdateEnum.EACH_10TH_FRAME;
            NeedsUpdate        |= MyEntityUpdateEnum.BEFORE_NEXT_FRAME;
            Entity.NeedsUpdate |= MyEntityUpdateEnum.BEFORE_NEXT_FRAME;

            if (updateCycles.Length == 0)
            {
                IO.log("WARNING: " + this + " has no update cycles set!");
            }

            foreach (MyEntityUpdateEnum e in updateCycles)
            {
                NeedsUpdate        |= e;
                Entity.NeedsUpdate |= e;
            }

            thisBlock = Container.Entity as IMyFunctionalBlock;
            thisGrid  = thisBlock.CubeGrid as IMyCubeGrid;

            //thisBlock.Enabled = false; //causes it to turn off every time you load the game
            //Sandbox.ModAPI.Ingame.TerminalBlockExtentions.ApplyAction(thisBlock, "OnOff_Off");

            energySink = new MyResourceSinkComponent(1);
            energySink.Init(MyStringHash.GetOrCompute(powerPriority), thisGrid.GridSizeEnum == MyCubeSize.Small ? smallGridMW : largeGridMW, calcRequiredPower, (MyCubeBlock)thisBlock);
            if (thisBlock.Components.Contains(typeof(MyResourceSinkComponent)))
            {
                IO.log("Power sinks already present in " + this + " #" + Entity.EntityId + ":");
                List <MyResourceSinkComponent> li = new List <MyResourceSinkComponent>();
                Dictionary <Type, MyComponentBase> .ValueCollection.Enumerator e = thisBlock.Components.GetEnumerator();
                while (e.MoveNext())
                {
                    if (e.Current is MyResourceSinkComponent)
                    {
                        MyResourceSinkComponent req = e.Current as MyResourceSinkComponent;
                        IO.log(">> " + req.GetType() + " needing " + req.MaxRequiredInput + ", of " + req.AcceptedResources.ToString());
                    }
                }
                thisBlock.Components.Remove <MyResourceSinkComponent>();
            }
            thisBlock.Components.Add(energySink);
            energySink.Update();

            thisBlock.IsWorkingChanged    += onWorkingChanged;
            thisBlock.AppendingCustomInfo += updateInfo;
            MyAPIGateway.TerminalControls.CustomControlGetter += filterControls;

            soundSource = new MultiSoundSource(thisBlock);

            IO.log("Loaded logic script " + this + " for block '" + thisBlock.CustomName + "' / '" + Entity.DisplayName + "' #" + Entity.EntityId + "; update rate = " + NeedsUpdate);
        }
Example #2
0
        protected void doSetup(string powerPriority, float maxPowerInMW, params MyEntityUpdateEnum[] updateCycles)
        {
            NeedsUpdate        |= MyEntityUpdateEnum.EACH_10TH_FRAME;
            Entity.NeedsUpdate |= MyEntityUpdateEnum.EACH_10TH_FRAME;
            NeedsUpdate        |= MyEntityUpdateEnum.BEFORE_NEXT_FRAME;
            Entity.NeedsUpdate |= MyEntityUpdateEnum.BEFORE_NEXT_FRAME;

            if (updateCycles.Length == 0)
            {
                IO.log("WARNING: " + this + " has no update cycles set!");
            }

            foreach (MyEntityUpdateEnum e in updateCycles)
            {
                NeedsUpdate        |= e;
                Entity.NeedsUpdate |= e;
            }

            thisBlock = Container.Entity as IMyFunctionalBlock;
            thisGrid  = thisBlock.CubeGrid as IMyCubeGrid;

            energySink = new MyResourceSinkComponent(1);
            energySink.Init(MyStringHash.GetOrCompute(powerPriority), maxPowerInMW, calcRequiredPower, (MyCubeBlock)thisBlock);
            if (thisBlock.Components.Contains(typeof(MyResourceSinkComponent)))
            {
                IO.log("Power sinks already present in " + this + " #" + Entity.EntityId + ":");
                List <MyResourceSinkComponent> li = new List <MyResourceSinkComponent>();
                Dictionary <Type, MyComponentBase> .ValueCollection.Enumerator e = thisBlock.Components.GetEnumerator();
                while (e.MoveNext())
                {
                    if (e.Current is MyResourceSinkComponent)
                    {
                        MyResourceSinkComponent req = e.Current as MyResourceSinkComponent;
                        IO.log(">> " + req.GetType() + " needing " + req.MaxRequiredInput + ", of " + req.AcceptedResources.ToString());
                    }
                }
                thisBlock.Components.Remove <MyResourceSinkComponent>();
            }
            thisBlock.Components.Add(energySink);
            energySink.Update();

            thisBlock.IsWorkingChanged    += onWorkingChanged;
            thisBlock.AppendingCustomInfo += updateInfo;

            soundSource = new MultiSoundSource(thisBlock);

            IO.log("Loaded logic script " + this + " for block '" + thisBlock.CustomName + "' / '" + Entity.DisplayName + "' #" + Entity.EntityId + "; update rate = " + NeedsUpdate);
        }