Ya carga las imagenes del juego y la demo desde la cache de rescursos

This commit is contained in:
2022-10-26 20:29:07 +02:00
parent c6e8050f95
commit 397e1e89e3
16 changed files with 286 additions and 122 deletions

View File

@@ -0,0 +1,53 @@
#include "resource.h"
#include <iostream>
// Constructor
Resource::Resource(SDL_Renderer *renderer, Asset *asset, options_t *options)
{
this->renderer = renderer;
this->asset = asset;
this->options = options;
}
// Carga todos los recursos necesarios
void Resource::loadTextures(std::vector<std::string> list)
{
for (auto l : list)
{
texture_t t;
t.name = l;
t.texture = new Texture(renderer, asset->get(t.name));
textures.push_back(t);
}
}
// Libera los recursos
void Resource::freeTextures()
{
// Libera las texturas
for (auto texture : textures)
{
texture.texture->unload();
delete texture.texture;
}
textures.clear();
}
// Obtiene una textura
Texture *Resource::getTexture(std::string name)
{
//std::cout << "BUSCANDO TEXTURA" << std::endl;
for (auto texture : textures)
{
//std::cout << "COMPROBANDO: " << texture.name << " - " << name << std::endl;
if (texture.name.find(name) != std::string::npos)
{
std::cout << "CACHE: " << name << std::endl;
return texture.texture;
}
}
std::cout << "NO ENCONTRADA: " << name << std::endl;
return nullptr;
}

44
source/common/resource.h Normal file
View File

@@ -0,0 +1,44 @@
#pragma once
#include <SDL2/SDL.h>
#include "asset.h"
#include "texture.h"
#include "utils.h"
#include <string>
#include <vector>
#ifndef RESOURCE_H
#define RESOURCE_H
struct texture_t
{
std::string name; // Nombre de la textura
Texture *texture; // La textura
};
class Resource
{
private:
// Objetos y punteros
SDL_Renderer *renderer; // El renderizador de la ventana
Asset *asset; // Objeto con la ruta a todos los ficheros de recursos
options_t *options; // Puntero a las opciones del juego
// Variables
std::vector<texture_t> textures;
public:
// Constructor
Resource(SDL_Renderer *renderer, Asset *asset, options_t *options);
// Carga todos los recursos necesarios
void loadTextures(std::vector<std::string> textureList);
// Libera los recursos
void freeTextures();
// Obtiene una textura
Texture* getTexture(std::string name);
};
#endif

View File

