mirror of
https://github.com/WWhiteDreamProject/wwdpublic.git
synced 2026-04-16 21:17:39 +03:00
<!-- This is a semi-strict format, you can add/remove sections as needed but the order/format should be kept the same Remove these comments before submitting --> # Description <!-- Explain this PR in as much detail as applicable Some example prompts to consider: How might this affect the game? The codebase? What might be some alternatives to this? How/Who does this benefit/hurt [the game/codebase]? --> Adds frequencies to handheld radios. Ports [this PR](https://github.com/new-frontiers-14/frontier-station-14/pull/1833) with changes.  --- # Changelog <!-- You can add an author after the `🆑` to change the name that appears in the changelog (ex: `🆑 Death`) Leaving it blank will default to your GitHub display name This includes all available types for the changelog --> 🆑 - add: Added handheld radio frequencies, accessible by pressing your "Use Item" key while holding one. --------- Co-authored-by: Whatstone <166147148+whatston3@users.noreply.github.com> (cherry picked from commit 19a350fc9ae0d958406b3d6018f71ab8af5447c4)
56 lines
1.8 KiB
C#
56 lines
1.8 KiB
C#
using Content.Client.UserInterface.Controls;
|
|
using Content.Shared._NC.Radio;
|
|
using Robust.Client.AutoGenerated;
|
|
using Robust.Client.UserInterface.Controls;
|
|
using Robust.Client.UserInterface.XAML;
|
|
using Robust.Shared.Prototypes;
|
|
|
|
namespace Content.Client._NC.Radio.UI;
|
|
// TODO: Fix silly ui update issues
|
|
[GenerateTypedNameReferences]
|
|
public sealed partial class HandheldRadioMenu : FancyWindow
|
|
{
|
|
|
|
public event Action<bool>? OnMicPressed;
|
|
public event Action<bool>? OnSpeakerPressed;
|
|
public event Action<string>? OnFrequencyChanged;
|
|
|
|
private string _lastFrequency = "1330";
|
|
|
|
public HandheldRadioMenu()
|
|
{
|
|
RobustXamlLoader.Load(this);
|
|
IoCManager.InjectDependencies(this);
|
|
|
|
MicButton.OnPressed += args => OnMicPressed?.Invoke(args.Button.Pressed);
|
|
SpeakerButton.OnPressed += args => OnSpeakerPressed?.Invoke(args.Button.Pressed);
|
|
|
|
FrequencyLineEdit.OnTextEntered += e => OnFrequencyChanged?.Invoke(e.Text);
|
|
FrequencyLineEdit.OnTextChanged += ValidateText;
|
|
FrequencyLineEdit.OnFocusExit += e => OnFrequencyChanged?.Invoke(e.Text);
|
|
}
|
|
|
|
private void ValidateText(LineEdit.LineEditEventArgs args)
|
|
{
|
|
if (!int.TryParse(args.Text, out int frequency))
|
|
{
|
|
FrequencyLineEdit.SetText(_lastFrequency);
|
|
return;
|
|
}
|
|
|
|
_lastFrequency = args.Text;
|
|
}
|
|
|
|
public void Update(HandheldRadioBoundUIState state)
|
|
{
|
|
if (state.MicEnabled != MicButton.Pressed)
|
|
MicButton.Pressed = state.MicEnabled;
|
|
|
|
if (state.SpeakerEnabled != SpeakerButton.Pressed)
|
|
SpeakerButton.Pressed = state.SpeakerEnabled;
|
|
|
|
if (state.Frequency.ToString() != FrequencyLineEdit.Text)
|
|
FrequencyLineEdit.Text = state.Frequency.ToString();
|
|
}
|
|
}
|