Añadida la clase screen al código

This commit is contained in:
2021-09-10 23:52:58 +02:00
parent 3fe0861e4f
commit ea3f16b8ac
6 changed files with 105 additions and 32 deletions

View File

@@ -193,7 +193,7 @@ bool Director::initSDL()
SDL_SetRenderDrawColor(mRenderer, 0x00, 0x00, 0x00, 0xFF); SDL_SetRenderDrawColor(mRenderer, 0x00, 0x00, 0x00, 0xFF);
// Establece el tamaño del buffer de renderizado // Establece el tamaño del buffer de renderizado
SDL_RenderSetLogicalSize(mRenderer, SCREEN_WIDTH, SCREEN_HEIGHT); SDL_RenderSetLogicalSize(mRenderer, REAL_SCREEN_WIDTH, REAL_SCREEN_HEIGHT);
// Establece el modo de mezcla // Establece el modo de mezcla
SDL_SetRenderDrawBlendMode(mRenderer, SDL_BLENDMODE_BLEND); SDL_SetRenderDrawBlendMode(mRenderer, SDL_BLENDMODE_BLEND);

View File

@@ -3006,8 +3006,14 @@ void Game::shakeScreen()
for (int n = 0; n < 8; n++) for (int n = 0; n < 8; n++)
{ {
// Limpia la pantalla // Limpia la pantalla
SDL_SetRenderDrawColor(mRenderer, 0x00, 0x00, 0x00, 0xFF); //SDL_SetRenderDrawColor(mRenderer, 0x00, 0x00, 0x00, 0xFF);
SDL_RenderClear(mRenderer); //SDL_RenderClear(mRenderer);
// Prepara para empezar a dibujar en la textura de juego
mScreen->start();
// Limpia la pantalla
mScreen->clean(bgColor);
// Dibuja los objetos // Dibuja los objetos
mSpriteBackground->setPosX(0); mSpriteBackground->setPosX(0);
@@ -3033,7 +3039,10 @@ void Game::shakeScreen()
renderScoreBoard(); renderScoreBoard();
// Actualiza la pantalla // Actualiza la pantalla
SDL_RenderPresent(mRenderer); //SDL_RenderPresent(mRenderer);
// Vuelca el contenido del renderizador en pantalla
mScreen->blit();
SDL_Delay(50); SDL_Delay(50);
} }
} }
@@ -3090,8 +3099,14 @@ section_t Game::run()
} }
// Limpia la pantalla // Limpia la pantalla
SDL_SetRenderDrawColor(mRenderer, 0x00, 0x00, 0x00, 0xFF); //SDL_SetRenderDrawColor(mRenderer, 0x00, 0x00, 0x00, 0xFF);
SDL_RenderClear(mRenderer); //SDL_RenderClear(mRenderer);
// Prepara para empezar a dibujar en la textura de juego
mScreen->start();
// Limpia la pantalla
mScreen->clean(bgColor);
// Dibuja los objetos // Dibuja los objetos
renderPlayField(); renderPlayField();
@@ -3100,7 +3115,10 @@ section_t Game::run()
renderDebugInfo(); renderDebugInfo();
// Actualiza la pantalla // Actualiza la pantalla
SDL_RenderPresent(mRenderer); //SDL_RenderPresent(mRenderer);
// Vuelca el contenido del renderizador en pantalla
mScreen->blit();
} }
} }
@@ -3144,13 +3162,22 @@ void Game::runPausedGame()
} }
} }
// Prepara para empezar a dibujar en la textura de juego
mScreen->start();
// Limpia la pantalla
mScreen->clean(bgColor);
// Pinta el escenario // Pinta el escenario
renderPlayField(); renderPlayField();
mMenuPause->render(); mMenuPause->render();
mFade->render(); mFade->render();
// Actualiza la pantalla // Actualiza la pantalla
SDL_RenderPresent(mRenderer); //SDL_RenderPresent(mRenderer);
// Vuelca el contenido del renderizador en pantalla
mScreen->blit();
// Comprueba las entradas para el menu // Comprueba las entradas para el menu
mMenuPause->checkInput(); mMenuPause->checkInput();
@@ -3237,8 +3264,14 @@ void Game::runGameOverScreen()
} }
// Limpia la pantalla // Limpia la pantalla
SDL_SetRenderDrawColor(mRenderer, 0x27, 0x27, 0x36, 0xFF); //SDL_SetRenderDrawColor(mRenderer, 0x27, 0x27, 0x36, 0xFF);
SDL_RenderClear(mRenderer); //SDL_RenderClear(mRenderer);
// Prepara para empezar a dibujar en la textura de juego
mScreen->start();
// Limpia la pantalla
mScreen->clean(bgColor);
// Dibuja los objetos // Dibuja los objetos
if (mNumPlayers == 1) if (mNumPlayers == 1)
@@ -3257,7 +3290,10 @@ void Game::runGameOverScreen()
mFade->render(); mFade->render();
// Muestra la pantalla // Muestra la pantalla
SDL_RenderPresent(mRenderer); //SDL_RenderPresent(mRenderer);
// Vuelca el contenido del renderizador en pantalla
mScreen->blit();
// Comprueba las entradas para el menu // Comprueba las entradas para el menu
mMenuGameOver->checkInput(); mMenuGameOver->checkInput();

