mirror of
https://github.com/space-wizards/space-station-14.git
synced 2026-02-15 03:31:30 +01:00
* Commit * add the form post * dv * fixes * Change wording * Address review * wording change * Added some stuff * New format * bruh * thanks perry! * yes * More fixes! * typo * Add a command to show the list, improve the UI slightly, split up command names * Fix UI controller * Add better comment * Get rid of weird recursive thing * Cleanup * Work on moving feedback popups out of simulation * Move round end screen subscription to feedback ui controller * Finish moving feedback popups out of simulation * Fix _ as parameter * Clean up FeedbackPopupUIController * Clean up commands * Fix prototype yaml * Fix openfeedbackpopup command description * Update Resources/Locale/en-US/feedbackpopup/feedbackpopup.ftl Co-authored-by: Simon <63975668+Simyon264@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Simon <63975668+Simyon264@users.noreply.github.com> * Address reviews * Address reviews * Fix FeedbackPopupPrototype.cs using empty string instead of string.empty * Address some more of the reviews, style nano is still trolling sadly * Fix feedback popup styling * Fix PopupPrototype ID field not having a setter * Address reviews * Add label when no feedback entries are present Change link button to not show when no link is set --------- Co-authored-by: beck-thompson <beck314159@hotmail.com> Co-authored-by: SlamBamActionman <slambamactionman@gmail.com> Co-authored-by: Simon <63975668+Simyon264@users.noreply.github.com>
72 lines
1.9 KiB
C#
72 lines
1.9 KiB
C#
using Content.Shared.FeedbackSystem;
|
|
using Robust.Shared.Network;
|
|
using Robust.Shared.Prototypes;
|
|
|
|
namespace Content.Client.FeedbackPopup;
|
|
|
|
/// <inheritdoc />
|
|
public sealed class ClientFeedbackManager : SharedFeedbackManager
|
|
{
|
|
/// <summary>
|
|
/// A read-only set representing the currently displayed feedback popups.
|
|
/// </summary>
|
|
public IReadOnlySet<ProtoId<FeedbackPopupPrototype>> DisplayedPopups => _displayedPopups;
|
|
|
|
private readonly HashSet<ProtoId<FeedbackPopupPrototype>> _displayedPopups = [];
|
|
|
|
public override void Initialize()
|
|
{
|
|
base.Initialize();
|
|
NetManager.RegisterNetMessage<FeedbackPopupMessage>(ReceivedPopupMessage);
|
|
NetManager.RegisterNetMessage<OpenFeedbackPopupMessage>(_ => Open());
|
|
}
|
|
|
|
/// <summary>
|
|
/// Opens the feedback popup window.
|
|
/// </summary>
|
|
public void Open()
|
|
{
|
|
InvokeDisplayedPopupsChanged(true);
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
public override void Display(List<ProtoId<FeedbackPopupPrototype>>? prototypes)
|
|
{
|
|
if (prototypes == null || !NetManager.IsClient)
|
|
return;
|
|
|
|
var count = _displayedPopups.Count;
|
|
_displayedPopups.UnionWith(prototypes);
|
|
InvokeDisplayedPopupsChanged(_displayedPopups.Count > count);
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
public override void Remove(List<ProtoId<FeedbackPopupPrototype>>? prototypes)
|
|
{
|
|
if (!NetManager.IsClient)
|
|
return;
|
|
|
|
if (prototypes == null)
|
|
{
|
|
_displayedPopups.Clear();
|
|
}
|
|
else
|
|
{
|
|
_displayedPopups.ExceptWith(prototypes);
|
|
}
|
|
|
|
InvokeDisplayedPopupsChanged(false);
|
|
}
|
|
|
|
private void ReceivedPopupMessage(FeedbackPopupMessage message)
|
|
{
|
|
if (message.Remove)
|
|
{
|
|
Remove(message.FeedbackPrototypes);
|
|
return;
|
|
}
|
|
|
|
Display(message.FeedbackPrototypes);
|
|
}
|
|
}
|