示例#1
0
        public Initializer()
        {
            // move radar blocks to radar resource group

            // first make sure radar group exists. If it does not, radar will stay in its original group.
            MyStringHash radar = MyStringHash.GetOrCompute("Radar");

            foreach (MyDefinitionBase radarGroupDefn in MyDefinitionManager.Static.GetAllDefinitions())
            {
                if (radarGroupDefn is MyResourceDistributionGroupDefinition && radarGroupDefn.Id.SubtypeId == radar)
                {
                    // find each radar block and move it to radar group
                    foreach (MyDefinitionBase radarBlockDefn in MyDefinitionManager.Static.GetAllDefinitions())
                    {
                        if (radarBlockDefn is MyCubeBlockDefinition &&
                            radarBlockDefn.Id.SubtypeName.ToLower().Contains("radar"))                             // RadarEquipment.IsRadarOrJammer
                        {
                            MyBeaconDefinition beaconDefn = radarBlockDefn as MyBeaconDefinition;
                            if (beaconDefn != null)
                            {
                                beaconDefn.ResourceSinkGroup = radar.ToString();
                                continue;
                            }
                            MyLaserAntennaDefinition lasAntDefn = radarBlockDefn as MyLaserAntennaDefinition;
                            if (lasAntDefn != null)
                            {
                                lasAntDefn.ResourceSinkGroup = radar;
                                continue;
                            }
                            MyRadioAntennaDefinition radAntDefn = radarBlockDefn as MyRadioAntennaDefinition;
                            if (radAntDefn != null)
                            {
                                radAntDefn.ResourceSinkGroup = radar;
                                continue;
                            }

                            // stop trying to guess what the radar block is made of
                        }
                    }

                    break;
                }
            }
        }
示例#2
0
        public override void Init(MyObjectBuilder_CubeBlock objectBuilder, MyCubeGrid cubeGrid)
        {
            this.RadioBroadcaster = new MyRadioBroadcaster(100f);
            this.RadioReceiver    = new MyRadioReceiver();
            MyRadioAntennaDefinition blockDefinition = base.BlockDefinition as MyRadioAntennaDefinition;
            MyResourceSinkComponent  component       = new MyResourceSinkComponent(1);

            component.Init(blockDefinition.ResourceSinkGroup, 0.002f, new Func <float>(this.UpdatePowerInput));
            component.IsPoweredChanged += new Action(this.Receiver_IsPoweredChanged);
            base.ResourceSink           = component;
            base.Init(objectBuilder, cubeGrid);
            MyObjectBuilder_RadioAntenna antenna = (MyObjectBuilder_RadioAntenna)objectBuilder;

            this.RadioBroadcaster.BroadcastRadius = (antenna.BroadcastRadius <= 0f) ? (blockDefinition.MaxBroadcastRadius / 10f) : antenna.BroadcastRadius;
            this.HudText.Clear();
            if (antenna.HudText != null)
            {
                this.HudText.Append(antenna.HudText);
            }
            this.RadioBroadcaster.BroadcastRadius = MathHelper.Clamp(this.RadioBroadcaster.BroadcastRadius, 1f, blockDefinition.MaxBroadcastRadius);
            base.ResourceSink.Update();
            this.RadioBroadcaster.WantsToBeEnabled = antenna.EnableBroadcasting;
            this.m_showShipName.SetLocalValue(antenna.ShowShipName);
            if (Sync.IsServer)
            {
                this.m_attachedPB.Value         = antenna.AttachedPB;
                this.m_attachedPB.ValueChanged += delegate(SyncBase x) {
                    m_messageRequest -= new Action <MyRadioAntenna, string, MyTransmitTarget>(this.OnMessageRecieved);
                    if (this.m_attachedPB.Value != 0)
                    {
                        m_messageRequest += new Action <MyRadioAntenna, string, MyTransmitTarget>(this.OnMessageRecieved);
                    }
                };
            }
            this.m_ignoreOtherBroadcast.SetLocalValue(antenna.IgnoreOther);
            this.m_ignoreAlliedBroadcast.SetLocalValue(antenna.IgnoreAllied);
            base.ShowOnHUD                        = false;
            this.m_gizmoColor                     = new VRageMath.Vector4(0.2f, 0.2f, 0f, 0.5f);
            base.NeedsUpdate                     |= MyEntityUpdateEnum.BEFORE_NEXT_FRAME | MyEntityUpdateEnum.EACH_10TH_FRAME;
            this.m_radius.ValueChanged           += obj => this.ChangeRadius();
            this.EnableBroadcasting.ValueChanged += obj => this.ChangeEnableBroadcast();
            this.m_showShipName.ValueChanged     += obj => this.OnShowShipNameChanged();
        }