diff --git a/source/common/debug.cpp b/source/common/debug.cpp index 6e2bd0f..1b68d25 100644 --- a/source/common/debug.cpp +++ b/source/common/debug.cpp @@ -1,15 +1,16 @@ #include "debug.h" // Constructor -Debug::Debug(SDL_Renderer *renderer, Screen *screen, Asset *asset) +Debug::Debug(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset) { // Copia la dirección de los objetos + this->resource = resource; this->renderer = renderer; this->screen = screen; this->asset = asset; // Reserva memoria para los punteros - text = new Text(asset->get("debug.png"), asset->get("debug.txt"), renderer); + text = new Text("debug.png", asset->get("debug.txt"), resource, renderer); // Inicializa variables x = 0; diff --git a/source/common/debug.h b/source/common/debug.h index d4ba8d3..a6ddc4a 100644 --- a/source/common/debug.h +++ b/source/common/debug.h @@ -17,10 +17,11 @@ class Debug { private: // Objetos y punteros - SDL_Renderer *renderer; // El renderizador de la ventana - Screen *screen; // Objeto encargado de dibujar en pantalla - Asset *asset; // Objeto con los ficheros de recursos - Text *text; // Objeto encargado de escribir texto en pantalla + 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 + Text *text; // Objeto encargado de escribir texto en pantalla // Variables std::vector slot; // Vector con los textos a escribir @@ -31,7 +32,7 @@ private: public: // Constructor - Debug(SDL_Renderer *renderer, Screen *screen, Asset *asset); + Debug(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset); // Destructor ~Debug(); diff --git a/source/common/menu.cpp b/source/common/menu.cpp index 57560ff..759985e 100644 --- a/source/common/menu.cpp +++ b/source/common/menu.cpp @@ -2,7 +2,7 @@ #include "menu.h" // Constructor -Menu::Menu(SDL_Renderer *renderer, Asset *asset, Input *input, std::string file) +Menu::Menu(SDL_Renderer *renderer, Resource *resource, Asset *asset, Input *input, std::string file) { // Copia punteros this->renderer = renderer; @@ -154,7 +154,7 @@ bool Menu::load(std::string file_path) // Crea el objeto text tan pronto como se pueda. Necesario para añadir items if (font_png != "" && font_txt != "" && !textAllocated) { - text = new Text(asset->get(font_png), asset->get(font_txt), renderer); + text = new Text(font_png, asset->get(font_txt), resource, renderer); textAllocated = true; } } @@ -977,6 +977,6 @@ void Menu::setText(std::string font_png, std::string font_txt) { if (!text) { - text = new Text(font_png, font_txt, renderer); + text = new Text(font_png, font_txt, resource, renderer); } } \ No newline at end of file diff --git a/source/common/menu.h b/source/common/menu.h index 5157187..f2a93f3 100644 --- a/source/common/menu.h +++ b/source/common/menu.h @@ -4,6 +4,7 @@ #include "asset.h" #include "input.h" #include "jail_audio.h" +#include "resource.h" #include "sprite.h" #include "text.h" #include "utils.h" @@ -70,9 +71,10 @@ private: // Objetos y punteros SDL_Renderer *renderer; // Puntero al renderizador de la ventana + Resource *resource; // Objeto con los recursos + Asset *asset; // Objeto para gestionar los ficheros de recursos Text *text; // Texto para poder escribir los items del menu Input *input; // Gestor de eventos de entrada de teclado o gamepad - Asset *asset; // Objeto para gestionar los ficheros de recursos // Variables std::string name; // Nombre del menu @@ -140,7 +142,7 @@ private: public: // Constructor - Menu(SDL_Renderer *renderer, Asset *asset, Input *input, std::string file = ""); + Menu(SDL_Renderer *renderer, Resource *resource, Asset *asset, Input *input, std::string file = ""); // Destructor ~Menu(); diff --git a/source/common/resource.cpp b/source/common/resource.cpp index 2ff35d8..d24d413 100644 --- a/source/common/resource.cpp +++ b/source/common/resource.cpp @@ -12,6 +12,7 @@ Resource::Resource(SDL_Renderer *renderer, Asset *asset, options_t *options) // Carga todos los recursos necesarios void Resource::loadTextures(std::vector list) { + std::cout << "** LOAD RESOURCES" << std::endl; for (auto l : list) { texture_t t; @@ -19,6 +20,7 @@ void Resource::loadTextures(std::vector list) t.texture = new Texture(renderer, asset->get(t.name)); textures.push_back(t); } + std::cout << "** RESOURCES LOADED" << std::endl; } // Recarga las texturas @@ -52,6 +54,6 @@ Texture *Resource::getTexture(std::string name) } } - std::cout << "NO ENCONTRADA: " << name << std::endl; + std::cout << "NOT FOUND: " << name << std::endl; return nullptr; } \ No newline at end of file diff --git a/source/common/text.cpp b/source/common/text.cpp index d423094..c072261 100644 --- a/source/common/text.cpp +++ b/source/common/text.cpp @@ -4,20 +4,22 @@ #include // Constructor -Text::Text(std::string bitmapFile, std::string textFile, SDL_Renderer *renderer) +Text::Text(std::string bitmapFile, std::string textFile, Resource *resource, SDL_Renderer *renderer) { + // Copia punteros + this->resource = resource; + // Carga los offsets desde el fichero initOffsetFromFile(textFile); // Crea los objetos - texture = new Texture(renderer, bitmapFile); + texture = resource->getTexture(bitmapFile); sprite = new Sprite({0, 0, boxWidth, boxHeight}, texture, renderer); } // Destructor Text::~Text() { - delete texture; delete sprite; } diff --git a/source/common/text.h b/source/common/text.h index 25a70f4..0649727 100644 --- a/source/common/text.h +++ b/source/common/text.h @@ -1,6 +1,7 @@ #pragma once #include "sprite.h" +#include "resource.h" #include "utils.h" #ifndef TEXT_H @@ -23,8 +24,9 @@ private: }; // Objetos y punteros - Sprite *sprite; // Objeto con los graficos para el texto - Texture *texture; // Textura con los bitmaps del texto + Resource *resource; // Objeto con los recursos + Sprite *sprite; // Objeto con los graficos para el texto + Texture *texture; // Textura con los bitmaps del texto // Variables int boxWidth; // Anchura de la caja de cada caracter en el png @@ -36,7 +38,7 @@ private: public: // Constructor - Text(std::string bitmapFile, std::string textFile, SDL_Renderer *renderer); + Text(std::string bitmapFile, std::string textFile, Resource *resource, SDL_Renderer *renderer); // Destructor ~Text(); diff --git a/source/credits.cpp b/source/credits.cpp index 4d8ab3d..236eaaa 100644 --- a/source/credits.cpp +++ b/source/credits.cpp @@ -12,7 +12,7 @@ Credits::Credits(SDL_Renderer *renderer, Screen *screen, Resource *resource, Ass // Reserva memoria para los punteros eventHandler = new SDL_Event(); - text = new Text(asset->get("smb2.png"), asset->get("smb2.txt"), renderer); + text = new Text("smb2.png", asset->get("smb2.txt"), resource, renderer); texture = resource->getTexture("shine.png"); sprite = new AnimatedSprite(texture, renderer, asset->get("shine.ani")); diff --git a/source/demo.cpp b/source/demo.cpp index 81af86f..9260ad9 100644 --- a/source/demo.cpp +++ b/source/demo.cpp @@ -27,7 +27,7 @@ Demo::Demo(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *as scoreboard = new ScoreBoard(renderer, resource, asset, options, &board); room = new Room(asset->get(currentRoom), renderer, screen, resource, asset, options, itemTracker, &board.items, debug); eventHandler = new SDL_Event(); - text = new Text(asset->get("smb2.png"), asset->get("smb2.txt"), renderer); + text = new Text("smb2.png", asset->get("smb2.txt"), resource, renderer); // Inicializa el resto de variables counter = 0; diff --git a/source/director.cpp b/source/director.cpp index 981e91e..45324e8 100644 --- a/source/director.cpp +++ b/source/director.cpp @@ -30,13 +30,13 @@ Director::Director(std::string path) initJailAudio(); // Crea los objetos + resource = new Resource(renderer, asset, options); input = new Input(asset->get("gamecontrollerdb.txt")); initInput(); screen = new Screen(window, renderer, options, GAMECANVAS_WIDTH, GAMECANVAS_HEIGHT); screen->setBorderColor(borderColor); screen->setVideoMode(options->fullScreenMode); - resource = new Resource(renderer, asset, options); - debug = new Debug(renderer, screen, asset); + debug = new Debug(renderer, screen, resource, asset); music = JA_LoadMusic(asset->get("title.ogg").c_str()); } @@ -51,6 +51,7 @@ Director::~Director() delete input; delete screen; delete debug; + delete resource; JA_DeleteMusic(music); SDL_DestroyRenderer(renderer); @@ -205,6 +206,7 @@ void Director::loadResources(section_t section) std::vector textureList; textureList.push_back("loading_screen_color.png"); textureList.push_back("loading_screen_color_zxarne.png"); + textureList.push_back("smb2.png"); resource->loadTextures(textureList); } @@ -213,6 +215,7 @@ void Director::loadResources(section_t section) { std::vector textureList; textureList.push_back("shine.png"); + textureList.push_back("smb2.png"); resource->loadTextures(textureList); } @@ -775,6 +778,8 @@ void Director::setSection(section_t section) // Ejecuta la seccion de juego con el logo void Director::runLogo() { + std::cout << std::endl + << "* SECTION: LOGO" << std::endl; loadResources(section); logo = new Logo(renderer, screen, resource, asset, options, section.subsection); setSection(logo->run()); @@ -785,6 +790,8 @@ void Director::runLogo() // Ejecuta la seccion de juego de la introducción void Director::runIntro() { + std::cout << std::endl + << "* SECTION: INTRO" << std::endl; loadResources(section); intro = new Intro(renderer, screen, resource, asset, options); setSection(intro->run()); @@ -795,6 +802,8 @@ void Director::runIntro() // Ejecuta la seccion de juego con el titulo y los menus void Director::runTitle() { + std::cout << std::endl + << "* SECTION: TITLE" << std::endl; if ((JA_GetMusicState() == JA_MUSIC_INVALID) || (JA_GetMusicState() == JA_MUSIC_STOPPED)) { JA_PlayMusic(music); @@ -809,6 +818,8 @@ void Director::runTitle() // Ejecuta la seccion de los creditos del juego void Director::runCredits() { + std::cout << std::endl + << "* SECTION: CREDITS" << std::endl; loadResources(section); credits = new Credits(renderer, screen, resource, asset, options); setSection(credits->run()); @@ -819,6 +830,8 @@ void Director::runCredits() // Ejecuta la seccion de la demo, donde se ven pantallas del juego void Director::runDemo() { + std::cout << std::endl + << "* SECTION: DEMO" << std::endl; loadResources(section); demo = new Demo(renderer, screen, resource, asset, options, debug); setSection(demo->run()); @@ -829,6 +842,8 @@ void Director::runDemo() // Ejecuta la seccion de juego donde se juega void Director::runGame() { + std::cout << std::endl + << "* SECTION: GAME" << std::endl; JA_StopMusic(); loadResources(section); game = new Game(renderer, screen, resource, asset, options, input, debug); diff --git a/source/game.cpp b/source/game.cpp index 41f81ad..b713fd3 100644 --- a/source/game.cpp +++ b/source/game.cpp @@ -32,7 +32,7 @@ Game::Game(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *as room = new Room(asset->get(currentRoom), renderer, screen, resource, asset, options, itemTracker, &board.items, debug); player = new Player(spawnPoint, "player.png", asset->get("player.ani"), renderer, resource, asset, options, input, room, debug); eventHandler = new SDL_Event(); - text = new Text(asset->get("smb2.png"), asset->get("smb2.txt"), renderer); + text = new Text("smb2.png", asset->get("smb2.txt"), resource, renderer); music = JA_LoadMusic(asset->get("game.ogg").c_str()); deathSound = JA_LoadSound(asset->get("death.wav").c_str()); test = new Test(renderer, screen, asset, debug); diff --git a/source/scoreboard.cpp b/source/scoreboard.cpp index 0f2670c..f04aa9c 100644 --- a/source/scoreboard.cpp +++ b/source/scoreboard.cpp @@ -17,7 +17,7 @@ ScoreBoard::ScoreBoard(SDL_Renderer *renderer, Resource *resource, Asset *asset, itemTexture = resource->getTexture("items.png"); sprite = new AnimatedSprite(playerTexture, renderer, asset->get("player.ani")); sprite->setCurrentAnimation("walk_menu"); - text = new Text(asset->get("smb2.png"), asset->get("smb2.txt"), renderer); + text = new Text("smb2.png", asset->get("smb2.txt"), resource, renderer); // Inicializa las variables counter = 0; diff --git a/source/title.cpp b/source/title.cpp index 4708b7e..267c398 100644 --- a/source/title.cpp +++ b/source/title.cpp @@ -21,7 +21,7 @@ Title::Title(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset * 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); + text = new Text("smb2.png", asset->get("smb2.txt"), resource, renderer); // Inicializa variables counter = 0;