Skip to content

Commit 8bd334f

Browse files
committed
Factor out [head]
1 parent 4aab8ac commit 8bd334f

4 files changed

Lines changed: 28 additions & 22 deletions

File tree

Content.Server/Radio/EntitySystems/HeadsetSystem.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,22 +57,22 @@ private void UpdateRadioChannels(EntityUid uid, HeadsetComponent headset, Encryp
5757
private void OnSpeak(EntityUid uid, WearingHeadsetComponent component, EntitySpokeEvent args)
5858
{
5959
#region Starlight
60-
bool loudMode = false;
61-
if(TryComp<HeadsetLoudModeComponent>(component.Headset, out var loudmode))
60+
HeadsetLoudModeComponent? loudComp = null;
61+
if(TryComp<HeadsetLoudModeComponent>(component.Headset, out var comp) && comp.Active)
6262
{
63-
loudMode = loudmode.Active;
63+
loudComp = comp;
6464
}
6565
#endregion Starlight
6666
if (args.Channel != null
6767
&& TryComp(component.Headset, out EncryptionKeyHolderComponent? keys)
6868
&& keys.Channels.Contains(args.Channel.ID))
6969
{
70-
_radio.SendRadioMessage(uid, args.Message, args.Channel, component.Headset, args.Language, loudMode: loudMode); // Starlight-edit: This literally never specified language??? bruh.
70+
_radio.SendRadioMessage(uid, args.Message, args.Channel, component.Headset, args.Language, loudComp: loudComp); // Starlight-edit: This literally never specified language??? bruh.
7171
args.Channel = null; // prevent duplicate messages from other listeners.
7272
}
7373
//Starlight begin
7474
if (args.UsingCustomChannel && args.CustomChannel is not null)
75-
_radio.SendCustomRadioMessage(uid, args.Message.Text, args.CustomChannel, component.Headset, args.Language, loudMode: loudMode); // Custom channel data is already confirmed to exist on this headset
75+
_radio.SendCustomRadioMessage(uid, args.Message.Text, args.CustomChannel, component.Headset, args.Language, loudComp: loudComp); // Custom channel data is already confirmed to exist on this headset
7676
//Starlight end
7777
}
7878

Content.Server/Radio/EntitySystems/RadioSystem.cs

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
using Content.Shared._Starlight.Language.Components;
3939
using Content.Shared.Ghost;
4040
using Content.Server._Starlight.TextToSpeech; //Starlight
41+
using Content.Shared._Starlight.Clothing;
4142

4243
namespace Content.Server.Radio.EntitySystems;
4344

@@ -118,9 +119,9 @@ public void SendRadioMessage(
118119
LanguagePrototype? language = null, // Starlight
119120
bool suppressTTS = false, // Starlight
120121
bool escapeMarkup = true,
121-
bool loudMode = false) // Starlight
122+
HeadsetLoudModeComponent? loudComp = null) // Starlight
122123
{
123-
SendRadioMessage(messageSource, message, _prototype.Index(channel), radioSource, escapeMarkup: escapeMarkup, language: language, suppressTTS: suppressTTS, loudMode: loudMode); // Starlight
124+
SendRadioMessage(messageSource, message, _prototype.Index(channel), radioSource, escapeMarkup: escapeMarkup, language: language, suppressTTS: suppressTTS, loudComp: loudComp); // Starlight
124125
}
125126

