From c8b0560c7acc33f99ec2f51747d0a86101ce4150 Mon Sep 17 00:00:00 2001 From: Deserty0 Date: Sun, 7 Sep 2025 04:31:11 +1000 Subject: [PATCH] UI --- .../_CP14/Fishing/CP14FishingSystem.cs | 65 ++++++++++++++++-- .../Fishing/CP14FishingMinigamePrototype.cs | 2 +- .../_CP14/FishingStyles/default.yml | 22 +++--- .../Interface/Fishing/Default/background.png | Bin 2578 -> 3290 bytes .../_CP14/Interface/Fishing/Default/float.png | Bin 291 -> 343 bytes .../Interface/Fishing/Default/progressbar.png | Bin 223 -> 265 bytes 6 files changed, 73 insertions(+), 16 deletions(-) diff --git a/Content.Client/_CP14/Fishing/CP14FishingSystem.cs b/Content.Client/_CP14/Fishing/CP14FishingSystem.cs index 0880208d5f..5fba8f1e59 100644 --- a/Content.Client/_CP14/Fishing/CP14FishingSystem.cs +++ b/Content.Client/_CP14/Fishing/CP14FishingSystem.cs @@ -1,4 +1,3 @@ -using System.Diagnostics; using System.Numerics; using Content.Client.Resources; using Content.Shared._CP14.Fishing; @@ -53,6 +52,7 @@ public sealed class CP14FishingSystem : CP14SharedFishingSystem var progressbar = minigameStyle.Progressbar; var fishIcon = minigameStyle.FishIcon; + // Generating popup var fishingPopup = new Popup { CloseOnClick = false, @@ -62,8 +62,9 @@ public sealed class CP14FishingSystem : CP14SharedFishingSystem }; _userInterfaceManager.ModalRoot.AddChild(fishingPopup); + // Generating layers var backgroundTexture = _resourceCache.GetTexture(background.Texture); - var panel = new PanelContainer + var firstLayer = new PanelContainer { PanelOverride = new StyleBoxTexture { @@ -72,8 +73,64 @@ public sealed class CP14FishingSystem : CP14SharedFishingSystem MinSize = new Vector2(background.Size.X, background.Size.Y), MaxSize = new Vector2(background.Size.X, background.Size.Y), }; - fishingPopup.AddChild(panel); + fishingPopup.AddChild(firstLayer); - fishingPopup.Open(UIBox2.FromDimensions(new Vector2(0, 0), background.Size)); + var secondLayer = new PanelContainer + { + MinSize = new Vector2(background.Size.X, background.Size.Y), + MaxSize = new Vector2(background.Size.X, background.Size.Y), + }; + fishingPopup.AddChild(secondLayer); + + // Filling first layer + var progressbarTexture = _resourceCache.GetTexture(progressbar.Texture); + var progressbarContainer = new PanelContainer + { + PanelOverride = new StyleBoxTexture + { + Texture = progressbarTexture, + }, + MinSize = new Vector2(progressbar.Size.X, 0), + SetSize = new Vector2(progressbar.Size.X, 0), + MaxSize = new Vector2(progressbar.Size.X, progressbar.Size.Y), + Margin = new Thickness(progressbar.Offset.X, 0, 0, progressbar.Offset.Y), + HorizontalAlignment = Control.HAlignment.Left, + VerticalAlignment = Control.VAlignment.Bottom + }; + firstLayer.AddChild(progressbarContainer); + + var floatTexture = _resourceCache.GetTexture(floatUI.Texture); + var floatContainer = new PanelContainer + { + PanelOverride = new StyleBoxTexture + { + Texture = floatTexture, + }, + MinSize = new Vector2(floatUI.Size.X, floatUI.Size.Y), + MaxSize = new Vector2(floatUI.Size.X, floatUI.Size.Y), + Margin = new Thickness(floatUI.Offset.X, 0, 0, floatUI.Offset.Y), + HorizontalAlignment = Control.HAlignment.Left, + VerticalAlignment = Control.VAlignment.Bottom + }; + firstLayer.AddChild(floatContainer); + + // Filling second layer + var fishTexture = _resourceCache.GetTexture(fishIcon.Texture); + var fishIconContainer = new PanelContainer + { + PanelOverride = new StyleBoxTexture + { + Texture = fishTexture, + }, + MinSize = new Vector2(fishIcon.Size.X, fishIcon.Size.Y), + MaxSize = new Vector2(fishIcon.Size.X, fishIcon.Size.Y), + Margin = new Thickness(fishIcon.Offset.X, 0, 0, fishIcon.Offset.Y), + HorizontalAlignment = Control.HAlignment.Left, + VerticalAlignment = Control.VAlignment.Bottom + }; + secondLayer.AddChild(fishIconContainer); + + var screenCenter = _userInterfaceManager.ModalRoot.Size / 2; + fishingPopup.Open(UIBox2.FromDimensions(new Vector2(screenCenter.X * 0.85f, screenCenter.Y * 0.65f), background.Size)); } } diff --git a/Content.Shared/_CP14/Fishing/CP14FishingMinigamePrototype.cs b/Content.Shared/_CP14/Fishing/CP14FishingMinigamePrototype.cs index d983de003d..cce7c03520 100644 --- a/Content.Shared/_CP14/Fishing/CP14FishingMinigamePrototype.cs +++ b/Content.Shared/_CP14/Fishing/CP14FishingMinigamePrototype.cs @@ -39,7 +39,7 @@ public sealed partial class CP14FishingMinigamePrototype : IPrototype [DataField(required: true)] public Vector2 Size; /// - /// Offset from top left corner. Starter position in the bottom. + /// Offset from bottom left corner. Starter position in the bottom. /// [DataField(required: true)] public Vector2 Offset; } diff --git a/Resources/Prototypes/_CP14/FishingStyles/default.yml b/Resources/Prototypes/_CP14/FishingStyles/default.yml index 7845f56f70..b099e1a978 100644 --- a/Resources/Prototypes/_CP14/FishingStyles/default.yml +++ b/Resources/Prototypes/_CP14/FishingStyles/default.yml @@ -1,18 +1,18 @@ - type: CP14FishingMinigameStyle id: Default background: - texture: Textures/Interface/Paper/paper_background_default.svg.96dpi.png - size: 39, 149 + texture: /Textures/_CP14/Interface/Fishing/Default/background.png + size: 78, 298 offset: 0, 0 fishIcon: - texture: Textures/_CP14/Interface/Fishing/Default/fish_icon.png - size: 11, 9 - offset: 3, 3 + texture: /Textures/_CP14/Interface/Fishing/Default/fish_icon.png + size: 22, 18 + offset: 26, 12 progressbar: - texture: Textures/_CP14/Interface/Fishing/Default/progressbar.png - size: 2, 142 - offset: 13, 134 + texture: /Textures/_CP14/Interface/Fishing/Default/progressbar.png + size: 4, 284 + offset: 6, 8 float: - texture: Textures/_CP14/Interface/Fishing/Default/float.png - size: 11, 38 - offset: 13, 105 + texture: /Textures/_CP14/Interface/Fishing/Default/float.png + size: 22, 76 + offset: 26, 12 diff --git a/Resources/Textures/_CP14/Interface/Fishing/Default/background.png b/Resources/Textures/_CP14/Interface/Fishing/Default/background.png index 93ef830f5a92cea70652229ddff4341828863693..1f11699a978433da532f626bba74c5502fd20fa0 100644 GIT binary patch literal 3290 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 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 diff --git a/Resources/Textures/_CP14/Interface/Fishing/Default/float.png b/Resources/Textures/_CP14/Interface/Fishing/Default/float.png index 01d9b72ba55a5774957115d1e31cc67734c2fafc..bbcfcead4769d2aee2ad15672ac6b914f1059b78 100644 GIT binary patch literal 343 zcmV-d0jU0oP)Px$5lKWrR9J=WnXwK5K@>&L%8F3P{(wfIQHXBE4^T-IM4^`OJ^X-5C93@biB_Re z@C%}l2nof`tb%H1W(#?@dexbmoA;VK-e}MVV33b3o18rh0ONyfIeLif-aHr|Gk pjKAdTpO$ESw(@gxtvLRPx#-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< diff --git a/Resources/Textures/_CP14/Interface/Fishing/Default/progressbar.png b/Resources/Textures/_CP14/Interface/Fishing/Default/progressbar.png index bfe7be229143f196f8eac208be1ede6b5fa9b230..74b573eb59b700d4c04a63562404d109a511c9ea 100644 GIT binary patch literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^EDQ{cG8}9`)&piy8z9A49OUlAuagxtke_k>#COhVLLQ0{nkrXi+!Jm*X*!s+&g$N|H|MJ6 zt=oS3@+9FmZ#lr=4I@{~tSnWokawSFY6LvAEqG}A;Opd1a{u%`T+&>)GR%APlbqkv zV_Et*ADzDXblP3!d&h$WShY&L&K#^h@cR8HZ@%(V;`gUKKhXNTVS4}C(`PSj*}Z3N z!vRKz>))`Od5gYPU!oYVH={24_Bg%6e$jEDZYaut5wW(o8T NgQu&X%Q~loCIFD{aq$2E 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