diff --git a/Content.Client/_CP14/Fishing/CP14FishingSystem.cs b/Content.Client/_CP14/Fishing/CP14FishingSystem.cs index 001dde8e52..0880208d5f 100644 --- a/Content.Client/_CP14/Fishing/CP14FishingSystem.cs +++ b/Content.Client/_CP14/Fishing/CP14FishingSystem.cs @@ -1,5 +1,6 @@ using System.Diagnostics; using System.Numerics; +using Content.Client.Resources; using Content.Shared._CP14.Fishing; using Content.Shared._CP14.Fishing.Components; using Content.Shared.Interaction; @@ -17,10 +18,6 @@ public sealed class CP14FishingSystem : CP14SharedFishingSystem [Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly IResourceCache _resourceCache = default!; - private Popup? _fishingPopup; - private const int FishingMinigameSizeX = 41; - private const int FishingMinigameSizeY = 149; - public override void Initialize() { base.Initialize(); @@ -42,44 +39,41 @@ public sealed class CP14FishingSystem : CP14SharedFishingSystem if (component.FishingProcess) return; - OpenFishingPopup(component); + OpenFishingPopup(uid, component, args); } - private void OpenFishingPopup(CP14FishingRodComponent component) + private void OpenFishingPopup(EntityUid uid, CP14FishingRodComponent component, AfterInteractEvent args) { - _fishingPopup = new Popup + // Getting data + if (!_prototypeManager.Resolve(component.FishingMinigame, out var minigameStyle)) + return; + + var background = minigameStyle.Background; + var floatUI = minigameStyle.Float; + var progressbar = minigameStyle.Progressbar; + var fishIcon = minigameStyle.FishIcon; + + var fishingPopup = new Popup { CloseOnClick = false, CloseOnEscape = false, - MinSize = new Vector2(FishingMinigameSizeX, FishingMinigameSizeY), - MaxSize = new Vector2(FishingMinigameSizeX, FishingMinigameSizeY), + MinSize = new Vector2(background.Size.X, background.Size.Y), + MaxSize = new Vector2(background.Size.X, background.Size.Y), }; - _userInterfaceManager.ModalRoot.AddChild(_fishingPopup); - - var backgroundTexture = RequestTexture(CP14FishingMinigameElement.Background, component); - if (backgroundTexture is null) - return; + _userInterfaceManager.ModalRoot.AddChild(fishingPopup); + var backgroundTexture = _resourceCache.GetTexture(background.Texture); var panel = new PanelContainer { PanelOverride = new StyleBoxTexture { Texture = backgroundTexture, }, + MinSize = new Vector2(background.Size.X, background.Size.Y), + MaxSize = new Vector2(background.Size.X, background.Size.Y), }; - } + fishingPopup.AddChild(panel); - private TextureResource? RequestTexture(CP14FishingMinigameElement element, CP14FishingRodComponent fishingRodComponent) - { - var minigamePrototype = _prototypeManager.Index(fishingRodComponent.FishingMinigame); - - if (minigamePrototype.Texture is null || !minigamePrototype.Texture.TryGetValue(element, out var data)) - { - Debug.Fail($"Tried to request a fishing minigame element {element} without a texture."); - return null; - } - - var texture = _resourceCache.GetResource(data.Texture); - return texture; + fishingPopup.Open(UIBox2.FromDimensions(new Vector2(0, 0), background.Size)); } } diff --git a/Content.Shared/_CP14/Fishing/CP14FishingMinigamePrototype.cs b/Content.Shared/_CP14/Fishing/CP14FishingMinigamePrototype.cs index 6f8549e540..d983de003d 100644 --- a/Content.Shared/_CP14/Fishing/CP14FishingMinigamePrototype.cs +++ b/Content.Shared/_CP14/Fishing/CP14FishingMinigamePrototype.cs @@ -4,6 +4,9 @@ using Robust.Shared.Utility; namespace Content.Shared._CP14.Fishing; +/// +/// Prototype of fishing minigame stylesheet. +/// [Prototype("CP14FishingMinigameStyle")] public sealed partial class CP14FishingMinigamePrototype : IPrototype { @@ -11,20 +14,33 @@ public sealed partial class CP14FishingMinigamePrototype : IPrototype public string ID { get; } = default!; [DataField(required: true)] - public Dictionary? Texture; + public FishingMinigameElementData Background; + + [DataField(required: true)] + public FishingMinigameElementData FishIcon; + + [DataField(required: true)] + public FishingMinigameElementData Progressbar; + + [DataField(required: true)] + public FishingMinigameElementData Float; [DataDefinition] public partial struct FishingMinigameElementData { + /// + /// Texture path. + /// [DataField(required: true)] public ResPath Texture; - [DataField] public Vector2 Size; + + /// + /// Size of a texture. + /// + [DataField(required: true)] public Vector2 Size; + + /// + /// Offset from top left corner. Starter position in the bottom. + /// + [DataField(required: true)] public Vector2 Offset; } } - -public enum CP14FishingMinigameElement : byte -{ - Background, - DefaultFishIcon, - Progressbar, - Float, -} diff --git a/Content.Shared/_CP14/Fishing/CP14SharedFishingSystem.cs b/Content.Shared/_CP14/Fishing/CP14SharedFishingSystem.cs index 204d190ce3..c6d352c4d9 100644 --- a/Content.Shared/_CP14/Fishing/CP14SharedFishingSystem.cs +++ b/Content.Shared/_CP14/Fishing/CP14SharedFishingSystem.cs @@ -1,3 +1,5 @@ +using Robust.Shared.Prototypes; + namespace Content.Shared._CP14.Fishing; public abstract class CP14SharedFishingSystem : EntitySystem diff --git a/Content.Shared/_CP14/Fishing/Components/CP14FishingPondComponent.cs b/Content.Shared/_CP14/Fishing/Components/CP14FishingPondComponent.cs index 8c44d257f6..74d0edc849 100644 --- a/Content.Shared/_CP14/Fishing/Components/CP14FishingPondComponent.cs +++ b/Content.Shared/_CP14/Fishing/Components/CP14FishingPondComponent.cs @@ -4,12 +4,9 @@ using Robust.Shared.Prototypes; namespace Content.Shared._CP14.Fishing.Components; -/// -/// This is used for... -/// [RegisterComponent] public sealed partial class CP14FishingPondComponent : Component { [DataField] - public ProtoId LootTable; + public ProtoId? LootTable; } diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Floor/floorWater.yml b/Resources/Prototypes/_CP14/Entities/Structures/Floor/floorWater.yml index adb040e455..5010b6c9d4 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Floor/floorWater.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Floor/floorWater.yml @@ -71,6 +71,7 @@ - type: TileEntityEffect effects: - !type:ExtinguishReaction + - type: CP14FishingPond - type: entity parent: CP14FloorWaterOptimized diff --git a/Resources/Prototypes/_CP14/FishingStyles/default.yml b/Resources/Prototypes/_CP14/FishingStyles/default.yml index aa904b4614..7845f56f70 100644 --- a/Resources/Prototypes/_CP14/FishingStyles/default.yml +++ b/Resources/Prototypes/_CP14/FishingStyles/default.yml @@ -1,11 +1,18 @@ - type: CP14FishingMinigameStyle id: Default - texture: - background: - - texture: _CP14/Interface/Fishing/Default/background.png - defaultFishIcon: - - texture: _CP14/Interface/Fishing/Default/fish_icon.png - progressbar: - - texture: _CP14/Interface/Fishing/Default/progressbar.png - float: - - texture: _CP14/Interface/Fishing/Default/float.png + background: + texture: Textures/Interface/Paper/paper_background_default.svg.96dpi.png + size: 39, 149 + offset: 0, 0 + fishIcon: + texture: Textures/_CP14/Interface/Fishing/Default/fish_icon.png + size: 11, 9 + offset: 3, 3 + progressbar: + texture: Textures/_CP14/Interface/Fishing/Default/progressbar.png + size: 2, 142 + offset: 13, 134 + float: + texture: Textures/_CP14/Interface/Fishing/Default/float.png + size: 11, 38 + offset: 13, 105 diff --git a/Resources/Textures/_CP14/Interface/Fishing/Default/background.png b/Resources/Textures/_CP14/Interface/Fishing/Default/background.png index def57d250e..93ef830f5a 100644 Binary files a/Resources/Textures/_CP14/Interface/Fishing/Default/background.png and b/Resources/Textures/_CP14/Interface/Fishing/Default/background.png differ diff --git a/Resources/Textures/_CP14/Interface/Fishing/Default/fish_icon.png b/Resources/Textures/_CP14/Interface/Fishing/Default/fish_icon.png index 4b7c3faa4d..538dce8804 100644 Binary files a/Resources/Textures/_CP14/Interface/Fishing/Default/fish_icon.png and b/Resources/Textures/_CP14/Interface/Fishing/Default/fish_icon.png differ diff --git a/Resources/Textures/_CP14/Interface/Fishing/Default/float.png b/Resources/Textures/_CP14/Interface/Fishing/Default/float.png index ef440eaf26..01d9b72ba5 100644 Binary files a/Resources/Textures/_CP14/Interface/Fishing/Default/float.png and b/Resources/Textures/_CP14/Interface/Fishing/Default/float.png differ diff --git a/Resources/Textures/_CP14/Interface/Fishing/Default/progressbar.png b/Resources/Textures/_CP14/Interface/Fishing/Default/progressbar.png index 3497ff9b61..bfe7be2291 100644 Binary files a/Resources/Textures/_CP14/Interface/Fishing/Default/progressbar.png and b/Resources/Textures/_CP14/Interface/Fishing/Default/progressbar.png differ