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.UserInterface;
@@ -10,7 +11,7 @@ public abstract class CartridgeLoaderBoundUserInterface : BoundUserInterface
[Dependency] private readonly IEntityManager? _entityManager = default!;
private EntityUid? _activeProgram;
private CartridgeUI? _activeCartridgeUI;
private UIFragment? _activeCartridgeUI;
private Control? _activeUiFragment;
protected CartridgeLoaderBoundUserInterface(ClientUserInterfaceComponent owner, Enum uiKey) : base(owner, uiKey)
@@ -127,9 +128,9 @@ public abstract class CartridgeLoaderBoundUserInterface : BoundUserInterface
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);
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.UserInterface;
namespace Content.Client.CartridgeLoader.Cartridges;
public sealed class NetProbeUi : CartridgeUI
public sealed class NetProbeUi : UIFragment
{
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 Robust.Client.GameObjects;
using Robust.Client.UserInterface;
namespace Content.Client.CartridgeLoader.Cartridges;
public sealed class NotekeeperUi : CartridgeUI
public sealed class NotekeeperUi : UIFragment
{
private NotekeeperUiFragment? _fragment;
public override Control GetUIFragmentRoot()
{
return _fragment!;

View File

@@ -1,10 +1,10 @@
using Robust.Client.GameObjects;
using Robust.Client.UserInterface;
namespace Content.Client.CartridgeLoader;
namespace Content.Client.UserInterface.Fragments;
/// <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>
/// <example>
/// This is an example from the yaml definition from the notekeeper ui
@@ -14,7 +14,7 @@ namespace Content.Client.CartridgeLoader;
/// </code>
/// </example>
[ImplicitDataDefinitionForInheritors]
public abstract class CartridgeUI
public abstract class UIFragment
{
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",
"HandheldGPS",
"CableVisualizer",
"CartridgeUi",
"UIFragment",
"PDABorderColor",
};
}

View File

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