Fix literally every single activatable UI bug (#27401)

* Fix all activatable bugs

Apparently this was a load-bearing nullable enum.

* build
This commit is contained in:
metalgearsloth
2024-04-28 02:32:57 +10:00
committed by GitHub
parent 8a59e9e1f8
commit 74041cf66f
3 changed files with 6 additions and 5 deletions

View File

@@ -8,7 +8,7 @@ namespace Content.Shared.UserInterface
public sealed partial class ActivatableUIComponent : Component
{
[DataField(required: true, customTypeSerializer: typeof(EnumSerializer))]
public Enum Key { get; set; } = default!;
public Enum? Key { get; set; } = default!;
[ViewVariables(VVAccess.ReadWrite)]
[DataField]

View File

@@ -21,7 +21,8 @@ public sealed partial class ActivatableUISystem
_cell.SetPowerCellDrawEnabled(uid, false);
if (HasComp<ActivatableUIRequiresPowerCellComponent>(uid) &&
TryComp<ActivatableUIComponent>(uid, out var activatable))
TryComp<ActivatableUIComponent>(uid, out var activatable) &&
activatable.Key != null)
{
_uiSystem.CloseUi(uid, activatable.Key);
}
@@ -54,7 +55,7 @@ public sealed partial class ActivatableUISystem
/// </summary>
public void CheckUsage(EntityUid uid, ActivatableUIComponent? active = null, ActivatableUIRequiresPowerCellComponent? component = null, PowerCellDrawComponent? draw = null)
{
if (!Resolve(uid, ref component, ref draw, ref active, false))
if (!Resolve(uid, ref component, ref draw, ref active, false) || active.Key == null)
return;
if (_cell.HasActivatableCharge(uid))

View File

@@ -136,7 +136,7 @@ public sealed partial class ActivatableUISystem : EntitySystem
private bool InteractUI(EntityUid user, EntityUid uiEntity, ActivatableUIComponent aui)
{
if (!_uiSystem.HasUi(uiEntity, aui.Key))
if (aui.Key == null || !_uiSystem.HasUi(uiEntity, aui.Key))
return false;
if (_uiSystem.IsUiOpen(uiEntity, aui.Key, user))
@@ -205,7 +205,7 @@ public sealed partial class ActivatableUISystem : EntitySystem
public void CloseAll(EntityUid uid, ActivatableUIComponent? aui = null)
{
if (!Resolve(uid, ref aui, false))
if (!Resolve(uid, ref aui, false) || aui.Key == null)
return;
_uiSystem.CloseUi(uid, aui.Key);