From 637e38b4b3970e26fa869d1258d19dfae46c6e46 Mon Sep 17 00:00:00 2001 From: Ed Date: Thu, 22 May 2025 15:29:48 +0300 Subject: [PATCH] workplace init --- .../CP14WorkplaceBoundUserInterface.cs | 34 ++++ .../Workplace/CP14WorkplaceRecipeControl.xaml | 14 ++ .../CP14WorkplaceRecipeControl.xaml.cs | 53 ++++++ .../_CP14/Workplace/CP14WorkplaceWindow.xaml | 72 ++++++++ .../Workplace/CP14WorkplaceWindow.xaml.cs | 170 ++++++++++++++++++ .../_CP14/Workbench/CP14WorkbenchSystem.cs | 2 +- .../_CP14/Workplace/CP14WorkplaceSystem.cs | 65 +++++++ .../Workplace/CP14SharedWorkplaceSystem.cs | 5 + .../_CP14/Workplace/CP14WorkplaceComponent.cs | 24 +++ .../Workplace/CP14WorkplaceRecipeComponent.cs | 25 +++ .../_CP14/Workplace/CP14WorkplaceUI.cs | 28 +++ .../Structures/Furniture/workplaces.yml | 26 +++ .../_CP14/Recipes/Workplace/debug.yml | 6 + 13 files changed, 523 insertions(+), 1 deletion(-) create mode 100644 Content.Client/_CP14/Workplace/CP14WorkplaceBoundUserInterface.cs create mode 100644 Content.Client/_CP14/Workplace/CP14WorkplaceRecipeControl.xaml create mode 100644 Content.Client/_CP14/Workplace/CP14WorkplaceRecipeControl.xaml.cs create mode 100644 Content.Client/_CP14/Workplace/CP14WorkplaceWindow.xaml create mode 100644 Content.Client/_CP14/Workplace/CP14WorkplaceWindow.xaml.cs create mode 100644 Content.Server/_CP14/Workplace/CP14WorkplaceSystem.cs create mode 100644 Content.Shared/_CP14/Workplace/CP14SharedWorkplaceSystem.cs create mode 100644 Content.Shared/_CP14/Workplace/CP14WorkplaceComponent.cs create mode 100644 Content.Shared/_CP14/Workplace/CP14WorkplaceRecipeComponent.cs create mode 100644 Content.Shared/_CP14/Workplace/CP14WorkplaceUI.cs create mode 100644 Resources/Prototypes/_CP14/Entities/Structures/Furniture/workplaces.yml create mode 100644 Resources/Prototypes/_CP14/Recipes/Workplace/debug.yml diff --git a/Content.Client/_CP14/Workplace/CP14WorkplaceBoundUserInterface.cs b/Content.Client/_CP14/Workplace/CP14WorkplaceBoundUserInterface.cs new file mode 100644 index 0000000000..d9fd01a1b1 --- /dev/null +++ b/Content.Client/_CP14/Workplace/CP14WorkplaceBoundUserInterface.cs @@ -0,0 +1,34 @@ +using Content.Shared._CP14.Workplace; +using Robust.Client.UserInterface; + +namespace Content.Client._CP14.Workplace; + +public sealed class CP14WorkplaceBoundUserInterface : BoundUserInterface +{ + private CP14WorkplaceWindow? _window; + + public CP14WorkplaceBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey) + { + } + + protected override void Open() + { + base.Open(); + + _window = this.CreateWindow(); + + _window.OnCraft += entry => SendMessage(new CP14WorkplaceCraftMessage(entry.Recipe)); + } + + protected override void UpdateState(BoundUserInterfaceState state) + { + base.UpdateState(state); + + switch (state) + { + case CP14WorkplaceState recipesState: + _window?.UpdateState(recipesState); + break; + } + } +} diff --git a/Content.Client/_CP14/Workplace/CP14WorkplaceRecipeControl.xaml b/Content.Client/_CP14/Workplace/CP14WorkplaceRecipeControl.xaml new file mode 100644 index 0000000000..049b95455b --- /dev/null +++ b/Content.Client/_CP14/Workplace/CP14WorkplaceRecipeControl.xaml @@ -0,0 +1,14 @@ + + + diff --git a/Content.Client/_CP14/Workplace/CP14WorkplaceRecipeControl.xaml.cs b/Content.Client/_CP14/Workplace/CP14WorkplaceRecipeControl.xaml.cs new file mode 100644 index 0000000000..f7259f4df9 --- /dev/null +++ b/Content.Client/_CP14/Workplace/CP14WorkplaceRecipeControl.xaml.cs @@ -0,0 +1,53 @@ +using Content.Shared._CP14.Workplace; +using Robust.Client.AutoGenerated; +using Robust.Client.UserInterface; +using Robust.Client.UserInterface.XAML; +using Robust.Shared.Prototypes; + +namespace Content.Client._CP14.Workplace; + +[GenerateTypedNameReferences] +public sealed partial class CP14WorkplaceRecipeControl : Control +{ + [Dependency] private readonly IPrototypeManager _prototype = default!; + + public event Action? OnSelect; + + private readonly EntityPrototype _recipePrototype; + private readonly bool _craftable; + + public CP14WorkplaceRecipeControl(CP14WorkplaceRecipeEntry entry) + { + RobustXamlLoader.Load(this); + IoCManager.InjectDependencies(this); + + _recipePrototype = _prototype.Index(entry.Recipe); + _craftable = entry.Craftable; + + Button.OnPressed += _ => OnSelect?.Invoke(entry, _recipePrototype); + + UpdateColor(); + //UpdateName(); + UpdateView(); + } + + private void UpdateColor() + { + if (_craftable) + return; + + Button.ModulateSelfOverride = Color.FromHex("#302622"); + } + + private void UpdateName() + { + //var result = _recipePrototype; + //var counter = _recipePrototype.ResultCount > 1 ? $" x{_recipePrototype.ResultCount}" : ""; + //Name.Text = $"{Loc.GetString(result.Name)} {counter}" ; + } + + private void UpdateView() + { + View.SetPrototype(_recipePrototype); + } +} diff --git a/Content.Client/_CP14/Workplace/CP14WorkplaceWindow.xaml b/Content.Client/_CP14/Workplace/CP14WorkplaceWindow.xaml new file mode 100644 index 0000000000..edaffe0a33 --- /dev/null +++ b/Content.Client/_CP14/Workplace/CP14WorkplaceWindow.xaml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +