genericize ui fragments (#12810)

This commit is contained in:
Nemanja
2022-12-02 17:46:58 -05:00
committed by GitHub
parent d52cbdc18e
commit 64f57aceb2
8 changed files with 32 additions and 29 deletions

View File

@@ -1,4 +1,5 @@
using Content.Shared.CartridgeLoader; using Content.Client.UserInterface.Fragments;
using Content.Shared.CartridgeLoader;
using Robust.Client.GameObjects; using Robust.Client.GameObjects;
using Robust.Client.UserInterface; using Robust.Client.UserInterface;
@@ -10,7 +11,7 @@ public abstract class CartridgeLoaderBoundUserInterface : BoundUserInterface
[Dependency] private readonly IEntityManager? _entityManager = default!; [Dependency] private readonly IEntityManager? _entityManager = default!;
private EntityUid? _activeProgram; private EntityUid? _activeProgram;
private CartridgeUI? _activeCartridgeUI; private UIFragment? _activeCartridgeUI;
private Control? _activeUiFragment; private Control? _activeUiFragment;
protected CartridgeLoaderBoundUserInterface(ClientUserInterfaceComponent owner, Enum uiKey) : base(owner, uiKey) protected CartridgeLoaderBoundUserInterface(ClientUserInterfaceComponent owner, Enum uiKey) : base(owner, uiKey)
@@ -127,9 +128,9 @@ public abstract class CartridgeLoaderBoundUserInterface : BoundUserInterface
SendMessage(message); SendMessage(message);
} }
private CartridgeUI? RetrieveCartridgeUI(EntityUid? cartridgeUid) private UIFragment? RetrieveCartridgeUI(EntityUid? cartridgeUid)
{ {
var component = _entityManager?.GetComponentOrNull<CartridgeUiComponent>(cartridgeUid); var component = _entityManager?.GetComponentOrNull<UIFragmentComponent>(cartridgeUid);
component?.Ui?.Setup(this); component?.Ui?.Setup(this);
return component?.Ui; return component?.Ui;
} }

View File

@@ -1,14 +0,0 @@

namespace Content.Client.CartridgeLoader;
/// <summary>
/// The component used for defining which ui fragment to use for a cartridge
/// </summary>
/// <seealso cref="CartridgeUI"/>
/// <seealso cref="CartridgeUISerializer"/>
[RegisterComponent]
public sealed class CartridgeUiComponent : Component
{
[DataField("ui", true)]
public CartridgeUI? Ui = default;
}

View File

@@ -1,10 +1,11 @@
using Content.Shared.CartridgeLoader.Cartridges; using Content.Client.UserInterface.Fragments;
using Content.Shared.CartridgeLoader.Cartridges;
using Robust.Client.GameObjects; using Robust.Client.GameObjects;
using Robust.Client.UserInterface; using Robust.Client.UserInterface;
namespace Content.Client.CartridgeLoader.Cartridges; namespace Content.Client.CartridgeLoader.Cartridges;
public sealed class NetProbeUi : CartridgeUI public sealed class NetProbeUi : UIFragment
{ {
private NetProbeUiFragment? _fragment; private NetProbeUiFragment? _fragment;

View File

@@ -1,15 +1,15 @@
using Content.Shared.CartridgeLoader; using Content.Client.UserInterface.Fragments;
using Content.Shared.CartridgeLoader;
using Content.Shared.CartridgeLoader.Cartridges; using Content.Shared.CartridgeLoader.Cartridges;
using Robust.Client.GameObjects; using Robust.Client.GameObjects;
using Robust.Client.UserInterface; using Robust.Client.UserInterface;
namespace Content.Client.CartridgeLoader.Cartridges; namespace Content.Client.CartridgeLoader.Cartridges;
public sealed class NotekeeperUi : CartridgeUI public sealed class NotekeeperUi : UIFragment
{ {
private NotekeeperUiFragment? _fragment; private NotekeeperUiFragment? _fragment;
public override Control GetUIFragmentRoot() public override Control GetUIFragmentRoot()
{ {
return _fragment!; return _fragment!;

View File

@@ -1,10 +1,10 @@
using Robust.Client.GameObjects; using Robust.Client.GameObjects;
using Robust.Client.UserInterface; using Robust.Client.UserInterface;
namespace Content.Client.CartridgeLoader; namespace Content.Client.UserInterface.Fragments;
/// <summary> /// <summary>
/// Cartridge ui fragments need to inherit this class. The subclass is then used in yaml to tell the cartridge loader ui to use it as the cartridges ui fragment. /// Specific ui fragments need to inherit this class. The subclass is then used in yaml to tell a main ui to use it as a ui fragment.
/// </summary> /// </summary>
/// <example> /// <example>
/// This is an example from the yaml definition from the notekeeper ui /// This is an example from the yaml definition from the notekeeper ui
@@ -14,7 +14,7 @@ namespace Content.Client.CartridgeLoader;
/// </code> /// </code>
/// </example> /// </example>
[ImplicitDataDefinitionForInheritors] [ImplicitDataDefinitionForInheritors]
public abstract class CartridgeUI public abstract class UIFragment
{ {
public abstract Control GetUIFragmentRoot(); public abstract Control GetUIFragmentRoot();

View File

@@ -0,0 +1,15 @@
namespace Content.Client.UserInterface.Fragments;
/// <summary>
/// The component used for defining a ui fragment to attach to an entity
/// </summary>
/// <remarks>
/// This is used primarily for PDA cartridges.
/// </remarks>
/// <seealso cref="UIFragment"/>
[RegisterComponent]
public sealed class UIFragmentComponent : Component
{
[DataField("ui", true)]
public UIFragment? Ui;
}

View File

@@ -15,7 +15,7 @@ namespace Content.Server.Entry
"ClientEntitySpawner", "ClientEntitySpawner",
"HandheldGPS", "HandheldGPS",
"CableVisualizer", "CableVisualizer",
"CartridgeUi", "UIFragment",
"PDABorderColor", "PDABorderColor",
}; };
} }

View File

@@ -11,7 +11,7 @@
- type: Icon - type: Icon
sprite: Objects/Devices/cartridge.rsi sprite: Objects/Devices/cartridge.rsi
state: cart-y state: cart-y
- type: CartridgeUi - type: UIFragment
ui: !type:NotekeeperUi ui: !type:NotekeeperUi
- type: Cartridge - type: Cartridge
programName: notekeeper-program-name programName: notekeeper-program-name
@@ -33,7 +33,7 @@
- type: Icon - type: Icon
sprite: Objects/Devices/cartridge.rsi sprite: Objects/Devices/cartridge.rsi
state: cart-y state: cart-y
- type: CartridgeUi - type: UIFragment
ui: !type:NetProbeUi ui: !type:NetProbeUi
- type: Cartridge - type: Cartridge
programName: net-probe-program-name programName: net-probe-program-name