CatStation/Content.Client/PDA/PdaProgramItem.xaml.cs
pathetic meowmeow 09fb1b923f
Predict CartridgeLoader (#40302)
* Move CartridgeLoader to shared

* get containered bozo

* the dirtening

* mass shared the cartridges

* predict keb cartridges

* no overpopups

* the tidying continues

* review

* aaaaaa

* fix UI flickers

* dependency me

* mimed

* refactor: removed unused usings, dots at the end of old xml-doc,  additional in line-breaks

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
Co-authored-by: Fildrance <fildrance@gmail.com>
2026-07-05 14:13:20 +00:00

98 lines
2.9 KiB
C#

using Content.Shared.CartridgeLoader;
using Robust.Client.AutoGenerated;
using Robust.Client.Graphics;
using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.XAML;
namespace Content.Client.PDA;
[GenerateTypedNameReferences]
public sealed partial class PdaProgramItem : ContainerButton
{
public const string StylePropertyBgColor = "backgroundColor";
public const string NormalBgColor = "#313138";
public const string HoverColor = "#3E6C45";
private Entity<CartridgeComponent> _cartridge;
public event Action<EntityUid>? OnProgramItemPressed;
public event Action<EntityUid>? OnUninstallButtonPressed;
public event Action<EntityUid>? OnInstallButtonPressed;
private readonly StyleBoxFlat _styleBox = new()
{
BackgroundColor = Color.FromHex("#25252a"),
};
public Color BackgroundColor
{
get => _styleBox.BackgroundColor;
set => _styleBox.BackgroundColor = value;
}
public PdaProgramItem(Entity<CartridgeComponent> program)
{
RobustXamlLoader.Load(this);
SetCartridge(program);
Panel.PanelOverride = _styleBox;
OnPressed += OnSelfPressed;
InstallButton.OnPressed += OnInstallPressed;
}
private void OnSelfPressed(ButtonEventArgs args)
{
OnProgramItemPressed?.Invoke(_cartridge);
}
private void OnInstallPressed(ButtonEventArgs args)
{
switch (_cartridge.Comp.InstallationStatus)
{
case InstallationStatus.Cartridge:
OnInstallButtonPressed?.Invoke(_cartridge.Owner);
break;
case InstallationStatus.Installed:
OnUninstallButtonPressed?.Invoke(_cartridge.Owner);
break;
case InstallationStatus.Readonly:
default:
break;
}
}
protected override void Draw(DrawingHandleScreen handle)
{
base.Draw(handle);
if (TryGetStyleProperty<Color>(StylePropertyBgColor, out var bgColor))
BackgroundColor = bgColor;
}
public void SetCartridge(Entity<CartridgeComponent> program)
{
if (program.Comp.Icon is { } icon)
Icon.SetFromSpriteSpecifier(icon);
_cartridge = program;
ProgramName.Text = Loc.GetString(program.Comp.ProgramName);
switch (program.Comp.InstallationStatus)
{
case InstallationStatus.Cartridge:
InstallButton.Visible = true;
InstallButton.Text = Loc.GetString("cartridge-bound-user-interface-install-button");
break;
case InstallationStatus.Installed:
InstallButton.Visible = true;
InstallButton.Text = Loc.GetString("cartridge-bound-user-interface-uninstall-button");
break;
case InstallationStatus.Readonly:
InstallButton.Visible = false;
break;
}
}
}