From 88e5303d284694ccf580ac043907e266e9b86549 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Sun, 29 Aug 2021 13:35:19 +0200 Subject: [PATCH] options menu completed --- media/gfx/game_bg.png | Bin 14708 -> 14724 bytes media/lang/ba_BA.txt | 44 ++++++++++++++++++++++++--- media/lang/en_UK.txt | 6 ++-- media/lang/es_ES.txt | 54 +++++++++++++++++++++++++++------ source/const.h | 2 +- source/director.cpp | 20 ++++++------ source/game.cpp | 39 +++++++++++++++--------- source/item.cpp | 6 ++-- source/title.cpp | 69 +++++++++++++++++++++++++----------------- 9 files changed, 167 insertions(+), 73 deletions(-) diff --git a/media/gfx/game_bg.png b/media/gfx/game_bg.png index f979410ec262627fc6e79301be3a94ed87918f2c..766b05df84f8d9cb98f3c9ecaa0e397adbe26d7b 100644 GIT binary patch delta 12424 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ξ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 O0!V{v`c;2B#r_`yqI(Dc diff --git a/media/lang/ba_BA.txt b/media/lang/ba_BA.txt index 7220071..59a3a01 100644 --- a/media/lang/ba_BA.txt +++ b/media/lang/ba_BA.txt @@ -47,7 +47,7 @@ PREM UNA TECLA PER A TORNAR ## 23 - TITULO PREM QUALSEVOL TECLA ## 24 - MENU SELECCION DE IDIOMA -ESPA^OL (ESPANYOL) +ESPA{OL (ESPANYOL) ## 25 - MENU SELECCION DE IDIOMA BALOONCIA ## 26 - MENU SELECCION DE IDIOMA @@ -105,12 +105,46 @@ FELICITATS!! ## 52 - MENU DEL TITULO 2 JUGADORS ## 53 MARCADOR -jugador 2 +jugador 1 ## 54 MARCADOR jugador 2 ## 55 MARCADOR -mult - +mult ## 56 MARCADOR -max. puntuacio - +max. puntuacio ## 57 MARCADOR -nivell \ No newline at end of file +nivell +## 58 - MENU DE OPCIONES +MODE DE VISUALITZACIO +## 59 - MENU DE OPCIONES +DIFICULTAT +## 60 - MENU DE OPCIONES +FILTRE +## 61 - MENU DE OPCIONES +SINC. VERTICAL +## 62 - MENU DE OPCIONES +CONTROLS DEL JUGADOR 1 +## 63 - MENU DE OPCIONES +CONTROLS DEL JUGADOR 2 +## 64 - MENU DE OPCIONES +TECLAT +## 65 - MENU DE OPCIONES +MANDO +## 66 - MENU DE OPCIONES +FACIL +## 67 - MENU DE OPCIONES +NORMAL +## 68 - MENU DE OPCIONES +DIFICIL +## 69 - MENU DE OPCIONES +TECLAT +## 70 - MENU DE OPCIONES +MANDO +## 71 - MENU DE OPCIONES +LINEAL +## 72 - MENU DE OPCIONES +NEAREST +## 73 - MENU DE OPCIONES +ACTIVADA +## 74 - MENU DE OPCIONES +DESACTIVADA \ No newline at end of file diff --git a/media/lang/en_UK.txt b/media/lang/en_UK.txt index f5d1ee3..3e82bc8 100644 --- a/media/lang/en_UK.txt +++ b/media/lang/en_UK.txt @@ -47,7 +47,7 @@ PRESS ANY KEY TO RETURN ## 23 - TITULO PRESS ANY KEY ## 24 - MENU SELECCION DE IDIOMA -ESPA^OL (SPANISH) +ESPA{OL (SPANISH) ## 25 - MENU SELECCION DE IDIOMA BALOONCIA (VALENCIAN) ## 26 - MENU SELECCION DE IDIOMA @@ -141,9 +141,9 @@ KEYBOARD ## 70 - MENU DE OPCIONES GAME CONTROLLER ## 71 - MENU DE OPCIONES -BILINEAL -## 72 - MENU DE OPCIONES LINEAL +## 72 - MENU DE OPCIONES +NEAREST ## 73 - MENU DE OPCIONES ON ## 74 - MENU DE OPCIONES diff --git a/media/lang/es_ES.txt b/media/lang/es_ES.txt index 284a761..6b8a565 100644 --- a/media/lang/es_ES.txt +++ b/media/lang/es_ES.txt @@ -13,7 +13,7 @@ PANTALLA COMPLETA ## 6 - MENU DE OPCIONES PANTALLA COMPLETA FALSA ## 7 - MENU DE OPCIONES -TAMA^O DE VENTANA +TAMA{O DE VENTANA ## 8 - MENU DE OPCIONES IDIOMA ## 9 - MENU DE OPCIONES @@ -47,13 +47,13 @@ PULSA UNA TECLA PARA VOLVER ## 23 - TITULO PULSA CUALQUIER TECLA ## 24 - MENU SELECCION DE IDIOMA -ESPA^OL +ESPA{OL ## 25 - MENU SELECCION DE IDIOMA BALOONCIA (VALENCIANO) ## 26 - MENU SELECCION DE IDIOMA ENGLISH (INGLES) ## 27 - INTRO -Un dia cualquiera del a^o 2000 +Un dia cualquiera del a{o 2000 ## 28 - INTRO Todo esta tranquilo en la UPV ## 29 - INTRO @@ -93,7 +93,7 @@ REINTENTAR? ## 46 - MENU DE PAUSA CONTINUAR ## 47 - MENU DE PAUSA -SALIR DEL JUEGO +SALIR DEL JUEGO ## 48 - MENU GAME OVER SI ## 49 - MENU GAME OVER @@ -104,13 +104,47 @@ FELICIDADES!! 1 JUGADOR ## 52 - MENU DEL TITULO 2 JUGADORES -## 53 MARCADOR +## 53 - MARCADOR jugador 1 -## 54 MARCADOR +## 54 - MARCADOR jugador 2 -## 55 MARCADOR +## 55 - MARCADOR mult - -## 56 MARCADOR +## 56 - MARCADOR max. puntuacion - -## 57 MARCADOR -fase \ No newline at end of file +## 57 - MARCADOR +fase +## 58 - MENU DE OPCIONES +MODO DE VISUALIZACION +## 59 - MENU DE OPCIONES +DIFICULTAD +## 60 - MENU DE OPCIONES +FILTRO +## 61 - MENU DE OPCIONES +SINC. VERTICAL +## 62 - MENU DE OPCIONES +CONTROLES DEL JUGADOR 1 +## 63 - MENU DE OPCIONES +CONTROLES DEL JUGADOR 2 +## 64 - MENU DE OPCIONES +TECLADO +## 65 - MENU DE OPCIONES +MANDO +## 66 - MENU DE OPCIONES +FACIL +## 67 - MENU DE OPCIONES +NORMAL +## 68 - MENU DE OPCIONES +DIFICIL +## 69 - MENU DE OPCIONES +TECLADO +## 70 - MENU DE OPCIONES +MANDO +## 71 - MENU DE OPCIONES +LINEAL +## 72 - MENU DE OPCIONES +NEAREST +## 73 - MENU DE OPCIONES +ACTIVADA +## 74 - MENU DE OPCIONES +DESACTIVADA \ No newline at end of file diff --git a/source/const.h b/source/const.h index 39c7d44..14c5d23 100644 --- a/source/const.h +++ b/source/const.h @@ -352,7 +352,7 @@ const color_t shdwTxtColor = {0x43, 0x43, 0x4F}; #define DIFFICULTY_HARD 2 // Tipo de filtro -#define FILTER_BILINEAL 0 +#define FILTER_NEAREST 0 #define FILTER_LINEAL 1 #endif \ No newline at end of file diff --git a/source/director.cpp b/source/director.cpp index 664c890..35eb4e1 100644 --- a/source/director.cpp +++ b/source/director.cpp @@ -2,6 +2,7 @@ #include "utils.h" #include "director.h" #include +#include #ifdef __MIPSEL__ #include #include @@ -31,13 +32,10 @@ Director::Director(std::string path) mOptions->fullScreenMode = 0; mOptions->windowSize = 3; mOptions->language = en_UK; - mOptions->fullScreenMode = 0; - mOptions->windowSize = 3; - mOptions->language = en_UK; - mOptions->difficulty = 0; + mOptions->difficulty = DIFFICULTY_NORMAL; mOptions->player1Input = INPUT_USE_KEYBOARD; mOptions->player2Input = INPUT_USE_GAMECONTROLLER; - mOptions->filter = 0; + mOptions->filter = FILTER_NEAREST; mOptions->vSync = true; } @@ -155,7 +153,7 @@ bool Director::initSDL() else { // Establece el filtro de la textura a nearest - if (!SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "0")) + if (!SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, std::to_string(mOptions->filter).c_str())) { printf("Warning: Nearest texture filtering not enabled!\n"); } @@ -169,8 +167,12 @@ bool Director::initSDL() } else { - // Crea un renderizador para la ventana con vsync - mRenderer = SDL_CreateRenderer(mWindow, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC); + // Crea un renderizador para la ventana. El vsync se activa en funcion de las opciones + if (mOptions->vSync) + mRenderer = SDL_CreateRenderer(mWindow, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC); + else + mRenderer = SDL_CreateRenderer(mWindow, -1, SDL_RENDERER_ACCELERATED); + if (mRenderer == NULL) { printf("Renderer could not be created!\nSDL Error: %s\n", SDL_GetError()); @@ -420,7 +422,7 @@ bool Director::loadConfigFile() mOptions->difficulty = DIFFICULTY_NORMAL; mOptions->player1Input = INPUT_USE_KEYBOARD; mOptions->player2Input = INPUT_USE_GAMECONTROLLER; - mOptions->filter = 0; + mOptions->filter = FILTER_NEAREST; mOptions->vSync = true; // Indicador de éxito en la carga diff --git a/source/game.cpp b/source/game.cpp index f9f18a1..b7ed2d8 100644 --- a/source/game.cpp +++ b/source/game.cpp @@ -1613,40 +1613,48 @@ void Game::renderScoreBoard() mSpritePowerMeter->setSpriteClip(296, 184, (int)percent, 8); mSpritePowerMeter->render(); */ - const int offset1 = 163; - const int offset2 = offset1 + 8; - const int offset3 = offset2 + 8; - //const int offset4 = offset3 + 8; + const int offset1 = 162; + const int offset2 = offset1 + 7; + const int offset3 = offset2 + 7; + const int offset4 = offset3 + 7; + + const int offsetLeft = PLAY_AREA_LEFT + 45; + const int offsetRight = PLAY_AREA_RIGHT - 45; + // PLAYER1 - SCORE - mTextScoreBoard->writeCentered(PLAY_AREA_LEFT + 30, offset1, mLang->getText(53)); - mTextScoreBoard->writeCentered(PLAY_AREA_LEFT + 30, offset2, updateScoreText(mPlayer[0]->getScore())); + mTextScoreBoard->writeCentered(offsetLeft, offset1, mLang->getText(53)); + mTextScoreBoard->writeCentered(offsetLeft, offset2, updateScoreText(mPlayer[0]->getScore())); // PLAYER1 - MULT - mTextScoreBoard->writeCentered(PLAY_AREA_LEFT + 30, offset3, mLang->getText(55) + std::to_string(mPlayer[0]->getScoreMultiplier()).substr(0, 3)); + mTextScoreBoard->writeCentered(offsetLeft, offset3, mLang->getText(55)); + mTextScoreBoard->writeCentered(offsetLeft, offset4, std::to_string(mPlayer[0]->getScoreMultiplier()).substr(0, 3)); if (mNumPlayers == 2) { // PLAYER2 - SCORE - mTextScoreBoard->writeCentered(PLAY_AREA_RIGHT - 30, offset1, mLang->getText(54)); - mTextScoreBoard->writeCentered(PLAY_AREA_RIGHT - 30, offset2, updateScoreText(mPlayer[1]->getScore())); + mTextScoreBoard->writeCentered(offsetRight, offset1, mLang->getText(54)); + mTextScoreBoard->writeCentered(offsetRight, offset2, updateScoreText(mPlayer[1]->getScore())); // PLAYER2 - MULT - mTextScoreBoard->writeCentered(PLAY_AREA_RIGHT - 30, offset3, mLang->getText(55) + std::to_string(mPlayer[1]->getScoreMultiplier()).substr(0, 3)); + mTextScoreBoard->writeCentered(offsetRight, offset3, mLang->getText(55)); + mTextScoreBoard->writeCentered(offsetRight, offset4, std::to_string(mPlayer[1]->getScoreMultiplier()).substr(0, 3)); } else { // PLAYER2 - SCORE - mTextScoreBoard->writeCentered(PLAY_AREA_RIGHT - 30, offset1, mLang->getText(54)); - mTextScoreBoard->writeCentered(PLAY_AREA_RIGHT - 30, offset2, "0000000"); + mTextScoreBoard->writeCentered(offsetRight, offset1, mLang->getText(54)); + mTextScoreBoard->writeCentered(offsetRight, offset2, "0000000"); // PLAYER2 - MULT - mTextScoreBoard->writeCentered(PLAY_AREA_RIGHT - 30, offset3, mLang->getText(55) + "1.0"); + mTextScoreBoard->writeCentered(offsetRight, offset3, mLang->getText(55)); + mTextScoreBoard->writeCentered(offsetRight, offset4, "1.0"); } // STAGE - mTextScoreBoard->writeCentered(PLAY_AREA_CENTER_X, offset1 - 1, mLang->getText(57) + std::to_string(mStage[mCurrentStage].number)); + mTextScoreBoard->writeCentered(PLAY_AREA_CENTER_X, offset1, mLang->getText(57) + std::to_string(mStage[mCurrentStage].number)); // POWER + mSpritePowerMeter->setPosY(offset2); mSpritePowerMeter->setSpriteClip(256, 184, 40, 8); mSpritePowerMeter->render(); const float percent = (mStage[mCurrentStage].currentPower * 40.0f) / mStage[mCurrentStage].powerToComplete; @@ -1654,7 +1662,8 @@ void Game::renderScoreBoard() mSpritePowerMeter->render(); // HI-SCORE - mTextScoreBoard->writeCentered(PLAY_AREA_CENTER_X, offset3 + 1, mLang->getText(56) + updateScoreText(mHiScore)); + mTextScoreBoard->writeCentered(PLAY_AREA_CENTER_X, offset3, mLang->getText(56)); + mTextScoreBoard->writeCentered(PLAY_AREA_CENTER_X, offset4, updateScoreText(mHiScore)); } // Actualiza las variables del jugador diff --git a/source/item.cpp b/source/item.cpp index ef639f0..141cbdf 100644 --- a/source/item.cpp +++ b/source/item.cpp @@ -286,8 +286,10 @@ circle_t &Item::getCollider() // Alinea el circulo de colisión con la posición del objeto void Item::shiftColliders() { - mCollider.x = int(mPosX + mCollider.r); - mCollider.y = int(mPosY + mCollider.r); + //mCollider.x = int(mPosX + mCollider.r); + //mCollider.y = int(mPosY + mCollider.r); + mCollider.x = int(mPosX + (mWidth / 2)); + mCollider.y = int(mPosY + (mHeight / 2)); } // Informa si el objeto ha colisionado con el suelo diff --git a/source/title.cpp b/source/title.cpp index cd3207f..feb6151 100644 --- a/source/title.cpp +++ b/source/title.cpp @@ -266,17 +266,18 @@ void Title::init(bool demo, Uint8 subsection) mMenu.options->addItem(mLang->getText(59), 0, 5); // (0) DIFFICULTY mMenu.options->addItem(mLang->getText(62), 0, 0, true, false, true); // (1) PLAYER 1 CONTROLS mMenu.options->addItem(mLang->getText(69), 0, 0, false, false); // (2) KEYBOARD - mMenu.options->addItem(mLang->getText(63), 0, 0, true, false, true); // (3) PLAYER 2 CONTROLS + mMenu.options->addItem(mLang->getText(63), 0, 0, true, false, true); // (3) PLAYER 2 CONTROLS mMenu.options->addItem(mLang->getText(70), 0, 5, false, false); // (4) GAME CONTROLLER mMenu.options->addItem(mLang->getText(8), 0, 5); // (5) LANGUAGE - mMenu.options->addItem(mLang->getText(58), 0, 0, true, false, true); // (6) DISPLAY MODE + mMenu.options->addItem(mLang->getText(58), 0, 0, true, false, true); // (6) DISPLAY MODE mMenu.options->addItem(mLang->getText(4), 0, 0, false, false); // (7) WINDOWED mMenu.options->addItem(mLang->getText(7)); // (8) WINDOW SIZE mMenu.options->addItem(mLang->getText(60)); // (9) FILTER mMenu.options->addItem(mLang->getText(61), 0, 5); // (10) VSYNC - mMenu.options->addItem(mLang->getText(9)); // (11) ACCEPT - mMenu.options->addItem(mLang->getText(10)); // (12) CANCEL - mMenu.options->setDefaultActionWhenCancel(9); + mMenu.options->addItem(mLang->getText(2), 0, 5); // (11) HOW TO PLAY + mMenu.options->addItem(mLang->getText(9)); // (12) ACCEPT + mMenu.options->addItem(mLang->getText(10)); // (13) CANCEL + mMenu.options->setDefaultActionWhenCancel(13); mMenu.options->setBackgroundColor(0x30, 0x30, 0x40, 192); mMenu.options->setSelectorColor(0xe5, 0x1c, 0x23, 255); mMenu.options->setSelectorTextColor(0xFF, 0xF1, 0x76); @@ -353,8 +354,12 @@ void Title::updateMenuLabels() break; } - i = 2; + i++; // PLAYER 1 CONTROLS + mMenu.options->setItemCaption(i, mLang->getText(62)); + + i++; + // PLAYER 1 CONTROLS - OPTIONS switch (mOptions->player1Input) { case INPUT_USE_KEYBOARD: @@ -370,8 +375,12 @@ void Title::updateMenuLabels() break; } - i = 4; + i++; // PLAYER 2 CONTROLS + mMenu.options->setItemCaption(i, mLang->getText(63)); + + i++; + // PLAYER 2 CONTROLS - OPTIONS switch (mOptions->player2Input) { case INPUT_USE_KEYBOARD: @@ -408,8 +417,12 @@ void Title::updateMenuLabels() break; } - i = 7; + i++; // DISPLAY MODE + mMenu.options->setItemCaption(i, mLang->getText(58)); + + i++; + // DISPLAY MODE - OPTIONS switch (mOptions->fullScreenMode) { case 0: @@ -435,7 +448,7 @@ void Title::updateMenuLabels() i++; // FILTER - if (mOptions->filter == FILTER_BILINEAL) + if (mOptions->filter == FILTER_LINEAL) mMenu.options->setItemCaption(i, mLang->getText(60) + ": " + mLang->getText(71)); // BILINEAL else mMenu.options->setItemCaption(i, mLang->getText(60) + ": " + mLang->getText(72)); // LINEAL @@ -447,6 +460,10 @@ void Title::updateMenuLabels() else mMenu.options->setItemCaption(i, mLang->getText(61) + ": " + mLang->getText(74)); // OFF + i++; + // HOW TO PLAY + mMenu.options->setItemCaption(i, mLang->getText(2)); + i++; // ACCEPT mMenu.options->setItemCaption(i, mLang->getText(9)); // ACCEPT @@ -462,8 +479,7 @@ void Title::updateMenuLabels() mMenu.title->setItemCaption(0, mLang->getText(51)); // 1 PLAYER mMenu.title->setItemCaption(1, mLang->getText(52)); // 2 PLAYERS mMenu.title->setItemCaption(2, mLang->getText(1)); // OPTIONS - //mMenu.title->setItemCaption(3, mLang->getText(2)); // HOW TO PLAY - mMenu.title->setItemCaption(3, mLang->getText(3)); // QUIT + mMenu.title->setItemCaption(3, mLang->getText(3)); // QUIT mMenu.title->centerMenuOnX(SCREEN_CENTER_X); mMenu.title->centerMenuElementsOnX(); @@ -707,13 +723,7 @@ section_t Title::run(Uint8 subsection) case 2: // OPTIONS mMenu.active = mMenu.options; mOptionsPrevious = *mOptions; - //mOptions->fullScreenModePrevious = mOptions->fullScreenMode; - //mOptions->windowSizePrevious = mOptions->windowSize; - //mOptions->languagePrevious = mOptions->language; break; - //case 3: // HOW TO PLAY - // runInstructions(INSTRUCTIONS_MODE_MANUAL); - // break; case 3: // QUIT mPostFade = 2; mFade->activateFade(); @@ -773,10 +783,10 @@ section_t Title::run(Uint8 subsection) updateMenuLabels(); break; case 9: // FILTER - if (mOptions->filter == FILTER_BILINEAL) - mOptions->filter = FILTER_LINEAL; + if (mOptions->filter == FILTER_LINEAL) + mOptions->filter = FILTER_NEAREST; else - mOptions->filter = FILTER_BILINEAL; + mOptions->filter = FILTER_LINEAL; updateMenuLabels(); break; case 10: // VSYNC @@ -786,16 +796,16 @@ section_t Title::run(Uint8 subsection) mOptions->vSync = true; updateMenuLabels(); break; - case 11: // ACCEPT + case 11: // HOW TO PLAY + runInstructions(INSTRUCTIONS_MODE_MANUAL); + break; + case 12: // ACCEPT applyOptions(); mMenu.active->reset(); mMenu.active = mMenu.title; break; - case 12: // CANCEL + case 13: // CANCEL mOptions = &mOptionsPrevious; - //mOptions->fullScreenMode = mOptions->fullScreenModePrevious; - //mOptions->windowSize = mOptions->windowSizePrevious; - //mOptions->language = mOptions->languagePrevious; updateMenuLabels(); mMenu.active->reset(); mMenu.active = mMenu.title; @@ -825,11 +835,17 @@ section_t Title::run(Uint8 subsection) // Dibuja los objetos if (mMenu.active->getName() != "OPTIONS") { + // Bitmaps con el logo/titulo del juego mCoffeeBitmap->render(); mCrisisBitmap->render(); + + // Texto con el copyright y versión + mText2->writeDX(TXT_CENTER | TXT_SHADOW, SCREEN_CENTER_X, SCREEN_HEIGHT - (BLOCK * 2), TEXT_COPYRIGHT, 1, noColor, 1, shdwTxtColor); } + if (mMenuVisible == true) mMenu.active->render(); + mDustBitmapR->animate(0); mDustBitmapL->animate(0); mDustBitmapR->render(); @@ -839,9 +855,6 @@ section_t Title::run(Uint8 subsection) if ((mCounter % 50 > 14) && (mMenuVisible == false)) mText->writeDX(TXT_CENTER | TXT_SHADOW, SCREEN_CENTER_X, PLAY_AREA_THIRD_QUARTER_Y + BLOCK, mLang->getText(23), 1, noColor, 1, shdwTxtColor); - // Texto con el copyright y versión - mText2->writeDX(TXT_CENTER | TXT_SHADOW, SCREEN_CENTER_X, SCREEN_HEIGHT - (BLOCK * 2), TEXT_COPYRIGHT, 1, noColor, 1, shdwTxtColor); - // Fade mFade->render();