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; } } }
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(); }