diff --git a/media/lang/en_UK.txt b/media/lang/en_UK.txt index 9e828bf..f5d1ee3 100644 --- a/media/lang/en_UK.txt +++ b/media/lang/en_UK.txt @@ -104,13 +104,47 @@ NICE!! 1 PLAYER ## 52 - MENU DEL TITULO 2 PLAYERS -## 53 MARCADOR +## 53 - MARCADOR player 1 -## 54 MARCADOR +## 54 - MARCADOR player 2 -## 55 MARCADOR +## 55 - MARCADOR mult - -## 56 MARCADOR +## 56 - MARCADOR high score - -## 57 MARCADOR -stage \ No newline at end of file +## 57 - MARCADOR +stage +## 58 - MENU DE OPCIONES +DISPLAY MODE +## 59 - MENU DE OPCIONES +DIFFICULTY +## 60 - MENU DE OPCIONES +FILTER +## 61 - MENU DE OPCIONES +VSYNC +## 62 - MENU DE OPCIONES +PLAYER 1 CONTROLS +## 63 - MENU DE OPCIONES +PLAYER 2 CONTROLS +## 64 - MENU DE OPCIONES +KEYBOARD +## 65 - MENU DE OPCIONES +GAME CONTROLLER +## 66 - MENU DE OPCIONES +EASY +## 67 - MENU DE OPCIONES +NORMAL +## 68 - MENU DE OPCIONES +HARD +## 69 - MENU DE OPCIONES +KEYBOARD +## 70 - MENU DE OPCIONES +GAME CONTROLLER +## 71 - MENU DE OPCIONES +BILINEAL +## 72 - MENU DE OPCIONES +LINEAL +## 73 - MENU DE OPCIONES +ON +## 74 - MENU DE OPCIONES +OFF \ No newline at end of file diff --git a/source/const.h b/source/const.h index 33799a5..28d22d7 100644 --- a/source/const.h +++ b/source/const.h @@ -351,4 +351,8 @@ const color_t shdwTxtColor = {0x43, 0x43, 0x4F}; #define DIFFICULTY_NORMAL 1 #define DIFFICULTY_HARD 2 +// Tipo de filtro +#define FILTER_BILINEAL 0 +#define FILTER_LINEAL 1 + #endif \ No newline at end of file diff --git a/source/game.cpp b/source/game.cpp index d04f9ad..f9f18a1 100644 --- a/source/game.cpp +++ b/source/game.cpp @@ -386,8 +386,8 @@ void Game::init() mMenuPause->setBackgroundColor(0x29, 0x39, 0x41, 240); mMenuPause->setSelectorColor(0xFF, 0x7A, 0x00, 255); mMenuPause->setSelectorTextColor(0xFF, 0xFF, 0xFF); - mMenuPause->centerMenu(SCREEN_CENTER_X); - mMenuPause->centerMenuElements(); + mMenuPause->centerMenuOnX(SCREEN_CENTER_X); + mMenuPause->centerMenuElementsOnX(); // Inicializa el objeto con el menu de la pantalla de game over mMenuGameOver->init("GAME OVER", 0, PLAY_AREA_CENTER_Y + BLOCK * 4, MENU_BACKGROUND_TRANSPARENT); @@ -400,8 +400,8 @@ void Game::init() mMenuGameOver->setSelectorTextColor(0xFF, 0xFF, 0xFF); mMenuGameOver->setSelectorTextColor(0xFF, 0xF1, 0x76); mMenuGameOver->setSelectorTextColor(0xFF, 0x7A, 0x00); - mMenuGameOver->centerMenu(SCREEN_CENTER_X); - mMenuGameOver->centerMenuElements(); + mMenuGameOver->centerMenuOnX(SCREEN_CENTER_X); + mMenuGameOver->centerMenuElementsOnX(); // Sprites mClouds1a->init(0, 0, 256, 52, -0.4f, 0.0f, 0.0f, 0.0f, mTextureGameBG, mRenderer); diff --git a/source/menu.cpp b/source/menu.cpp index fb825e2..be18901 100644 --- a/source/menu.cpp +++ b/source/menu.cpp @@ -47,9 +47,11 @@ void Menu::init(std::string name, int x, int y, int backgroundType) mSelector.b = 0; mSelector.a = 255; mBackgroundType = backgroundType; - mIsCentered = false; - mAreElementsCentered = false; - mCenter = x + ((SCREEN_WIDTH - x) / 2); + mIsCenteredOnX = false; + mIsCenteredOnY = false; + mAreElementsCenteredOnX = false; + mCenterX = x + ((SCREEN_WIDTH - x) / 2); + mCenterY = y + ((SCREEN_HEIGHT - y) / 2); mWidestItem = 0; // Selector @@ -60,15 +62,6 @@ void Menu::init(std::string name, int x, int y, int backgroundType) mSelector.despY = 0; mSelector.moving = false; - // Sprite con los graficos del selector - //mSelectorSprite.setWidth(8); - //mSelectorSprite.setHeight(8); - //mSelectorSprite.setPosX(0); - //mSelectorSprite.setPosY(0); - //mSelectorSprite.setTexture(texture); - //mSelectorSprite.setRenderer(renderer); - //mSelectorSprite.setSpriteClip(0, 0, mSelectorSprite.getWidth(), mSelectorSprite.getHeight()); - // Elementos del menu for (int i = 0; i < 10; i++) { @@ -80,9 +73,6 @@ void Menu::init(std::string name, int x, int y, int backgroundType) mItem[i].hPaddingUp = 0; mItem[i].hPaddingDown = 0; } - - // Mueve el grafico del selector al elemento seleccionado - //moveSelectorSprite(mSelector.index); } // Carga los recursos necesarios para la sección 'Title' @@ -113,12 +103,6 @@ Uint8 Menu::getItemSelected() return temp; } -// Mueve el grafico del selector al elemento seleccionado -/*void Menu::moveSelectorSprite(int pos) -{ - mSelector.rect.y = mItem[pos].y - 1; -}*/ - // Actualiza la posicion y el estado del selector void Menu::updateSelector() { @@ -194,7 +178,6 @@ void Menu::reset() { mItemSelected = MENU_NO_OPTION; mSelector.index = 0; - //moveSelectorSprite(mSelector.index); mSelector.origin = mSelector.target = mSelector.y = mItem[0].y; mSelector.moving = false; } @@ -209,10 +192,12 @@ void Menu::deselectItem() void Menu::reorganize() { setRectSize(); - if (mIsCentered) - centerMenu(mCenter); - if (mAreElementsCentered) - centerMenuElements(); + if (mIsCenteredOnX) + centerMenuOnX(mCenterX); + if (mIsCenteredOnY) + centerMenuOnY(mCenterY); + if (mAreElementsCenteredOnX) + centerMenuElementsOnX(); } // Deja el menu apuntando al siguiente elemento @@ -278,9 +263,6 @@ void Menu::render() SDL_RenderDrawRect(mRenderer, &mRectBG.rect); } - // Renderiza el sprite del selector - //mSelectorSprite.render(); - // Renderitza el text for (int i = 0; i < mTotalItems; i++) { @@ -299,30 +281,13 @@ void Menu::render() // Establece el rectangulo de fondo del menu y el selector void Menu::setRectSize() { - Uint8 i = 0; - mRectBG.rect.w = 0; - mRectBG.rect.h = 0; - mSelector.rect.w = 0; - mSelector.rect.h = 0; + findHeight(); + findWidth(); + mRectBG.rect.w = mWidth; + mRectBG.rect.h = mHeight; - // Obtenemos la anchura del item mas ancho y la altura de la suma de alturas de los items - for (i = 0; i < mTotalItems; i++) - { - if (mItem[i].w > mRectBG.rect.w) - { - mRectBG.rect.w = mItem[i].w; - } - mRectBG.rect.h += mItem[i].h + mItem[i].hPaddingDown; - } - - // La anchura de la cadena más larga, mas un caracter, mas la anchura del sprite del selector - mRectBG.rect.w += (mText->getCharacterWidth() * 1); // + mSelectorSprite.getWidth(); - - // La altura de la suma de los items mas un caracter y menos un pixel (porque el texto en realidad es de 7 pixeles) - mRectBG.rect.h += (mText->getCharacterWidth() * 1) - 1; - - // La posición X es la del menú menos la anchura del sprite del selector y menos medio caracter - mRectBG.rect.x = mPosX - (mText->getCharacterWidth() / 2); // - mSelectorSprite.getWidth(); + // La posición X es la del menú menos medio caracter + mRectBG.rect.x = mPosX - (mText->getCharacterWidth() / 2); // La posición Y es la del menu menos la altura de medio caracter i el padding mRectBG.rect.y = mPosY - (mText->getCharacterWidth() / 2) - mVerticalPadding; @@ -365,11 +330,11 @@ void Menu::setSelectorTextColor(int r, int g, int b) mSelector.itemB = b; } -// Centra el menu respecto un punto -void Menu::centerMenu(int value) +// Centra el menu respecto un punto en el eje X +void Menu::centerMenuOnX(int value) { - mIsCentered = true; - mCenter = value; + mIsCenteredOnX = true; + mCenterX = value; // Actualiza el rectangulo de fondo para recalcular las dimensiones setRectSize(); @@ -392,22 +357,41 @@ void Menu::centerMenu(int value) // Recoloca el selector mSelector.origin = mSelector.target = mSelector.y = mItem[mSelector.index].y; mSelector.moving = false; - //moveSelectorSprite(mSelector.index); } -// Centra los elementos del menu -void Menu::centerMenuElements() +// Centra el menu respecto un punto en el eje Y +void Menu::centerMenuOnY(int value) { - mAreElementsCentered = true; + mIsCenteredOnY = true; + mCenterY = value; + + // Actualiza el rectangulo de fondo para recalcular las dimensiones + setRectSize(); + + // Obten el alto del menu + findHeight(); + + // Establece la nueva posición centrada en funcion del elemento más ancho + mPosY = (value) - (mHeight / 2); + + // Reposiciona los elementos del menu + replaceElementsOnY(); + + // Recalcula el rectangulo de fondo + setRectSize(); + + // Recoloca el selector + mSelector.origin = mSelector.target = mSelector.y = mItem[mSelector.index].y; + mSelector.moving = false; +} + +// Centra los elementos del menu en el eje X +void Menu::centerMenuElementsOnX() +{ + mAreElementsCenteredOnX = true; for (int i = 0; i < mTotalItems; i++) - { - //mItem[i].x = (mCenter - ((mText->lenght(mItem[i].label, 0)) / 2)); - mItem[i].x = (mCenter - (mItem[i].w / 2)); - } - - // Mueve el grafico del selector al elemento seleccionado - //moveSelectorSprite(mSelector.index); + mItem[i].x = (mCenterX - (mItem[i].w / 2)); } // Añade un item al menu @@ -483,4 +467,42 @@ void Menu::checkInput() mItemSelected = mDefaultActionWhenCancel; JA_PlaySound(mSoundCancel); } +} + +// Calcula el ancho del menu +void Menu::findWidth() +{ + mWidth = 0; + + // Obtenemos la anchura del item mas ancho + for (int i = 0; i < mTotalItems; i++) + if (mItem[i].w > mWidth) + mWidth = mItem[i].w; + + // La anchura de la cadena más larga, mas un caracter + mWidth += (mText->getCharacterWidth() * 1); +} + +// Calcula el alto del menu +void Menu::findHeight() +{ + mHeight = 0; + + // Obtenemos la altura de la suma de alturas de los items + for (int i = 0; i < mTotalItems; i++) + mHeight += mItem[i].h + mItem[i].hPaddingDown; + + // La altura de la suma de los items mas un caracter y menos un pixel (porque el texto en realidad es de 7 pixeles) + mHeight += (mText->getCharacterWidth() * 1) - 1; +} + +// Recoloca los elementos del menu en el eje Y +void Menu::replaceElementsOnY() +{ + mItem[0].y = mPosY; + + for (int i = 1; i < mTotalItems; i++) + { + mItem[i].y = mItem[i - 1].y + mItem[i - 1].h + mItem[i - 1].hPaddingDown; + } } \ No newline at end of file diff --git a/source/menu.h b/source/menu.h index 965a307..7d254e1 100644 --- a/source/menu.h +++ b/source/menu.h @@ -16,18 +16,21 @@ private: int mPosY; // Posición en el eje Y de la primera letra del primer elemento std::string mName; // Nombre del menu Uint8 mTotalItems; // Numero total de items del menu - int mItemSelected; // Índice del item del menu que ha sido seleccionado + int mItemSelected; // Índice del item del menu que ha sido seleccionado Uint8 mDefaultActionWhenCancel; // Indice del item del menu que se selecciona cuando se cancela el menu Uint8 mVerticalPadding; // Espacio de separacion entre items Uint8 mBackgroundType; // Tipo de fondo para el menu - Sprite *mSelectorSprite; // Sprite con los graficos del selector Text *mText; // Texto para poder escribir los items del menu SDL_Renderer *mRenderer; // Puntero al renderizador de la ventana - std::string *mFileList; // Lista de ficheros - bool mIsCentered; // Variable para saber si el menu debe estar centrado respecto a un punto - int mCenter; // Centro del menu - bool mAreElementsCentered; // Variable para saber si los elementos van centrados + std::string *mFileList; // Lista de ficheros + bool mIsCenteredOnX; // Variable para saber si el menu debe estar centrado respecto a un punto en el eje X + bool mIsCenteredOnY; // Variable para saber si el menu debe estar centrado respecto a un punto en el eje Y + int mCenterX; // Centro del menu en el eje X + int mCenterY; // Centro del menu en el eje Y + bool mAreElementsCenteredOnX; // Variable para saber si los elementos van centrados en el eje X Uint16 mWidestItem; // Anchura del elemento más ancho + Uint16 mHeight; // Altura del menu + Uint16 mWidth; // Anchura del menu JA_Sound mSoundAccept; // Sonido al aceptar o elegir una opción del menu JA_Sound mSoundCancel; // Sonido al cancelar el menu JA_Sound mSoundMove; // Sonido al mover el selector @@ -93,9 +96,6 @@ private: // Deja el menu apuntando al elemento anterior bool decreaseSelectorIndex(); - // Mueve el grafico del selector al elemento seleccionado - //void moveSelectorSprite(int pos); - // Actualiza la posicion y el estado del selector void updateSelector(); @@ -111,6 +111,15 @@ private: // Gestiona la entrada de teclado y mando durante el menu void checkMenuInput(Menu *menu); + // Calcula el ancho del menu + void findWidth(); + + // Calcula el alto del menu + void findHeight(); + + // Recoloca los elementos del menu en el eje Y + void replaceElementsOnY(); + public: // Constructor Menu(SDL_Renderer *renderer, Text *text, Input *input, std::string *fileList); @@ -151,11 +160,14 @@ public: // Establece el color del texto del selector void setSelectorTextColor(int r, int g, int b); - // Centra el menu respecto a un punto - void centerMenu(int value); + // Centra el menu respecto a un punto en el eje X + void centerMenuOnX(int value); - // Centra los elementos del menu - void centerMenuElements(); + // Centra el menu respecto a un punto en el eje Y + void centerMenuOnY(int value); + + // Centra los elementos del menu en el eje X + void centerMenuElementsOnX(); // Añade un item al menu void addItem(std::string text, const Uint8 hPaddingUp = 0, const Uint8 hPaddingDown = 0); diff --git a/source/title.cpp b/source/title.cpp index bf6c090..136d188 100644 --- a/source/title.cpp +++ b/source/title.cpp @@ -259,34 +259,27 @@ void Title::init(bool demo, Uint8 subsection) mMenu.title->setSelectorColor(0xe5, 0x1c, 0x23, 0); //mMenu.title->setSelectorTextColor(0xFF, 0xF1, 0x76); mMenu.title->setSelectorTextColor(0xFF, 0xB4, 0x00); - mMenu.title->centerMenu(SCREEN_CENTER_X); - mMenu.title->centerMenuElements(); + mMenu.title->centerMenuOnX(SCREEN_CENTER_X); + mMenu.title->centerMenuElementsOnX(); - //mMenu.options->init("OPTIONS", 0, 14 * BLOCK, MENU_BACKGROUND_SOLID); - //mMenu.options->addItem(mLang->getText(4)); - //mMenu.options->addItem(mLang->getText(7)); - //mMenu.options->addItem(mLang->getText(8), 0, 5); - //mMenu.options->addItem(mLang->getText(9)); - //mMenu.options->addItem(mLang->getText(10)); - //mMenu.options->setDefaultActionWhenCancel(4); - //mMenu.options->setBackgroundColor(0x30, 0x30, 0x40, 192); - //mMenu.options->setSelectorColor(0xe5, 0x1c, 0x23, 255); - //mMenu.options->setSelectorTextColor(0xFF, 0xF1, 0x76); - //mMenu.options->centerMenu(SCREEN_CENTER_X); - //mMenu.options->centerMenuElements(); - - mMenu.options->init("OPTIONS", 0, BLOCK, MENU_BACKGROUND_SOLID); - mMenu.options->addItem(mLang->getText(4)); // WINDOW - mMenu.options->addItem(mLang->getText(7)); - mMenu.options->addItem(mLang->getText(8), 0, 5); - mMenu.options->addItem(mLang->getText(9)); // ACCEPT - mMenu.options->addItem(mLang->getText(10)); // CANCEL - mMenu.options->setDefaultActionWhenCancel(4); + mMenu.options->init("OPTIONS", 0, BLOCK, MENU_BACKGROUND_TRANSPARENT); + mMenu.options->addItem(mLang->getText(59), 0, 5); // DIFFICULTY + mMenu.options->addItem(mLang->getText(62)); // PLAYER 1 CONTROLS + mMenu.options->addItem(mLang->getText(63), 0, 5); // PLAYER 2 CONTROLS + mMenu.options->addItem(mLang->getText(8), 0, 5); // LANGUAGE + mMenu.options->addItem(mLang->getText(58)); // DISPLAY MODE + mMenu.options->addItem(mLang->getText(7)); // WINDOW SIZE + mMenu.options->addItem(mLang->getText(60)); // FILTER + mMenu.options->addItem(mLang->getText(61), 0, 5); //VSYNC + mMenu.options->addItem(mLang->getText(9)); // ACCEPT + mMenu.options->addItem(mLang->getText(10)); // CANCEL + mMenu.options->setDefaultActionWhenCancel(9); mMenu.options->setBackgroundColor(0x30, 0x30, 0x40, 192); mMenu.options->setSelectorColor(0xe5, 0x1c, 0x23, 255); mMenu.options->setSelectorTextColor(0xFF, 0xF1, 0x76); - mMenu.options->centerMenu(SCREEN_CENTER_X); - mMenu.options->centerMenuElements(); + mMenu.options->centerMenuOnX(SCREEN_CENTER_X); + mMenu.options->centerMenuOnY(SCREEN_CENTER_Y); + mMenu.options->centerMenuElementsOnX(); // Actualiza los textos de los menus updateMenuLabels(); @@ -337,43 +330,122 @@ void Title::switchFullScreenModeVar() // Actualiza los elementos de los menus void Title::updateMenuLabels() { - switch (mOptions->fullScreenMode) + // DIFFICULTY + switch (mOptions->difficulty) { - case 0: - mMenu.options->setItemCaption(0, mLang->getText(4)); // WINDOW + case DIFFICULTY_EASY: + mMenu.options->setItemCaption(0, mLang->getText(59) + ": " + mLang->getText(66)); // EASY break; - case SDL_WINDOW_FULLSCREEN: - mMenu.options->setItemCaption(0, mLang->getText(5)); // FULLSCREEN + + case DIFFICULTY_NORMAL: + mMenu.options->setItemCaption(0, mLang->getText(59) + ": " + mLang->getText(67)); // NORMAL break; - case SDL_WINDOW_FULLSCREEN_DESKTOP: - mMenu.options->setItemCaption(0, mLang->getText(6)); // FAKE FULLSCREEN + + case DIFFICULTY_HARD: + mMenu.options->setItemCaption(0, mLang->getText(59) + ": " + mLang->getText(68)); // HARD break; default: - mMenu.options->setItemCaption(0, mLang->getText(4)); // WINDOW + mMenu.options->setItemCaption(0, mLang->getText(59) + ": " + mLang->getText(67)); // NORMAL break; } - mMenu.options->setItemCaption(1, mLang->getText(7) + " x" + std::to_string(mOptions->windowSize)); // WINDOW SIZE + // PLAYER 1 CONTROLS + switch (mOptions->player1Input) + { + case INPUT_USE_KEYBOARD: + mMenu.options->setItemCaption(1, mLang->getText(62) + ": " + mLang->getText(69)); // KEYBOARD + break; + case INPUT_USE_GAMECONTROLLER: + mMenu.options->setItemCaption(1, mLang->getText(62) + ": " + mLang->getText(70)); // GAME CONTROLLER + break; + + default: + mMenu.options->setItemCaption(1, mLang->getText(62) + ": " + mLang->getText(69)); // KEYBOARD + break; + } + + // PLAYER 2 CONTROLS + switch (mOptions->player2Input) + { + case INPUT_USE_KEYBOARD: + mMenu.options->setItemCaption(2, mLang->getText(63) + ": " + mLang->getText(69)); // KEYBOARD + break; + + case INPUT_USE_GAMECONTROLLER: + mMenu.options->setItemCaption(2, mLang->getText(63) + ": " + mLang->getText(70)); // GAME CONTROLLER + break; + + default: + mMenu.options->setItemCaption(2, mLang->getText(63) + ": " + mLang->getText(69)); // KEYBOARD + break; + } + + // LANGUAGE switch (mOptions->language) { case es_ES: - mMenu.options->setItemCaption(2, mLang->getText(8) + " " + mLang->getText(24)); + mMenu.options->setItemCaption(3, mLang->getText(8) + ": " + mLang->getText(24)); // SPANISH break; + case ba_BA: - mMenu.options->setItemCaption(2, mLang->getText(8) + " " + mLang->getText(25)); + mMenu.options->setItemCaption(3, mLang->getText(8) + ": " + mLang->getText(25)); // VALENCIAN break; + case en_UK: - mMenu.options->setItemCaption(2, mLang->getText(8) + " " + mLang->getText(26)); + mMenu.options->setItemCaption(3, mLang->getText(8) + ": " + mLang->getText(26)); // ENGLISH + break; + + default: + mMenu.options->setItemCaption(3, mLang->getText(8) + ": " + mLang->getText(26)); // ENGLISH break; } - mMenu.options->setItemCaption(3, mLang->getText(9)); - mMenu.options->setItemCaption(4, mLang->getText(10)); + // DISPLAY MODE + switch (mOptions->fullScreenMode) + { + case 0: + mMenu.options->setItemCaption(4, mLang->getText(58) + ": " + mLang->getText(4)); // WINDOW + break; - mMenu.options->centerMenu(SCREEN_CENTER_X); - mMenu.options->centerMenuElements(); + case SDL_WINDOW_FULLSCREEN: + mMenu.options->setItemCaption(4, mLang->getText(58) + ": " + mLang->getText(5)); // FULLSCREEN + break; + + case SDL_WINDOW_FULLSCREEN_DESKTOP: + mMenu.options->setItemCaption(4, mLang->getText(58) + ": " + mLang->getText(6)); // FAKE FULLSCREEN + break; + + default: + mMenu.options->setItemCaption(4, mLang->getText(58) + ": " + mLang->getText(4)); // WINDOW + break; + } + + // WINDOW SIZE + mMenu.options->setItemCaption(5, mLang->getText(7) + " x" + std::to_string(mOptions->windowSize)); // WINDOW SIZE + + // FILTER + if (mOptions->filter == FILTER_BILINEAL) + mMenu.options->setItemCaption(6, mLang->getText(60) + ": " + mLang->getText(71)); // BILINEAL + else + mMenu.options->setItemCaption(6, mLang->getText(60) + ": " + mLang->getText(72)); // LINEAL + + // VSYNC + if (mOptions->vSync) + mMenu.options->setItemCaption(7, mLang->getText(61) + ": " + mLang->getText(73)); // ON + else + mMenu.options->setItemCaption(7, mLang->getText(61) + ": " + mLang->getText(74)); // OFF + + // ACCEPT + mMenu.options->setItemCaption(8, mLang->getText(9)); // ACCEPT + + // CANCEL + mMenu.options->setItemCaption(9, mLang->getText(10)); // CANCEL + + mMenu.options->centerMenuOnX(SCREEN_CENTER_X); + mMenu.options->centerMenuOnY(SCREEN_CENTER_Y); + //mMenu.options->centerMenuElementsOnX(); mMenu.title->setItemCaption(0, mLang->getText(51)); // 1 PLAYER mMenu.title->setItemCaption(1, mLang->getText(52)); // 2 PLAYERS @@ -381,8 +453,8 @@ void Title::updateMenuLabels() //mMenu.title->setItemCaption(3, mLang->getText(2)); // HOW TO PLAY mMenu.title->setItemCaption(3, mLang->getText(3)); // QUIT - mMenu.title->centerMenu(SCREEN_CENTER_X); - mMenu.title->centerMenuElements(); + mMenu.title->centerMenuOnX(SCREEN_CENTER_X); + mMenu.title->centerMenuElementsOnX(); } // Aplica las opciones de menu seleccionadas @@ -696,8 +768,11 @@ section_t Title::run(Uint8 subsection) mGradient->render(); // Dibuja los objetos - mCoffeeBitmap->render(); - mCrisisBitmap->render(); + if (mMenu.active->getName() != "OPTIONS") + { + mCoffeeBitmap->render(); + mCrisisBitmap->render(); + } if (mMenuVisible == true) mMenu.active->render(); mDustBitmapR->animate(0); @@ -753,7 +828,7 @@ void Title::runInstructions(Uint8 mode) // Ejecuta el juego en modo demo void Title::runDemoGame() { - mDemoGame = new Game(1, mRenderer, mFileList, mLang, mInput, mInput, true); + mDemoGame = new Game(1, mRenderer, mFileList, mLang, mInput, mInput, true, DIFFICULTY_NORMAL); mDemoGame->run(); delete mDemoGame; } \ No newline at end of file diff --git a/source/utils.h b/source/utils.h index ed667de..bfe7824 100644 --- a/source/utils.h +++ b/source/utils.h @@ -42,15 +42,15 @@ struct demoKeys_t // Estructura con todas las opciones de configuración del programa struct options_t { + Uint8 difficulty; // Dificultad del juego + Uint8 player1Input; // Modo de control para el jugador 1 (teclado o mando) + Uint8 player2Input; // Modo de control para el jugador 2 (teclado o mando) + Uint8 language; // Idioma usado en el juego + Uint8 languagePrevious; // Usado por si se cancelan los cambios en el menu de opciones Uint32 fullScreenMode; // Contiene el valor del modo de pantalla completa Uint32 fullScreenModePrevious; // Usado por si se cancelan los cambios en el menu de opciones Uint8 windowSize; // Contiene el valor del tamaño de la ventana Uint8 windowSizePrevious; // Usado por si se cancelan los cambios en el menu de opciones - Uint8 language; // Idioma usado en el juego - Uint8 languagePrevious; // Usado por si se cancelan los cambios en el menu de opciones - Uint8 difficulty; // Dificultad del juego - Uint8 player1Input; // Modo de control para el jugador 1 (teclado o mando) - Uint8 player2Input; // Modo de control para el jugador 2 (teclado o mando) Uint32 filter; // Filtro usado para el escalado de la imagen bool vSync; // Indica si se quiere usar vsync o no };