From 4576555e5bccc033e8d334169cf33794bd444e65 Mon Sep 17 00:00:00 2001 From: pathetic meowmeow Date: Sat, 15 Mar 2025 12:24:23 -0400 Subject: [PATCH] NanoTask (#34095) --- .../Cartridges/NanoTaskCartridgeSystem.cs | 5 + .../Cartridges/NanoTaskItemControl.xaml | 32 ++++ .../Cartridges/NanoTaskItemControl.xaml.cs | 33 ++++ .../Cartridges/NanoTaskItemPopup.xaml | 67 ++++++++ .../Cartridges/NanoTaskItemPopup.xaml.cs | 109 +++++++++++++ .../CartridgeLoader/Cartridges/NanoTaskUi.cs | 82 ++++++++++ .../Cartridges/NanoTaskUiFragment.xaml | 58 +++++++ .../Cartridges/NanoTaskUiFragment.xaml.cs | 52 ++++++ .../Cartridges/NanoTaskCartridgeSystem.cs | 151 ++++++++++++++++++ .../Cartridges/NanoTaskCartridgeComponent.cs | 42 +++++ .../Cartridges/NanoTaskPrintedComponent.cs | 16 ++ .../Cartridges/NanoTaskUiMessageEvent.cs | 91 +++++++++++ .../Cartridges/NanoTaskUiState.cs | 88 ++++++++++ .../SharedNanoTaskCartridgeSystem.cs | 19 +++ .../en-US/cartridge-loader/cartridges.ftl | 42 +++++ .../Entities/Objects/Devices/cartridges.yml | 19 +++ .../Entities/Objects/Devices/pda.yml | 12 ++ .../Entities/Objects/Misc/paper.yml | 15 ++ .../Misc/program_icons.rsi/meta.json | 5 +- .../Misc/program_icons.rsi/nano_task.png | Bin 0 -> 324 bytes 20 files changed, 937 insertions(+), 1 deletion(-) create mode 100644 Content.Client/CartridgeLoader/Cartridges/NanoTaskCartridgeSystem.cs create mode 100644 Content.Client/CartridgeLoader/Cartridges/NanoTaskItemControl.xaml create mode 100644 Content.Client/CartridgeLoader/Cartridges/NanoTaskItemControl.xaml.cs create mode 100644 Content.Client/CartridgeLoader/Cartridges/NanoTaskItemPopup.xaml create mode 100644 Content.Client/CartridgeLoader/Cartridges/NanoTaskItemPopup.xaml.cs create mode 100644 Content.Client/CartridgeLoader/Cartridges/NanoTaskUi.cs create mode 100644 Content.Client/CartridgeLoader/Cartridges/NanoTaskUiFragment.xaml create mode 100644 Content.Client/CartridgeLoader/Cartridges/NanoTaskUiFragment.xaml.cs create mode 100644 Content.Server/CartridgeLoader/Cartridges/NanoTaskCartridgeSystem.cs create mode 100644 Content.Shared/CartridgeLoader/Cartridges/NanoTaskCartridgeComponent.cs create mode 100644 Content.Shared/CartridgeLoader/Cartridges/NanoTaskPrintedComponent.cs create mode 100644 Content.Shared/CartridgeLoader/Cartridges/NanoTaskUiMessageEvent.cs create mode 100644 Content.Shared/CartridgeLoader/Cartridges/NanoTaskUiState.cs create mode 100644 Content.Shared/CartridgeLoader/Cartridges/SharedNanoTaskCartridgeSystem.cs create mode 100644 Resources/Textures/Interface/Misc/program_icons.rsi/nano_task.png diff --git a/Content.Client/CartridgeLoader/Cartridges/NanoTaskCartridgeSystem.cs b/Content.Client/CartridgeLoader/Cartridges/NanoTaskCartridgeSystem.cs new file mode 100644 index 0000000000..85a5659c4b --- /dev/null +++ b/Content.Client/CartridgeLoader/Cartridges/NanoTaskCartridgeSystem.cs @@ -0,0 +1,5 @@ +using Content.Shared.CartridgeLoader.Cartridges; + +namespace Content.Client.CartridgeLoader.Cartridges; + +public sealed class NanoTaskCartridgeSystem : SharedNanoTaskCartridgeSystem; diff --git a/Content.Client/CartridgeLoader/Cartridges/NanoTaskItemControl.xaml b/Content.Client/CartridgeLoader/Cartridges/NanoTaskItemControl.xaml new file mode 100644 index 0000000000..7d7c635de8 --- /dev/null +++ b/Content.Client/CartridgeLoader/Cartridges/NanoTaskItemControl.xaml @@ -0,0 +1,32 @@ + + + + + + diff --git a/Content.Client/CartridgeLoader/Cartridges/NanoTaskItemControl.xaml.cs b/Content.Client/CartridgeLoader/Cartridges/NanoTaskItemControl.xaml.cs new file mode 100644 index 0000000000..5edbee9d44 --- /dev/null +++ b/Content.Client/CartridgeLoader/Cartridges/NanoTaskItemControl.xaml.cs @@ -0,0 +1,33 @@ +using Robust.Client.AutoGenerated; +using Robust.Client.Graphics; +using Robust.Client.UserInterface; +using Robust.Client.UserInterface.XAML; +using Robust.Shared.Maths; +using Content.Shared.CartridgeLoader.Cartridges; + +namespace Content.Client.CartridgeLoader.Cartridges; + +/// +/// Represents a single control for a single NanoTask item +/// +[GenerateTypedNameReferences] +public sealed partial class NanoTaskItemControl : Control +{ + public Action? OnMainPressed; + public Action? OnDonePressed; + + public NanoTaskItemControl(NanoTaskItemAndId item) + { + RobustXamlLoader.Load(this); + + TaskLabel.Text = item.Data.Description; + TaskLabel.FontColorOverride = Color.White; + TaskForLabel.Text = item.Data.TaskIsFor; + + MainButton.OnPressed += _ => OnMainPressed?.Invoke(item.Id); + DoneButton.OnPressed += _ => OnDonePressed?.Invoke(item.Id); + + MainButton.Disabled = item.Data.IsTaskDone; + DoneButton.Text = item.Data.IsTaskDone ? Loc.GetString("nano-task-ui-revert-done") : Loc.GetString("nano-task-ui-done"); + } +} diff --git a/Content.Client/CartridgeLoader/Cartridges/NanoTaskItemPopup.xaml b/Content.Client/CartridgeLoader/Cartridges/NanoTaskItemPopup.xaml new file mode 100644 index 0000000000..ad72df05d9 --- /dev/null +++ b/Content.Client/CartridgeLoader/Cartridges/NanoTaskItemPopup.xaml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + +