Ejemplo n.º 1
0
        public override void Init(MyObjectBuilder_CubeBlock objectBuilder, MyCubeGrid cubeGrid)
        {
            this.m_definition = base.BlockDefinition as MyOreDetectorDefinition;
            MyResourceSinkComponent component = new MyResourceSinkComponent(1);

            component.Init(this.m_definition.ResourceSinkGroup, 0.002f, delegate {
                if (!base.Enabled || !base.IsFunctional)
                {
                    return(0f);
                }
                return(base.ResourceSink.MaxRequiredInputByType(MyResourceDistributorComponent.ElectricityId));
            });
            base.ResourceSink = component;
            base.ResourceSink.IsPoweredChanged += new Action(this.Receiver_IsPoweredChanged);
            base.Init(objectBuilder, cubeGrid);
            MyObjectBuilder_OreDetector detector = objectBuilder as MyObjectBuilder_OreDetector;

            this.m_oreDetectorComponent.DetectionRadius        = (detector.DetectionRadius == 0f) ? MathHelper.Clamp(0.5f * this.m_definition.MaximumRange, 1f, this.m_definition.MaximumRange) : MathHelper.Clamp(detector.DetectionRadius, 1f, this.m_definition.MaximumRange);
            this.m_oreDetectorComponent.BroadcastUsingAntennas = detector.BroadcastUsingAntennas;
            this.m_broadcastUsingAntennas.SetLocalValue(this.m_oreDetectorComponent.BroadcastUsingAntennas);
            this.m_oreDetectorComponent.OnCheckControl = (MyOreDetectorComponent.CheckControlDelegate)Delegate.Combine(this.m_oreDetectorComponent.OnCheckControl, new MyOreDetectorComponent.CheckControlDelegate(this.OnCheckControl));
            base.ResourceSink.Update();
            base.SlimBlock.ComponentStack.IsFunctionalChanged += new Action(this.ComponentStack_IsFunctionalChanged);
            base.NeedsUpdate |= MyEntityUpdateEnum.EACH_100TH_FRAME;
            base.OnClose     += new Action <VRage.Game.Entity.MyEntity>(this.MyOreDetector_OnClose);
        }
Ejemplo n.º 2
0
        public override void Init(MyObjectBuilder_CubeBlock objectBuilder, MyCubeGrid cubeGrid)
        {
            base.Init(objectBuilder, cubeGrid);

            m_definition = BlockDefinition as MyOreDetectorDefinition;

            SyncObject = new MySyncOreDetector(this);

            var ob = objectBuilder as MyObjectBuilder_OreDetector;

            m_oreDetectorComponent.DetectionRadius = ob.DetectionRadius;
            if (m_oreDetectorComponent.DetectionRadius == 0)
            {
                m_oreDetectorComponent.DetectionRadius = m_definition.MaximumRange;
            }

            m_oreDetectorComponent.BroadcastUsingAntennas = ob.BroadcastUsingAntennas;

            m_oreDetectorComponent.OnCheckControl += OnCheckControl;

            SlimBlock.ComponentStack.IsFunctionalChanged += ComponentStack_IsFunctionalChanged;

            NeedsUpdate = MyEntityUpdateEnum.EACH_100TH_FRAME;

            PowerReceiver = new MyPowerReceiver(
                MyConsumerGroupEnum.Factory,
                false,
                MyEnergyConstants.MAX_REQUIRED_POWER_ORE_DETECTOR,
                () => (Enabled && IsFunctional) ? PowerReceiver.MaxRequiredInput : 0f);
            PowerReceiver.Update();
            PowerReceiver.IsPoweredChanged += Receiver_IsPoweredChanged;
            AddDebugRenderComponent(new Components.MyDebugRenderComponentDrawPowerReciever(PowerReceiver, this));
        }
Ejemplo n.º 3
0
        public override void Init(MyObjectBuilder_CubeBlock objectBuilder, MyCubeGrid cubeGrid)
        {
            m_definition = BlockDefinition as MyOreDetectorDefinition;

            var sinkComp = new MyResourceSinkComponent();

            sinkComp.Init(
                m_definition.ResourceSinkGroup,
                MyEnergyConstants.MAX_REQUIRED_POWER_ORE_DETECTOR,
                () => (Enabled && IsFunctional) ? ResourceSink.MaxRequiredInput : 0f);
            ResourceSink = sinkComp;

            ResourceSink.IsPoweredChanged += Receiver_IsPoweredChanged;

            base.Init(objectBuilder, cubeGrid);


            var ob = objectBuilder as MyObjectBuilder_OreDetector;

            m_oreDetectorComponent.DetectionRadius = ob.DetectionRadius;
            if (m_oreDetectorComponent.DetectionRadius == 0)
            {
                m_oreDetectorComponent.DetectionRadius = m_definition.MaximumRange;
            }

            m_oreDetectorComponent.BroadcastUsingAntennas = ob.BroadcastUsingAntennas;
            m_broadcastUsingAntennas.Value = m_oreDetectorComponent.BroadcastUsingAntennas;

            m_oreDetectorComponent.OnCheckControl += OnCheckControl;
            ResourceSink.Update();
            SlimBlock.ComponentStack.IsFunctionalChanged += ComponentStack_IsFunctionalChanged;

            NeedsUpdate |= MyEntityUpdateEnum.EACH_100TH_FRAME;

            AddDebugRenderComponent(new Components.MyDebugRenderComponentDrawPowerReciever(ResourceSink, this));
        }