@@ -1,7 +1,7 @@
#include "demo.h"
// Constructor
Demo::Demo(SDL_Renderer *renderer, Screen *screen, Asset *asset, options_t *options, Debug *debug)
Demo::Demo(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, options_t *options, Debug *debug)
{
// Inicia algunas variables
board.iniClock = SDL_GetTicks();
@@ -15,16 +15,20 @@ Demo::Demo(SDL_Renderer *renderer, Screen *screen, Asset *asset, options_t *opti
currentRoom = rooms.at(roomIndex);
// Copia los punteros
this->resource = resource;
this->renderer = renderer;
this->asset = asset;
this->screen = screen;
this->debug = debug;
this->options = options;
// Carga los recursos
loadResources();
// Crea los objetos
itemTracker = new ItemTracker();
scoreboard = new ScoreBoard(renderer, asset, options, &board);
room = new Room(asset->get(currentRoom), renderer, screen, 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();
text = new Text(asset->get("smb2.png"), asset->get("smb2.txt"), renderer);
@@ -47,6 +51,8 @@ Demo::Demo(SDL_Renderer *renderer, Screen *screen, Asset *asset, options_t *opti
Demo::~Demo()
{
// Libera la memoria de los objetos
resource->freeTextures();
//delete resource;
delete itemTracker;
delete scoreboard;
delete room;
@@ -192,7 +198,7 @@ bool Demo::changeRoom(std::string file)
room = nullptr;
// Crea un objeto habitación nuevo a partir del fichero
room = new Room(asset->get(file), renderer, screen, asset, options, itemTracker, &board.items, debug);
room = new Room(asset->get(file), renderer, screen, resource, asset, options, itemTracker, &board.items, debug);
// Actualiza el marcador
const color_t c = room->getBorderColor(); // Pone el color del marcador
@@ -222,4 +228,68 @@ void Demo::checkRoomChange()
changeRoom(rooms.at(roomIndex));
}
}
}
// Carga los recursos
void Demo::loadResources()
{
std::vector<std::string> textureList;
// Jugador
textureList.push_back("player.png");
// Tilesets
textureList.push_back("standard.png");
textureList.push_back("standard_zxarne.png");
// Enemigos
textureList.push_back("paco.png");
textureList.push_back("chip.png");
textureList.push_back("wave.png");
textureList.push_back("wave_v.png");
textureList.push_back("sigmasua.png");
textureList.push_back("diskette.png");
textureList.push_back("bird.png");
textureList.push_back("bin.png");
textureList.push_back("qvoid.png");
textureList.push_back("batman.png");
textureList.push_back("tuno.png");
textureList.push_back("matatunos.png");
textureList.push_back("abad.png");
textureList.push_back("jailbattle_human.png");
textureList.push_back("jailbattle_alien.png");
textureList.push_back("jailer.png");
textureList.push_back("jailer2.png");
textureList.push_back("jailer3.png");
textureList.push_back("printer.png");
textureList.push_back("code.png");
textureList.push_back("demon.png");
textureList.push_back("dimallas.png");
textureList.push_back("dimallas_v.png");
textureList.push_back("heavy.png");
textureList.push_back("spider.png");
textureList.push_back("macaronni_ted.png");
textureList.push_back("mummy.png");
textureList.push_back("sam.png");
textureList.push_back("amstrad_character_set.png");
textureList.push_back("breakout.png");
textureList.push_back("lamp.png");
textureList.push_back("bry.png");
textureList.push_back("tv.png");
textureList.push_back("tv_panel.png");
textureList.push_back("arounders_door.png");
textureList.push_back("arounders_machine.png");
textureList.push_back("arounder_walk.png");
textureList.push_back("arounder_stop.png");
textureList.push_back("arounder_fly.png");
textureList.push_back("bat.png");
// Items
textureList.push_back("items.png");
// Texto
textureList.push_back("smb2.png");
textureList.push_back("debug.png");
resource->loadTextures(textureList);
}

View File

@@ -5,6 +5,7 @@
#include "common/asset.h"
#include "common/debug.h"
#include "common/input.h"
#include "common/resource.h"
#include "common/screen.h"
#include "common/sprite.h"
#include "common/text.h"
@@ -26,6 +27,7 @@ private:
SDL_Event *eventHandler; // Manejador de eventos
Screen *screen; // Objeto encargado de manejar el renderizador
Room *room; // Objeto encargado de gestionar cada habitación del juego
Resource *resource; // Objeto con los recursos
Asset *asset; // Objeto con la ruta a todos los ficheros de recursos
Text *text; // Objeto para los textos del juego
ScoreBoard *scoreboard; // Objeto encargado de gestionar el marcador
@@ -64,9 +66,12 @@ private:
// Comprueba si se ha de cambiar de habitación
void checkRoomChange();
// Carga los recursos
void loadResources();
public:
// Constructor
Demo(SDL_Renderer *renderer, Screen *screen, Asset *asset, options_t *options, Debug *debug);
Demo(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, options_t *options, Debug *debug);
// Destructor
~Demo();

View File

@@ -35,6 +35,7 @@ Director::Director(std::string path)
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);
music = JA_LoadMusic(asset->get("title.ogg").c_str());
}
@@ -707,7 +708,7 @@ void Director::runCredits()
// Ejecuta la seccion de la demo, donde se ven pantallas del juego
void Director::runDemo()
{
demo = new Demo(renderer, screen, asset, options, debug);
demo = new Demo(renderer, screen, resource, asset, options, debug);
setSection(demo->run());
delete demo;
}
@@ -716,7 +717,7 @@ void Director::runDemo()
void Director::runGame()
{
JA_StopMusic();
game = new Game(renderer, screen, asset, options, input, debug);
game = new Game(renderer, screen, resource, asset, options, input, debug);
setSection(game->run());
delete game;
}

