diff --git a/data/logo/seagull.png b/data/logo/seagull.png deleted file mode 100644 index b6a6f5f..0000000 Binary files a/data/logo/seagull.png and /dev/null differ diff --git a/source/credits.cpp b/source/credits.cpp index f8947f4..00b649a 100644 --- a/source/credits.cpp +++ b/source/credits.cpp @@ -1,9 +1,10 @@ #include "credits.h" // Constructor -Credits::Credits(SDL_Renderer *renderer, Screen *screen, Asset *asset, options_t *options) +Credits::Credits(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; @@ -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();