#include "screen.h" // Constructor Screen::Screen(SDL_Window *window, SDL_Renderer *renderer, int scr_w, int scr_h, int gc_w, int gc_h) { // Inicializa variables mWindow = window; mRenderer = renderer; mScreenWidth = scr_w; mScreenHeight = scr_h; mGameCanvasWidth = gc_w; mGameCanvasHeight = gc_h; mGameCanvasPosX = (scr_w - gc_w) / 2; mGameCanvasPosY = (scr_h - gc_h) / 2; mDest = {mGameCanvasPosX, mGameCanvasPosY, mGameCanvasWidth, mGameCanvasHeight}; mBorderColor = {0x27, 0x27, 0x36}; // Crea la textura donde se dibujan los graficos del juego mGameCanvas = SDL_CreateTexture(mRenderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, mGameCanvasWidth, mGameCanvasHeight); if (mGameCanvas == NULL) printf("TitleSurface could not be created!\nSDL Error: %s\n", SDL_GetError()); } // Destructor Screen::~Screen() { mRenderer = nullptr; } // Limpia la pantalla void Screen::clean(color_t color) { SDL_SetRenderDrawColor(mRenderer, color.r, color.g, color.b, 0xFF); SDL_RenderClear(mRenderer); } // Prepara para empezar a dibujar en la textura de juego void Screen::start() { SDL_SetRenderTarget(mRenderer, mGameCanvas); } // Vuelca el contenido del renderizador en pantalla void Screen::blit() { // Vuelve a dejar el renderizador en modo normal SDL_SetRenderTarget(mRenderer, NULL); // Borra el contenido previo SDL_SetRenderDrawColor(mRenderer, mBorderColor.r, mBorderColor.g, mBorderColor.b, 0xFF); SDL_RenderClear(mRenderer); // Copia la textura de juego en el renderizador en la posición adecuada SDL_RenderCopy(mRenderer, mGameCanvas, NULL, &mDest); // Muestra por pantalla el renderizador SDL_RenderPresent(mRenderer); }