From 0752df0f62914fa1983caf3e63615a6a6b99c332 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Sun, 26 Apr 2026 18:08:02 +0200 Subject: [PATCH] =?UTF-8?q?feat(intro/outro):=20r=C3=A8tol=20centrat=20sob?= =?UTF-8?q?re=20el=20playfield=20i=20ajustos=20de=20timings/colors?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/fonts/CaesarDressing-Regular.fnt | 4 ++-- data/fonts/CaesarDressing-Regular.gif | Bin 3583 -> 3672 bytes data/scenes/game.yaml | 4 ++-- data/ui.yaml | 4 ++-- source/game/scenes/game_scene.cpp | 13 +++++++++---- 5 files changed, 15 insertions(+), 10 deletions(-) diff --git a/data/fonts/CaesarDressing-Regular.fnt b/data/fonts/CaesarDressing-Regular.fnt index 712fe07..232be58 100644 --- a/data/fonts/CaesarDressing-Regular.fnt +++ b/data/fonts/CaesarDressing-Regular.fnt @@ -2,7 +2,7 @@ # Generado con font_gen.py box_width 18 -box_height 30 +box_height 28 columns 15 # codepoint_decimal ancho_visual @@ -116,7 +116,7 @@ columns 15 224 13 # à 225 13 # á 232 10 # è -233 10 # é +233 11 # é 236 7 # ì 237 8 # í 242 13 # ò diff --git a/data/fonts/CaesarDressing-Regular.gif b/data/fonts/CaesarDressing-Regular.gif index e849889127ffde6417b3764d39532133be7c1901..83de41204e2bdae1110569b2d8a5a0a44aea273e 100644 GIT binary patch literal 3672 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 literal 3583 zcmVZbVC*KBk?(KyhBr#Q$|cr zsPwfn3b$O~m8NATkI_mLr94xDBoYnYgJj**CeU*=S1I7W(-*f2^32jKOHJsJmYn;FT}>^_HfoJLI*fe1>^*|!vfITyHAkL# zjt)g!rpev33m>nXyjJ)Mf>A}z2S7@V+m`obJTllD#OJ0h0h9o&N9mIxKe7>62k&aPwo|fL>>1RmO zU@Mg-WeGE@R%a})2K2f$tk`UBswy3eHtn@TPSv`7i}s3HxOD5hfBkD?Gx7F0I!yslkg>D*a1(lj`byz#(^6Y=NJvr;2^ zSm+`%W}-1#BI7D?>)e3EtoAp*|wi~(^ZJvel0cVh;T^s_n;LUn)FLaC}t=kc;C^Mp+)Hx z=wdD9y$B;`1m5^si5O8RU_~*;$4@j4xrk$D^0mmLf7c-i<44$00Uwjm9*bu^0*0{TpGf8YBxldyDEOPHb*L(14?ObeV?|P>8o;Jy6S%m zwZ+tsYHn&%qKH<>Z^A(aDsOiSyQ@-94w;*!Z6gk8ZG@O`3=N|+2AA%7_T>kzoat1e zWO=TUdfb-`0SGaIB8S;Ajl`iUU&!}zr*ctPhOG0{pq@|_fixsT1L+_vOT z1FM;DpHJeP@zbz6`gN2;TZe|BxJ=zJ(c7xsW!6k5s2~U@mn?SJEeB}Fc2j$89?7Bd z-S?Od68Y}jHxq7mj&n*yHPBuAO!A~T3w_|D4*w_2;(T9#EODx{MGbTuBZp>6%rcv{ zr7fjJt~7=L@62vK^?F&w+$lZ|xRysp>?+rinoV!k2n)gTnY1^~CvvYhiZ}0o&#vdo z&8gs3=NW$bU3w}g+8`g^Z_()A zA2j8HCk{KE-N01syV2F0rm2UW?q8L%p8^4hH>t>PYpqkCLUy%S9+oCU#AAHBg;@o`4$g>A*_; z>tZ6L7(VeSY;~&v2}=m-aT|Ty$n-A9 zs#4wXP#jUC^;{K7PFix6-0_|wlZHvmJn=WW+-2piBR61_k&J7!<)ZjD%4>qrmB=LB z>Xu0+Q=W1~&?KA_{fD{u8IhEmYZDE(xCwp5p^A3Y<~Yg5vRTe^nl~vXYu4E}h1FAc zgyzJF8cCN{r;s6uo9Gm(KcU3*NTtY}Q9;zrcEam(hV1D8 zt=Z9+!W3yE-6>BO%1d>|QmQ!(s6nl^OsUFoJnWOHRR?4=0R^*-T+QhfhgdU$UUZ3R zMdB?n+SOS}L#UGkDD${jx~EK%j8XL}#x#RLb=awgBGI4>dquFv`Uok_oKQpuRflPv-}xzB-46`toJtE!In z75uFaxEgz4@a%QiCiYf%75^-5^`Mi>;bpWxtTOKCAj&h?0#%}Cv2GMCrPQtJRJ=j; zU1ae}#OBJ*u{?X9cwt7~&j{CD=bh_zwRGP0veI@#jiYL%OW%22YQEOWFZ|TmJ+R_Y zw!rjh5$Us>`I>bk*jv#*|GUvrsx(gNJ79JT`@@MQb|N>eDTeWANdDr|uup}}Zg%Le z5tDduhEr`#$67Nu0*tM)OfPHgl1=kM@`i_0DoT4Nnnmi?quNyt_^#_;B8T_B*K{5u zU+m+$Vim|w#&1*W2I8*%$;!M9=Sl4)tAqNpUSO_mc{?;ACFk;QVJ1{UAnH!V5f`q9 z;?aUDM`tY)@6I{-Y5x_|wPE2x_?21iDa9ra^MZR%93dey9MwX0tZ>sZTr*0ip5Jj8YD4BAl80ilu(iN{!7gt)=jwQlXg zx;Q?E`L>--Cozk5&fP-w%2fQbhmBo3W%HQB2huZj%lB-!I(VwtT&pnkY0p3&+poj5 zaJQ@b=wt)&&t-OKRVQ2^*46mksq815%NJVF4}rZ>UQN|R)2yxQR1*Z9=h%V-i+$P2DGkM)-B zWzXEpRa0hj`u_}XdAqLNAjKj}r)~6lKRoF=uj=)@Db1hro18t)D1nM@K_?#7uRE5y zr%}E%gFZBWvgBMs52jD7UD|#Z#wKMeI%T}#RGL2JXwd(Pv*I+8fP?fWRsa3< z-*NNEbGIi2?lMpvp7GmrDt7O5(TeXI-Dg#4a$&Aj6^s6~=N_Wz#XMKb=eXc5HJJBA znnz~iIPd|MYusga!ILvyr&Rf{Ry)1iZ~qt4gY|dSMb&}V=0()nqJgd75C8bffBy8Z zzy0rz|Ns2!fB*dNKZSSBUBh;FP~lqMB01-mCMSR@FcwB__Ga_*Er(ZpO!qDUS7)f_ zbk-+ubi`a^@-4{aDTGvFKLdgQHhN%Jc1QMW)l-7X6J1?|N*?Hd8n}9rr-Bkl7AvJ` zFer2l7d#e7gC+M)yykjgLfD%2%!+}GXg8jsDdnkln7(t0A z5OX9-Ld7(0=X|(lcTI912-Sx*D2Ce>hB+5TRtAL>wP%kgc!ZU7jW=&e_=i3Ci1vnJ z3;(AFO2=SRh-{)pVNOn{v8^_gRIJksac!Ipwh`T6<6WCV1s9&u@XuX(c zrx;I6PbF_=Ab zwt*KIe!(Sf;8=k#=z4%xjsf_N@<@y77>K!2X_ZD^kZ2QAM|~LBg3f3WvUWZNITbSI zf5dlS3fX@QiB$e4krPRg6={(diIEwpksE1|17?5)ND(XXA=rXL$&$C&ZdCV^y#FXa zL|Kysq;LQRj5#@y7!Z;0=#*TD8)0Z*gS3O<_lXaPifa)`O~{o^X?%mjg1?lME5?*a zNr54`h0N!OTNz-kh>2SxXXNOD%czvVvuRLrZReJYhk1f&2y0O3n0IkqXdEu*oyxhAv==($NtLJPPF4t-*$8=hf`AbgetLineHeight(); const int GAP = transition_config_.intro_text_line_gap_px; - const int Y_PYRAMID = GameCanvas::CENTER_Y - LINE_HEIGHT - (GAP / 2); - const int Y_ROOM = GameCanvas::CENTER_Y + (GAP / 2); + const int Y_PYRAMID = PLAY_CENTER_Y - LINE_HEIGHT - (GAP / 2); + const int Y_ROOM = PLAY_CENTER_Y + (GAP / 2); draw_line(LINE_PYRAMID, X_PYRAMID, Y_PYRAMID); draw_line(LINE_ROOM, X_ROOM, Y_ROOM); } else if (state_ == RoomFsm::State::ROOM_OUTRO && transition_.phase >= 0 && transition_.phase <= 2) { @@ -743,8 +748,8 @@ void GameScene::renderRoomText() { const int X_2 = compute_x(W_2, 0, 2, DUR_ENTER, DUR_EXIT, /*from_right=*/true); const int LINE_HEIGHT = room_text_font_->getLineHeight(); const int GAP = transition_config_.outro_text_line_gap_px; - const int Y_1 = GameCanvas::CENTER_Y - LINE_HEIGHT - (GAP / 2); - const int Y_2 = GameCanvas::CENTER_Y + (GAP / 2); + const int Y_1 = PLAY_CENTER_Y - LINE_HEIGHT - (GAP / 2); + const int Y_2 = PLAY_CENTER_Y + (GAP / 2); draw_line(LINE_1, X_1, Y_1); draw_line(LINE_2, X_2, Y_2); }