diff --git a/source/color.h b/source/color.h index eea6974..bde200f 100644 --- a/source/color.h +++ b/source/color.h @@ -18,9 +18,6 @@ constexpr size_t COLOR_CYCLE_SIZE = 6; // Mitad del ciclo espejado // Estructura para definir un color RGBA struct Color { private: - static constexpr Uint8 MAX_COLOR_VALUE = 255; - static constexpr Uint8 MIN_COLOR_VALUE = 0; - static constexpr Uint8 DEFAULT_ALPHA = 255; static constexpr int DEFAULT_LIGHTEN_AMOUNT = 50; static constexpr int DEFAULT_DARKEN_AMOUNT = 50; static constexpr int DEFAULT_APPROACH_STEP = 1; @@ -30,6 +27,12 @@ struct Color { static constexpr size_t HEX_COMPONENT_LENGTH = 2; public: + static constexpr Uint8 MAX_COLOR_VALUE = 255; + static constexpr Uint8 MIN_COLOR_VALUE = 0; + static constexpr Uint8 DEFAULT_ALPHA = 255; + static constexpr Uint8 MAX_ALPHA_VALUE = 255; + static constexpr Uint8 MIN_ALPHA_VALUE = 0; + Uint8 r, g, b, a; constexpr Color() : r(MIN_COLOR_VALUE), g(MIN_COLOR_VALUE), b(MIN_COLOR_VALUE), a(DEFAULT_ALPHA) {} @@ -102,6 +105,7 @@ using ColorCycle = std::array; constexpr Color NO_TEXT_COLOR = Color(0XFF, 0XFF, 0XFF); constexpr Color SHADOW_TEXT_COLOR = Color(0X43, 0X43, 0X4F); constexpr Color TITLE_SHADOW_TEXT_COLOR = Color(0x14, 0x87, 0xc4); +constexpr Color ORANGE_TEXT_COLOR = Color(0XFF, 0X7A, 0X00); constexpr Color FLASH_COLOR = Color(0XFF, 0XFF, 0XFF); diff --git a/source/sections/instructions.cpp b/source/sections/instructions.cpp index 8eab74d..4d7eb30 100644 --- a/source/sections/instructions.cpp +++ b/source/sections/instructions.cpp @@ -1,6 +1,7 @@ #include "instructions.h" #include // Para SDL_GetTicks, SDL_SetRenderTarget, SDL_Re... + #include // Para max #include // Para array #include // Para basic_string, string @@ -149,20 +150,21 @@ void Instructions::fillTexture() { } const int ANCHOR_ITEM = (param.game.width - (lenght + DESP_X)) / 2; - constexpr Color ORANGE_COLOR = Color(0XFF, 0X7A, 0X00); + auto caption_style = TextStyle(ORANGE_TEXT_COLOR, SHADOW_TEXT_COLOR); + auto text_style = TextStyle(NO_TEXT_COLOR, SHADOW_TEXT_COLOR); // Escribe el texto de las instrucciones - text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, FIRST_LINE, Lang::getText("[INSTRUCTIONS] 01"), 1, ORANGE_COLOR, 1, SHADOW_TEXT_COLOR); + text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, FIRST_LINE, Lang::getText("[INSTRUCTIONS] 01"), caption_style); const int ANCHOR1 = FIRST_LINE + SPACE_POST_HEADER; - text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, ANCHOR1 + SPACE_BETWEEN_LINES * 0, Lang::getText("[INSTRUCTIONS] 02"), 1, NO_TEXT_COLOR, 1, SHADOW_TEXT_COLOR); - text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, ANCHOR1 + SPACE_BETWEEN_LINES * 1, Lang::getText("[INSTRUCTIONS] 03"), 1, NO_TEXT_COLOR, 1, SHADOW_TEXT_COLOR); - text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, ANCHOR1 + SPACE_NEW_PARAGRAPH + SPACE_BETWEEN_LINES * 2, Lang::getText("[INSTRUCTIONS] 04"), 1, NO_TEXT_COLOR, 1, SHADOW_TEXT_COLOR); - text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, ANCHOR1 + SPACE_NEW_PARAGRAPH + SPACE_BETWEEN_LINES * 3, Lang::getText("[INSTRUCTIONS] 05"), 1, NO_TEXT_COLOR, 1, SHADOW_TEXT_COLOR); + text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, ANCHOR1 + SPACE_BETWEEN_LINES * 0, Lang::getText("[INSTRUCTIONS] 02"), text_style); + text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, ANCHOR1 + SPACE_BETWEEN_LINES * 1, Lang::getText("[INSTRUCTIONS] 03"), text_style); + text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, ANCHOR1 + SPACE_NEW_PARAGRAPH + SPACE_BETWEEN_LINES * 2, Lang::getText("[INSTRUCTIONS] 04"), text_style); + text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, ANCHOR1 + SPACE_NEW_PARAGRAPH + SPACE_BETWEEN_LINES * 3, Lang::getText("[INSTRUCTIONS] 05"), text_style); // Escribe el texto de los objetos y sus puntos const int ANCHOR2 = ANCHOR1 + SPACE_PRE_HEADER + SPACE_NEW_PARAGRAPH + SPACE_BETWEEN_LINES * 3; - text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, ANCHOR2, Lang::getText("[INSTRUCTIONS] 06"), 1, ORANGE_COLOR, 1, SHADOW_TEXT_COLOR); + text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, ANCHOR2, Lang::getText("[INSTRUCTIONS] 06"), caption_style); const int ANCHOR3 = ANCHOR2 + SPACE_POST_HEADER; text_->writeShadowed(ANCHOR_ITEM + DESP_X, ANCHOR3 + SPACE_BETWEEN_ITEM_LINES * 0, Lang::getText("[INSTRUCTIONS] 07"), SHADOW_TEXT_COLOR); diff --git a/source/sections/intro.cpp b/source/sections/intro.cpp index 46c6e1e..4b527fe 100644 --- a/source/sections/intro.cpp +++ b/source/sections/intro.cpp @@ -305,7 +305,7 @@ void Intro::initSprites() { for (int i = 0; i < TOTAL_SPRITES; ++i) { // Crea la textura - auto card_texture = std::make_shared(Screen::get()->getRenderer()); + auto card_texture = std::make_unique(Screen::get()->getRenderer()); card_texture->createBlank(CARD_WIDTH, CARD_HEIGHT, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET); card_texture->setBlendMode(SDL_BLENDMODE_BLEND); @@ -331,7 +331,7 @@ void Intro::initSprites() { // Deja el renderizador como estaba y aƱade la textura a la lista SDL_SetRenderTarget(Screen::get()->getRenderer(), temp); - card_textures.push_back(card_texture); + card_textures.push_back(std::move(card_texture)); } // Inicializa los sprites para las tarjetas @@ -373,8 +373,8 @@ void Intro::initSprites() { SDL_RenderClear(Screen::get()->getRenderer()); // Dibuja la sombra sobre la textura - auto color = param.intro.shadow_color; - SDL_SetRenderDrawColor(Screen::get()->getRenderer(), color.r, color.g, color.b, 255); + auto shadow_color = param.intro.shadow_color; + SDL_SetRenderDrawColor(Screen::get()->getRenderer(), shadow_color.r, shadow_color.g, shadow_color.b, Color::MAX_ALPHA_VALUE); SDL_FRect rect1 = {1, 0, SHADOW_SPRITE_WIDTH - 2, SHADOW_SPRITE_HEIGHT}; SDL_FRect rect2 = {0, 1, SHADOW_SPRITE_WIDTH, SHADOW_SPRITE_HEIGHT - 2}; SDL_RenderFillRect(Screen::get()->getRenderer(), &rect1); @@ -385,12 +385,12 @@ void Intro::initSprites() { // Inicializa los sprites para la sombras usando la texturas con la sombra for (int i = 0; i < TOTAL_SPRITES; ++i) { - auto color = param.intro.shadow_color; + auto shadow_color = param.intro.shadow_color; auto sprite = std::make_unique(shadow_texture); sprite->setWidth(SHADOW_SPRITE_WIDTH); sprite->setHeight(SHADOW_SPRITE_HEIGHT); sprite->setSpriteClip(0, 0, SHADOW_SPRITE_WIDTH, SHADOW_SPRITE_HEIGHT); - sprite->getTexture()->setAlpha(color.a); + sprite->getTexture()->setAlpha(shadow_color.a); shadow_sprites_.push_back(std::move(sprite)); } @@ -410,13 +410,13 @@ void Intro::initSprites() { void Intro::initTexts() { constexpr int TOTAL_TEXTS = 9; for (int i = 0; i < TOTAL_TEXTS; ++i) { - auto w = std::make_unique(Resource::get()->getText("04b_25_metal")); - w->setPosX(0); - w->setPosY(param.game.height - param.intro.text_distance_from_bottom); - w->setKerning(-2); - w->setEnabled(false); - w->setFinishedCounter(180); - texts_.push_back(std::move(w)); + auto writer = std::make_unique(Resource::get()->getText("04b_25_metal")); + writer->setPosX(0); + writer->setPosY(param.game.height - param.intro.text_distance_from_bottom); + writer->setKerning(-2); + writer->setEnabled(false); + writer->setFinishedCounter(180); + texts_.push_back(std::move(writer)); } // Un dia qualsevol de l'any 2000