bfff, a casa a meitat enfangà.. be..

Estic acabant de convertir Title
This commit is contained in:
2025-03-03 14:26:07 +01:00
parent 8f1d1df5d6
commit c9e75ad5c8
9 changed files with 190 additions and 81 deletions

View File

@@ -17,7 +17,7 @@
#include "screen.h" // for Screen
#include "s_sprite.h" // for SSprite
#include "text.h" // for Text, TEXT_CENTER, TEXT_COLOR
#include "surface.h" // for Texture
#include "surface.h" // for Surface
#include "utils.h" // for Color, stringToColor, Palette
#include "paleta.h"
@@ -25,7 +25,7 @@
Title::Title()
: surface_(Resource::get()->getSurface("title_logo.gif")),
sprite_(std::make_shared<SSprite>(surface_, 0, 0, surface_->getWidth(), surface_->getHeight())),
bg_surface_(std::make_shared<Surface>(Screen::get()->getSurface(), options.game.width, options.game.height))
bg_surface_(std::make_shared<Surface>(Screen::get()->getRenderSurface(), options.game.width, options.game.height))
{
// Carga la surface con los gráficos de la pantalla de carga
pInit(Screen::get()->getRenderer(), 256, 128);
@@ -56,7 +56,6 @@ Title::Title()
Title::~Title()
{
pDeleteSurface(loading_screen_);
SDL_DestroyTexture(bg_surface_);
}
// Inicializa la marquesina
@@ -247,7 +246,7 @@ void Title::render()
{
// Prepara para empezar a dibujar en la textura de juego
Screen::get()->start();
Screen::get()->clean(stringToColor(options.video.palette, "black"));
Screen::get()->clean(stringToColor("black"));
if (state_ == TitleState::SHOW_MENU)
{
@@ -311,15 +310,12 @@ void Title::moveCheevosList(int direction)
// Rellena la textura de fondo con todos los gráficos
void Title::fillSurface()
{
auto renderer = Screen::get()->getRenderer();
// Coloca el puntero del renderizador sobre la textura
SDL_SetRenderTarget(renderer, bg_surface_);
Screen::get()->setRenderSurface(bg_surface_);
// Rellena la textura de color
const Color c = stringToColor(options.video.palette, "black");
SDL_SetRenderDrawColor(renderer, c.r, c.g, c.b, 0xFF);
SDL_RenderClear(renderer);
bg_surface_->setColor(255, 0xFF000000);
bg_surface_->clear(255);
// Pinta el gráfico del titulo a partir del sprite
sprite_->render();
@@ -334,7 +330,7 @@ void Title::fillSurface()
text->writeDX(TEXT_CENTER | TEXT_COLOR, PLAY_AREA_CENTER_X, 20 * TEXT_SIZE, "ESC.EXIT GAME", 1, COLOR);
// Devuelve el puntero del renderizador a su sitio
SDL_SetRenderTarget(renderer, nullptr);
Screen::get()->setRenderSurface(nullptr);
}
// Crea y rellena la textura para mostrar los logros
@@ -349,10 +345,10 @@ void Title::createCheevosTexture()
constexpr int CHEEVOS_PADDING = 10;
const int CHEEVO_HEIGHT = CHEEVOS_PADDING + (TEXT->getCharacterSize() * 2) + 1;
const int CHEEVOS_TEXTURE_HEIGHT = (CHEEVO_HEIGHT * CHEEVOS_LIST.size()) + 2 + TEXT->getCharacterSize() + 8;
cheevos_surface_ = std::make_shared<Texture>(Screen::get()->getRenderer());
cheevos_surface_->createBlank(CHEEVOS_TEXTURE_WIDTH, CHEEVOS_TEXTURE_HEIGHT, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET);
cheevos_surface_->setAsRenderTarget(Screen::get()->getRenderer());
cheevos_surface_->setBlendMode(SDL_BLENDMODE_BLEND);
cheevos_surface_ = std::make_shared<Surface>(Screen::get()->getRenderSurface(), CHEEVOS_TEXTURE_WIDTH, CHEEVOS_TEXTURE_HEIGHT);
// Prepara para dibujar sobre la textura
Screen::get()->setRenderSurface(cheevos_surface_);
// Rellena la textura con color sólido
const Color CHEEVOS_BG_COLOR = stringToColor(options.video.palette, "black");
@@ -384,6 +380,9 @@ void Title::createCheevosTexture()
pos += TEXT->getCharacterSize();
}
// Restablece el RenderSurface
Screen::get()->setRenderSurface(nullptr);
// Crea el sprite para el listado de logros
cheevos_sprite_ = std::make_shared<SSprite>(cheevos_surface_, (GAMECANVAS_WIDTH - cheevos_surface_->getWidth()) / 2, CHEEVOS_TEXTURE_POS_Y, cheevos_surface_->getWidth(), cheevos_surface_->getHeight());
cheevos_surface_view_ = {0, 0, cheevos_surface_->getWidth(), CHEEVOS_TEXTURE_VIEW_HEIGHT};