diff --git a/source/instructions.cpp b/source/instructions.cpp index 6596c14..8317e26 100644 --- a/source/instructions.cpp +++ b/source/instructions.cpp @@ -12,9 +12,27 @@ Instructions::Instructions(SDL_Renderer *renderer, Screen *screen, Asset *asset, this->lang = lang; // Reserva memoria para los punteros + LTexture *item1 = new LTexture(renderer, asset->get("item_points1_disk.png")); + itemTextures.push_back(item1); + + LTexture *item2 = new LTexture(renderer, asset->get("item_points2_gavina.png")); + itemTextures.push_back(item2); + + LTexture *item3 = new LTexture(renderer, asset->get("item_points3_pacmar.png")); + itemTextures.push_back(item3); + + LTexture *item4 = new LTexture(renderer, asset->get("item_clock.png")); + itemTextures.push_back(item4); + + LTexture *item5 = new LTexture(renderer, asset->get("item_coffee.png")); + itemTextures.push_back(item5); + + LTexture *item6 = new LTexture(renderer, asset->get("item_coffee_machine.png")); + itemTextures.push_back(item6); + eventHandler = new SDL_Event(); - itemTexture = new LTexture(renderer, asset->get("items.png")); - sprite = new Sprite(0, 0, GAME_WIDTH, GAME_HEIGHT, itemTexture, renderer); + + sprite = new Sprite(0, 0, 16, 16, itemTextures.at(0), renderer); text = new Text(asset->get("smb2.png"), asset->get("smb2.txt"), renderer); // Crea un backbuffer para el renderizador @@ -36,8 +54,12 @@ Instructions::Instructions(SDL_Renderer *renderer, Screen *screen, Asset *asset, // Destructor Instructions::~Instructions() { - itemTexture->unload(); - delete itemTexture; + for (auto texture : itemTextures) + { + texture->unload(); + delete texture; + } + itemTextures.clear(); delete sprite; delete eventHandler; @@ -121,36 +143,36 @@ void Instructions::render() } // Disquito + sprite->setTexture(itemTextures.at(0)); sprite->setPos(destRect1); - srcRect.x = 0; srcRect.y = 16 * (((counter + 12) / 36) % 2); sprite->setSpriteClip(srcRect); sprite->render(); // Gavineixon + sprite->setTexture(itemTextures.at(1)); sprite->setPos(destRect2); - srcRect.x += srcRect.w; srcRect.y = 16 * (((counter + 9) / 36) % 2); sprite->setSpriteClip(srcRect); sprite->render(); // Pacmar + sprite->setTexture(itemTextures.at(2)); sprite->setPos(destRect3); - srcRect.x += srcRect.w; srcRect.y = 16 * (((counter + 6) / 36) % 2); sprite->setSpriteClip(srcRect); sprite->render(); // Time Stopper + sprite->setTexture(itemTextures.at(3)); sprite->setPos(destRect4); - srcRect.x += srcRect.w; srcRect.y = 16 * (((counter + 3) / 36) % 2); sprite->setSpriteClip(srcRect); sprite->render(); // Coffee + sprite->setTexture(itemTextures.at(4)); sprite->setPos(destRect5); - srcRect.x += (srcRect.w * 2); // Se salta el icono del TNT srcRect.y = 16 * (((counter + 0) / 36) % 2); sprite->setSpriteClip(srcRect); sprite->render(); @@ -204,7 +226,10 @@ void Instructions::checkEventHandler() } else { - manualQuit = true; + if (counter > 30) + { + manualQuit = true; + } } } } diff --git a/source/instructions.h b/source/instructions.h index b11d840..0164c7d 100644 --- a/source/instructions.h +++ b/source/instructions.h @@ -23,15 +23,15 @@ class Instructions { private: // Objetos - SDL_Renderer *renderer; // El renderizador de la ventana - Screen *screen; // Objeto encargado de dibujar en pantalla - LTexture *itemTexture; // Textura con los graficos - SDL_Event *eventHandler; // Manejador de eventos - SDL_Texture *backbuffer; // Textura para usar como backbuffer - Sprite *sprite; // Sprite con la textura de las instrucciones - Asset *asset; // Objeto que gestiona todos los ficheros de recursos - Lang *lang; // Objeto para gestionar los textos en diferentes idiomas - Text *text; // Objeto para escribir texto + SDL_Renderer *renderer; // El renderizador de la ventana + Screen *screen; // Objeto encargado de dibujar en pantalla + std::vector itemTextures; // Vector con las texturas de los items + SDL_Event *eventHandler; // Manejador de eventos + SDL_Texture *backbuffer; // Textura para usar como backbuffer + Sprite *sprite; // Sprite con la textura de las instrucciones + Asset *asset; // Objeto que gestiona todos los ficheros de recursos + Lang *lang; // Objeto para gestionar los textos en diferentes idiomas + Text *text; // Objeto para escribir texto // Variables Uint16 counter; // Contador