Posant make_uniques, s'ha quedat tot enmerdat per culpa d'un struct
This commit is contained in:
@@ -22,20 +22,16 @@
|
||||
struct JA_Music_t;
|
||||
|
||||
// Constructor
|
||||
Instructions::Instructions(JA_Music_t *music)
|
||||
Instructions::Instructions(JA_Music_t *music) : music(music)
|
||||
{
|
||||
// Copia los punteros
|
||||
this->music = music;
|
||||
input = Input::get();
|
||||
screen = Screen::get();
|
||||
asset = Asset::get();
|
||||
renderer = screen->getRenderer();
|
||||
renderer = Screen::get()->getRenderer();
|
||||
|
||||
// Crea objetos
|
||||
eventHandler = new SDL_Event();
|
||||
text = new Text(asset->get("smb2.gif"), asset->get("smb2.txt"), renderer);
|
||||
tiledbg = new Tiledbg(asset->get("title_bg_tile.png"), {0, 0, param.game.width, param.game.height}, TILED_MODE_STATIC);
|
||||
fade = new Fade(renderer);
|
||||
eventHandler = std::make_unique<SDL_Event>();
|
||||
text = std::make_unique<Text>(Asset::get()->get("smb2.gif"), Asset::get()->get("smb2.txt"), renderer);
|
||||
tiledbg = std::make_unique<Tiledbg>(Asset::get()->get("title_bg_tile.png"), (SDL_Rect){0, 0, param.game.width, param.game.height}, TILED_MODE_STATIC);
|
||||
fade = std::make_unique<Fade>(renderer);
|
||||
|
||||
// Crea un backbuffer para el renderizador
|
||||
backbuffer = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, param.game.width, param.game.height);
|
||||
@@ -72,24 +68,9 @@ Instructions::Instructions(JA_Music_t *music)
|
||||
// Destructor
|
||||
Instructions::~Instructions()
|
||||
{
|
||||
for (auto texture : itemTextures)
|
||||
{
|
||||
texture->unload();
|
||||
delete texture;
|
||||
}
|
||||
itemTextures.clear();
|
||||
|
||||
for (auto sprite : sprites)
|
||||
{
|
||||
delete sprite;
|
||||
}
|
||||
sprites.clear();
|
||||
|
||||
delete eventHandler;
|
||||
delete text;
|
||||
delete tiledbg;
|
||||
delete fade;
|
||||
|
||||
SDL_DestroyTexture(backbuffer);
|
||||
SDL_DestroyTexture(texture);
|
||||
}
|
||||
@@ -98,27 +79,27 @@ Instructions::~Instructions()
|
||||
void Instructions::iniSprites()
|
||||
{
|
||||
// Inicializa las texturas
|
||||
Texture *item1 = new Texture(renderer, asset->get("item_points1_disk.png"));
|
||||
itemTextures.push_back(item1);
|
||||
auto item1 = std::make_unique<Texture>(renderer, Asset::get()->get("item_points1_disk.png"));
|
||||
itemTextures.push_back(std::move(item1));
|
||||
|
||||
Texture *item2 = new Texture(renderer, asset->get("item_points2_gavina.png"));
|
||||
itemTextures.push_back(item2);
|
||||
auto item2 = std::make_unique<Texture>(renderer, Asset::get()->get("item_points2_gavina.png"));
|
||||
itemTextures.push_back(std::move(item2));
|
||||
|
||||
Texture *item3 = new Texture(renderer, asset->get("item_points3_pacmar.png"));
|
||||
itemTextures.push_back(item3);
|
||||
auto item3 = std::make_unique<Texture>(renderer, Asset::get()->get("item_points3_pacmar.png"));
|
||||
itemTextures.push_back(std::move(item3));
|
||||
|
||||
Texture *item4 = new Texture(renderer, asset->get("item_clock.png"));
|
||||
itemTextures.push_back(item4);
|
||||
auto item4 = std::make_unique<Texture>(renderer, Asset::get()->get("item_clock.png"));
|
||||
itemTextures.push_back(std::move(item4));
|
||||
|
||||
Texture *item5 = new Texture(renderer, asset->get("item_coffee.png"));
|
||||
itemTextures.push_back(item5);
|
||||
auto item5 = std::make_unique<Texture>(renderer, Asset::get()->get("item_coffee.png"));
|
||||
itemTextures.push_back(std::move(item5));
|
||||
|
||||
// Inicializa los sprites
|
||||
for (int i = 0; i < (int)itemTextures.size(); ++i)
|
||||
{
|
||||
Sprite *sprite = new Sprite(0, 0, param.game.itemSize, param.game.itemSize, itemTextures[i]);
|
||||
auto sprite = std::make_unique<Sprite>(0, 0, param.game.itemSize, param.game.itemSize, itemTextures[i].get());
|
||||
sprite->setPos((SDL_Point){spritePos.x, spritePos.y + ((param.game.itemSize + itemSpace) * i)});
|
||||
sprites.push_back(sprite);
|
||||
sprites.push_back(std::move(sprite));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -229,7 +210,7 @@ void Instructions::fillBackbuffer()
|
||||
SDL_RenderCopy(renderer, texture, nullptr, nullptr);
|
||||
|
||||
// Dibuja los sprites
|
||||
for (auto sprite : sprites)
|
||||
for (auto &sprite : sprites)
|
||||
{
|
||||
sprite->render();
|
||||
}
|
||||
@@ -252,7 +233,7 @@ void Instructions::update()
|
||||
JA_PlayMusic(music);
|
||||
|
||||
// Actualiza el objeto screen
|
||||
screen->update();
|
||||
Screen::get()->update();
|
||||
|
||||
// Incrementa el contador
|
||||
counter++;
|
||||
@@ -282,10 +263,10 @@ void Instructions::render()
|
||||
fillBackbuffer();
|
||||
|
||||
// Prepara para empezar a dibujar en la textura de juego
|
||||
screen->start();
|
||||
Screen::get()->start();
|
||||
|
||||
// Limpia la pantalla
|
||||
screen->clean(bgColor);
|
||||
Screen::get()->clean(bgColor);
|
||||
|
||||
// Dibuja el mosacico de fondo
|
||||
tiledbg->render();
|
||||
@@ -299,13 +280,13 @@ void Instructions::render()
|
||||
fade->render();
|
||||
|
||||
// Vuelca el contenido del renderizador en pantalla
|
||||
screen->blit();
|
||||
Screen::get()->blit();
|
||||
}
|
||||
|
||||
// Recarga todas las texturas
|
||||
void Instructions::reloadTextures()
|
||||
{
|
||||
for (auto tex : itemTextures)
|
||||
for (auto &tex : itemTextures)
|
||||
{
|
||||
tex->reLoad();
|
||||
}
|
||||
@@ -317,7 +298,7 @@ void Instructions::reloadTextures()
|
||||
void Instructions::checkEvents()
|
||||
{
|
||||
// Comprueba los eventos que hay en la cola
|
||||
while (SDL_PollEvent(eventHandler) != 0)
|
||||
while (SDL_PollEvent(eventHandler.get()) != 0)
|
||||
{
|
||||
// Evento de salida de la aplicación
|
||||
if (eventHandler->type == SDL_QUIT)
|
||||
@@ -341,7 +322,7 @@ void Instructions::checkEvents()
|
||||
void Instructions::checkInput()
|
||||
{
|
||||
// Comprueba si se ha pulsado cualquier botón (de los usados para jugar)
|
||||
if (input->checkAnyButtonPressed())
|
||||
if (Input::get()->checkAnyButtonPressed())
|
||||
{
|
||||
JA_StopMusic();
|
||||
section::name = section::NAME_TITLE;
|
||||
@@ -350,7 +331,7 @@ void Instructions::checkInput()
|
||||
}
|
||||
|
||||
// Comprueba el input para el resto de objetos
|
||||
screen->checkInput();
|
||||
Screen::get()->checkInput();
|
||||
|
||||
// Comprueba los inputs que se pueden introducir en cualquier sección del juego
|
||||
globalInputs::check();
|
||||
|
||||
Reference in New Issue
Block a user