global radio toggle for observers (#22137)

This commit is contained in:
Nemanja
2023-12-04 18:13:45 -05:00
committed by GitHub
parent e1c841954a
commit f99b29fbb1
3 changed files with 14 additions and 15 deletions

View File

@@ -15,6 +15,13 @@ public sealed partial class ActiveRadioComponent : Component
[DataField("channels", customTypeSerializer: typeof(PrototypeIdHashSetSerializer<RadioChannelPrototype>))]
public HashSet<string> Channels = new();
/// <summary>
/// A toggle for globally receiving all radio channels.
/// Overrides <see cref="Channels"/>
/// </summary>
[DataField, ViewVariables(VVAccess.ReadWrite)]
public bool ReceiveAllChannels;
/// <summary>
/// If this radio can hear all messages on all maps
/// </summary>

View File

@@ -103,8 +103,12 @@ public sealed class RadioSystem : EntitySystem
var radioQuery = EntityQueryEnumerator<ActiveRadioComponent, TransformComponent>();
while (canSend && radioQuery.MoveNext(out var receiver, out var radio, out var transform))
{
if (!radio.Channels.Contains(channel.ID) || (TryComp<IntercomComponent>(receiver, out var intercom) && !intercom.SupportedChannels.Contains(channel.ID)))
continue;
if (!radio.ReceiveAllChannels)
{
if (!radio.Channels.Contains(channel.ID) || (TryComp<IntercomComponent>(receiver, out var intercom) &&
!intercom.SupportedChannels.Contains(channel.ID)))
continue;
}
if (!channel.LongRange && transform.MapID != sourceMapId && !radio.GlobalReceive)
continue;

View File

@@ -39,19 +39,7 @@
- type: MovementIgnoreGravity
- type: IntrinsicRadioReceiver
- type: ActiveRadio
channels:
- Binary
- Common
- Command
- CentCom
- Engineering
- Medical
- Science
- Security
- Service
- Supply
- Syndicate
- Freelance
receiveAllChannels: true
globalReceive: true
- type: Physics
bodyType: KinematicController