Фикс TTS радио для боргов (#1846)

This commit is contained in:
Kot 2025-04-18 05:04:37 +04:00 committed by GitHub
parent ddcd54d8e0
commit 1cbba05078
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 5 additions and 12 deletions

View file

@ -100,17 +100,8 @@ public sealed class HeadsetSystem : SharedHeadsetSystem
private void OnHeadsetReceive(EntityUid uid, HeadsetComponent component, ref RadioReceiveEvent args)
{
// Sunrise-TTS-Start
var actorUid = Transform(uid).ParentUid;
if (TryComp(Transform(uid).ParentUid, out ActorComponent? actor))
{
_netMan.ServerSendMessage(args.ChatMsg, actor.PlayerSession.Channel);
if (actorUid != args.MessageSource && TryComp(args.MessageSource, out TTSComponent? _))
{
args.Receivers.Add(actorUid);
}
}
// Sunrise-TTS-End
}
private void OnEmpPulse(EntityUid uid, HeadsetComponent component, ref EmpPulseEvent args)

View file

@ -142,7 +142,7 @@ public sealed class RadioSystem : EntitySystem
NetEntity.Invalid,
null);
var chatMsg = new MsgChatMessage { Message = chat };
var ev = new RadioReceiveEvent(FormattedMessage.RemoveMarkupPermissive(message), messageSource, channel, radioSource, chatMsg, []); // Sunrise-TTS
var ev = new RadioReceiveEvent(FormattedMessage.RemoveMarkupPermissive(message), messageSource, channel, radioSource, chatMsg);
var sendAttemptEv = new RadioSendAttemptEvent(channel, radioSource);
RaiseLocalEvent(ref sendAttemptEv);
@ -153,6 +153,7 @@ public sealed class RadioSystem : EntitySystem
var hasActiveServer = HasActiveServer(sourceMapId, channel.ID);
var sourceServerExempt = _exemptQuery.HasComp(radioSource);
var receivers = new List<EntityUid>(); // Sunrise-TTS
var radioQuery = EntityQueryEnumerator<ActiveRadioComponent, TransformComponent>();
while (canSend && radioQuery.MoveNext(out var receiver, out var radio, out var transform))
{
@ -180,9 +181,10 @@ public sealed class RadioSystem : EntitySystem
// send the message
RaiseLocalEvent(receiver, ref ev);
receivers.Add(receiver); // Sunrise-TTS
}
RaiseLocalEvent(new RadioSpokeEvent(messageSource, message, ev.Receivers.ToArray())); // Sunrise-TTS
RaiseLocalEvent(new RadioSpokeEvent(messageSource, message, receivers.ToArray())); // Sunrise-TTS
if (name != Name(messageSource))
_adminLogger.Add(LogType.Chat, LogImpact.Low, $"Radio message from {ToPrettyString(messageSource):user} as {name} on {channel.LocalizedName}: {message}");

View file

@ -4,7 +4,7 @@ using Content.Shared.Radio;
namespace Content.Server.Radio;
[ByRefEvent]
public readonly record struct RadioReceiveEvent(string Message, EntityUid MessageSource, RadioChannelPrototype Channel, EntityUid RadioSource, MsgChatMessage ChatMsg, List<EntityUid> Receivers); // Sunrise-TTS
public readonly record struct RadioReceiveEvent(string Message, EntityUid MessageSource, RadioChannelPrototype Channel, EntityUid RadioSource, MsgChatMessage ChatMsg);
/// <summary>
/// Use this event to cancel sending message per receiver