View File

@@ -5,6 +5,7 @@
#include "common/input.h"
#include "common/jail_audio.h"
#include "common/movingsprite.h"
#include "common/resource.h"
#include "common/sprite.h"
#include "common/text.h"
#include "common/utils.h"
@@ -33,6 +34,7 @@ private:
Intro *intro; // Objeto para gestionar la introducción del juego
Credits *credits; // Objeto para gestionar los creditos del juego
Demo *demo; // Objeto para gestionar el modo demo, en el que se ven pantallas del juego
Resource *resource; // Objeto con los recursos
Asset *asset; // Objeto que gestiona todos los ficheros de recursos
Debug *debug; // Objeto para getsionar la información de debug

View File

@@ -6,11 +6,13 @@
Enemy::Enemy(enemy_t enemy)
{
// Obten punteros a objetos
resource = enemy.resource;
asset = enemy.asset;
renderer = enemy.renderer;
// Crea objetos
texture = new Texture(renderer, asset->get(enemy.tileset));
//texture = new Texture(renderer, asset->get(enemy.tileset));
texture = resource->getTexture(enemy.tileset);
sprite = new AnimatedSprite(texture, renderer, asset->get(enemy.animation));
// Obten el resto de valores
@@ -45,7 +47,7 @@ Enemy::Enemy(enemy_t enemy)
// Destructor
Enemy::~Enemy()
{
delete texture;
//delete texture;
delete sprite;
}

View File

@@ -2,6 +2,7 @@
#include <SDL2/SDL.h>
#include "common/animatedsprite.h"
#include "common/asset.h"
#include "common/resource.h"
#include "common/utils.h"
#include <string>
@@ -12,6 +13,7 @@
struct enemy_t
{
SDL_Renderer *renderer; // El renderizador de la ventana
Resource *resource; // Objeto con los recursos
Asset *asset; // Objeto con la ruta a todos los ficheros de recursos
std::string tileset; // Fichero con los graficos del enemigo
std::string animation; // Fichero con las animaciones del enemigo
@@ -34,15 +36,16 @@ class Enemy
{
private:
// Objetos y punteros
SDL_Renderer *renderer; // El renderizador de la ventana
Resource *resource; // Objeto con los recursos
Asset *asset; // Objeto con la ruta a todos los ficheros de recursos
Texture *texture; // Textura con los graficos del enemigo
AnimatedSprite *sprite; // Sprite del enemigo
SDL_Renderer *renderer; // El renderizador de la ventana
Asset *asset; // Objeto con la ruta a todos los ficheros de recursos
// Variables
color_t color; // Color del enemigo
std::string colorString; // Color del enemigo en formato texto
palette_e palette; // Paleta de colores
palette_e palette; // Paleta de colores
int x1; // Limite izquierdo de la ruta en el eje X
int x2; // Limite derecho de la ruta en el eje X
int y1; // Limite superior de la ruta en el eje Y

View File

@@ -1,7 +1,7 @@
#include "game.h"
// Constructor
Game::Game(SDL_Renderer *renderer, Screen *screen, Asset *asset, options_t *options, Input *input, Debug *debug)
Game::Game(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, options_t *options, Input *input, Debug *debug)
{
// Inicia algunas variables
board.iniClock = SDL_GetTicks();
@@ -9,6 +9,7 @@ Game::Game(SDL_Renderer *renderer, Screen *screen, Asset *asset, options_t *opti
spawnPoint = {15, 96, 0, 0, 0, s_standing, SDL_FLIP_NONE};
// Copia los punteros
this->resource = resource;
this->renderer = renderer;
this->asset = asset;
this->screen = screen;
@@ -24,15 +25,13 @@ Game::Game(SDL_Renderer *renderer, Screen *screen, Asset *asset, options_t *opti
spawnPoint = {x * 8, y * 8, 0, 0, 0, s_standing, SDL_FLIP_HORIZONTAL};
// ****
// Crea la cache de recursos
cacheResources();
// Crea los objetos
loadResources();
scoreboard = new ScoreBoard(renderer, asset, options, &board);
itemTracker = new ItemTracker();
roomTracker = new RoomTracker();
room = new Room(asset->get(currentRoom), renderer, screen, asset, options, itemTracker, &board.items, debug);
player = new Player(spawnPoint, asset->get("player.png"), asset->get("player.ani"), renderer, asset, options, input, room, 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);
eventHandler = new SDL_Event();
text = new Text(asset->get("smb2.png"), asset->get("smb2.txt"), renderer);
music = JA_LoadMusic(asset->get("game.ogg").c_str());
@@ -61,10 +60,10 @@ Game::Game(SDL_Renderer *renderer, Screen *screen, Asset *asset, options_t *opti
Game::~Game()
{
// Libera los recursos
freeCache();
// Libera la memoria de los objetos
resource->freeTextures();
//delete resource;
delete scoreboard;
delete itemTracker;
delete roomTracker;
@@ -305,7 +304,7 @@ bool Game::changeRoom(std::string file)
room = nullptr;
// Crea un objeto habitación nuevo a partir del fichero
room = new Room(asset->get(file), renderer, screen, asset, options, itemTracker, &board.items, debug);
room = new Room(asset->get(file), renderer, screen, resource, asset, options, itemTracker, &board.items, debug);
// Actualiza el marcador
const color_t c = room->getBorderColor(); // Pone el color del marcador
@@ -394,8 +393,8 @@ void Game::killPlayer()
setBlackScreen();
// Crea la nueva habitación y el nuevo jugador
room = new Room(asset->get(currentRoom), renderer, screen, asset, options, itemTracker, &board.items, debug);
player = new Player(spawnPoint, asset->get("player.png"), asset->get("player.ani"), renderer, asset, options, input, room, 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);
room->pause();
player->pause();
@@ -461,85 +460,66 @@ void Game::renderBlackScreen()
}
}
// Carga todos los recursos necesarios
void Game::cacheResources()
// Carga los recursos
void Game::loadResources()
{
// Carga las texturas
std::vector<std::string> textureList;
// Jugador
textureList.push_back("player.png");
textureList.push_back("player.png");
// Tilesets
textureList.push_back("standard.png");
textureList.push_back("standard_zxarne.png");
// Tilesets
textureList.push_back("standard.png");
textureList.push_back("standard_zxarne.png");
// Enemigos
textureList.push_back("paco.png");
textureList.push_back("chip.png");
textureList.push_back("wave.png");
textureList.push_back("wave_v.png");
textureList.push_back("sigmasua.png");
textureList.push_back("diskette.png");
textureList.push_back("bird.png");
textureList.push_back("bin.png");
textureList.push_back("qvoid.png");
textureList.push_back("batman.png");
textureList.push_back("tuno.png");
textureList.push_back("matatunos.png");
textureList.push_back("abad.png");
textureList.push_back("jailbattle_human.png");
textureList.push_back("jailbattle_alien.png");
textureList.push_back("jailer.png");
textureList.push_back("jailer2.png");
textureList.push_back("jailer3.png");
textureList.push_back("printer.png");
textureList.push_back("code.png");
textureList.push_back("demon.png");
textureList.push_back("dimallas.png");
textureList.push_back("dimallas_v.png");
textureList.push_back("heavy.png");
textureList.push_back("spider.png");
textureList.push_back("macaronni_ted.png");
textureList.push_back("mummy.png");
textureList.push_back("sam.png");
textureList.push_back("amstrad_character_set.png");
textureList.push_back("breakout.png");
textureList.push_back("lamp.png");
textureList.push_back("bry.png");
textureList.push_back("tv.png");
textureList.push_back("tv_panel.png");
textureList.push_back("arounders_door.png");
textureList.push_back("arounders_machine.png");
textureList.push_back("arounder_walk.png");
textureList.push_back("arounder_stop.png");
textureList.push_back("arounder_fly.png");
textureList.push_back("bat.png");
// Enemigos
textureList.push_back("paco.png");
textureList.push_back("chip.png");
textureList.push_back("wave.png");
textureList.push_back("wave_v.png");
textureList.push_back("sigmasua.png");
textureList.push_back("diskette.png");
textureList.push_back("bird.png");
textureList.push_back("bin.png");
textureList.push_back("qvoid.png");
textureList.push_back("batman.png");
textureList.push_back("tuno.png");
textureList.push_back("matatunos.png");
textureList.push_back("abad.png");
textureList.push_back("jailbattle_human.png");
textureList.push_back("jailbattle_alien.png");
textureList.push_back("jailer.png");
textureList.push_back("jailer2.png");
textureList.push_back("jailer3.png");
textureList.push_back("printer.png");
textureList.push_back("code.png");
textureList.push_back("demon.png");
textureList.push_back("dimallas.png");
textureList.push_back("dimallas_v.png");
textureList.push_back("heavy.png");
textureList.push_back("spider.png");
textureList.push_back("macaronni_ted.png");
textureList.push_back("mummy.png");
textureList.push_back("sam.png");
textureList.push_back("amstrad_character_set.png");
textureList.push_back("breakout.png");
textureList.push_back("lamp.png");
textureList.push_back("bry.png");
textureList.push_back("tv.png");
textureList.push_back("tv_panel.png");
textureList.push_back("arounders_door.png");
textureList.push_back("arounders_machine.png");
textureList.push_back("arounder_walk.png");
textureList.push_back("arounder_stop.png");
textureList.push_back("arounder_fly.png");
textureList.push_back("bat.png");
// Items
textureList.push_back("items.png");
// Items
textureList.push_back("items.png");
// Texto
textureList.push_back("smb2.png");
textureList.push_back("debug.png");
// Texto
textureList.push_back("smb2.png");
textureList.push_back("debug.png");
for (auto list : textureList)
{
texture_t t;
t.name = list;
t.texture = new Texture(renderer, asset->get(t.name));
textures.push_back(t);
}
}
// Libera los recursos
void Game::freeCache()
{
// Libera las texturas
for (auto texture : textures)
{
texture.texture->unload();
delete texture.texture;
}
textures.clear();
resource->loadTextures(textureList);
}

View File

@@ -6,6 +6,7 @@
#include "common/debug.h"
#include "common/input.h"
#include "common/jail_audio.h"
#include "common/resource.h"
#include "common/screen.h"
#include "common/sprite.h"
#include "common/text.h"
@@ -24,12 +25,6 @@
class Game
{
private:
struct texture_t
{
std::string name; // Nombre de la textura
Texture *texture; // La textura
};
// Objetos y punteros
SDL_Renderer *renderer; // El renderizador de la ventana
SDL_Event *eventHandler; // Manejador de eventos
@@ -42,12 +37,11 @@ private:
Input *input; // Objeto pata gestionar la entrada
Text *text; // Objeto para los textos del juego
ScoreBoard *scoreboard; // Objeto encargado de gestionar el marcador
Resource *resource; // Objeto con los recursos
Debug *debug; // Objeto para gestionar la información de debug
options_t *options; // Puntero a las opciones del juego
Test *test;
std::vector<texture_t> textures;
// Variables
JA_Music music; // Musica que suena durante el juego
Uint32 ticks; // Contador de ticks para ajustar la velocidad del programa
@@ -115,15 +109,12 @@ private:
// Dibuja la pantalla negra
void renderBlackScreen();
// Carga todos los recursos necesarios
void cacheResources();
// Libera los recursos
void freeCache();
// Carga los recursos
void loadResources();
public:
// Constructor
Game(SDL_Renderer *renderer, Screen *screen, Asset *asset, options_t *options, Input *input, Debug *debug);
Game(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, options_t *options, Input *input, Debug *debug);
// Destructor
~Game();

View File

@@ -8,11 +8,13 @@ Item::Item(item_t item)
const int itemSize = 8;
// Obten punteros a objetos
resource = item.resource;
asset = item.asset;
renderer = item.renderer;
// Crea objetos
texture = new Texture(renderer, asset->get(item.tileset));
//texture = new Texture(renderer, asset->get(item.tileset));
texture = resource->getTexture(item.tileset);
sprite = new Sprite(item.x, item.y, itemSize, itemSize, texture, renderer);
// Inicia variables
@@ -34,7 +36,7 @@ Item::Item(item_t item)
// Destructor
Item::~Item()
{
delete texture;
//delete texture;
delete sprite;
}

View File

@@ -2,6 +2,7 @@
#include <SDL2/SDL.h>
#include "common/asset.h"
#include "common/resource.h"
#include "common/sprite.h"
#include "common/utils.h"
#include <string>
@@ -12,6 +13,7 @@
struct item_t
{
SDL_Renderer *renderer; // El renderizador de la ventana
Resource *resource; // Objeto con los recursos
Asset *asset; // Objeto con la ruta a todos los ficheros de recursos
std::string tileset; // Fichero con los graficos del item
int x; // Posicion del item en pantalla
@@ -26,10 +28,11 @@ class Item
{
private:
// Objetos y punteros
SDL_Renderer *renderer; // El renderizador de la ventana
Resource *resource; // Objeto con los recursos
Asset *asset; // Objeto con la ruta a todos los ficheros de recursos
Texture *texture; // Textura con los graficos del objeto
Sprite *sprite; // Sprite del objeto
SDL_Renderer *renderer; // El renderizador de la ventana
Asset *asset; // Objeto con la ruta a todos los ficheros de recursos
// Variables
std::vector<color_t> color; // Vector con los colores del objeto

View File

@@ -3,9 +3,10 @@
#include <sstream>
// Constructor
Player::Player(player_t ini, std::string tileset, std::string animation, SDL_Renderer *renderer, Asset *asset, options_t *options, Input *input, Room *room, Debug *debug)
Player::Player(player_t ini, std::string png, std::string animation, SDL_Renderer *renderer, Resource *resource, Asset *asset, options_t *options, Input *input, Room *room, Debug *debug)
{
// Obten punteros a objetos
this->resource = resource;
this->asset = asset;
this->renderer = renderer;
this->input = input;
@@ -14,7 +15,7 @@ Player::Player(player_t ini, std::string tileset, std::string animation, SDL_Ren
this->options = options;
// Crea objetos
texture = new Texture(renderer, asset->get(tileset));
texture = resource->getTexture(png);
sprite = new AnimatedSprite(texture, renderer, animation);
// Inicializa variables
@@ -102,7 +103,6 @@ Player::Player(player_t ini, std::string tileset, std::string animation, SDL_Ren
// Destructor
Player::~Player()
{
delete texture;
delete sprite;
for (auto s : jumpSound)

View File

@@ -5,6 +5,7 @@
#include "common/asset.h"
#include "common/debug.h"
#include "common/input.h"
#include "common/resource.h"
#include "common/utils.h"
#include "const.h"
#include "room.h"
@@ -38,6 +39,7 @@ public:
// Objetos y punteros
SDL_Renderer *renderer; // El renderizador de la ventana
Input *input; // Objeto para gestionar la entrada
Resource *resource; // Objeto con los recursos
Asset *asset; // Objeto con la ruta a todos los ficheros de recursos
Room *room; // Objeto encargado de gestionar cada habitación del juego
Texture *texture; // Textura con los graficos del enemigo
@@ -128,7 +130,7 @@ public:
public:
// Constructor
Player(player_t ini, std::string tileset, std::string animation, SDL_Renderer *renderer, Asset *asset, options_t *options, Input *input, Room *room, Debug *debug);
Player(player_t ini, std::string png, std::string animation, SDL_Renderer *renderer, Resource *resource, Asset *asset, options_t *options, Input *input, Room *room, Debug *debug);
// Destructor
~Player();

View File

@@ -4,9 +4,10 @@
#include <sstream>
// Constructor
Room::Room(std::string file, SDL_Renderer *renderer, Screen *screen, Asset *asset, options_t *options, ItemTracker *itemTracker, int *items, Debug *debug)
Room::Room(std::string file, SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, options_t *options, ItemTracker *itemTracker, int *items, Debug *debug)
{
// Copia los punteros a objetos
this->resource = resource;
this->renderer = renderer;
this->asset = asset;
this->screen = screen;
@@ -27,7 +28,8 @@ Room::Room(std::string file, SDL_Renderer *renderer, Screen *screen, Asset *asse
// Crea los objetos
loadMapFile(file);
texture = new Texture(renderer, asset->get(tileset));
//texture = new Texture(renderer, asset->get(tileset));
texture = resource->getTexture(tileset);
tilesetWidth = texture->getWidth() / tileSize;
itemSound = JA_LoadSound(asset->get("item.wav").c_str());
@@ -64,7 +66,7 @@ Room::Room(std::string file, SDL_Renderer *renderer, Screen *screen, Asset *asse
Room::~Room()
{
// Reclama la memoria utilizada por los objetos
delete texture;
//delete texture;
JA_DeleteSound(itemSound);
SDL_DestroyTexture(mapTexture);
@@ -102,6 +104,7 @@ bool Room::loadMapFile(std::string file_path)
if (line == "[enemy]")
{
enemy_t enemy;
enemy.resource = resource;
enemy.asset = asset;
enemy.renderer = renderer;
enemy.flip = false;
@@ -128,6 +131,7 @@ bool Room::loadMapFile(std::string file_path)
else if (line == "[item]")
{
item_t item;
item.resource = resource;
item.asset = asset;
item.renderer = renderer;
item.counter = 0;

View File

@@ -4,6 +4,7 @@
#include "common/asset.h"
#include "common/debug.h"
#include "common/jail_audio.h"
#include "common/resource.h"
#include "common/screen.h"
#include "common/sprite.h"
#include "common/utils.h"
@@ -41,6 +42,7 @@ private:
std::vector<Enemy *> enemies; // Listado con los enemigos de la habitación
std::vector<Item *> items; // Listado con los items que hay en la habitación
Texture *texture; // Textura con los graficos de la habitación
Resource *resource; // Objeto con los recursos
Asset *asset; // Objeto con la ruta a todos los ficheros de recursos
Screen *screen; // Objeto encargado de dibujar en pantalla
ItemTracker *itemTracker; // Lleva el control de los objetos recogidos
@@ -133,7 +135,7 @@ private:
public:
// Constructor
Room(std::string file, SDL_Renderer *renderer, Screen *screen, Asset *asset, options_t *options, ItemTracker *item_tracker, int *items, Debug *debug);
Room(std::string file, SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, options_t *options, ItemTracker *item_tracker, int *items, Debug *debug);
// Destructor
~Room();