From 5d2fb2c4bc9d2a9623208d899074e38bd1ed99a3 Mon Sep 17 00:00:00 2001 From: Deserty0 Date: Sun, 7 Sep 2025 01:37:52 +1000 Subject: [PATCH] 13234546tyu --- .../_CP14/Fishing/CP14FishingSystem.cs | 48 ++++++++---------- .../Fishing/CP14FishingMinigamePrototype.cs | 36 +++++++++---- .../_CP14/Fishing/CP14SharedFishingSystem.cs | 2 + .../Components/CP14FishingPondComponent.cs | 5 +- .../Entities/Structures/Floor/floorWater.yml | 1 + .../_CP14/FishingStyles/default.yml | 25 +++++---- .../Interface/Fishing/Default/background.png | Bin 2603 -> 2578 bytes .../Interface/Fishing/Default/fish_icon.png | Bin 328 -> 250 bytes .../_CP14/Interface/Fishing/Default/float.png | Bin 401 -> 291 bytes .../Interface/Fishing/Default/progressbar.png | Bin 244 -> 223 bytes 10 files changed, 67 insertions(+), 50 deletions(-) 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 def57d250e7502a9f4ab60920f1d03b33a840213..93ef830f5a92cea70652229ddff4341828863693 100644 GIT binary patch literal 2578 zcmV+t3hniYP)Px;%t=H+RCt`tTx)0?*A@QOlI)eUmPbl#QE4|yY>`NoqBw}Eeuc^*c59SYttm9d zKS~QNhSF!~uNFcvrIb=|YXmO-k-D_RDm2)H#jR3;g)67Xh|03C6tfZ;t)-yKT1|J? zURkg0kJ&rEdw1^4otb-A{lI8v?#%d`bIy0pnLCdV0GxUKKpr-@@Q;6m$nSIKFX4mB zeYV?)pr$bzdiO8ydD^G)%Tb^ zzH>hhpy*`#`_AS+noNXv`&A}$8#wf86Mp^9ZA_#d0sva;p2APQ`7(wQ1^}Sva993B ztlA=G{%0vyQsiWwoKROjJ~SKxfd0O-`I86t0sxm_B>-G|e-aa^hxp94EdYRt)I(f* zf0Ap3p@f0>SAOnF4p-g=0AJR&$kBMNrUIWXY!t1FRd2C=4f?))X3JAVlPP*=0faa+%p zYk$W1fGoVal153)1x0MP^Y{|bcih&uAb3PX2oj_+j~vH+kt0^~LWH1fYE>x) z$Vw%Iplq_f+$tm9MARz1LO>v`baoxjpFVXGE&Dq0WdM_RNAf@Z(V3E-P8vB;cfQ!# zna^ex@#lBn1K`}Y`z9CLZMu;q<>uOtCq_a5&>D^AUy9b?&iynd?%(Hk!d~&q<#k}D zurTAYaR5jy{9YlwpJUOZRbXvqwdkKL_;PEHR)MQyW(tS{sC>4nXnbvEwPan{$iL;zO!n|m!11)_sW7V%Mr`)+`Bfjir$VeMs4<`3%?tD3xW`*(zWmn7fbj5u^dmWULdWu(n=LoYhre(JmkD8Rf~kt z+*s>aA$-?X5v+A|1AiBoWaPjXxnKP0Z(Xor4kPv z2n#I|MqSOe^4+QS3b$LDa>y0xs|e`(t#0r~jwKVoy-x5a2q!Wg+H`e=pIDD)MFCf< zyQn54SS#sSSL=bgBrHptZlNh69D`~)VcKOp_jyn-5B|v6S;nJ+N%EDSglQtY*pq-@ zF(=~Q0PyctR*_^KNWyhB+mJL?xZ~2MU0v5PC{LTtbDw}) z)!#J?(59=ohG2!js}?R$bB~`*A3i%`HIHua6iWAV4kYPm*CXGNJ?-igXD+q1{L`*> z-3aFdyiB_Wziwq+>_HHlbH(pa_|?zP*;$3u+R=N$idA1*0bpqkK!f?awn3<65}6a0 zBZ&Pk6!&os#MqZLfDCtAe{NlxD_$PGXa4ngVXfxUaQ_R1JXRoC+fY0%sT20ERy|uv zihx+s0a_%CRQhol??WujnO5VGW}yBaKLK4=*_gC}+Gf)(;Av+*ui$;bALTbplSd~t~0I$89qwbBqIM&d4;S+v$= zGm9n5{wxgSs9^3EKlr;^ySH)f6P z*&D<3R1zOgj06;f4XPXFk(;Y`+=g@`&5gBa#zXvd^vPR^W21}K)NCMf1FPczfa6u| zp7tBOyMS*UYqOTOWOUnkVc+B~&JO~0PeV^F0`=aMszt)MHIa1f=X{a7I6nvwixCeN zh+Wke04xYuGnIaf%nJXLcD@Di?fTE#u0LMY4n4JKod65+&R5b{LDE>kE6>+)I}=~z zzW+)~$-3%>`I7P9JoqQ~7)RUcakQ=8aWcmjx!hcR5g9x1EQ>1vml)?03?kS=ns~;f{<4D)44oqszXTU^3YR@rez&&MP&oD?zMq9KFm%Rt@|)LjVlW#Q6h$(PySf4@454r%9Df% z8PWAL=p@WTB>?=_$dwGx>yo(*knZfnms+q>(?z%g%tvRFxec@wVl1X@#qF64wCw^9 z_Z{3-g|_F-ua13^{?s}cjhi=g<`cYPxOqb_F@Q)asRZ>MS8{+OO`5qbX)Ygo^ShyI zm;3T33ZM7&gKNng;zPrs_|Py~qfysh4&=+oJ%_t&du8%rVo3N*G<_`czzYg$9lX0> odx69KM6+tNMx)k=@}9`~AHm%IX?@&d@c;k-07*qoM6N<$g34w3ssI20 literal 2603 zcmV+`3e@$9P)Px;irCxS;CB^-IFLAP^gKnCz)frx&1rKj-vb2TOXcrY{|?(I2O_;@l|W^<@YGL_%Jk(V0qt9NfDb?s zC0n0xJ~0a~E@ojGlYSB3XTSdk-~A>4;BZqTYIg5}6ph&S_jidVa3bghfsl;v6GM*R znRux`Czt$W89_EB-s+jCCruxRF1*6l&Uvn9z=R&HOLSw(kS1fwR$vIPbYdJyX4p> zP?BzyEkz?}tgm()aeR&4JXmY%1pdY`*=hsNB!B+Lzw&h)y^CWuyF<&9evr;Qa_qC^ zBzaPhZ<4KTooH?A^m`gx_#)Zb)~OX2Ziv!^6%B{N@4H7wl0Z9O$>kNkNRE%)KxNdT%)P!!VMhEgHXWYqumk=bvoJ%hh8~>E~(tMau01f+6rqkt4IWVPX8ng70>wC z4PeaoS#|KAf?QNQMo7^JYN~dIzjDAWcpfDON3uA6^MHNc%>(Zwjih|I-3i`>V@Jxx z?SuFNgRE&~RgMr4KRG~Tj8>C#j@AUgeM>7w-3?Lh7!_NYv#zvqs|&^3!8=JaOSx1$ zC2?`doF!xxn*qUpO!BzhC;YkFs9F8tM7BwAh7l#gG_ts5En^iv+7vgq0I+*)zqw8G=XKQCLYzmC<<|oapL}U5rU2cVk zH+BQS(j0&~^?P+4SE4PSZBOmp-Ai-&?a{mHr^^WfvA48` zo+;+RBH8LX{r&(ebARfVbEV`6WLXC&8j+fMmKh>ywYI=$tH z5Rv5&PWUN^P3l(eH-Xp`WJbhDibLU{FNQC1vxOzudNRCZ&c>rlh^;5dYOG5+1w*A; zb1a6qv_tTSL!`{&lXJuo`{PQMoEag`6vTd7A(&)tbh~lCPl(BrE+IB1orpQOoXClD zw{hI&B*ucsiL<1KoM?m-If9sX4mjjX8f|{}%b#d7z3m+*b#ECP8Sc~OhQyF`uriy> z0bp0%L7Y8v+Ssi?ME#TG9A&I9wGji&Qv$%`oe?x0Y{%I%n?(JSG^>0(kbd{~7co7R z0s!nka1)0+KCkTyM%^qp2~u3#Na- z2l&hA=C5wYMi(`LfspK59R~oMtY~$0T>qT~ym_KU+uoLyE$7XBk-RkD57aykIlTzf z!j-b6XaqMWQe5?@y%(BF+A8bjOZNZz{y!|walEA#$6IP0C#^h_ z%+J;8NSVRP(tsM1$=RiF)~b=ZjcMnaynw#dalHM6`46Yb-M414+O`mqsz6W@dqmt0 zQZ%BuTfQ%N<$#=CL?&OrZ~rx^Ym?K9=x*3+dn~zIm~e=UG49BUcJXM0FyR233jXPl zW&ovbr*JR>#h}nN7)GIF@@hhs(`tFuw>qwUH-aj207xk-knbh=eyUTq&nYHJ-RbN@u`y`{icwbaM$pfu zDJF%v`}XX8T&nEH)$u8{A-W#`@N!=Q-+#6Pzgd_99y@AzJT3ons)RgS^5wn+KFUq& z+CIunJ1w@gFHTEo)|(gFXkuV>Fi3zq;@-TikKEN{eYUmGtP&9Rtv!FDUG{s#*`0LoVU<-Y&` N002ovPDHLkV1h1@`xyWL diff --git a/Resources/Textures/_CP14/Interface/Fishing/Default/fish_icon.png b/Resources/Textures/_CP14/Interface/Fishing/Default/fish_icon.png index 4b7c3faa4da588fdd228e303dafb4bb219f51594..538dce88043ce345c5c4511df523cb7cf06e4433 100644 GIT binary patch literal 250 zcmVPx#v`IukR2Y?Yj;#)YP#A{a!z>i9z~~*&%owQ5!O%tpr?W84j;02a27{YPyFuq2 z*t`O%Oq%sIog;_Ao4#+)^Zft~A;~7DNhEoW=OoF%a}_fHAn;rzB~FO-Xj*$k$R^$$ z6)dt`)u-hQm+=CFZ3=@VEk8n$<#_Bjng{@i6XN~(0svYfAH(l-e{PObLE}iwNMxopP zsOx|4j|n}eQaZbDN}bXw$ET`mJrl0pVr2w5^}>eyy8Aiu${OzKAg-sYpUXO@geCwk Co`(nk diff --git a/Resources/Textures/_CP14/Interface/Fishing/Default/float.png b/Resources/Textures/_CP14/Interface/Fishing/Default/float.png index ef440eaf26ea51136fbfd948fcbb02a5b44de4ae..01d9b72ba55a5774957115d1e31cc67734c2fafc 100644 GIT binary patch literal 291 zcmV+;0o?wHP)Px#-AP12R5*?8m7xxTP#A^Jb@$FmaJ+zpKruKQju()`W{?@oZu&g(0w$6p-6vqP z-asMXD>wohyKERxXMqcW#-G2PeW#qC9QHeSEUBQlK$?VlEUB!O2HmEO;43NtkyMnY z3_uQu_GF$iP{)wip68e@-A1s8L%`2KPMdY*7*eI&Kbi8B!HP=g2wMyClz{@kL#PV^ z9}V|gXCov0BW;SnARuD8z5l;CeStd-UQmi2Dv_Dl&oBJZi;7_yTF p@J&WOKyn~W!tYPz1IiXAc>`cJS7+qOn`i(4002ovPDHLkV1gchc_jb< literal 401 zcmeAS@N?(olHy`uVBq!ia0vp^nm|02gAGU?&A9vnNHG=%xjQkeJ16rJ$oBShaSW-L z^Y+F@ufqWnM?VU0?2uK_fADC+(S_Ly^%n#mJoxAV_lwUF1@8i0Ehsr9%o5AID`my{ z03#8VR;w3Mc{}bez4+n(S@pks_kG)AIDy7v1^<-pv*)i{Z}L*qIy^5>_2QqGH_Lle zUS9Zq&~yC_UiR9fi+|0JNRQUkFDpK5q~d(Cjf(!xL8lNj?1q@MKn#CIQd zyg$=3d}?Zo%H#5K8>_PCpU%eb*pM~B*eG|?$wKek{Gi!wmb3Hnivm>xe|>tn=Z3!j hWRI%vvdj!Gy7IXllee5amc9cN0-mmZF6*2UngF<^u3G>A diff --git a/Resources/Textures/_CP14/Interface/Fishing/Default/progressbar.png b/Resources/Textures/_CP14/Interface/Fishing/Default/progressbar.png index 3497ff9b61e48f5397d4d5caa99fc73cbd8a7764..bfe7be229143f196f8eac208be1ede6b5fa9b230 100644 GIT binary patch literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^OhDYn!3HFykKAkrQjEnx?oJHr&dIz4a%OtEIEGmC zzU|-0byz{7W&I~>PQIoTo+q5Y8fts&=0DJAYJRZf0^hcu$|l*0ihjrMmdpKr`*F{H z28Rcq^$KMYOItVWQcB|#-28@*;fRi7Sa@6Vv^$Gtr1poUt$n}!U)_Sh+{Y4ECvZ6~ zagtf;q_9|OyIWd^+cRs&l>+{6*2sIDxqRrHjc)9Z2MRR>cO@m{@34J4`1i;2mPfp$ XA$E;LM+CTmj%4t3^>bP0l+XkKOqN;d literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^nm|02gAGU?&A9vnNHG=%xjQkeJ16rJ$XVy<;uumf z=j|0mzC#WI4i`BO3dpS6{z9{AmE7X*PRRliGJNhqIxn4?Gd68LSzUDX{F!%dKyB#Y zPyU==m2-aWEIYpZ?x%zoyCr_Db35(-`{}`-RjV&4*~t} d&b@pYr=-h_Wc2I*7?^