From 365639bc955c03c566fe7472a7d853a0c16bab9f Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Tue, 11 Oct 2022 14:04:49 +0200 Subject: [PATCH] =?UTF-8?q?Trabajando=20en=20la=20secci=C3=B3n=20de=20cred?= =?UTF-8?q?itos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/font/smb2.png | Bin 1344 -> 1404 bytes source/credits.cpp | 50 +++++++++++++++++++++++++++++++++++++++----- source/credits.h | 16 ++++++++------ source/director.cpp | 2 +- source/title.cpp | 1 + 5 files changed, 57 insertions(+), 12 deletions(-) diff --git a/data/font/smb2.png b/data/font/smb2.png index b11fade07e8e2852e1f68483c91a170ee3ebdaae..45fa64b9facb38d14b27e057de26db32468519e7 100644 GIT binary patch delta 1373 zcmV-j1)}=E3j7L?FnVa|K&HhHGFf~UL;@N`k7~7&~~FW@BLEy&QQW`u$P@ExDk2PN;68EAtP%yex*+Mn4TkGAoLv2wbG85Jp`Gl!t)5W&iIR=&sY?TN~tjcg@- zE796mE7-D(F@GmT_#@@e%W&(!QHNM(@$8SBFJec;&XG3x5@2=<8RS6`Eg~aQ0hk`W z?j;CHt`WP>LS#Ubc%Bb!Vwvadiy9HlWbZxG!)_Rok*OXdEoKxWH@D*^11iI4nTchq{2k?dxN1Ro9W2P*K+St z5UcO{uzfG$>3ggLT0C+;;WmIFo{Y-O`N z7?bavL)#g(5$VqWC8%tHsPeIk#)7=M&24-b=zovkWOi9}`Tj+)Q;x0SZ3e$5Tkb;{ zkIwJWNBx)4KjMR%-jE%Tw1HmGHGMWelgZXr!}G6&Lm|4qzkm5vrKkK;h7E=*g4f~A zBGvvl!k_-x?A1ZmB~LrBG7PN(svzjKv|aOzCdb<+S&X@QGuQz%-Qq{QsEo}DvgK%N z9e?T7Yiwp2P0%Sxz~*?LVL_>5bt^+xQM_91%I-fCGd|7An8#6>2u5m0)tK^avgbY|p5UjW5H{FFG=%D2m5}fBcp$b*zs`I^vI(QdVg^IY_@% zoje{i`+pC=nSttNPEx+aI5y4Ew}jBUsto&lD}Ok@Cv+X@4O7 z8K8K`nMYP$ZQJtfiathctO5Mf753O;4F=X@0pg2P2(KS`?WDpVZB@G3A^%0`mj9x3 zOa9wOm7_ffl?g;=>)vA!qR-}MGTGW{c>c8jzYiWY-c$Y!z5I&cb+AgL=}{ZsZt&{E zT^(ed#M*(CVQ3Xl1wpT+?S0)W(SM^xumq_l4?2KFxA+n7p&<8Gp>g3F#QCG=yI4(1N-d2pv_uLpOUH)Xf>J5BH4 femQoZ{w(|eC?-VnZk;ha00000NkvXXu0mjf;$yW| delta 1313 zcmV++1>XAn3cw1GFng&?dR6r1Sw0l zk7s0r+2-4hULrt1Wt7s^1=ipc5Qfr?t6^ zysoFI(q_oW>W%t8x&pe;r#89+t#*0m%IB=EUSIZpMm!Pi!XL)U=-RX>#*NMlg4iGe zx$CU_sDH$h4Sy16A?r!sTr|ov<+F5SOx}w6Gwv|5aBsrwf_QU@^k?SB=uwU0BfM-d zn`dgEB10t=K#?+A1&a*CGOmi=dw~hiB%brLn2_Z~e5?|zC1;~#tp}?=l0EB+siG6$ z-lc$G<9_HyHyI-*TS1|7{S3ZxL7xe7fz_J7`7kIuTvnR)Lg0i}P?MQ1K| zOF%@Q5v5wXWTMzi7LdK;vie)d80ohd^aT>>z~$MoctV)IQGZFV20(+4@i6T8QDErF zMq^~nwqzq<9>m9TU9o7lRTB-8$pF6uC#}n)%YWw=!GSyOR>GJZ74;u{QJ%@ttLv8; zzp@5*&5#X{GHH-SpWPqHL~W}Pt*?inE332Sd-+ynH27J94TK{$Zy-}un;D}Zq`x+M z^d@VUXI0pa)=|UqAl7H8JIb*$#_?9kLY=!O15H5Fz5Z5T%Z<(2WN)Fpc57Tz-LquP z+JD?_Qztl+%T^HGC7xyLHaX!vPOTOEAU+9ib1J3U%G$So*}%FOw*P2jt3|WNM_vNS z?a~=YV@5&m*{-My3sL$;$BGI{RDR34I&_aodM5I<__}#&lm|09qA}j`U{BFZ8MERd z&|*bFilwK%rx9KDXXJb9;nDT@*#i&-VSjpj*>v1uloAux!H%FTn1b}bfW z++W*r(unsfwdnp=0PuBmRlE_Mt@vb z1M{aVDD7ctvsN2&|J9UbRsU)pY^@(lk1Bdh#m|!eR;sMtL8#cywljIErqAw=WTLj! zh}PGG`98R+d^Gqc+~r4X-aw|R#_ITXf>%%O=uOr}tQYW%#d=i9vhgetCharacterSize(); int i = 0; - for (auto t:texts) + for (auto t : texts) { text->write(0, i * size, t); i++; } SDL_SetRenderTarget(renderer, nullptr); + + // Rellena la textura que cubre el texto + SDL_SetRenderTarget(renderer, coverTexture); + SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, 0x00); + SDL_RenderClear(renderer); + + // Los primeros 8 pixels crea una malla + SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, 0xFF); + for (int i = 0; i < 256; i += 2) + { + SDL_RenderDrawPoint(renderer, i, 0); + SDL_RenderDrawPoint(renderer, i, 2); + SDL_RenderDrawPoint(renderer, i, 4); + SDL_RenderDrawPoint(renderer, i, 6); + + SDL_RenderDrawPoint(renderer, i + 1, 1); + SDL_RenderDrawPoint(renderer, i + 1, 3); + SDL_RenderDrawPoint(renderer, i + 1, 5); + SDL_RenderDrawPoint(renderer, i + 1, 7); + } + + // El resto se rellena de color + SDL_Rect rect = {0, 8, 256, 192}; + SDL_RenderFillRect(renderer, &rect); + + SDL_SetRenderTarget(renderer, nullptr); } // Actualiza las variables @@ -153,10 +190,13 @@ void Credits::render() // Limpia la pantalla screen->clean(); - SDL_Rect rect = {0, 0, GAMECANVAS_WIDTH, GAMECANVAS_HEIGHT}; + // Dibuja la textura con el texto en pantalla + SDL_RenderCopy(renderer, textTexture, nullptr, nullptr); - // Dibuja la textura con el mapa en pantalla - SDL_RenderCopy(renderer, textTexture, &rect, nullptr); + // Dibuja la textura que cubre el texto + const int offset = std::min(counter / 4, 192 / 2); + SDL_Rect rect = {0, offset * 2, 256, 192}; + SDL_RenderCopy(renderer, coverTexture, nullptr, &rect); // Vuelca el contenido del renderizador en pantalla screen->blit(); diff --git a/source/credits.h b/source/credits.h index 9ffee40..8a05bb5 100644 --- a/source/credits.h +++ b/source/credits.h @@ -24,17 +24,21 @@ private: bool enabled; // Solo se escriben y mueven si estan habilitadas }; - SDL_Renderer *renderer; // El renderizador de la ventana - Screen *screen; // Objeto encargado de dibujar en pantalla - Asset *asset; // Objeto con los ficheros de recursos - SDL_Event *eventHandler; // Manejador de eventos - Text *text; // Objeto para escribir texto en pantalla + // Objetos + SDL_Renderer *renderer; // El renderizador de la ventana + Screen *screen; // Objeto encargado de dibujar en pantalla + Asset *asset; // Objeto con los ficheros de recursos + SDL_Event *eventHandler; // Manejador de eventos + Text *text; // Objeto para escribir texto en pantalla + SDL_Texture *textTexture; // Textura para dibujar el texto + SDL_Texture *coverTexture; // Textura para cubrir el texto + + // Variables int counter; // Contador section_t section; // Estado del bucle principal para saber si continua o se sale Uint32 ticks; // Contador de ticks para ajustar la velocidad del programa Uint32 ticksSpeed; // Velocidad a la que se repiten los bucles del programa std::vector texts; // Vector con las letras de la marquesina - SDL_Texture *textTexture; // Textura para dibujar el texto // Actualiza las variables void update(); diff --git a/source/director.cpp b/source/director.cpp index c82ea50..a97da6e 100644 --- a/source/director.cpp +++ b/source/director.cpp @@ -9,7 +9,7 @@ Director::Director(std::string path) section.name = SECTION_PROG_GAME; section.subsection = 0; - section.name = SECTION_PROG_INTRO; + section.name = SECTION_PROG_TITLE; // Crea el objeto que controla los ficheros de recursos asset = new Asset(path.substr(0, path.find_last_of("\\/"))); diff --git a/source/title.cpp b/source/title.cpp index d13015f..8e29ce7 100644 --- a/source/title.cpp +++ b/source/title.cpp @@ -22,6 +22,7 @@ Title::Title(SDL_Renderer *renderer, Screen *screen, Asset *asset) ticks = 0; ticksSpeed = 15; longText = "HEY JAILERS!! IT'S 2022 AND WE'RE STILL ROCKING LIKE IT'S 1998!!! HAVE YOU HEARD IT? JAILGAMES ARE BACK!! YEEESSS BACK!! MORE THAN 10 TITLES ON JAILDOC'S KITCHEN!! THATS A LOOOOOOT OF JAILGAMES, BUT WHICH ONE WILL STRIKE FIRST? THERE IS ALSO A NEW DEVICE TO COME P.A.C.O. THAT WILL BLOW YOUR MIND WITH JAILGAMES ON THE GO. BUT WAIT! WHAT'S THAT BEAUTY I'M SEEING RIGHT OVER THERE?? OOOH THAT TINY MINIASCII IS PURE LOVE!! I WANT TO LICK EVERY BYTE OF IT!! OH SHIT! AND DON'T FORGET TO BRING BACK THOSE OLD AND FAT MS-DOS JAILGAMES TO GITHUB TO KEEP THEM ALIVE!! WHAT WILL BE THE NEXT JAILDOC RELEASE? WHAT WILL BE THE NEXT PROJECT TO COME ALIVE?? OH BABY WE DON'T KNOW BUT HERE YOU CAN FIND THE ANSWER, YOU JUST HAVE TO COMPLETE JAILDOCTOR'S DILEMMA ... COULD YOU?"; + longText = "HEY JAILERS!!"; for (int i = 0; i < (int)longText.length(); ++i) { letter_t l;