View File

@@ -216,8 +216,14 @@ void Instructions::run(Uint8 mode)
SDL_SetRenderTarget(mRenderer, nullptr); SDL_SetRenderTarget(mRenderer, nullptr);
// Limpia el renderizador // Limpia el renderizador
SDL_SetRenderDrawColor(mRenderer, bgColor.r, bgColor.g, bgColor.b, 255); //SDL_SetRenderDrawColor(mRenderer, bgColor.r, bgColor.g, bgColor.b, 255);
SDL_RenderClear(mRenderer); //SDL_RenderClear(mRenderer);
// Prepara para empezar a dibujar en la textura de juego
mScreen->start();
// Limpia la pantalla
mScreen->clean(bgColor);
// Establece la ventana del backbuffer // Establece la ventana del backbuffer
if (mode == INSTRUCTIONS_MODE_AUTO) if (mode == INSTRUCTIONS_MODE_AUTO)
@@ -229,6 +235,9 @@ void Instructions::run(Uint8 mode)
SDL_RenderCopy(mRenderer, mBackbuffer, NULL, &window); SDL_RenderCopy(mRenderer, mBackbuffer, NULL, &window);
// Dibuja el renderizador en pantalla // Dibuja el renderizador en pantalla
SDL_RenderPresent(mRenderer); //SDL_RenderPresent(mRenderer);
// Vuelca el contenido del renderizador en pantalla
mScreen->blit();
} }
} }

View File

