From 02cc3b35272313ea85d974dac16472c3b6263e4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20Valor=20Mart=C3=ADnez?= Date: Wed, 26 Oct 2022 22:36:46 +0200 Subject: [PATCH] =?UTF-8?q?A=C3=B1adido=20el=20objeto=20resource=20a=20tod?= =?UTF-8?q?as=20las=20secciones?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/logo/seagull.png | Bin 690 -> 0 bytes source/credits.cpp | 7 +++--- source/credits.h | 4 ++- source/director.cpp | 56 +++++++++++++++++++++++++++++++++++++----- source/intro.cpp | 13 +++++----- source/intro.h | 4 ++- source/logo.cpp | 10 +++----- source/logo.h | 4 ++- source/title.cpp | 8 +++--- source/title.h | 4 ++- 10 files changed, 79 insertions(+), 31 deletions(-) delete mode 100644 data/logo/seagull.png diff --git a/data/logo/seagull.png b/data/logo/seagull.png deleted file mode 100644 index b6a6f5feb5e5dfec7c0eec88cbdb22deb6fb1c43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 690 zcmV;j0!{siP)w^Sqf+^W*j2n>5)fTSbYD zUkm;Mw#r&5A|*RzO>EF}o|&3S=G^YNpZmS%obEjroZ*y`Hmdp{oiX*$M8Gp2S@6_6 zwlfuDOQ?q$nxK&9; zmxWJ-eY#vw_}12A1%9zPQQ$9|^>AnmoK3=>L>b4*SV`(>VR<=S=~PZB-p784Tg}YP z%GxQj9fJ@P1n@A$IAi$fXIQ+S9tP-@9ToEXe)FfvO0FVaBahAs36hxjM9oQcRo1xZ zs*DtQyZ?XtYQzTz3f0{KsD84nw{ED}g6~bs`aHC(?;~(M!bPT(pFMz~chNUXTGu`_ zuEW`7NsH~k`3AH-Xi+`-E4gGk<8gRBfrbdQTtnSrp=ZT&j_)D7CSP?0yL;f3_{OCl zO9W@xFFYao0002_Nkl5pKfnte_FD+yu=b@|yE0Kx@S-t+Xr?VcotYkZZo`@VXGwbvE zzf=$eG9J8#X2Dh;prm9{4lR`~laMKw?kD}bBttW-%$4+z2Y(@IA|x;~w-O?1mLZ}e z)P-jC>cu( zy%kPB)a+Z&BQlY}|LxB+GND;?4Px!je+I6aq27~c%hc{&c7!~_jpsFQwzresource = resource; this->renderer = renderer; this->screen = screen; this->asset = asset; @@ -12,7 +13,7 @@ Credits::Credits(SDL_Renderer *renderer, Screen *screen, Asset *asset, options_t // Reserva memoria para los punteros eventHandler = new SDL_Event(); text = new Text(asset->get("smb2.png"), asset->get("smb2.txt"), renderer); - texture = new Texture(renderer, asset->get("shine.png")); + texture = resource->getTexture("shine.png"); sprite = new AnimatedSprite(texture, renderer, asset->get("shine.ani")); // Inicializa variables @@ -82,8 +83,6 @@ Credits::~Credits() { delete eventHandler; delete text; - texture->unload(); - delete texture; delete sprite; SDL_DestroyTexture(textTexture); SDL_DestroyTexture(coverTexture); diff --git a/source/credits.h b/source/credits.h index 47d9b22..b675b69 100644 --- a/source/credits.h +++ b/source/credits.h @@ -4,6 +4,7 @@ #include "common/animatedsprite.h" #include "common/asset.h" #include "common/jail_audio.h" +#include "common/resource.h" #include "common/screen.h" #include "common/sprite.h" #include "common/text.h" @@ -27,6 +28,7 @@ private: // Objetos y punteros SDL_Renderer *renderer; // El renderizador de la ventana Screen *screen; // Objeto encargado de dibujar en pantalla + Resource *resource; // Objeto con los recursos Asset *asset; // Objeto con los ficheros de recursos SDL_Event *eventHandler; // Manejador de eventos Text *text; // Objeto para escribir texto en pantalla @@ -62,7 +64,7 @@ private: public: // Constructor - Credits(SDL_Renderer *renderer, Screen *screen, Asset *asset, options_t *options); + Credits(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, options_t *options); // Destructor ~Credits(); diff --git a/source/director.cpp b/source/director.cpp index c06adc0..2ede6a3 100644 --- a/source/director.cpp +++ b/source/director.cpp @@ -180,7 +180,44 @@ bool Director::saveConfig() // Carga los recursos void Director::loadResources(section_t section) { - if (section.name == SECTION_PROG_GAME || section.name == SECTION_PROG_DEMO) + if (section.name == SECTION_PROG_LOGO) + { + std::vector textureList; + textureList.push_back("jailgames.png"); + textureList.push_back("since_1998.png"); + + resource->loadTextures(textureList); + } + + else if (section.name == SECTION_PROG_INTRO) + { + std::vector textureList; + textureList.push_back("loading_screen_bn.png"); + textureList.push_back("loading_screen_color.png"); + textureList.push_back("loading_screen_bn_zxarne.png"); + textureList.push_back("loading_screen_color_zxarne.png"); + + resource->loadTextures(textureList); + } + + else if (section.name == SECTION_PROG_TITLE) + { + std::vector textureList; + textureList.push_back("loading_screen_color.png"); + textureList.push_back("loading_screen_color_zxarne.png"); + + resource->loadTextures(textureList); + } + + else if (section.name == SECTION_PROG_CREDITS) + { + std::vector textureList; + textureList.push_back("shine.png"); + + resource->loadTextures(textureList); + } + + else if (section.name == SECTION_PROG_GAME || section.name == SECTION_PROG_DEMO) { std::vector textureList; @@ -703,7 +740,6 @@ bool Director::setFileList() // Logo asset->add("/data/logo/jailgames.png", t_bitmap); asset->add("/data/logo/since_1998.png", t_bitmap); - asset->add("/data/logo/seagull.png", t_bitmap); // Intro asset->add("/data/title/loading_screen_bn.png", t_bitmap); @@ -739,17 +775,21 @@ void Director::setSection(section_t section) // Ejecuta la seccion de juego con el logo void Director::runLogo() { - logo = new Logo(renderer, screen, asset, options, section.subsection); + loadResources(section); + logo = new Logo(renderer, screen, resource, asset, options, section.subsection); setSection(logo->run()); delete logo; + resource->freeTextures(); } // Ejecuta la seccion de juego de la introducción void Director::runIntro() { - intro = new Intro(renderer, screen, asset, options); + loadResources(section); + intro = new Intro(renderer, screen, resource, asset, options); setSection(intro->run()); delete intro; + resource->freeTextures(); } // Ejecuta la seccion de juego con el titulo y los menus @@ -759,17 +799,21 @@ void Director::runTitle() { JA_PlayMusic(music); } - title = new Title(renderer, screen, asset, options); + loadResources(section); + title = new Title(renderer, screen, resource, asset, options); setSection(title->run()); delete title; + resource->freeTextures(); } // Ejecuta la seccion de los creditos del juego void Director::runCredits() { - credits = new Credits(renderer, screen, asset, options); + loadResources(section); + credits = new Credits(renderer, screen, resource, asset, options); setSection(credits->run()); delete credits; + resource->freeTextures(); } // Ejecuta la seccion de la demo, donde se ven pantallas del juego diff --git a/source/intro.cpp b/source/intro.cpp index 13600a1..c4d911a 100644 --- a/source/intro.cpp +++ b/source/intro.cpp @@ -1,9 +1,10 @@ #include "intro.h" // Constructor -Intro::Intro(SDL_Renderer *renderer, Screen *screen, Asset *asset, options_t *options) +Intro::Intro(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, options_t *options) { // Copia la dirección de los objetos + this->resource = resource; this->renderer = renderer; this->screen = screen; this->asset = asset; @@ -13,13 +14,13 @@ Intro::Intro(SDL_Renderer *renderer, Screen *screen, Asset *asset, options_t *op eventHandler = new SDL_Event(); if (options->palette == p_zxspectrum) { - loadingScreenTexture1 = new Texture(renderer, asset->get("loading_screen_bn.png")); - loadingScreenTexture2 = new Texture(renderer, asset->get("loading_screen_color.png")); + loadingScreenTexture1 =resource->getTexture("loading_screen_bn.png"); + loadingScreenTexture2 =resource->getTexture("loading_screen_color.png"); } else if (options->palette == p_zxarne) { - loadingScreenTexture1 = new Texture(renderer, asset->get("loading_screen_bn_zxarne.png")); - loadingScreenTexture2 = new Texture(renderer, asset->get("loading_screen_color_zxarne.png")); + loadingScreenTexture1 =resource->getTexture("loading_screen_bn_zxarne.png"); + loadingScreenTexture2 =resource->getTexture("loading_screen_color_zxarne.png"); } sprite1 = new Sprite(0, 0, loadingScreenTexture1->getWidth(), loadingScreenTexture1->getHeight(), loadingScreenTexture1, renderer); sprite2 = new Sprite(0, 0, loadingScreenTexture2->getWidth(), loadingScreenTexture2->getHeight(), loadingScreenTexture2, renderer); @@ -72,8 +73,6 @@ Intro::Intro(SDL_Renderer *renderer, Screen *screen, Asset *asset, options_t *op // Destructor Intro::~Intro() { - delete loadingScreenTexture1; - delete loadingScreenTexture2; delete sprite1; delete sprite2; delete eventHandler; diff --git a/source/intro.h b/source/intro.h index e1b02d0..3066c04 100644 --- a/source/intro.h +++ b/source/intro.h @@ -3,6 +3,7 @@ #include #include "common/asset.h" #include "common/jail_audio.h" +#include "common/resource.h" #include "common/screen.h" #include "common/sprite.h" #include "common/utils.h" @@ -21,6 +22,7 @@ private: // Objetos y punteros SDL_Renderer *renderer; // El renderizador de la ventana Screen *screen; // Objeto encargado de dibujar en pantalla + Resource *resource; // Objeto con los recursos Asset *asset; // Objeto con los ficheros de recursos Texture *loadingScreenTexture1; // Textura con la pantalla de carga en blanco y negro Texture *loadingScreenTexture2; // Textura con la pantalla de carga en color @@ -64,7 +66,7 @@ private: public: // Constructor - Intro(SDL_Renderer *renderer, Screen *screen, Asset *asset, options_t *options); + Intro(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, options_t *options); // Destructor ~Intro(); diff --git a/source/logo.cpp b/source/logo.cpp index bcdb2fc..b51d849 100644 --- a/source/logo.cpp +++ b/source/logo.cpp @@ -1,9 +1,10 @@ #include "logo.h" // Constructor -Logo::Logo(SDL_Renderer *renderer, Screen *screen, Asset *asset, options_t *options, int subsection) +Logo::Logo(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, options_t *options, int subsection) { // Copia la dirección de los objetos + this->resource = resource; this->renderer = renderer; this->screen = screen; this->asset = asset; @@ -11,8 +12,8 @@ Logo::Logo(SDL_Renderer *renderer, Screen *screen, Asset *asset, options_t *opti // Reserva memoria para los punteros eventHandler = new SDL_Event(); - texture = new Texture(renderer, asset->get("jailgames.png")); - texture2 = new Texture(renderer, asset->get("since_1998.png")); + texture = resource->getTexture("jailgames.png"); + texture2 = resource->getTexture("since_1998.png"); sprite2 = new Sprite((256 - texture2->getWidth()) / 2, 83 + texture->getHeight() + 5, texture2->getWidth(), texture2->getHeight(), texture2, renderer); sprite2->setSpriteClip(0, 0, texture2->getWidth(), texture2->getHeight()); texture2->setColor(0, 0, 0); @@ -55,9 +56,6 @@ Logo::Logo(SDL_Renderer *renderer, Screen *screen, Asset *asset, options_t *opti // Destructor Logo::~Logo() { - delete texture; - delete texture2; - for (auto s : sprite) { delete s; diff --git a/source/logo.h b/source/logo.h index 07083c5..9c9dbab 100644 --- a/source/logo.h +++ b/source/logo.h @@ -3,6 +3,7 @@ #include #include "common/asset.h" #include "common/jail_audio.h" +#include "common/resource.h" #include "common/screen.h" #include "common/sprite.h" #include "common/utils.h" @@ -18,6 +19,7 @@ private: // Objetos y punteros SDL_Renderer *renderer; // El renderizador de la ventana Screen *screen; // Objeto encargado de dibujar en pantalla + Resource *resource; // Objeto con los recursos Asset *asset; // Objeto con los ficheros de recursos Texture *texture; // Textura con los graficos "JAILGAMES" Texture *texture2; // Textura con los graficos "Since 1998" @@ -53,7 +55,7 @@ private: public: // Constructor - Logo(SDL_Renderer *renderer, Screen *screen, Asset *asset, options_t *options, int subsection); + Logo(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, options_t *options, int subsection); // Destructor ~Logo(); diff --git a/source/title.cpp b/source/title.cpp index 70232ce..51e5a0c 100644 --- a/source/title.cpp +++ b/source/title.cpp @@ -1,9 +1,10 @@ #include "title.h" // Constructor -Title::Title(SDL_Renderer *renderer, Screen *screen, Asset *asset, options_t *options) +Title::Title(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, options_t *options) { // Copia la dirección de los objetos + this->resource = resource; this->renderer = renderer; this->screen = screen; this->asset = asset; @@ -13,11 +14,11 @@ Title::Title(SDL_Renderer *renderer, Screen *screen, Asset *asset, options_t *op eventHandler = new SDL_Event(); if (options->palette == p_zxspectrum) { - texture = new Texture(renderer, asset->get("loading_screen_color.png")); + texture =resource->getTexture("loading_screen_color.png"); } else if (options->palette == p_zxarne) { - texture = new Texture(renderer, asset->get("loading_screen_color_zxarne.png")); + texture =resource->getTexture("loading_screen_color_zxarne.png"); } sprite = new Sprite(0, 0, texture->getWidth(), texture->getHeight(), texture, renderer); text = new Text(asset->get("smb2.png"), asset->get("smb2.txt"), renderer); @@ -48,7 +49,6 @@ Title::Title(SDL_Renderer *renderer, Screen *screen, Asset *asset, options_t *op Title::~Title() { delete eventHandler; - delete texture; delete sprite; delete text; } diff --git a/source/title.h b/source/title.h index 8df341f..b2e7f24 100644 --- a/source/title.h +++ b/source/title.h @@ -3,6 +3,7 @@ #include #include "common/asset.h" #include "common/jail_audio.h" +#include "common/resource.h" #include "common/screen.h" #include "common/sprite.h" #include "common/text.h" @@ -26,6 +27,7 @@ private: // Objetos y punteros SDL_Renderer *renderer; // El renderizador de la ventana Screen *screen; // Objeto encargado de dibujar en pantalla + Resource *resource; // Objeto con los recursos Asset *asset; // Objeto con los ficheros de recursos SDL_Event *eventHandler; // Manejador de eventos Texture *texture; // Textura con los graficos @@ -64,7 +66,7 @@ private: public: // Constructor - Title(SDL_Renderer *renderer, Screen *screen, Asset *asset, options_t *options); + Title(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, options_t *options); // Destructor ~Title();