From 958a4d1d9992d720a75390a6fbecf47d6fe670d4 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Sat, 3 Aug 2024 13:55:16 +0200 Subject: [PATCH] afegides notificacions per als inputs externs al joc --- .../notify.png | Bin data/sound/menu_move.wav | Bin 55118 -> 0 bytes data/sound/menu_select.wav | Bin 43214 -> 0 bytes source/common/notify.cpp | 63 +++++++++++------- source/common/notify.h | 7 ++ source/common/screen.cpp | 14 +++- source/director.cpp | 4 +- source/game.cpp | 6 +- source/hiscore_table.cpp | 3 + source/instructions.cpp | 5 +- source/intro.cpp | 3 + source/logo.cpp | 3 + source/title.cpp | 3 + 13 files changed, 78 insertions(+), 33 deletions(-) rename data/{notifications => notification}/notify.png (100%) delete mode 100644 data/sound/menu_move.wav delete mode 100644 data/sound/menu_select.wav diff --git a/data/notifications/notify.png b/data/notification/notify.png similarity index 100% rename from data/notifications/notify.png rename to data/notification/notify.png diff --git a/data/sound/menu_move.wav b/data/sound/menu_move.wav deleted file mode 100644 index 65031843ae3e60da9f292f0d3ecacde506a053af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55118 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 br{!9YKhNL3%yc>3_kS(_|8o3)Q`i3jlwm>9 diff --git a/data/sound/menu_select.wav b/data/sound/menu_select.wav deleted file mode 100644 index 74754992ee2d706ea92ab20d2f4e7cc098ddc894..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43214 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 diff --git a/source/common/notify.cpp b/source/common/notify.cpp index 28e63ad..354d47c 100644 --- a/source/common/notify.cpp +++ b/source/common/notify.cpp @@ -10,7 +10,7 @@ Notify::Notify(SDL_Renderer *renderer, std::string iconFile, std::string bitmapF this->renderer = renderer; this->options = options; bgColor = options->notification.color; - waitTime = 300; + waitTime = 100; // Crea objetos iconTexture = new Texture(renderer, iconFile); @@ -151,17 +151,20 @@ void Notify::showText(std::string text1, std::string text2, int icon) { // Inicializa variables const int iconSize = 16; - const int padding = text->getCharacterSize(); - const int iconSpace = icon >= 0 ? iconSize + padding : 0; + const int paddingOut = 1; + const int paddingIn = text->getCharacterSize() / 2; + const int iconSpace = icon >= 0 ? iconSize + paddingIn : 0; const std::string txt = text1.length() > text2.length() ? text1 : text2; - const int width = text->lenght(txt) + (padding * 2) + iconSpace; - const int height = (text->getCharacterSize() * 2) + (padding * 2); + const int width = text->lenght(txt) + (paddingIn * 2) + iconSpace; + const int numTexts = text2 == "" ? 1 : 2; + const int height = (text->getCharacterSize() * numTexts) + (paddingIn * 2); + const notification_shape_t shape = notification_shape_squared; // Posición horizontal int despH = 0; if (options->notification.posH == pos_left) { - despH = padding; + despH = paddingOut; } else if (options->notification.posH == pos_middle) { @@ -169,21 +172,21 @@ void Notify::showText(std::string text1, std::string text2, int icon) } else { - despH = options->video.gameWidth - width - padding; + despH = options->video.gameWidth - width - paddingOut; } // Posición vertical int despV = 0; if (options->notification.posV == pos_top) { - despV = padding; + despV = paddingOut; } else { - despV = options->video.gameHeight - height - padding; + despV = options->video.gameHeight - height - paddingOut; } - const int travelDist = height + padding; + const int travelDist = height + paddingOut; // Offset int offset = 0; @@ -206,6 +209,7 @@ void Notify::showText(std::string text1, std::string text2, int icon) n.state = ns_rising; n.text1 = text1; n.text2 = text2; + n.shape = shape; if (options->notification.posV == pos_top) { n.rect = {despH, offset - travelDist, width, height}; @@ -226,23 +230,32 @@ void Notify::showText(std::string text1, std::string text2, int icon) // Dibuja el fondo de la notificación SDL_SetRenderDrawColor(renderer, bgColor.r, bgColor.g, bgColor.b, 255); SDL_Rect rect; - rect = {4, 0, width - (4 * 2), height}; - SDL_RenderFillRect(renderer, &rect); + if (shape == notification_shape_rounded) + { + rect = {4, 0, width - (4 * 2), height}; + SDL_RenderFillRect(renderer, &rect); - rect = {4 / 2, 1, width - 4, height - 2}; - SDL_RenderFillRect(renderer, &rect); + rect = {4 / 2, 1, width - 4, height - 2}; + SDL_RenderFillRect(renderer, &rect); - rect = {1, 4 / 2, width - 2, height - 4}; - SDL_RenderFillRect(renderer, &rect); + rect = {1, 4 / 2, width - 2, height - 4}; + SDL_RenderFillRect(renderer, &rect); + + rect = {0, 4, width, height - (4 * 2)}; + SDL_RenderFillRect(renderer, &rect); + } + + else if (shape == notification_shape_squared) + { + SDL_RenderClear(renderer); + } - rect = {0, 4, width, height - (4 * 2)}; - SDL_RenderFillRect(renderer, &rect); // Dibuja el icono de la notificación - if (icon >= 0) + if (icon >= 0 && numTexts == 2) { Sprite *sp = new Sprite({0, 0, iconSize, iconSize}, iconTexture); - sp->setPos({padding, padding, iconSize, iconSize}); + sp->setPos({paddingIn, paddingIn, iconSize, iconSize}); sp->setSpriteClip({iconSize * (icon % 10), iconSize * (icon / 10), iconSize, iconSize}); sp->render(); delete sp; @@ -250,21 +263,21 @@ void Notify::showText(std::string text1, std::string text2, int icon) // Escribe el texto de la notificación color_t color = {255, 255, 255}; - if (text2 != "") + if (numTexts == 2) { // Dos lineas de texto - text->writeColored(padding + iconSpace, padding, text1, color); - text->writeColored(padding + iconSpace, padding + text->getCharacterSize() + 1, text2, color); + text->writeColored(paddingIn + iconSpace, paddingIn, text1, color); + text->writeColored(paddingIn + iconSpace, paddingIn + text->getCharacterSize() + 1, text2, color); } else { // Una linea de texto - text->writeColored(padding + iconSpace, (height / 2) - (text->getCharacterSize() / 2), text1, color); + text->writeColored(paddingIn + iconSpace, paddingIn, text1, color); } // Deja de dibujar en la textura SDL_SetRenderTarget(renderer, nullptr); // Crea el sprite de la notificación - n.sprite = new Sprite(n.rect, n.texture, renderer); + n.sprite = new Sprite(n.rect, n.texture); // Deja la notificación invisible n.texture->setAlpha(0); diff --git a/source/common/notify.h b/source/common/notify.h index d73a0b6..8f7fc71 100644 --- a/source/common/notify.h +++ b/source/common/notify.h @@ -34,6 +34,12 @@ private: bottomRight }; + enum notification_shape_t + { + notification_shape_rounded, + notification_shape_squared, + }; + struct notification_t { std::string text1; @@ -46,6 +52,7 @@ private: SDL_Rect rect; int y; int travelDist; + notification_shape_t shape; }; // Objetos y punteros diff --git a/source/common/screen.cpp b/source/common/screen.cpp index 32efdb3..a0113ce 100644 --- a/source/common/screen.cpp +++ b/source/common/screen.cpp @@ -37,6 +37,9 @@ Screen::Screen(SDL_Window *window, SDL_Renderer *renderer, Asset *asset, Input * shakeEffect.origin = 0; attenuateEffect = false; + // Crea los objetos + notify = new Notify(renderer, asset->get("notify.png"), asset->get("8bithud.png"), asset->get("8bithud.txt"), asset->get("notify.wav"), options); + // Define el color del borde para el modo de pantalla completa borderColor = {0x00, 0x00, 0x00}; @@ -53,6 +56,7 @@ Screen::Screen(SDL_Window *window, SDL_Renderer *renderer, Asset *asset, Input * // Destructor Screen::~Screen() { + delete notify; SDL_DestroyTexture(gameCanvas); } @@ -232,7 +236,7 @@ void Screen::setVideoMode(int videoMode) // Camibia entre pantalla completa y ventana void Screen::switchVideoMode() { - options->video.mode = (options->video.mode == VIDEO_MODE_WINDOW) ? VIDEO_MODE_FULLSCREEN : VIDEO_MODE_WINDOW; + options->video.mode = options->video.mode == VIDEO_MODE_WINDOW ? VIDEO_MODE_FULLSCREEN : VIDEO_MODE_WINDOW; setVideoMode(options->video.mode); } @@ -309,21 +313,29 @@ void Screen::checkInput() if (input->checkInput(input_window_fullscreen, DO_NOT_ALLOW_REPEAT)) { switchVideoMode(); + const std::string mode = options->video.mode == VIDEO_MODE_WINDOW ? "Window" : "Fullscreen"; + showNotification(mode + " mode"); } else if (input->checkInput(input_window_dec_size, DO_NOT_ALLOW_REPEAT)) { decWindowSize(); + const std::string size = std::to_string(options->video.window.size); + showNotification("Window size x" + size); } else if (input->checkInput(input_window_inc_size, DO_NOT_ALLOW_REPEAT)) { incWindowSize(); + const std::string size = std::to_string(options->video.window.size); + showNotification("Window size x" + size); } else if (input->checkInput(input_video_shaders, DO_NOT_ALLOW_REPEAT)) { switchShaders(); + const std::string value = options->video.shaders ? "on" : "off"; + showNotification("Shaders " + value); } } diff --git a/source/director.cpp b/source/director.cpp index 2446e7d..a3d691a 100644 --- a/source/director.cpp +++ b/source/director.cpp @@ -290,7 +290,7 @@ bool Director::setFileList() asset->add(prefix + "/data/config/gamecontrollerdb.txt", t_data); // Notificaciones - asset->add(prefix + "/data/notifications/notify.png", t_bitmap); + asset->add(prefix + "/data/notification/notify.png", t_bitmap); // Musicas asset->add(prefix + "/data/music/intro.ogg", t_music); @@ -308,8 +308,6 @@ bool Director::setFileList() asset->add(prefix + "/data/sound/hiscore.wav", t_sound); asset->add(prefix + "/data/sound/itemdrop.wav", t_sound); asset->add(prefix + "/data/sound/itempickup.wav", t_sound); - asset->add(prefix + "/data/sound/menu_move.wav", t_sound); - asset->add(prefix + "/data/sound/menu_select.wav", t_sound); asset->add(prefix + "/data/sound/player_collision.wav", t_sound); asset->add(prefix + "/data/sound/stage_change.wav", t_sound); asset->add(prefix + "/data/sound/title.wav", t_sound); diff --git a/source/game.cpp b/source/game.cpp index eb76c77..6cb377f 100644 --- a/source/game.cpp +++ b/source/game.cpp @@ -1899,9 +1899,6 @@ void Game::update() // Actualiza el contador de ticks ticks = SDL_GetTicks(); - if (counter == 0) - createPowerBall(); - // Actualiza el contador de juego counter++; @@ -2136,6 +2133,7 @@ void Game::checkInput() else if (input->checkInput(input_reset, DO_NOT_ALLOW_REPEAT)) { section->name = SECTION_PROG_LOGO; + screen->showNotification("Reset"); return; } @@ -2615,12 +2613,14 @@ bool Game::allPlayersAreDead() // Comprueba los eventos que hay en cola void Game::checkEvents() { +#ifdef DEBUG const Uint8 *keyStates = SDL_GetKeyboardState(nullptr); if (keyStates[SDL_SCANCODE_H] != 0) { createItemScoreSprite(param->gameWidth / 2, param->gameWidth / 2, n1000Sprite); } +#endif while (SDL_PollEvent(eventHandler) != 0) { diff --git a/source/hiscore_table.cpp b/source/hiscore_table.cpp index 9526d70..877ec82 100644 --- a/source/hiscore_table.cpp +++ b/source/hiscore_table.cpp @@ -68,6 +68,9 @@ void HiScoreTable::update() // Actualiza el contador de ticks ticks = SDL_GetTicks(); + // Actualiza el objeto screen + screen->update(); + // Actualiza el fondo background->update(); diff --git a/source/instructions.cpp b/source/instructions.cpp index 9f24e31..f326636 100644 --- a/source/instructions.cpp +++ b/source/instructions.cpp @@ -99,7 +99,7 @@ void Instructions::iniSprites() for (int i = 0; i < (int)itemTextures.size(); ++i) { Sprite *sprite = new Sprite(0, 0, param->itemSize, param->itemSize, itemTextures[i]); - sprite->setPos({spritePos.x, spritePos.y + ((param->itemSize + itemSpace) * i)}); + sprite->setPos((SDL_Point){spritePos.x, spritePos.y + ((param->itemSize + itemSpace) * i)}); sprites.push_back(sprite); } } @@ -229,6 +229,9 @@ void Instructions::update() // Actualiza el contador de ticks ticks = SDL_GetTicks(); + // Actualiza el objeto screen + screen->update(); + // Incrementa el contador counter++; diff --git a/source/intro.cpp b/source/intro.cpp index cc3d959..434a92d 100644 --- a/source/intro.cpp +++ b/source/intro.cpp @@ -375,6 +375,9 @@ void Intro::update() // Actualiza el contador de ticks ticks = SDL_GetTicks(); + // Actualiza el objeto screen + screen->update(); + // Actualiza los objetos for (auto bitmap : bitmaps) { diff --git a/source/logo.cpp b/source/logo.cpp index 5ea6633..945c6f6 100644 --- a/source/logo.cpp +++ b/source/logo.cpp @@ -244,6 +244,9 @@ void Logo::update() // Actualiza el contador de ticks ticks = SDL_GetTicks(); + // Actualiza el objeto screen + screen->update(); + // Comprueba las entradas checkInput(); diff --git a/source/title.cpp b/source/title.cpp index 917e821..3ca17a4 100644 --- a/source/title.cpp +++ b/source/title.cpp @@ -81,6 +81,9 @@ void Title::update() // Actualiza el contador de ticks ticks = SDL_GetTicks(); + // Actualiza el objeto screen + screen->update(); + // Actualiza el objeto 'defineButtons' defineButtons->update();