@@ -210,9 +210,9 @@ section_t Intro::run()
{ {
init(); init();
// Si la música no está sonando // Si la música no está sonando la hace sonar
if ((JA_GetMusicState() == JA_MUSIC_INVALID) || (JA_GetMusicState() == JA_MUSIC_STOPPED)) if ((JA_GetMusicState() == JA_MUSIC_INVALID) || (JA_GetMusicState() == JA_MUSIC_STOPPED))
JA_PlayMusic(mMusic, 0); // Reproduce la música JA_PlayMusic(mMusic, 0);
while (mSection.name == PROG_SECTION_INTRO) while (mSection.name == PROG_SECTION_INTRO)
{ {
@@ -233,7 +233,7 @@ section_t Intro::run()
} }
} }
// Calcula la lógica del bucle // Actualiza las variables
if (SDL_GetTicks() - mTicks > mTicksSpeed) if (SDL_GetTicks() - mTicks > mTicksSpeed)
{ {
// Actualiza el contador de ticks // Actualiza el contador de ticks

View File

@@ -8,14 +8,15 @@ Screen::Screen(SDL_Window *window, SDL_Renderer *renderer)
mWindow = window; mWindow = window;
mRenderer = renderer; mRenderer = renderer;
mScreenWidth = 320;//REAL_SCREEN_WIDTH; mScreenWidth = REAL_SCREEN_WIDTH;
mScreenHeight = 240;//REAL_SCREEN_HEIGHT; mScreenHeight = REAL_SCREEN_HEIGHT;
mGameCanvasWidth = 256;//SCREEN_WIDTH; mGameCanvasWidth = SCREEN_WIDTH;
mGameCanvasHeight = 192;//SCREEN_HEIGHT; mGameCanvasHeight = SCREEN_HEIGHT;
mGameCanvasPosX = 0;//(REAL_SCREEN_WIDTH - SCREEN_WIDTH) / 2; mGameCanvasPosX = (mScreenWidth - mGameCanvasWidth) / 2;
mGameCanvasPosY = 0;//(REAL_SCREEN_HEIGHT - SCREEN_HEIGHT) / 2; mGameCanvasPosY = (mScreenHeight - mGameCanvasHeight) / 2;
mBorderColor = {0x27, 0x27, 0x36}; mBorderColor = {0x27, 0x27, 0x36};
mBorderColor = {0x00, 0x00, 0x00};
// Crea la textura donde se dibujan los graficos del juego // Crea la textura donde se dibujan los graficos del juego
mGameCanvas = SDL_CreateTexture(mRenderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, mGameCanvasWidth, mGameCanvasHeight); mGameCanvas = SDL_CreateTexture(mRenderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, mGameCanvasWidth, mGameCanvasHeight);

View File

@@ -557,8 +557,14 @@ section_t Title::run(Uint8 subsection)
} }
// Limpia la pantalla // Limpia la pantalla
SDL_SetRenderDrawColor(mRenderer, bgColor.r, bgColor.g, bgColor.b, 255); //SDL_SetRenderDrawColor(mRenderer, bgColor.r, bgColor.g, bgColor.b, 255);
SDL_RenderClear(mRenderer); //SDL_RenderClear(mRenderer);
// Prepara para empezar a dibujar en la textura de juego
mScreen->start();
// Limpia la pantalla
mScreen->clean(bgColor);
// Dibuja el tileado de fondo // Dibuja el tileado de fondo
SDL_RenderCopy(mRenderer, mBackground, &mBackgroundWindow, NULL); SDL_RenderCopy(mRenderer, mBackground, &mBackgroundWindow, NULL);
@@ -571,7 +577,10 @@ section_t Title::run(Uint8 subsection)
mCrisisBitmap->render(); mCrisisBitmap->render();
// Actualiza la pantalla // Actualiza la pantalla
SDL_RenderPresent(mRenderer); //SDL_RenderPresent(mRenderer);
// Vuelca el contenido del renderizador en pantalla
mScreen->blit();
// Si los objetos han llegado a su destino, cambiamos de Sección // Si los objetos han llegado a su destino, cambiamos de Sección
if ((mEvents[0] == EVENT_COMPLETED) && (mEvents[0] == EVENT_COMPLETED)) if ((mEvents[0] == EVENT_COMPLETED) && (mEvents[0] == EVENT_COMPLETED))
@@ -609,8 +618,14 @@ section_t Title::run(Uint8 subsection)
for (int n = 0; n < 11 * 3; n++) for (int n = 0; n < 11 * 3; n++)
{ {
// Limpia la pantalla // Limpia la pantalla
SDL_SetRenderDrawColor(mRenderer, bgColor.r, bgColor.g, bgColor.b, 255); //SDL_SetRenderDrawColor(mRenderer, bgColor.r, bgColor.g, bgColor.b, 255);
SDL_RenderClear(mRenderer); //SDL_RenderClear(mRenderer);
// Prepara para empezar a dibujar en la textura de juego
mScreen->start();
// Limpia la pantalla
mScreen->clean(bgColor);
// Dibuja el tileado de fondo // Dibuja el tileado de fondo
SDL_RenderCopy(mRenderer, mBackground, &mBackgroundWindow, NULL); SDL_RenderCopy(mRenderer, mBackground, &mBackgroundWindow, NULL);
@@ -629,7 +644,10 @@ section_t Title::run(Uint8 subsection)
mDustBitmapL->render(); mDustBitmapL->render();
// Actualiza la pantalla // Actualiza la pantalla
SDL_RenderPresent(mRenderer); //SDL_RenderPresent(mRenderer);
// Vuelca el contenido del renderizador en pantalla
mScreen->blit();
} }
mSection.subsection = TITLE_SECTION_3; mSection.subsection = TITLE_SECTION_3;
@@ -847,8 +865,14 @@ section_t Title::run(Uint8 subsection)
} }
// Limpia la pantalla // Limpia la pantalla
SDL_SetRenderDrawColor(mRenderer, bgColor.r, bgColor.g, bgColor.b, 255); //SDL_SetRenderDrawColor(mRenderer, bgColor.r, bgColor.g, bgColor.b, 255);
SDL_RenderClear(mRenderer); //SDL_RenderClear(mRenderer);
// Prepara para empezar a dibujar en la textura de juego
mScreen->start();
// Limpia la pantalla
mScreen->clean(bgColor);
// Dibuja el tileado de fondo // Dibuja el tileado de fondo
SDL_RenderCopy(mRenderer, mBackground, &mBackgroundWindow, NULL); SDL_RenderCopy(mRenderer, mBackground, &mBackgroundWindow, NULL);
@@ -883,7 +907,10 @@ section_t Title::run(Uint8 subsection)
mFade->render(); mFade->render();
// Actualiza la pantalla // Actualiza la pantalla
SDL_RenderPresent(mRenderer); //SDL_RenderPresent(mRenderer);
// Vuelca el contenido del renderizador en pantalla
mScreen->blit();
} }
else if (mCounter == 0) else if (mCounter == 0)
{ {