From 14b0fc5b4ad337dc699524f295d932085b782196 Mon Sep 17 00:00:00 2001 From: Red <96445749+TheShuEd@users.noreply.github.com> Date: Sat, 5 Jul 2025 20:44:38 +0300 Subject: [PATCH] Workbench and crystals (#1502) * solutionResource * fuck research system + QoL workbench update * colorful quartz returns * Refactor workbench skill requirements handling Replaces the SkillRequired requirement with a direct RequiredSkills field on CP14WorkbenchRecipePrototype. Updates client and server logic to check skills directly, simplifying recipe skill checks and related UI logic. * Initial commit Add initial project files and setup. --- .../CP14ResearchRecipeControl.xaml | 14 - .../CP14ResearchRecipeControl.xaml.cs | 60 ---- .../CP14ResearchTableBoundUserInterface.cs | 34 --- .../CP14ResearchTableWindow.xaml | 72 ----- .../CP14ResearchTableWindow.xaml.cs | 235 --------------- .../CP14WorkbenchRequirementControl.cs | 2 + .../Workbench/CP14WorkbenchWindow.xaml.cs | 26 ++ .../_CP14/ResearchTable/CP14ResearchSystem.cs | 199 ------------- .../Trading/CP14TradingPlatformSystem.cs | 2 +- .../_CP14/Workbench/CP14WorkbenchSystem.UI.cs | 20 +- .../_CP14/Workbench/CP14WorkbenchSystem.cs | 39 ++- .../CP14ResearchTableComponent.cs | 17 -- .../ResearchTable/CP14SharedResearchSystem.cs | 19 -- .../_CP14/Skill/CP14ResearchTableUI.cs | 61 ---- .../Components/CP14SkillStorageComponent.cs | 3 +- .../_CP14/Skill/Effects/UnlockRecipes.cs | 16 +- .../CP14SharedTradingPlatformSystem.cs | 2 +- .../_CP14/Workbench/CP14WorkbenchUI.cs | 32 +- .../CP14WorkbenchRecipePrototype.cs | 4 + .../Requirements/MaterialResource.cs | 12 +- .../Workbench/Requirements/ProtoIdResource.cs | 12 +- .../Workbench/Requirements/SkillRequired.cs | 63 ---- .../Requirements/SolutionResource.cs | 116 ++++++++ .../Requirements/StackGroupResource.cs | 20 +- .../Workbench/Requirements/StackResource.cs | 14 +- .../Workbench/Requirements/TagResource.cs | 19 +- .../Workbench/WorkbenchCraftRequirement.cs | 47 ++- .../en-US/_CP14/workbench/workbench.ftl | 4 +- .../ru-RU/_CP14/workbench/workbench.ftl | 4 +- .../_CP14/Entities/Effects/visual_effect.yml | 8 + .../_CP14/Entities/Objects/Materials/misc.yml | 34 --- .../Entities/Objects/Materials/quartz.yml | 148 +++++++++ .../Structures/Flora/Crystal/elemental.yml | 189 ++++++++++++ .../Structures/Furniture/research_table.yml | 58 ---- .../Structures/Furniture/workbenchs.yml | 26 +- .../Demiplane/Modifiers/Reward/crystals.yml | 117 +++++++- .../_CP14/Recipes/Workbench/Anvil/misc.yml | 179 +++++------ .../Workbench/Anvil/modular_aventail.yml | 40 +-- .../Recipes/Workbench/Anvil/modular_blade.yml | 280 +++++++----------- .../Workbench/Anvil/modular_breastplate.yml | 60 ++-- .../Workbench/Anvil/modular_cuisses.yml | 40 +-- .../Recipes/Workbench/Anvil/modular_garde.yml | 40 +-- .../Workbench/Anvil/modular_greave.yml | 40 +-- .../Workbench/Anvil/modular_helmet.yml | 40 +-- .../Recipes/Workbench/Anvil/modular_tip.yml | 20 +- .../Recipes/Workbench/Anvil/modular_visor.yml | 40 +-- .../_CP14/Recipes/Workbench/furnace.yml | 75 ++--- 47 files changed, 1074 insertions(+), 1528 deletions(-) delete mode 100644 Content.Client/_CP14/ResearchTable/CP14ResearchRecipeControl.xaml delete mode 100644 Content.Client/_CP14/ResearchTable/CP14ResearchRecipeControl.xaml.cs delete mode 100644 Content.Client/_CP14/ResearchTable/CP14ResearchTableBoundUserInterface.cs delete mode 100644 Content.Client/_CP14/ResearchTable/CP14ResearchTableWindow.xaml delete mode 100644 Content.Client/_CP14/ResearchTable/CP14ResearchTableWindow.xaml.cs delete mode 100644 Content.Server/_CP14/ResearchTable/CP14ResearchSystem.cs delete mode 100644 Content.Shared/_CP14/ResearchTable/CP14ResearchTableComponent.cs delete mode 100644 Content.Shared/_CP14/ResearchTable/CP14SharedResearchSystem.cs delete mode 100644 Content.Shared/_CP14/Skill/CP14ResearchTableUI.cs delete mode 100644 Content.Shared/_CP14/Workbench/Requirements/SkillRequired.cs create mode 100644 Content.Shared/_CP14/Workbench/Requirements/SolutionResource.cs create mode 100644 Resources/Prototypes/_CP14/Entities/Objects/Materials/quartz.yml delete mode 100644 Resources/Prototypes/_CP14/Entities/Structures/Furniture/research_table.yml diff --git a/Content.Client/_CP14/ResearchTable/CP14ResearchRecipeControl.xaml b/Content.Client/_CP14/ResearchTable/CP14ResearchRecipeControl.xaml deleted file mode 100644 index de13384bfd..0000000000 --- a/Content.Client/_CP14/ResearchTable/CP14ResearchRecipeControl.xaml +++ /dev/null @@ -1,14 +0,0 @@ - - - diff --git a/Content.Client/_CP14/ResearchTable/CP14ResearchRecipeControl.xaml.cs b/Content.Client/_CP14/ResearchTable/CP14ResearchRecipeControl.xaml.cs deleted file mode 100644 index 99b9de4a7d..0000000000 --- a/Content.Client/_CP14/ResearchTable/CP14ResearchRecipeControl.xaml.cs +++ /dev/null @@ -1,60 +0,0 @@ -using Content.Shared._CP14.Skill; -using Content.Shared._CP14.Skill.Prototypes; -using Robust.Client.AutoGenerated; -using Robust.Client.GameObjects; -using Robust.Client.UserInterface; -using Robust.Client.UserInterface.XAML; -using Robust.Shared.Prototypes; - -namespace Content.Client._CP14.ResearchTable; - -[GenerateTypedNameReferences] -public sealed partial class CP14ResearchRecipeControl : Control -{ - [Dependency] private readonly IEntityManager _entity = default!; - [Dependency] private readonly IPrototypeManager _prototype = default!; - - public event Action? OnResearch; - - private readonly SpriteSystem _sprite; - private readonly CP14SharedSkillSystem _skillSystem; - - private readonly CP14SkillPrototype _skillPrototype; - private readonly bool _craftable; - - public CP14ResearchRecipeControl(CP14ResearchUiEntry entry) - { - RobustXamlLoader.Load(this); - IoCManager.InjectDependencies(this); - - _sprite = _entity.System(); - _skillSystem = _entity.System(); - - _skillPrototype = _prototype.Index(entry.ProtoId); - _craftable = entry.Craftable; - - Button.OnPressed += _ => OnResearch?.Invoke(entry, _skillPrototype); - - UpdateColor(); - UpdateName(); - UpdateView(); - } - - private void UpdateColor() - { - if (_craftable) - return; - - Button.ModulateSelfOverride = Color.FromHex("#302622"); - } - - private void UpdateName() - { - Name.Text = $"{Loc.GetString(_skillSystem.GetSkillName(_skillPrototype))}" ; - } - - private void UpdateView() - { - View.Texture =_sprite.Frame0(_skillPrototype.Icon); - } -} diff --git a/Content.Client/_CP14/ResearchTable/CP14ResearchTableBoundUserInterface.cs b/Content.Client/_CP14/ResearchTable/CP14ResearchTableBoundUserInterface.cs deleted file mode 100644 index 119e5d6063..0000000000 --- a/Content.Client/_CP14/ResearchTable/CP14ResearchTableBoundUserInterface.cs +++ /dev/null @@ -1,34 +0,0 @@ -using Content.Shared._CP14.Skill; -using Robust.Client.UserInterface; - -namespace Content.Client._CP14.ResearchTable; - -public sealed class CP14ResearchTableBoundUserInterface : BoundUserInterface -{ - private CP14ResearchTableWindow? _window; - - public CP14ResearchTableBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey) - { - } - - protected override void Open() - { - base.Open(); - - _window = this.CreateWindow(); - - _window.OnResearch += entry => SendMessage(new CP14ResearchMessage(entry.ProtoId)); - } - - protected override void UpdateState(BoundUserInterfaceState state) - { - base.UpdateState(state); - - switch (state) - { - case CP14ResearchTableUiState recipesState: - _window?.UpdateState(recipesState); - break; - } - } -} diff --git a/Content.Client/_CP14/ResearchTable/CP14ResearchTableWindow.xaml b/Content.Client/_CP14/ResearchTable/CP14ResearchTableWindow.xaml deleted file mode 100644 index 59a2e789bb..0000000000 --- a/Content.Client/_CP14/ResearchTable/CP14ResearchTableWindow.xaml +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -