Las clases text y menu ya acceden a resource

This commit is contained in:
2022-10-27 12:43:28 +02:00
parent 4133dfd7c9
commit 9d9d9d92f2
13 changed files with 51 additions and 26 deletions

View File

@@ -1,15 +1,16 @@
#include "debug.h" #include "debug.h"
// Constructor // 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 // Copia la dirección de los objetos
this->resource = resource;
this->renderer = renderer; this->renderer = renderer;
this->screen = screen; this->screen = screen;
this->asset = asset; this->asset = asset;
// Reserva memoria para los punteros // 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 // Inicializa variables
x = 0; x = 0;

View File

@@ -17,10 +17,11 @@ class Debug
{ {
private: private:
// Objetos y punteros // Objetos y punteros
SDL_Renderer *renderer; // El renderizador de la ventana SDL_Renderer *renderer; // El renderizador de la ventana
Screen *screen; // Objeto encargado de dibujar en pantalla Screen *screen; // Objeto encargado de dibujar en pantalla
Asset *asset; // Objeto con los ficheros de recursos Resource *resource; // Objeto con los recursos
Text *text; // Objeto encargado de escribir texto en pantalla Asset *asset; // Objeto con los ficheros de recursos
Text *text; // Objeto encargado de escribir texto en pantalla
// Variables // Variables
std::vector<std::string> slot; // Vector con los textos a escribir std::vector<std::string> slot; // Vector con los textos a escribir
@@ -31,7 +32,7 @@ private:
public: public:
// Constructor // Constructor
Debug(SDL_Renderer *renderer, Screen *screen, Asset *asset); Debug(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset);
// Destructor // Destructor
~Debug(); ~Debug();

View File

@@ -2,7 +2,7 @@
#include "menu.h" #include "menu.h"
// Constructor // 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 // Copia punteros
this->renderer = renderer; 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 // Crea el objeto text tan pronto como se pueda. Necesario para añadir items
if (font_png != "" && font_txt != "" && !textAllocated) 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; textAllocated = true;
} }
} }
@@ -977,6 +977,6 @@ void Menu::setText(std::string font_png, std::string font_txt)
{ {
if (!text) if (!text)
{ {
text = new Text(font_png, font_txt, renderer); text = new Text(font_png, font_txt, resource, renderer);
} }
} }

View File

@@ -4,6 +4,7 @@
#include "asset.h" #include "asset.h"
#include "input.h" #include "input.h"
#include "jail_audio.h" #include "jail_audio.h"
#include "resource.h"
#include "sprite.h" #include "sprite.h"
#include "text.h" #include "text.h"
#include "utils.h" #include "utils.h"
@@ -70,9 +71,10 @@ private:
// Objetos y punteros // Objetos y punteros
SDL_Renderer *renderer; // Puntero al renderizador de la ventana 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 Text *text; // Texto para poder escribir los items del menu
Input *input; // Gestor de eventos de entrada de teclado o gamepad Input *input; // Gestor de eventos de entrada de teclado o gamepad
Asset *asset; // Objeto para gestionar los ficheros de recursos
// Variables // Variables
std::string name; // Nombre del menu std::string name; // Nombre del menu
@@ -140,7 +142,7 @@ private:
public: public:
// Constructor // 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 // Destructor
~Menu(); ~Menu();

View File

@@ -12,6 +12,7 @@ Resource::Resource(SDL_Renderer *renderer, Asset *asset, options_t *options)
// Carga todos los recursos necesarios // Carga todos los recursos necesarios
void Resource::loadTextures(std::vector<std::string> list) void Resource::loadTextures(std::vector<std::string> list)
{ {
std::cout << "** LOAD RESOURCES" << std::endl;
for (auto l : list) for (auto l : list)
{ {
texture_t t; texture_t t;
@@ -19,6 +20,7 @@ void Resource::loadTextures(std::vector<std::string> list)
t.texture = new Texture(renderer, asset->get(t.name)); t.texture = new Texture(renderer, asset->get(t.name));
textures.push_back(t); textures.push_back(t);
} }
std::cout << "** RESOURCES LOADED" << std::endl;
} }
// Recarga las texturas // 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; return nullptr;
} }

View File

@@ -4,20 +4,22 @@
#include <fstream> #include <fstream>
// Constructor // 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 // Carga los offsets desde el fichero
initOffsetFromFile(textFile); initOffsetFromFile(textFile);
// Crea los objetos // Crea los objetos
texture = new Texture(renderer, bitmapFile); texture = resource->getTexture(bitmapFile);
sprite = new Sprite({0, 0, boxWidth, boxHeight}, texture, renderer); sprite = new Sprite({0, 0, boxWidth, boxHeight}, texture, renderer);
} }
// Destructor // Destructor
Text::~Text() Text::~Text()
{ {
delete texture;
delete sprite; delete sprite;
} }

View File

@@ -1,6 +1,7 @@
#pragma once #pragma once
#include "sprite.h" #include "sprite.h"
#include "resource.h"
#include "utils.h" #include "utils.h"
#ifndef TEXT_H #ifndef TEXT_H
@@ -23,8 +24,9 @@ private:
}; };
// Objetos y punteros // Objetos y punteros
Sprite *sprite; // Objeto con los graficos para el texto Resource *resource; // Objeto con los recursos
Texture *texture; // Textura con los bitmaps del texto Sprite *sprite; // Objeto con los graficos para el texto
Texture *texture; // Textura con los bitmaps del texto
// Variables // Variables
int boxWidth; // Anchura de la caja de cada caracter en el png int boxWidth; // Anchura de la caja de cada caracter en el png
@@ -36,7 +38,7 @@ private:
public: public:
// Constructor // Constructor
Text(std::string bitmapFile, std::string textFile, SDL_Renderer *renderer); Text(std::string bitmapFile, std::string textFile, Resource *resource, SDL_Renderer *renderer);
// Destructor // Destructor
~Text(); ~Text();

View File

@@ -12,7 +12,7 @@ Credits::Credits(SDL_Renderer *renderer, Screen *screen, Resource *resource, Ass
// Reserva memoria para los punteros // Reserva memoria para los punteros
eventHandler = new SDL_Event(); 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"); texture = resource->getTexture("shine.png");
sprite = new AnimatedSprite(texture, renderer, asset->get("shine.ani")); sprite = new AnimatedSprite(texture, renderer, asset->get("shine.ani"));

View File

@@ -27,7 +27,7 @@ Demo::Demo(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *as
scoreboard = new ScoreBoard(renderer, resource, asset, options, &board); scoreboard = new ScoreBoard(renderer, resource, asset, options, &board);
room = new Room(asset->get(currentRoom), renderer, screen, resource, asset, options, itemTracker, &board.items, debug); room = new Room(asset->get(currentRoom), renderer, screen, resource, asset, options, itemTracker, &board.items, debug);
eventHandler = new SDL_Event(); 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 // Inicializa el resto de variables
counter = 0; counter = 0;

View File

@@ -30,13 +30,13 @@ Director::Director(std::string path)
initJailAudio(); initJailAudio();
// Crea los objetos // Crea los objetos
resource = new Resource(renderer, asset, options);
input = new Input(asset->get("gamecontrollerdb.txt")); input = new Input(asset->get("gamecontrollerdb.txt"));
initInput(); initInput();
screen = new Screen(window, renderer, options, GAMECANVAS_WIDTH, GAMECANVAS_HEIGHT); screen = new Screen(window, renderer, options, GAMECANVAS_WIDTH, GAMECANVAS_HEIGHT);
screen->setBorderColor(borderColor); screen->setBorderColor(borderColor);
screen->setVideoMode(options->fullScreenMode); screen->setVideoMode(options->fullScreenMode);
resource = new Resource(renderer, asset, options); debug = new Debug(renderer, screen, resource, asset);
debug = new Debug(renderer, screen, asset);
music = JA_LoadMusic(asset->get("title.ogg").c_str()); music = JA_LoadMusic(asset->get("title.ogg").c_str());
} }
@@ -51,6 +51,7 @@ Director::~Director()
delete input; delete input;
delete screen; delete screen;
delete debug; delete debug;
delete resource;
JA_DeleteMusic(music); JA_DeleteMusic(music);
SDL_DestroyRenderer(renderer); SDL_DestroyRenderer(renderer);
@@ -205,6 +206,7 @@ void Director::loadResources(section_t section)
std::vector<std::string> textureList; std::vector<std::string> textureList;
textureList.push_back("loading_screen_color.png"); textureList.push_back("loading_screen_color.png");
textureList.push_back("loading_screen_color_zxarne.png"); textureList.push_back("loading_screen_color_zxarne.png");
textureList.push_back("smb2.png");
resource->loadTextures(textureList); resource->loadTextures(textureList);
} }
@@ -213,6 +215,7 @@ void Director::loadResources(section_t section)
{ {
std::vector<std::string> textureList; std::vector<std::string> textureList;
textureList.push_back("shine.png"); textureList.push_back("shine.png");
textureList.push_back("smb2.png");
resource->loadTextures(textureList); resource->loadTextures(textureList);
} }
@@ -775,6 +778,8 @@ void Director::setSection(section_t section)
// Ejecuta la seccion de juego con el logo // Ejecuta la seccion de juego con el logo
void Director::runLogo() void Director::runLogo()
{ {
std::cout << std::endl
<< "* SECTION: LOGO" << std::endl;
loadResources(section); loadResources(section);
logo = new Logo(renderer, screen, resource, asset, options, section.subsection); logo = new Logo(renderer, screen, resource, asset, options, section.subsection);
setSection(logo->run()); setSection(logo->run());
@@ -785,6 +790,8 @@ void Director::runLogo()
// Ejecuta la seccion de juego de la introducción // Ejecuta la seccion de juego de la introducción
void Director::runIntro() void Director::runIntro()
{ {
std::cout << std::endl
<< "* SECTION: INTRO" << std::endl;
loadResources(section); loadResources(section);
intro = new Intro(renderer, screen, resource, asset, options); intro = new Intro(renderer, screen, resource, asset, options);
setSection(intro->run()); setSection(intro->run());
@@ -795,6 +802,8 @@ void Director::runIntro()
// Ejecuta la seccion de juego con el titulo y los menus // Ejecuta la seccion de juego con el titulo y los menus
void Director::runTitle() void Director::runTitle()
{ {
std::cout << std::endl
<< "* SECTION: TITLE" << std::endl;
if ((JA_GetMusicState() == JA_MUSIC_INVALID) || (JA_GetMusicState() == JA_MUSIC_STOPPED)) if ((JA_GetMusicState() == JA_MUSIC_INVALID) || (JA_GetMusicState() == JA_MUSIC_STOPPED))
{ {
JA_PlayMusic(music); JA_PlayMusic(music);
@@ -809,6 +818,8 @@ void Director::runTitle()
// Ejecuta la seccion de los creditos del juego // Ejecuta la seccion de los creditos del juego
void Director::runCredits() void Director::runCredits()
{ {
std::cout << std::endl
<< "* SECTION: CREDITS" << std::endl;
loadResources(section); loadResources(section);
credits = new Credits(renderer, screen, resource, asset, options); credits = new Credits(renderer, screen, resource, asset, options);
setSection(credits->run()); setSection(credits->run());
@@ -819,6 +830,8 @@ void Director::runCredits()
// Ejecuta la seccion de la demo, donde se ven pantallas del juego // Ejecuta la seccion de la demo, donde se ven pantallas del juego
void Director::runDemo() void Director::runDemo()
{ {
std::cout << std::endl
<< "* SECTION: DEMO" << std::endl;
loadResources(section); loadResources(section);
demo = new Demo(renderer, screen, resource, asset, options, debug); demo = new Demo(renderer, screen, resource, asset, options, debug);
setSection(demo->run()); setSection(demo->run());
@@ -829,6 +842,8 @@ void Director::runDemo()
// Ejecuta la seccion de juego donde se juega // Ejecuta la seccion de juego donde se juega
void Director::runGame() void Director::runGame()
{ {
std::cout << std::endl
<< "* SECTION: GAME" << std::endl;
JA_StopMusic(); JA_StopMusic();
loadResources(section); loadResources(section);
game = new Game(renderer, screen, resource, asset, options, input, debug); game = new Game(renderer, screen, resource, asset, options, input, debug);

View File

@@ -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); 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); player = new Player(spawnPoint, "player.png", asset->get("player.ani"), renderer, resource, asset, options, input, room, debug);
eventHandler = new SDL_Event(); 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()); music = JA_LoadMusic(asset->get("game.ogg").c_str());
deathSound = JA_LoadSound(asset->get("death.wav").c_str()); deathSound = JA_LoadSound(asset->get("death.wav").c_str());
test = new Test(renderer, screen, asset, debug); test = new Test(renderer, screen, asset, debug);

View File

@@ -17,7 +17,7 @@ ScoreBoard::ScoreBoard(SDL_Renderer *renderer, Resource *resource, Asset *asset,
itemTexture = resource->getTexture("items.png"); itemTexture = resource->getTexture("items.png");
sprite = new AnimatedSprite(playerTexture, renderer, asset->get("player.ani")); sprite = new AnimatedSprite(playerTexture, renderer, asset->get("player.ani"));
sprite->setCurrentAnimation("walk_menu"); 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 // Inicializa las variables
counter = 0; counter = 0;

View File

@@ -21,7 +21,7 @@ Title::Title(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *
texture = resource->getTexture("loading_screen_color_zxarne.png"); texture = resource->getTexture("loading_screen_color_zxarne.png");
} }
sprite = new Sprite(0, 0, texture->getWidth(), texture->getHeight(), texture, renderer); 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 // Inicializa variables
counter = 0; counter = 0;