From d37b21fc3bf253cdbba05951afd5d030c788319a Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Fri, 4 Nov 2022 18:36:08 +0100 Subject: [PATCH] Retocado el final del ending con fade de audio --- data/ending/ending4.png | Bin 1559 -> 1595 bytes source/common/input.cpp | 1 + source/ending.cpp | 26 ++++++++++++++++++++------ source/ending.h | 3 +++ source/game.cpp | 19 ++++++++++++++++++- source/game.h | 5 ++++- 6 files changed, 46 insertions(+), 8 deletions(-) diff --git a/data/ending/ending4.png b/data/ending/ending4.png index 80fb8d9fbee4d9893b88c21761473ac401bb8be5..bbf97bdbb1bef42e6e2c4359d4c30ac86188243c 100644 GIT binary patch delta 1565 zcmV+&2IBdb47&`FF@N<*L_t(|ob8=ylBFsTg%2HXUzeq)E2Do{cvBuj0?A;PCxWoN zrGR{9GO7lE!>eudXLSZ%-Sq<5OfQhl^xx_Xj1UnOkFnMc&qs?49$cxX3jXu?6wf`5 zyGphp0yEqG&0F;3_1m+b-V0LJYYi0BF_<kB^yLsIaiLa*I& zFdojY1rl1s=)#v+4!4+J10?2_WhY-=#Z}9yDBEZ_V?P%rFch2EBjv;-P;bU1ubipvjbiwfFN#y&C zwcBsL)A=yQ;D7V^h=yodG}J})x~E)lZtS+?&IY-!u`s^-^C7f`8aM->>;a<}f_9KV zc?6Ju0frRLASf@4UW-wN@;n%;Le5gQ0x|=}E+LgaMJUgP;nQ6WWeXrHVO(jl{78=1 z0yq%LvtjTME9~pHAZS{ZrrT0kbwboP_VoDx$8p~l(|=6-X4$@suY{DPhF!Q zUa1-P>ava%bq4(ee#aB;mcow>t)s_Et};kiCYY7*p`!|`c@_+03Ydc_!Ds;z!idG? zfp~pk$)I$(tl4e~h`Xv=yZ{dNx0bw{B4NDOs5aYo&Vh)s?yG9}oe!g*`}1J<0+AHP z2PoDX27l+RT_X~vAHt})F~k7%M?d>57TV;pT44a~Fq-AfKw7E^ z5o872+oBV>EN&g8CT>ZsFq}J^v`6W{@TAD!eP}YtDa27dg{xVSuT*XQQH)P1o@yXF zxGOPB?xueJ9%UU@12~oqoNZ#s!iXY}9o&_dcYj;OgLuIh^S}B-+d5LNu|-uD(z`TA z%UxMi)+Ik0W*vnzrPcvd_e1*DNolw%egj6KL@Xk8zM3Mg5oo&s)GS0IEer9kOPDNx zwvJ#i6B*ZNuEXjU)jiHaynI3!6b-XksKmM7#3>U*cQrx9&TBwS-}dXKdb z;D3A37I`R|u1az*^`!TB3&}yztT(uoq_VG(o|=Ws=!c{fgEFFt8$#h=wBT>o4=J=- zlj2Y`>Wy4FmhB(VwZy8?Ud_4lY&tlh)Lx`>Y#x0?e*+G{Inl(Qh1X1LI}7n5v{_4L zNU2edZ4Ee-Gd*4MTh}4VsOfXP`z&3SEljD_6tfl;ok_f9|0YjszE0Eo2~$8o?p zCwf{orx87M!W~Q>91XYASFu;GI??%d=xUFJb)h-Lr zbz5NtKV}SSj(Y14pb>~>Yiox^b2~{4gg1ZB{TB*wx+~2A#wH5^WJB@41qz_!u7Ju` zR#>@9q2wz16;N!&v7{7_R70PjYJY_S^tZHZ=6^K~CTs*#5Wn_(NK;RUulGIo`=J1L zD8|$QvBCbR#u^9YVQ9H4pt+S*U%|JGbrlYWWx)kul&-Pgf$j6~TEu|{zoZOEzZ?MH z+1jb$WO0AWw)bTLJT$kmV$!x0;BF-rbF3hxus+drRbE{{xa%6>zIdHuv43{h@4mFi zpmoekqHZ$_T^AJHmyd6Sd*W^ixb8c)zwt{jDR=|vzW^l!;et0c41l2r#6t znF)noQw)Z`&H*rVfyBVvf7gLB0!#|R1Q#_P2nW;S#!_%J!AL<&f-x3IXe~V!6N96Z zzkB~DRaZ=cG52Ns!1qI5;eUs_YKC8=)5R_F&2itqIDfNa5{qd1tbPav(1FtfiTGvKsM70WHY@$Hq#4aGZy^?`^?>{Uk$nh P00000NkvXXu0mjf#h?6z delta 1528 zcmVQ^1Vu50$Q z+qNB^&jRQpfRuLpvMkv;V?2Is1~dbhIAbBASGm&t=kFiW!he$O4*KrnJO2!ZrsH#+ zUiv7(Fr2Rik~+e>^EJ+qj`~WAh=3649=&zfevA>@wzIgv}FzVxoSk zWb!@?iff2!4S!E}B}U(p3uhkT%grGiqDsP(R<#ajk#vuzQ(TtcOJMN-HCop(Ft}|N zZ@-7k9a0KIqfrp9#BO0ImM$>`@(nOpX$Z4|Vs?Pa8pf<3SiF7d$gEW+4*511XId5; zmoz)X5=IROp4vp0v0{HUjj~3Rr7i-11uYW+S>#91Yf2C@NjD`WcVNmkA zbj$0tlR9Q}mB~D$cbEd+5bj>Pg3+qfZFi0%q9VssIYhc+M9$!<<;QujLpbjJSDO)0 z=aST&01!l7%d#NGcv!;&_CC`j`{GfS6^wmjOIp_L@eC$l@3gxn7L)-=VaU3Y zKeK;GJAVRe3R!n+Q#o0NszbdOf454)SQT|I%d+pZVAtvrei0ClnYdQmA(~EJk+*%R zJAl07UUhT-i0#ozokK>?H-Nl5yrdl_--R@-DwF!SBYDMQ8#GQn2)Yh#9nq;mmSrNZ zRg8P0E?PR0F-ay`qiy=toIxGMNxdbJ1M{p?S$|Iot*R>qGDEmhyF`YmpTE7_ffz3- z?*j;X$@Ca3MkAaKXP+Nrp=ON`NDa~_~RUM z2Rwz6SzK~iP&^5ZK-~`Tkq+U|RnlzDL@>J%H=%KPy{+t^Rab{tiu*znx~xK#HcYm( z_kWQNIcyW|JLfCa(q*N)sQXp+7ihoDD2B*#;^z-O(9#vlXj*bWNHegI0;su4^ zcY@owS~_3_@B=k21M!#4xsx@!cs{9 z!0|^WM}c5X0Yr+DU0d_3ou!)fS3ZFWfuu?SS!gBzsip_=ZK^)W;gOFXAd~3 0) { // Dibuja la textura que cubre el texto - // const int offset = std::min(coverCounter, 200 / 2); - // SDL_Rect srcRect = {0, 0, 256, 200 - (offset * 2)}; - // SDL_Rect dstRect = {0, offset * 2, 256, 200 - (offset * 2)}; - // SDL_RenderCopy(renderer, coverTexture, &srcRect, &dstRect); - const int offset = std::min(coverCounter, 100); SDL_Rect srcRect = {0, 200 - (coverCounter * 2), 256, offset * 2}; SDL_Rect dstRect = {0, 0, 256, offset * 2}; SDL_RenderCopy(renderer, coverTexture, &srcRect, &dstRect); } +} + +// Actualiza el volumen de la musica +void Ending::updateMusicVolume() +{ + if (scene == 4 && coverCounter > 0) + { + const float step = (100.0f - coverCounter) / 100.0f; + const int volume = 128 * step; + JA_SetVolume(volume); + } } \ No newline at end of file diff --git a/source/ending.h b/source/ending.h index d0cb336..ffe6ebd 100644 --- a/source/ending.h +++ b/source/ending.h @@ -105,6 +105,9 @@ private: // Dibuja la cortinilla de cambio de escena void renderCoverTexture(); + // Actualiza el volumen de la musica + void updateMusicVolume(); + public: // Constructor Ending(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, options_t *options); diff --git a/source/game.cpp b/source/game.cpp index abd0c70..90d8e24 100644 --- a/source/game.cpp +++ b/source/game.cpp @@ -212,6 +212,7 @@ void Game::update() checkPlayerAndItems(); checkPlayerAndEnemies(); checkIfPlayerIsAlive(); + checkGameOver(); checkEndGame(); scoreboard->update(); input->update(); @@ -372,7 +373,7 @@ void Game::checkIfPlayerIsAlive() } // Comprueba si ha terminado la partida -void Game::checkEndGame() +void Game::checkGameOver() { if (board.lives < 0) { @@ -497,4 +498,20 @@ void Game::setScoreBoardColor() // Si el color es negro brillante lo cambia a blanco const color_t cBrightBlack = stringToColor(options->palette, "bright_black"); board.color = colorAreEqual(c, cBrightBlack) ? stringToColor(options->palette, "white") : c; +} + +// Comprueba si ha finalizado el juego +bool Game::checkEndGame() +{ + const bool a = room->getName() == "THE JAIL"; + const bool b = board.items >= 2; + const bool c = player->getRect().x < 152; + + if (a && b && c) + { + section.name = SECTION_PROG_ENDING; + return true; + } + + return false; } \ No newline at end of file diff --git a/source/game.h b/source/game.h index 3f1eb0b..a25b6a6 100644 --- a/source/game.h +++ b/source/game.h @@ -89,7 +89,7 @@ private: void checkIfPlayerIsAlive(); // Comprueba si ha terminado la partida - void checkEndGame(); + void checkGameOver(); // Mata al jugador void killPlayer(); @@ -112,6 +112,9 @@ private: // Pone el color del marcador en función del color del borde de la habitación void setScoreBoardColor(); + // Comprueba si ha finalizado el juego + bool checkEndGame(); + public: // Constructor Game(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, options_t *options, Input *input, Debug *debug);