126127
/// <summary>
@@ -136,7 +137,7 @@ public void SendRadioMessage(
136137
LanguagePrototype? language = null, // Starlight
137138
bool suppressTTS = false, // Starlight
138139
bool escapeMarkup = true,
139-
bool loudMode = false) // Starlight
140+
HeadsetLoudModeComponent? loudComp = null) // Starlight
140141
{
141142
// Starlight - start
142143
if (channel.AutoTranslate is not null)
@@ -184,18 +185,18 @@ public void SendRadioMessage(
184185

185186
_chime.TryGetSenderHeadsetChime(messageSource, out var chime);
186187

187-
var wrappedMessage = WrapRadioMessage(messageSource, channel, selectedName, content, language, false, loudMode); // Starlight
188+
var wrappedMessage = WrapRadioMessage(messageSource, channel, selectedName, content, language, false, loudComp); // Starlight
188189

189190
// most radios are relayed to chat, so lets parse the chat message beforehand
190191

191192
var msg = new ChatMessage(ChatChannel.Radio, content, wrappedMessage, NetEntity.Invalid, null); // Starlight
192193

193194
var obfuscated = _language.ObfuscateSpeech(content, language);
194-
var obfuscatedWrapped = WrapRadioMessage(messageSource, channel, selectedName, obfuscated, language, true, loudMode);
195+
var obfuscatedWrapped = WrapRadioMessage(messageSource, channel, selectedName, obfuscated, language, true, loudComp);
195196
var notUdsMsg = new ChatMessage(ChatChannel.Radio, obfuscated, obfuscatedWrapped, NetEntity.Invalid, null) { Chime = chime, };
196197
var ev = new RadioReceiveEvent(messageSource, channel, msg, notUdsMsg, language, radioSource, []);
197198

198-
var ghostwrappedMessage = WrapRadioMessage(messageSource, channel, name, content, language, false, loudMode);
199+
var ghostwrappedMessage = WrapRadioMessage(messageSource, channel, name, content, language, false, loudComp);
199200
var ghostmsg = new ChatMessage(ChatChannel.Radio, content, ghostwrappedMessage, NetEntity.Invalid, null);
200201
var ghostev = new RadioReceiveEvent(messageSource, channel, ghostmsg, notUdsMsg, language, radioSource, []);
201202
// Starlight - End
@@ -303,7 +304,7 @@ public void SendCustomRadioMessage(
303304
EntityUid radioSource,
304305
LanguagePrototype? language = null,
305306
bool escapeMarkup = true,
306-
bool loudMode = false)
307+
HeadsetLoudModeComponent? loudComp = null)
307308
{
308309
if (language == null)
309310
language = _language.GetLanguage(messageSource);
@@ -338,12 +339,12 @@ public void SendCustomRadioMessage(
338339

339340
_chime.TryGetSenderHeadsetChime(messageSource, out var chime);
340341

341-
var wrappedMessage = WrapCustomRadioMessage(messageSource, channel, name, content, language, false, loudMode);
342+
var wrappedMessage = WrapCustomRadioMessage(messageSource, channel, name, content, language, false, loudComp);
342343

343344
var msg = new ChatMessage(ChatChannel.Radio, content, wrappedMessage, NetEntity.Invalid, null);
344345

345346
var obfuscated = _language.ObfuscateSpeech(content, language);
346-
var obfuscatedWrapped = WrapCustomRadioMessage(messageSource, channel, name, obfuscated, language, true, loudMode);
347+
var obfuscatedWrapped = WrapCustomRadioMessage(messageSource, channel, name, obfuscated, language, true, loudComp);
347348
var notUdsMsg = new ChatMessage(ChatChannel.Radio, obfuscated, obfuscatedWrapped, NetEntity.Invalid, null) { Chime = chime, };
348349
var ev = new RadioReceiveEvent(messageSource, null, msg, notUdsMsg, language, radioSource, []);
349350

@@ -450,7 +451,7 @@ private string WrapRadioMessage(
450451
string message,
451452
LanguagePrototype language,
452453
bool obfuscated,
453-
bool loudMode = false) // Starlight
454+
HeadsetLoudModeComponent? loudComp = null) // Starlight
454455
{
455456
// TODO: code duplication with ChatSystem.WrapMessage
456457
var speech = _chat.GetSpeechVerb(source, message);
@@ -480,11 +481,11 @@ private string WrapRadioMessage(
480481
if (speech.ID == "DefaultExclamationStrong")
481482
isYelling = true;
482483

483-
return Loc.GetString(loudMode ? "chat-radio-message-wrap-command" : speech.Bold ? "chat-radio-message-wrap-bold" : "chat-radio-message-wrap", // starlight edit: loud mode
484+
return Loc.GetString(speech.Bold ? "chat-radio-message-wrap-bold" : "chat-radio-message-wrap",
484485
("color", channel.Color),
485486
("languageColor", languageColor),
486487
("fontType", fonttype),
487-
("fontSize", isYelling ? speech.FontSize : language.Speech.FontSize ?? speech.FontSize),
488+
("fontSize", loudComp is not null ? loudComp.FontSize + speech.FontSize : isYelling ? speech.FontSize : language.Speech.FontSize ?? speech.FontSize), // starlight edit: loud mode
488489
("verb", Loc.GetString(verbId)),
489490
("channel", $"\\[{channel.LocalizedName}\\]"),
490491
("name", namestring),
@@ -498,7 +499,7 @@ private string WrapCustomRadioMessage(
498499
string message,
499500
LanguagePrototype language,
500501
bool obfuscated,
501-
bool loudMode = false
502+
HeadsetLoudModeComponent? loudComp = null
502503
)
503504
{
504505
// TODO: code duplication with ChatSystem.WrapMessage
@@ -522,11 +523,11 @@ private string WrapCustomRadioMessage(
522523
if (speech.ID == "DefaultExclamationStrong")
523524
isYelling = true;
524525

525-
return Loc.GetString(loudMode ? "chat-radio-message-wrap-command" : speech.Bold ? "chat-radio-message-wrap-bold" : "chat-radio-message-wrap",
526+
return Loc.GetString(speech.Bold ? "chat-radio-message-wrap-bold" : "chat-radio-message-wrap",
526527
("color", channel.Color),
527528
("languageColor", languageColor),
528529
("fontType", fonttype),
529-
("fontSize", isYelling ? speech.FontSize : language.Speech.FontSize ?? speech.FontSize),
530+
("fontSize", loudComp is not null ? loudComp.FontSize + speech.FontSize : isYelling ? speech.FontSize : language.Speech.FontSize ?? speech.FontSize),
530531
("verb", Loc.GetString(_random.Pick(speech.SpeechVerbStrings))),
531532
("channel", $"\\[{channel.LocalizedName}\\]"),
532533
("name", namestring),

Content.Shared/_Starlight/Clothing/HeadsetLoudModeComponent.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,11 @@ public sealed partial class HeadsetLoudModeComponent : Component
88
{
99
[DataField, AutoNetworkedField]
1010
public bool Active;
11+
12+
/// <summary>
13+
/// The font size to add to the radio message when loud mode is active. (Keep this low, as it can break the chatbox if it's too high.)
14+
/// </summary>
15+
16+
[DataField, AutoNetworkedField]
17+
public int FontSize = 4;
1118
}

Resources/Locale/en-US/headset/headset-component.ftl

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ chat-radio-message-wrap = [color={$color}]{$channel} [bold]{$name}[/bold] {$verb
55
66
# Starlight-edit: Languages
77
chat-radio-message-wrap-bold = [color={$color}]{$channel} [bold]{$name}[/bold] {$verb}, "[/color][font="{$fontType}" size={$fontSize}][color={$languageColor}][bold]{$message}[/bold][/font][/color][color={$color}]"[/color]
8-
# Starlight-edit: command
9-
chat-radio-message-wrap-command = [color={$color}]{$channel} [bold]{$name}[/bold] {$verb}, "[/color][font="{$fontType}" size={$fontSize}][color={$languageColor}][head=2]{$message}[/head][/font][/color][color={$color}]"[/color]
108
119
# Starlight-edit: inactive/active
1210
headset-loud-mode-examine-active = The headset's loudmode speaker is [color=green]ACTIVE[/color].

0 commit comments

Comments
 (0)