From 606c5a8c8b1005de62c33d5de888f67a8eae0ccc Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Fri, 2 Feb 2024 15:25:58 +1100 Subject: [PATCH] Make popups nullable (#24802) This standardises it with audio and whatever. Me when I sprinkle nullchecks everywhere. Was 50/50 on making new non-nullable methods but figured it would bloat too hard and you can't access strings by .Value anyway. --- Content.Client/Popups/PopupSystem.cs | 48 ++++++++++--------- Content.Server/Popups/PopupSystem.cs | 55 +++++++++++++++++----- Content.Shared/Popups/SharedPopupSystem.cs | 24 +++++----- 3 files changed, 81 insertions(+), 46 deletions(-) diff --git a/Content.Client/Popups/PopupSystem.cs b/Content.Client/Popups/PopupSystem.cs index d68272a107..d9e66c79fa 100644 --- a/Content.Client/Popups/PopupSystem.cs +++ b/Content.Client/Popups/PopupSystem.cs @@ -55,8 +55,11 @@ namespace Content.Client.Popups .RemoveOverlay(); } - private void PopupMessage(string message, PopupType type, EntityCoordinates coordinates, EntityUid? entity, bool recordReplay) + private void PopupMessage(string? message, PopupType type, EntityCoordinates coordinates, EntityUid? entity, bool recordReplay) { + if (message == null) + return; + if (recordReplay && _replayRecording.IsRecording) { if (entity != null) @@ -75,25 +78,28 @@ namespace Content.Client.Popups } #region Abstract Method Implementations - public override void PopupCoordinates(string message, EntityCoordinates coordinates, PopupType type = PopupType.Small) + public override void PopupCoordinates(string? message, EntityCoordinates coordinates, PopupType type = PopupType.Small) { PopupMessage(message, type, coordinates, null, true); } - public override void PopupCoordinates(string message, EntityCoordinates coordinates, ICommonSession recipient, PopupType type = PopupType.Small) + public override void PopupCoordinates(string? message, EntityCoordinates coordinates, ICommonSession recipient, PopupType type = PopupType.Small) { - if (_playerManager.LocalPlayer?.Session == recipient) + if (_playerManager.LocalSession == recipient) PopupMessage(message, type, coordinates, null, true); } - public override void PopupCoordinates(string message, EntityCoordinates coordinates, EntityUid recipient, PopupType type = PopupType.Small) + public override void PopupCoordinates(string? message, EntityCoordinates coordinates, EntityUid recipient, PopupType type = PopupType.Small) { - if (_playerManager.LocalPlayer?.ControlledEntity == recipient) + if (_playerManager.LocalEntity == recipient) PopupMessage(message, type, coordinates, null, true); } - private void PopupCursorInternal(string message, PopupType type, bool recordReplay) + private void PopupCursorInternal(string? message, PopupType type, bool recordReplay) { + if (message == null) + return; + if (recordReplay && _replayRecording.IsRecording) _replayRecording.RecordClientMessage(new PopupCursorEvent(message, type)); @@ -106,53 +112,53 @@ namespace Content.Client.Popups _aliveCursorLabels.Add(label); } - public override void PopupCursor(string message, PopupType type = PopupType.Small) + public override void PopupCursor(string? message, PopupType type = PopupType.Small) => PopupCursorInternal(message, type, true); - public override void PopupCursor(string message, ICommonSession recipient, PopupType type = PopupType.Small) + public override void PopupCursor(string? message, ICommonSession recipient, PopupType type = PopupType.Small) { - if (_playerManager.LocalPlayer?.Session == recipient) + if (_playerManager.LocalSession == recipient) PopupCursor(message, type); } - public override void PopupCursor(string message, EntityUid recipient, PopupType type = PopupType.Small) + public override void PopupCursor(string? message, EntityUid recipient, PopupType type = PopupType.Small) { - if (_playerManager.LocalPlayer?.ControlledEntity == recipient) + if (_playerManager.LocalEntity == recipient) PopupCursor(message, type); } - public override void PopupCoordinates(string message, EntityCoordinates coordinates, Filter filter, bool replayRecord, PopupType type = PopupType.Small) + public override void PopupCoordinates(string? message, EntityCoordinates coordinates, Filter filter, bool replayRecord, PopupType type = PopupType.Small) { PopupCoordinates(message, coordinates, type); } - public override void PopupEntity(string message, EntityUid uid, EntityUid recipient, PopupType type = PopupType.Small) + public override void PopupEntity(string? message, EntityUid uid, EntityUid recipient, PopupType type = PopupType.Small) { - if (_playerManager.LocalPlayer?.ControlledEntity == recipient) + if (_playerManager.LocalEntity == recipient) PopupEntity(message, uid, type); } - public override void PopupEntity(string message, EntityUid uid, ICommonSession recipient, PopupType type = PopupType.Small) + public override void PopupEntity(string? message, EntityUid uid, ICommonSession recipient, PopupType type = PopupType.Small) { - if (_playerManager.LocalPlayer?.Session == recipient) + if (_playerManager.LocalSession == recipient) PopupEntity(message, uid, type); } - public override void PopupEntity(string message, EntityUid uid, Filter filter, bool recordReplay, PopupType type=PopupType.Small) + public override void PopupEntity(string? message, EntityUid uid, Filter filter, bool recordReplay, PopupType type=PopupType.Small) { - if (!filter.Recipients.Contains(_playerManager.LocalPlayer?.Session)) + if (!filter.Recipients.Contains(_playerManager.LocalSession)) return; PopupEntity(message, uid, type); } - public override void PopupClient(string message, EntityUid uid, EntityUid recipient, PopupType type = PopupType.Small) + public override void PopupClient(string? message, EntityUid uid, EntityUid recipient, PopupType type = PopupType.Small) { if (_timing.IsFirstTimePredicted) PopupEntity(message, uid, recipient, type); } - public override void PopupEntity(string message, EntityUid uid, PopupType type = PopupType.Small) + public override void PopupEntity(string? message, EntityUid uid, PopupType type = PopupType.Small) { if (TryComp(uid, out TransformComponent? transform)) PopupMessage(message, type, transform.Coordinates, uid, true); diff --git a/Content.Server/Popups/PopupSystem.cs b/Content.Server/Popups/PopupSystem.cs index 61ccaf4423..4d9a9f3bf5 100644 --- a/Content.Server/Popups/PopupSystem.cs +++ b/Content.Server/Popups/PopupSystem.cs @@ -13,70 +13,99 @@ namespace Content.Server.Popups [Dependency] private readonly IConfigurationManager _cfg = default!; [Dependency] private readonly TransformSystem _xform = default!; - public override void PopupCursor(string message, PopupType type = PopupType.Small) + public override void PopupCursor(string? message, PopupType type = PopupType.Small) { // No local user. } - public override void PopupCursor(string message, ICommonSession recipient, PopupType type=PopupType.Small) + public override void PopupCursor(string? message, ICommonSession recipient, PopupType type=PopupType.Small) { + if (message == null) + return; + RaiseNetworkEvent(new PopupCursorEvent(message, type), recipient); } - public override void PopupCursor(string message, EntityUid recipient, PopupType type = PopupType.Small) + public override void PopupCursor(string? message, EntityUid recipient, PopupType type = PopupType.Small) { + if (message == null) + return; + if (TryComp(recipient, out ActorComponent? actor)) RaiseNetworkEvent(new PopupCursorEvent(message, type), actor.PlayerSession); } - public override void PopupCoordinates(string message, EntityCoordinates coordinates, Filter filter, bool replayRecord, PopupType type = PopupType.Small) + public override void PopupCoordinates(string? message, EntityCoordinates coordinates, Filter filter, bool replayRecord, PopupType type = PopupType.Small) { + if (message == null) + return; + RaiseNetworkEvent(new PopupCoordinatesEvent(message, type, GetNetCoordinates(coordinates)), filter, replayRecord); } - public override void PopupCoordinates(string message, EntityCoordinates coordinates, PopupType type = PopupType.Small) + public override void PopupCoordinates(string? message, EntityCoordinates coordinates, PopupType type = PopupType.Small) { + if (message == null) + return; + var mapPos = coordinates.ToMap(EntityManager, _xform); var filter = Filter.Empty().AddPlayersByPvs(mapPos, entManager: EntityManager, playerMan: _player, cfgMan: _cfg); RaiseNetworkEvent(new PopupCoordinatesEvent(message, type, GetNetCoordinates(coordinates)), filter); } - public override void PopupCoordinates(string message, EntityCoordinates coordinates, ICommonSession recipient, PopupType type = PopupType.Small) + public override void PopupCoordinates(string? message, EntityCoordinates coordinates, ICommonSession recipient, PopupType type = PopupType.Small) { + if (message == null) + return; + RaiseNetworkEvent(new PopupCoordinatesEvent(message, type, GetNetCoordinates(coordinates)), recipient); } - public override void PopupCoordinates(string message, EntityCoordinates coordinates, EntityUid recipient, PopupType type = PopupType.Small) + public override void PopupCoordinates(string? message, EntityCoordinates coordinates, EntityUid recipient, PopupType type = PopupType.Small) { + if (message == null) + return; + if (TryComp(recipient, out ActorComponent? actor)) RaiseNetworkEvent(new PopupCoordinatesEvent(message, type, GetNetCoordinates(coordinates)), actor.PlayerSession); } - public override void PopupEntity(string message, EntityUid uid, PopupType type = PopupType.Small) + public override void PopupEntity(string? message, EntityUid uid, PopupType type = PopupType.Small) { + if (message == null) + return; + var filter = Filter.Empty().AddPlayersByPvs(uid, entityManager:EntityManager, playerMan: _player, cfgMan: _cfg); RaiseNetworkEvent(new PopupEntityEvent(message, type, GetNetEntity(uid)), filter); } - public override void PopupEntity(string message, EntityUid uid, EntityUid recipient, PopupType type=PopupType.Small) + public override void PopupEntity(string? message, EntityUid uid, EntityUid recipient, PopupType type=PopupType.Small) { + if (message == null) + return; + if (TryComp(recipient, out ActorComponent? actor)) RaiseNetworkEvent(new PopupEntityEvent(message, type, GetNetEntity(uid)), actor.PlayerSession); } - public override void PopupClient(string message, EntityUid uid, EntityUid recipient, PopupType type = PopupType.Small) + public override void PopupClient(string? message, EntityUid uid, EntityUid recipient, PopupType type = PopupType.Small) { // do nothing duh its for client only } - - public override void PopupEntity(string message, EntityUid uid, ICommonSession recipient, PopupType type = PopupType.Small) + public override void PopupEntity(string? message, EntityUid uid, ICommonSession recipient, PopupType type = PopupType.Small) { + if (message == null) + return; + RaiseNetworkEvent(new PopupEntityEvent(message, type, GetNetEntity(uid)), recipient); } - public override void PopupEntity(string message, EntityUid uid, Filter filter, bool recordReplay, PopupType type = PopupType.Small) + public override void PopupEntity(string? message, EntityUid uid, Filter filter, bool recordReplay, PopupType type = PopupType.Small) { + if (message == null) + return; + RaiseNetworkEvent(new PopupEntityEvent(message, type, GetNetEntity(uid)), filter, recordReplay); } } diff --git a/Content.Shared/Popups/SharedPopupSystem.cs b/Content.Shared/Popups/SharedPopupSystem.cs index e4565b90e8..f8e07e5df5 100644 --- a/Content.Shared/Popups/SharedPopupSystem.cs +++ b/Content.Shared/Popups/SharedPopupSystem.cs @@ -14,7 +14,7 @@ namespace Content.Shared.Popups /// /// The message to display. /// Used to customize how this popup should appear visually. - public abstract void PopupCursor(string message, PopupType type = PopupType.Small); + public abstract void PopupCursor(string? message, PopupType type = PopupType.Small); /// /// Shows a popup at a users' cursor. @@ -22,7 +22,7 @@ namespace Content.Shared.Popups /// The message to display. /// Client that will see this popup. /// Used to customize how this popup should appear visually. - public abstract void PopupCursor(string message, ICommonSession recipient, PopupType type = PopupType.Small); + public abstract void PopupCursor(string? message, ICommonSession recipient, PopupType type = PopupType.Small); /// /// Shows a popup at a users' cursor. @@ -30,7 +30,7 @@ namespace Content.Shared.Popups /// The message to display. /// Client that will see this popup. /// Used to customize how this popup should appear visually. - public abstract void PopupCursor(string message, EntityUid recipient, PopupType type = PopupType.Small); + public abstract void PopupCursor(string? message, EntityUid recipient, PopupType type = PopupType.Small); /// /// Shows a popup at a world location to every entity in PVS range. @@ -38,7 +38,7 @@ namespace Content.Shared.Popups /// The message to display. /// The coordinates where to display the message. /// Used to customize how this popup should appear visually. - public abstract void PopupCoordinates(string message, EntityCoordinates coordinates, PopupType type = PopupType.Small); + public abstract void PopupCoordinates(string? message, EntityCoordinates coordinates, PopupType type = PopupType.Small); /// /// Filtered variant of , which should only be used @@ -46,17 +46,17 @@ namespace Content.Shared.Popups /// /// Filter for the players that will see the popup. /// If true, this pop-up will be considered as a globally visible pop-up that gets shown during replays. - public abstract void PopupCoordinates(string message, EntityCoordinates coordinates, Filter filter, bool recordReplay, PopupType type = PopupType.Small); + public abstract void PopupCoordinates(string? message, EntityCoordinates coordinates, Filter filter, bool recordReplay, PopupType type = PopupType.Small); /// /// Variant of that sends a pop-up to the player attached to some entity. /// - public abstract void PopupCoordinates(string message, EntityCoordinates coordinates, EntityUid recipient, PopupType type = PopupType.Small); + public abstract void PopupCoordinates(string? message, EntityCoordinates coordinates, EntityUid recipient, PopupType type = PopupType.Small); /// /// Variant of that sends a pop-up to a specific player. /// - public abstract void PopupCoordinates(string message, EntityCoordinates coordinates, ICommonSession recipient, PopupType type = PopupType.Small); + public abstract void PopupCoordinates(string? message, EntityCoordinates coordinates, ICommonSession recipient, PopupType type = PopupType.Small); /// /// Shows a popup above an entity for every player in pvs range. @@ -64,29 +64,29 @@ namespace Content.Shared.Popups /// The message to display. /// The UID of the entity. /// Used to customize how this popup should appear visually. - public abstract void PopupEntity(string message, EntityUid uid, PopupType type=PopupType.Small); + public abstract void PopupEntity(string? message, EntityUid uid, PopupType type=PopupType.Small); /// /// Variant of that shows the popup only to some specific client. /// - public abstract void PopupEntity(string message, EntityUid uid, EntityUid recipient, PopupType type = PopupType.Small); + public abstract void PopupEntity(string? message, EntityUid uid, EntityUid recipient, PopupType type = PopupType.Small); /// /// Variant of that shows the popup only to some specific client. /// - public abstract void PopupEntity(string message, EntityUid uid, ICommonSession recipient, PopupType type = PopupType.Small); + public abstract void PopupEntity(string? message, EntityUid uid, ICommonSession recipient, PopupType type = PopupType.Small); /// /// Filtered variant of , which should only be used /// if the filtering has to be more specific than simply PVS range based. /// - public abstract void PopupEntity(string message, EntityUid uid, Filter filter, bool recordReplay, PopupType type = PopupType.Small); + public abstract void PopupEntity(string? message, EntityUid uid, Filter filter, bool recordReplay, PopupType type = PopupType.Small); /// /// Variant of that only runs on the client, outside of prediction. /// Useful for shared code that is always ran by both sides to avoid duplicate popups. /// - public abstract void PopupClient(string message, EntityUid uid, EntityUid recipient, PopupType type = PopupType.Small); + public abstract void PopupClient(string? message, EntityUid uid, EntityUid recipient, PopupType type = PopupType.Small); } ///