From 8b8b348ed1df116589e1e3cc3849942f220cca81 Mon Sep 17 00:00:00 2001 From: chardub Date: Sun, 9 Mar 2025 12:48:32 -0400 Subject: [PATCH] Double hats menu --- Data/Map151.rxdata | Bin 16811 -> 16811 bytes .../002_MessageConfig.rb | 6 ++++- .../007_Objects and windows/011_Messages.rb | 4 ++-- .../015_Trainers and player/004_Player.rb | 7 +----- .../001_OutfitsMain/LayeredClothes.rb | 13 ++++++++--- .../050_Outfits/UI/LayeredClothes_Menus.rb | 22 ++++++++++-------- .../050_Outfits/UI/TrainerClothesPreview.rb | 2 +- .../050_Outfits/utils/OutfitsGameplayUtils.rb | 6 +++-- .../Pictures/Outfits/hatLayer_selected1.png | Bin 6584 -> 6656 bytes .../Pictures/Outfits/hatLayer_selected2.png | Bin 6581 -> 6654 bytes 10 files changed, 35 insertions(+), 25 deletions(-) diff --git a/Data/Map151.rxdata b/Data/Map151.rxdata index 4f8daafb1ff4bbd679b40be1416acb5fc9c1ca0f..2f5f57b771c242b90d87e8d04c354e59424de980 100644 GIT binary patch delta 2820 zcmc(hUvJW26vlzMQvQ_+8#qPA*e2|cTNw-n$0(bzi8mUP#wB7xmJQ<@QKlo)B_>_6 zFR2MSjx||8p*X|G6@>V2BpL=eq#0DW5u#htXjL2{{ z&Mm_^!a+oa^Y~j-hEeOqg;MGYPrU(zyGR)Lq)(aPj z{U^-D-7Bk7Dhu;?g@i|nIAHhC?_U_$Q@#S5{-mbb5*@&Z8GMXM^_Qq%0N}z~Y=(oJZ?tvpBxl zq&tBxUVDLF8eLNn$jO@$WRQfIHH)V=!>UK!WpD1}wt`*(2MSU^Q|ujJ(8>iylNLXmLcOKVnt2yQ3A>(TLeFb^rJwKD9$y{8fIIf%C3h zMq74+hvRAGCzjBGr+Jj@ypHqFL4m%FXS&SKd59>jXt01ZD7Lj(j|RS5G}xHIX>0EQ zrUI4ta1>|8hcn~Hnc;|+4Fv4GjqZ={{-)cO{9?M@S*ICc7M$*d^kP|Jlo}&$)1nSp z&R8N$%Aw+*KILA5QFRnyFiamO^7Pxp0|!jfF^JLK$w=Sia|ULM{LYLS7hr6+!dF^A zXhmW9-P1aPM&)b2%NmN+W=$Jpq*3ND*aig*x zh-*WaVD~yHt>YF@JWm8heB)~}af@8%}F6tGg1sM<*_(z zuhTjs5DY)FGnm*o1%>0y=^olA8)LIEJ#?kx9Axyyh^XB~{1)wEY0lVb8dp-E2fO5C ee_x?Gus7l|cAR}mLjBrHR1o$18}D=9UB3WS;bAQR delta 2825 zcmc&$O-~b16m5&lOuuUjEg&DId=-IqN(-gj#1s<8=mKI=VNsKYNKIZuOQca*Rf35N zH_LxYRq-ndzJ9pkPW^OyGf}hwRP>j+Q_elMvV0YMa^p)#}BUhmI&Jca-UaeIi?1P8|Juz+xdI<-8 z5?sJt{Spk|)u04Jc#29eT!EN?4`Z>|U{r#!0*vE^2?^pvfXND6^uQFc|Ay(9Yk6Hv z&BF}-oWLVVco6ZN!edr~bOAEcxMfZPXUuhZO-!X=p7gC{1 z5BBHE(8kG;hZs7-%$lX<_?oS?3f@Z0M~ha|sb(FMW(vAy3ay$!ViVDLF3U38A{&KR zg}Fe{N%zJxG%&nX^W$w)Di(c&rVFg5H9@zHJ8YXC5G?Vh${qShvz(-OP7&r&^vRZM za@R-)RN#35GmgKC5x_x?evD zFZzA-wPSIN4nve)iubn_Jg1Rt25-%?tN}Tx_1G0>5qCsonkQZZ?z3assl{osmFWeQ z=?H4WOHjd0rom4Sl8Z9epC-ELw~5sz?E_|6|L?TZ8P}|*XvLatbO%g4rM~YTk4r`O=oZK59!SHML23?Tt z0ISxVxg$h_BQk1#0$78S_}LoNZ>oemb?VnrUpw0+DxH6Ws4U1gMdp<8J0m3`cKIVJ ZgxLLyfqa#0m3PY364@k!^$*!!&OaW7UdR9d diff --git a/Data/Scripts/007_Objects and windows/002_MessageConfig.rb b/Data/Scripts/007_Objects and windows/002_MessageConfig.rb index 94f80a3dd..7633a927d 100644 --- a/Data/Scripts/007_Objects and windows/002_MessageConfig.rb +++ b/Data/Scripts/007_Objects and windows/002_MessageConfig.rb @@ -207,7 +207,7 @@ def pbPositionFaceWindow(facewindow,msgwindow) end end -def pbPositionNearMsgWindow(cmdwindow,msgwindow,side) +def pbPositionNearMsgWindow(cmdwindow,msgwindow,side, x_offset=nil,y_offset=nil) return if !cmdwindow if msgwindow height=[cmdwindow.height,Graphics.height-msgwindow.height].min @@ -234,6 +234,10 @@ def pbPositionNearMsgWindow(cmdwindow,msgwindow,side) cmdwindow.x=0 cmdwindow.y=0 end + cmdwindow.x+= x_offset if x_offset + cmdwindow.y+= y_offset if y_offset + + end # internal function diff --git a/Data/Scripts/007_Objects and windows/011_Messages.rb b/Data/Scripts/007_Objects and windows/011_Messages.rb index b0c8c3efb..99b90a966 100644 --- a/Data/Scripts/007_Objects and windows/011_Messages.rb +++ b/Data/Scripts/007_Objects and windows/011_Messages.rb @@ -909,7 +909,7 @@ def pbMessageChooseNumber(message, params, &block) end -def pbShowCommands(msgwindow, commands = nil, cmdIfCancel = 0, defaultCmd = 0) +def pbShowCommands(msgwindow, commands = nil, cmdIfCancel = 0, defaultCmd = 0, x_offset=nil, y_offset=nil) return 0 if !commands $PokemonTemp.speechbubble_arrow.visible =false if $PokemonTemp.speechbubble_arrow && !$PokemonTemp.speechbubble_arrow.disposed? if defaultCmd == 0 && ($game_variables && $game_variables[VAR_COMMAND_WINDOW_INDEX] != 0) @@ -919,7 +919,7 @@ def pbShowCommands(msgwindow, commands = nil, cmdIfCancel = 0, defaultCmd = 0) cmdwindow.z = 99999 cmdwindow.visible = true cmdwindow.resizeToFit(cmdwindow.commands) - pbPositionNearMsgWindow(cmdwindow, msgwindow, :right) + pbPositionNearMsgWindow(cmdwindow, msgwindow, :right, x_offset, y_offset) cmdwindow.index = defaultCmd command = 0 loop do diff --git a/Data/Scripts/015_Trainers and player/004_Player.rb b/Data/Scripts/015_Trainers and player/004_Player.rb index 8653e6032..5c73afda4 100644 --- a/Data/Scripts/015_Trainers and player/004_Player.rb +++ b/Data/Scripts/015_Trainers and player/004_Player.rb @@ -195,11 +195,6 @@ class Player < Trainer end def clothes_color=(value) - echoln value - echoln @clothes - #echoln $Trainer.dyed_clothes - echoln caller - @clothes_color=value $Trainer.dyed_clothes= {} if !$Trainer.dyed_clothes $Trainer.dyed_clothes[@clothes] = value if value @@ -218,7 +213,7 @@ class Player < Trainer refreshPlayerOutfit() end - + def hat_color=(value) @hat_color=value $Trainer.dyed_hats= {} if !$Trainer.dyed_hats diff --git a/Data/Scripts/050_Outfits/001_OutfitsMain/LayeredClothes.rb b/Data/Scripts/050_Outfits/001_OutfitsMain/LayeredClothes.rb index b4c94167b..bc941d2d4 100644 --- a/Data/Scripts/050_Outfits/001_OutfitsMain/LayeredClothes.rb +++ b/Data/Scripts/050_Outfits/001_OutfitsMain/LayeredClothes.rb @@ -66,9 +66,15 @@ def setHairColor(hue_shift) refreshPlayerOutfit() end -def shiftHatColor(incr) - $Trainer.hat_color = 0 if !$Trainer.hat_color - $Trainer.hat_color += incr +def shiftHatColor(incr,secondary_hat=false) + if secondary_hat + $Trainer.hat2_color = 0 if !$Trainer.hat2_color + $Trainer.hat2_color += incr + else + $Trainer.hat_color = 0 if !$Trainer.hat_color + $Trainer.hat_color += incr + end + refreshPlayerOutfit() end @@ -144,6 +150,7 @@ def generate_front_trainer_sprite_bitmap(allowEasterEgg=true, pokeball = nil, clothes_id = nil, hat_id = nil, hat2_id=nil, hair_id = nil, skin_tone_id = nil, hair_color = nil, hat_color = nil, clothes_color = nil, hat2_color = nil) + clothes_id = $Trainer.clothes if !clothes_id hat_id = $Trainer.hat if !hat_id hat2_id = $Trainer.hat2 if !hat2_id diff --git a/Data/Scripts/050_Outfits/UI/LayeredClothes_Menus.rb b/Data/Scripts/050_Outfits/UI/LayeredClothes_Menus.rb index 3f1fa4155..e937a59fd 100644 --- a/Data/Scripts/050_Outfits/UI/LayeredClothes_Menus.rb +++ b/Data/Scripts/050_Outfits/UI/LayeredClothes_Menus.rb @@ -115,8 +115,8 @@ def selectHairColor end -def selectHatColor - original_color = $Trainer.hat_color +def selectHatColor(secondary_hat=false) + original_color = secondary_hat ? $Trainer.hat2_color : $Trainer.hat_color display_outfit_preview() commands = ["Shift up", "Shift down", "Reset", "Confirm", "Never Mind"] previous_input = 0 @@ -126,24 +126,26 @@ def selectHatColor case choice when 0 #NEXT pbSEPlay("GUI storage pick up", 80, 100) - shiftHatColor(10) - display_outfit_preview() + shiftHatColor(10,secondary_hat) + display_outfit_preview ret = true when 1 #PREVIOUS pbSEPlay("GUI storage pick up", 80, 100) - shiftHatColor(-10) - display_outfit_preview() + shiftHatColor(-10,secondary_hat) + display_outfit_preview ret = true when 2 #Reset pbSEPlay("GUI storage put down", 80, 100) - $Trainer.hat_color = 0 - display_outfit_preview() - refreshPlayerOutfit() + $Trainer.hat_color = 0 if !secondary_hat + $Trainer.hat2_color = 0 if secondary_hat + display_outfit_preview + refreshPlayerOutfit ret = false when 3 #Confirm break else - $Trainer.hat_color = original_color + $Trainer.hat_color = original_color if !secondary_hat + $Trainer.hat2_color = original_color if secondary_hat ret = false break end diff --git a/Data/Scripts/050_Outfits/UI/TrainerClothesPreview.rb b/Data/Scripts/050_Outfits/UI/TrainerClothesPreview.rb index faed0c608..1f0c0eb18 100644 --- a/Data/Scripts/050_Outfits/UI/TrainerClothesPreview.rb +++ b/Data/Scripts/050_Outfits/UI/TrainerClothesPreview.rb @@ -1,5 +1,5 @@ class TrainerClothesPreview - attr_writer :pokeball, :clothes, :hat, :hat2, :hair, :skin_tone, :hair_color, :hat_color, :clothes_color + attr_writer :pokeball, :clothes, :hat, :hat2, :hair, :skin_tone, :hair_color, :hat_color,:hat2_color, :clothes_color def initialize(x = 0, y = 0, windowed = true, pokeball = nil) @playerBitmap = nil diff --git a/Data/Scripts/050_Outfits/utils/OutfitsGameplayUtils.rb b/Data/Scripts/050_Outfits/utils/OutfitsGameplayUtils.rb index 14605f311..8fff0b8e4 100644 --- a/Data/Scripts/050_Outfits/utils/OutfitsGameplayUtils.rb +++ b/Data/Scripts/050_Outfits/utils/OutfitsGameplayUtils.rb @@ -76,9 +76,11 @@ def putOnHat(outfit_id, silent = false, is_secondary=false) dye_color = $Trainer.dyed_hats[outfit_id] if dye_color - $Trainer.hat_color = dye_color + $Trainer.hat_color = dye_color if !is_secondary + $Trainer.hat2_color = dye_color if is_secondary else - $Trainer.hat_color = nil + $Trainer.hat_color = nil if !is_secondary + $Trainer.hat2_color = nil if is_secondary end $game_map.refreshPlayerOutfit() diff --git a/Graphics/Pictures/Outfits/hatLayer_selected1.png b/Graphics/Pictures/Outfits/hatLayer_selected1.png index 168599613bf2c26c03bb270b1fbfeda914dd5779..6fa41f91c224cbf99dcf78be4f8db7f916dfadcb 100644 GIT binary patch delta 2334 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 delta 2268 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 FzX3tCAzlCg diff --git a/Graphics/Pictures/Outfits/hatLayer_selected2.png b/Graphics/Pictures/Outfits/hatLayer_selected2.png index 96aef2244a15b3e74318f84bf44e6dd53c290b36..83e15b92f19852e763006317331ab0a727a362ff 100644 GIT binary patch delta 2332 zcmZ8idpOf=AHO#wmB%4;K&nUSk+t(|Rt_a9NeAUk88e$oXiZ4jZ=Igx)M1r`=uPQ> zqKLH7<5U_GQ5M^qm4!^+VY1URUDtEH*Y*B!U-y08*Z1@Je!i#suE1)sm$pEvRClk1 zabu*)8vp4t?zL56<(2kQ)agZ+<6ede<7~sOIMO>shgxSH?5N6V|NhNs*LAKFvE0vn z@aka;o6kliOAZbc?eHGD*V6UP;+!h@fTeIa>#~xIc3YfecE`pi47q(_oNiC4|MTGm za$m}Ae&^D66(jiyM(3wAp22{@%Cm>(-FM}b`K@<7#mxzE+-DzNlnMV0Yx}yEne zJ-^qQHG3?zZ1j_XBaud>N6@h02s|d7iog-VQ3xWMhC?tSFbp&m=Sm{d@m#r~gCmAW z4JYF1Cul(}?;-;GQ(vI1i7-5%D+-7EeTDxUEL1rldeL+6{+t!($LA95-Utvj4le zGV8n}jey0v5>O-r$~A(7z|rXp1c^vRBkX|9aO?B5c9C^Z8 zKwVI67-v&?=Lo!pC>F~TC9MK^@uX1A&X|ms2>8m`F+weWl$Uqm=_~VXFmAiK5stHj zb&o?x8l31tE?;g_D)xBNCl{R*3T48)3n?kwwAJf`NQdO3Uy|L&KW@-cPBoouwc-w0 zBcOSaVypI*gKIc`0lgV1DP(3tA#etOGY1HY$-)*j%o+esBf#(tRs`sIAIJ6H8P50h zZiu(TUeFtX_VPKNXzoq=Xx}vJk%v`4zD_Pkzx(u4?Z8dlWOTMidj}}+*VP*Xm}h-< zVA}w%H6^9WuGxu!VNd)eIRUZRF%x79i?XBrpLofV>3!bbYI#?J*Kzg~(ow$r+^1tS|* zvmU+UlCtQcM(OY3l5uzX$gJpma%qNJc5MYz5Dnu996<1X2zDT;1X^s3mGuU*cV)BO zAh%d~GOKxaGEe@Kt_4^-@LCNkXtV~|I{vfO?)0fMjJ8JU&Ff@nNOBQUl%z}zJ-1EW zSwmo`<5dRHU$<~T`@kH}J^}QxqVp@!+QPziKJgEgWK^P3{tRW;$|lAYkveU0k!Dg? z`DYR&DVM&b1ZXxBV%F?&%r#tA=4n+H4--RURwNG*um*_f^? z$yb++4x2%m&jvy+x%7`lg~3cAEsz;J%BJq>{hgDeYf54z;@UXH(cHy;`87zJykSMhbRVDg%ntlx3sJi$ z@J%(kW+r0%qPwPGRN){$oO#TWCE+aW%KZ|rO32a(DWdHAW}>Fn#y07>DhcEgWj3iW zoMCwO2)=#NevBEt)ByM_1UF6(cH7sPbc6eLV1K66nD7zhn~pm0CIn&5c~@=>fT3QU zKDe0x^=ME1#+|lyG+L@Z7;?8;T0vo{f}GQXl}8irDiS}$fu$g9@o5{-RBx&GRR;f& zRqxyS*VW^38bzCwEL<|UmXg#TBOB8zyD-E`kjNV@^JzVqGo4JnCGMfG~z!8Z>Rv))P6jL6(wH zd$>n8S;nUshCOqE{Stn_zz^(N_1w-pO7jWX{Geht`$0A&gT+^_0t>`E9%^bfb>h(lQcK3|q5Z#+yYC40xpYlP^ zF(@?Nt%N&12KBEqMAdT-C2=R6f4hIxu~W96C1f z3Zpxe%^sV0n4QoyXMInuP5$E(6%EGdtj>XqERFHp?JxlTd;ngK{r3^e!UDY z&`(A%bd9s)Vb0f)=SW7*g2f|3$7Cm7jP>uXMfH1p?=j_ICVBC@LC2ZRrG{IBEB7X> zvt=32RA%coqoqM6o0MQvf>CZ$s^=P&U?dQUH5u+X){OdoBaNbZTLrE?pmX`fn5& BQ@H>D delta 2258 zcmZ8hdpOkj8vo9?jI7GkDy>i=CBvBeAT#Y^Nn#^Hu5+PPtd(2hH}Pz`9!_)0CATPw zm~x42Fgn@7aV<5g!R!*#U`P{_#+d!-?DL%GIe)(I_kBN~_xnDd&%26m#OEA@Wd z7@uCCHt;<^XF3U*!|EOxPhc~)q3y?bmZRDS+2fDhXKE}olIC1I-F|-8MP2CHY*FV? z%#{rK^JOB@EYw zHk+RKu3>8(p%BwpNhJ(eRrqZGfuLGA%D}5=HV^;yi`nwm3+ zWIQe+f{YarMOazO{#$aLCa3+gHU_{t)_oEK|uN7t{*55!y>uA~> z?X%!&>Ej?BeVna@Uh-7{)`hq`AMj0nBOCQPx&75P@V-B6-wziu4qQrYFN^yw!#lOA z7BIBzwCRzKa!3JL7mljVB1$tu^x+MwykzPPd~di!Ja zcC4En8p=4iZo})K`3(-m0rU5h*b)UlxkWiPdo$8Od%11Cw?wD@iM}_21ORx4XXr+i zZw(1ubux>X>s~6BJ@R8K+i1|-A!p~p!qDl|w1s!O7^d=DsQE>OuJ4qI4_9rlmAh=P z1;Q2t_|R|Ot^_uYXD!XlVxFV9$h$D66~H#e(00mEzHndw@=Q+j((?Ir!Bt|7YO%9( zhwFCyMUE~219iG|61RXoKf2;y4ed>jTlM#ew;rumWgVA`n=Rz1z;8fJr(&O_tRO4;Rah-wfcc@IY@~LGy7u*3{&pGc4x@%RHJ+zqtY0<0U&5Dw!6=q9Pyd*l% z!)sf5$W(D~yqMRbsuW(vsl=F2XiviN6qB@-ozOb1^hC9nC$ba?0HFoxJ+xz98nstm z;yPR@WeGpmN2()3ZSBcBf~cJ{xxyGhRn@W1rL`G3+65`gm;IMo41P+K(PDd{g1QQE zXzS~{3vH)m({9gwhDuBwsDiK2s8oY?Sb;@$@-^YWJgEF-$kGbXeR>Nr*!*P$L^`t~ z=`ULNPE#My_v6zzCnmN7;EmXGtER_22 z?NkrvkGA2C(4TdtHf!kKH+8`udpR7y(Ku2uD-H@2H#ervO#Mb7{?kq|W^Eta^Hp_{ zwn;fO2>=3gen41F{Y}-kTGC-W=(Ifj^c)Xr7|wrZJ{63xtEF~1hy+cu(9$@&CVlXA zOixmiBqH_w!~30WUzV_N6kMuBmkh0Af_6g<;4^Tt6;T+rp7R3HeuvT)nMsWAFwDHs z!q-A#L;4VFq+kc^EbfxQjxRpcfrGzun($8HC@LoaM)AnXeJl#9(10I3bpk=2o(Jr? zXS(fzji$t}*2~+c$)hrn*LG=)t>f8BerqD5&5to>ERs=h?~jqj^ZvUH>?7Uw2gXjT zAJmNw7r64p<36izt2e67=R0tuIw0?g#1=X}7b93+TAW+@_m5sDS|h1pHjntCB7V`u zE59n3f{{9P4MQUv%~_~}r-Kzzy51T=@E-e_eqS#}U|6{u*VkgSd9hf=o87o3prJ$LjH58e=DE0SfR4z_JV%LtCE=OMI zaAJzgGNCYKVvl`aQmwk?%L#s(|A`^o=rPl`uryOA7v?>sSq!{l_#r&@~yrdtlvHT$yyh_Xdukq z3XGz9m~*&XD+H8vIM(wcsN1G+5LTx_zxP-FCvHBe_|jD5&}z!WNR8gVXyUay2*UDo z>1PPh^W{twd=BNw!!_53&t2yzCSC@b{Gn7YpT4bl-YSSQ_CGpdqokHEnF`}H*2ccA zOSk7kHjg|K+^%zcscx#u(FgvhLrO~3jaH}~3n@$hT?>FcJ_t7>R=<|p5q{nE%=>+# zMV0NrmnIA%J5}P6)@JGpB?~`0n_ktwqA>Y>a8bdM+=@zfmC>e;Zk{NX*r!gosKXFe z0JQHh;E+Skp4x3T{);eIkbU9Uu~xjVMd_*OYv=rm0)#Fv`&qEF0GJMf39S&0Lr)s~ zNMBCKXJ7Ea3L)JFr1v