#include "scoreboard.h" #include #include // Constructor ScoreBoard::ScoreBoard(SDL_Renderer *renderer, Asset *asset) { // Obten punteros a objetos this->asset = asset; this->renderer = renderer; // Reserva memoria para los objetos texture = new LTexture(); loadTextureFromFile(texture, asset->get("player01.png"), renderer); sprite = new AnimatedSprite(texture, renderer, asset->get("player01.ani")); sprite->setCurrentAnimation("walk_menu"); // Inicializa las variables counter = 0; colorChangeSpeed = 4; // Inicializa los colores color_t c = stringToColor("blue"); color.push_back(c); c = stringToColor("red"); color.push_back(c); c = stringToColor("purple"); color.push_back(c); c = stringToColor("green"); color.push_back(c); c = stringToColor("cyan"); color.push_back(c); c = stringToColor("yellow"); color.push_back(c); } // Destructor ScoreBoard::~ScoreBoard() { texture->unload(); delete texture; texture = nullptr; delete sprite; sprite = nullptr; } // Pinta el objeto en pantalla void ScoreBoard::render() { const int num_lives = 9; // Dibuja el fondo del marcador const SDL_Rect rect = {0, 17 * BLOCK, PLAY_AREA_WIDTH, GAMECANVAS_HEIGHT - PLAY_AREA_HEIGHT}; SDL_SetRenderDrawColor(renderer, 0, 255, 0, 255); SDL_RenderFillRect(renderer, &rect); sprite->setPosY(18 * BLOCK); int index; int desp = (counter / 40) % 8; for (int i = 0; i < num_lives; i++) { sprite->setPosX(8 + (16 * i) + desp); index = i % color.size(); sprite->getTexture()->setColor(color[index].r, color[index].g, color[index].b); sprite->render(); } } // Actualiza las variables del objeto void ScoreBoard::update() { counter++; sprite->update(); }