Improved menu class
This commit is contained in:
@@ -384,8 +384,8 @@ void Game::init()
|
|||||||
|
|
||||||
// Inicializa el objeto con el menu de pausa
|
// Inicializa el objeto con el menu de pausa
|
||||||
mMenuPause->init("PAUSE", 0, 12 * BLOCK, MENU_BACKGROUND_SOLID);
|
mMenuPause->init("PAUSE", 0, 12 * BLOCK, MENU_BACKGROUND_SOLID);
|
||||||
mMenuPause->addItem(mLang->getText(46));
|
mMenuPause->addItem(mLang->getText(46), 2);
|
||||||
mMenuPause->addItem(mLang->getText(47));
|
mMenuPause->addItem(mLang->getText(47), 0);
|
||||||
mMenuPause->setDefaultActionWhenCancel(0);
|
mMenuPause->setDefaultActionWhenCancel(0);
|
||||||
mMenuPause->setBackgroundColor(0x29, 0x39, 0x41, 240);
|
mMenuPause->setBackgroundColor(0x29, 0x39, 0x41, 240);
|
||||||
mMenuPause->setSelectorColor(0xFF, 0x7A, 0x00, 255);
|
mMenuPause->setSelectorColor(0xFF, 0x7A, 0x00, 255);
|
||||||
@@ -395,7 +395,7 @@ void Game::init()
|
|||||||
|
|
||||||
// Inicializa el objeto con el menu de la pantalla de game over
|
// 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);
|
mMenuGameOver->init("GAME OVER", 0, PLAY_AREA_CENTER_Y + BLOCK * 4, MENU_BACKGROUND_TRANSPARENT);
|
||||||
mMenuGameOver->addItem(mLang->getText(48));
|
mMenuGameOver->addItem(mLang->getText(48), 2);
|
||||||
mMenuGameOver->addItem(mLang->getText(49));
|
mMenuGameOver->addItem(mLang->getText(49));
|
||||||
mMenuGameOver->setDefaultActionWhenCancel(1);
|
mMenuGameOver->setDefaultActionWhenCancel(1);
|
||||||
mMenuGameOver->setBackgroundColor(0, 0, 0, 255);
|
mMenuGameOver->setBackgroundColor(0, 0, 0, 255);
|
||||||
@@ -2961,7 +2961,7 @@ void Game::renderMessages()
|
|||||||
//mSpriteGetReady->render();
|
//mSpriteGetReady->render();
|
||||||
const color_t color = {0x17, 0x17, 0x26};
|
const color_t color = {0x17, 0x17, 0x26};
|
||||||
//mTextBig->writeShadowed((int)mGetReadyBitmapPath[mCounter], PLAY_AREA_CENTER_Y - 8, mLang->getText(75), color, 2);
|
//mTextBig->writeShadowed((int)mGetReadyBitmapPath[mCounter], PLAY_AREA_CENTER_Y - 8, mLang->getText(75), color, 2);
|
||||||
mTextBig->writeDX(TXT_STROKE, (int)mGetReadyBitmapPath[mCounter], PLAY_AREA_CENTER_Y - 8, mLang->getText(75),1, noColor, 1, shdwTxtColor);
|
mTextBig->writeDX(TXT_STROKE, (int)mGetReadyBitmapPath[mCounter], PLAY_AREA_CENTER_Y - 8, mLang->getText(75), 1, noColor, 1, shdwTxtColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Time Stopped
|
// Time Stopped
|
||||||
|
|||||||
@@ -21,7 +21,8 @@ Input::Input()
|
|||||||
// Destructor
|
// Destructor
|
||||||
Input::~Input()
|
Input::~Input()
|
||||||
{
|
{
|
||||||
SDL_GameControllerClose(mGameController);
|
//SDL_GameControllerClose(mGameController);
|
||||||
|
//if (mGameController)
|
||||||
mGameController = nullptr;
|
mGameController = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -183,5 +184,8 @@ bool Input::gameControllerFound()
|
|||||||
// Obten el nombre de un mando de juego
|
// Obten el nombre de un mando de juego
|
||||||
std::string Input::getControllerName(int index)
|
std::string Input::getControllerName(int index)
|
||||||
{
|
{
|
||||||
return mControllerNames[index];
|
if (mNumGamepads > 0)
|
||||||
|
return mControllerNames[index];
|
||||||
|
else
|
||||||
|
return "";
|
||||||
}
|
}
|
||||||
239
source/menu.cpp
239
source/menu.cpp
@@ -28,7 +28,6 @@ void Menu::init(std::string name, int x, int y, int backgroundType)
|
|||||||
mSelector.index = 0;
|
mSelector.index = 0;
|
||||||
mTotalItems = 0;
|
mTotalItems = 0;
|
||||||
mItemSelected = MENU_NO_OPTION;
|
mItemSelected = MENU_NO_OPTION;
|
||||||
mVerticalPadding = 1;
|
|
||||||
mPosX = x;
|
mPosX = x;
|
||||||
mPosY = y;
|
mPosY = y;
|
||||||
mRectBG.rect.x = 0;
|
mRectBG.rect.x = 0;
|
||||||
@@ -42,8 +41,8 @@ void Menu::init(std::string name, int x, int y, int backgroundType)
|
|||||||
mIsCenteredOnX = false;
|
mIsCenteredOnX = false;
|
||||||
mIsCenteredOnY = false;
|
mIsCenteredOnY = false;
|
||||||
mAreElementsCenteredOnX = false;
|
mAreElementsCenteredOnX = false;
|
||||||
mCenterX = x + ((SCREEN_WIDTH - x) / 2);
|
mCenterX = 0;
|
||||||
mCenterY = y + ((SCREEN_HEIGHT - y) / 2);
|
mCenterY = 0;
|
||||||
mWidestItem = 0;
|
mWidestItem = 0;
|
||||||
mColorGreyed = {128, 128, 128};
|
mColorGreyed = {128, 128, 128};
|
||||||
|
|
||||||
@@ -54,14 +53,12 @@ void Menu::init(std::string name, int x, int y, int backgroundType)
|
|||||||
mSelector.originH = 0;
|
mSelector.originH = 0;
|
||||||
mSelector.targetH = 0;
|
mSelector.targetH = 0;
|
||||||
mSelector.incH = 0;
|
mSelector.incH = 0;
|
||||||
mSelector.y = 0;
|
mSelector.y = 0.0f;
|
||||||
mSelector.numJumps = 4;
|
mSelector.h = 0.0f;
|
||||||
|
mSelector.numJumps = 8;
|
||||||
mSelector.moving = false;
|
mSelector.moving = false;
|
||||||
mSelector.resizing = false;
|
mSelector.resizing = false;
|
||||||
mSelector.rect.x = 0;
|
mSelector.rect = {0, 0, 0, 0};
|
||||||
mSelector.rect.y = 0;
|
|
||||||
mSelector.rect.w = 0;
|
|
||||||
mSelector.rect.h = 0;
|
|
||||||
mSelector.r = 0;
|
mSelector.r = 0;
|
||||||
mSelector.g = 0;
|
mSelector.g = 0;
|
||||||
mSelector.b = 0;
|
mSelector.b = 0;
|
||||||
@@ -71,12 +68,12 @@ void Menu::init(std::string name, int x, int y, int backgroundType)
|
|||||||
for (int i = 0; i < MENU_MAX_ITEMS; i++)
|
for (int i = 0; i < MENU_MAX_ITEMS; i++)
|
||||||
{
|
{
|
||||||
mItem[i].label = "";
|
mItem[i].label = "";
|
||||||
mItem[i].w = 0;
|
mItem[i].rect = {0, 0, 0, 0};
|
||||||
mItem[i].h = 0;
|
|
||||||
mItem[i].x = 0;
|
|
||||||
mItem[i].y = 0;
|
|
||||||
mItem[i].hPaddingUp = 0;
|
|
||||||
mItem[i].hPaddingDown = 0;
|
mItem[i].hPaddingDown = 0;
|
||||||
|
mItem[i].selectable = false;
|
||||||
|
mItem[i].greyed = false;
|
||||||
|
mItem[i].linkedDown = false;
|
||||||
|
mItem[i].linkedUp = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -103,6 +100,7 @@ std::string Menu::getName()
|
|||||||
// Obtiene el valor de la variable
|
// Obtiene el valor de la variable
|
||||||
Uint8 Menu::getItemSelected()
|
Uint8 Menu::getItemSelected()
|
||||||
{
|
{
|
||||||
|
// Al llamar a esta funcion, se obtiene el valor y se borra
|
||||||
const int temp = mItemSelected;
|
const int temp = mItemSelected;
|
||||||
mItemSelected = MENU_NO_OPTION;
|
mItemSelected = MENU_NO_OPTION;
|
||||||
return temp;
|
return temp;
|
||||||
@@ -131,34 +129,36 @@ void Menu::updateSelector()
|
|||||||
mSelector.moving = false;
|
mSelector.moving = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mSelector.rect.y = int(mSelector.y) - 1;
|
mSelector.rect.y = int(mSelector.y);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mSelector.rect.y = int(mSelector.y) - 1;
|
mSelector.rect.y = int(mSelector.y);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mSelector.resizing)
|
if (mSelector.resizing)
|
||||||
{
|
{
|
||||||
// Calcula el incremento en H
|
// Calcula el incremento en H
|
||||||
mSelector.rect.h += mSelector.incH;
|
mSelector.h += mSelector.incH;
|
||||||
if (mSelector.incH > 0) // Crece
|
if (mSelector.incH > 0) // Crece
|
||||||
{
|
{
|
||||||
if (mSelector.rect.h > mSelector.targetH) // Ha llegado al destino
|
if (mSelector.h > mSelector.targetH) // Ha llegado al destino
|
||||||
{
|
{
|
||||||
mSelector.originH = mSelector.rect.h = mSelector.targetH;
|
//mSelector.originH = mSelector.targetH = mSelector.rect.h = getSelectorHeight(mSelector.index);
|
||||||
|
mSelector.originH = mSelector.h = mSelector.targetH;
|
||||||
mSelector.resizing = false;
|
mSelector.resizing = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (mSelector.incH < 0) // Decrece
|
if (mSelector.incH < 0) // Decrece
|
||||||
{
|
{
|
||||||
if (mSelector.rect.h < mSelector.targetH) // Ha llegado al destino
|
if (mSelector.h < mSelector.targetH) // Ha llegado al destino
|
||||||
{
|
{
|
||||||
mSelector.originH = mSelector.rect.h = mSelector.targetH;
|
//mSelector.originH = mSelector.targetH = mSelector.rect.h = getSelectorHeight(mSelector.index);
|
||||||
|
mSelector.originH = mSelector.h = mSelector.targetH;
|
||||||
mSelector.resizing = false;
|
mSelector.resizing = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//mSelector.rect.h = getSelectorHeight(mSelector.index);
|
mSelector.rect.h = int(mSelector.h);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -166,25 +166,16 @@ void Menu::updateSelector()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Establece el origen del selector
|
|
||||||
void Menu::setSelectorOrigin(int value)
|
|
||||||
{
|
|
||||||
mSelector.originY = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Establece el destino del selector
|
|
||||||
void Menu::setSelectorTarget(int value)
|
|
||||||
{
|
|
||||||
mSelector.targetY = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Coloca el selector en una posición específica
|
// Coloca el selector en una posición específica
|
||||||
void Menu::setSelectorPos(Uint8 index)
|
void Menu::setSelectorPos(Uint8 index)
|
||||||
{
|
{
|
||||||
if (index < mTotalItems)
|
if (index < mTotalItems)
|
||||||
{
|
{
|
||||||
mSelector.index = index;
|
mSelector.index = index;
|
||||||
mSelector.y = mSelector.originY = mSelector.targetY = mItem[mSelector.index].y;
|
mSelector.rect.y = mSelector.y = mSelector.originY = mSelector.targetY = mItem[mSelector.index].rect.y;
|
||||||
|
mSelector.rect.w = mRectBG.rect.w;
|
||||||
|
mSelector.rect.x = mRectBG.rect.x;
|
||||||
|
mSelector.originH = mSelector.targetH = mSelector.rect.h = getSelectorHeight(mSelector.index);
|
||||||
mSelector.moving = false;
|
mSelector.moving = false;
|
||||||
mSelector.resizing = false;
|
mSelector.resizing = false;
|
||||||
}
|
}
|
||||||
@@ -197,12 +188,8 @@ Uint16 Menu::getWidestItem()
|
|||||||
|
|
||||||
// Obtenemos la anchura del item mas ancho
|
// Obtenemos la anchura del item mas ancho
|
||||||
for (int i = 0; i < mTotalItems; i++)
|
for (int i = 0; i < mTotalItems; i++)
|
||||||
{
|
if (mItem[i].rect.w > result)
|
||||||
if (mItem[i].w > result)
|
result = mItem[i].rect.w;
|
||||||
{
|
|
||||||
result = mItem[i].w;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -212,18 +199,12 @@ void Menu::reset()
|
|||||||
{
|
{
|
||||||
mItemSelected = MENU_NO_OPTION;
|
mItemSelected = MENU_NO_OPTION;
|
||||||
mSelector.index = 0;
|
mSelector.index = 0;
|
||||||
mSelector.originY = mSelector.targetY = mSelector.y = mItem[0].y;
|
mSelector.originY = mSelector.targetY = mSelector.y = mItem[0].rect.y;
|
||||||
mSelector.originH = mSelector.targetH = mItem[0].h;
|
mSelector.originH = mSelector.targetH = mItem[0].rect.h;
|
||||||
mSelector.moving = false;
|
mSelector.moving = false;
|
||||||
mSelector.resizing = false;
|
mSelector.resizing = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Deja el menu sin elemento seleccionado
|
|
||||||
void Menu::deselectItem()
|
|
||||||
{
|
|
||||||
mItemSelected = MENU_NO_OPTION;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Actualiza el menu para recolocarlo correctamente y establecer el tamaño
|
// Actualiza el menu para recolocarlo correctamente y establecer el tamaño
|
||||||
void Menu::reorganize()
|
void Menu::reorganize()
|
||||||
{
|
{
|
||||||
@@ -240,9 +221,12 @@ void Menu::reorganize()
|
|||||||
bool Menu::increaseSelectorIndex()
|
bool Menu::increaseSelectorIndex()
|
||||||
{
|
{
|
||||||
bool success = false;
|
bool success = false;
|
||||||
mSelector.y = mSelector.originY = mItem[mSelector.index].y;
|
|
||||||
mSelector.rect.h = mSelector.originH = getSelectorHeight(mSelector.index);
|
|
||||||
|
|
||||||
|
// Obten las coordenadas del elemento actual
|
||||||
|
mSelector.y = mSelector.originY = mItem[mSelector.index].rect.y;
|
||||||
|
mSelector.h = mSelector.originH = getSelectorHeight(mSelector.index);
|
||||||
|
|
||||||
|
// Calcula cual es el siguiente elemento
|
||||||
if (mSelector.index < (mTotalItems - 1))
|
if (mSelector.index < (mTotalItems - 1))
|
||||||
{
|
{
|
||||||
mSelector.index++;
|
mSelector.index++;
|
||||||
@@ -251,11 +235,18 @@ bool Menu::increaseSelectorIndex()
|
|||||||
success = true;
|
success = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
mSelector.targetY = mItem[mSelector.index].y;
|
if (success)
|
||||||
mSelector.despY = (mSelector.targetY - mSelector.originY) / mSelector.numJumps;
|
{ // Establece las coordenadas y altura de destino
|
||||||
mSelector.targetH = getSelectorHeight(mSelector.index);
|
mSelector.targetY = mItem[mSelector.index].rect.y;
|
||||||
mSelector.incH = (mSelector.targetH - mSelector.originH) / mSelector.numJumps;
|
mSelector.despY = (mSelector.targetY - mSelector.originY) / mSelector.numJumps;
|
||||||
mSelector.moving = true;
|
|
||||||
|
mSelector.targetH = getSelectorHeight(mSelector.index);
|
||||||
|
mSelector.incH = (mSelector.targetH - mSelector.originH) / mSelector.numJumps;
|
||||||
|
|
||||||
|
mSelector.moving = true;
|
||||||
|
if (mSelector.incH != 0)
|
||||||
|
mSelector.resizing = true;
|
||||||
|
}
|
||||||
|
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
@@ -264,9 +255,12 @@ bool Menu::increaseSelectorIndex()
|
|||||||
bool Menu::decreaseSelectorIndex()
|
bool Menu::decreaseSelectorIndex()
|
||||||
{
|
{
|
||||||
bool success = false;
|
bool success = false;
|
||||||
mSelector.y = mSelector.originY = mItem[mSelector.index].y;
|
|
||||||
mSelector.rect.h = mSelector.originH = getSelectorHeight(mSelector.index);
|
|
||||||
|
|
||||||
|
// Obten las coordenadas del elemento actual
|
||||||
|
mSelector.y = mSelector.originY = mItem[mSelector.index].rect.y;
|
||||||
|
mSelector.h = mSelector.originH = getSelectorHeight(mSelector.index);
|
||||||
|
|
||||||
|
// Calcula cual es el siguiente elemento
|
||||||
if (mSelector.index > 0)
|
if (mSelector.index > 0)
|
||||||
{
|
{
|
||||||
mSelector.index--;
|
mSelector.index--;
|
||||||
@@ -275,11 +269,19 @@ bool Menu::decreaseSelectorIndex()
|
|||||||
success = true;
|
success = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
mSelector.targetY = mItem[mSelector.index].y;
|
if (success)
|
||||||
mSelector.despY = (mSelector.targetY - mSelector.originY) / mSelector.numJumps;
|
{ // Establece las coordenadas y altura de destino
|
||||||
mSelector.targetH = getSelectorHeight(mSelector.index);
|
mSelector.targetY = mItem[mSelector.index].rect.y;
|
||||||
mSelector.incH = (mSelector.targetH - mSelector.originH) / mSelector.numJumps;
|
mSelector.despY = (mSelector.targetY - mSelector.originY) / mSelector.numJumps;
|
||||||
mSelector.moving = true;
|
|
||||||
|
mSelector.targetH = getSelectorHeight(mSelector.index);
|
||||||
|
mSelector.incH = (mSelector.targetH - mSelector.originH) / mSelector.numJumps;
|
||||||
|
|
||||||
|
mSelector.moving = true;
|
||||||
|
if (mSelector.incH != 0)
|
||||||
|
mSelector.resizing = true;
|
||||||
|
}
|
||||||
|
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -300,8 +302,11 @@ void Menu::render()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Renderiza el rectangulo del selector
|
// Renderiza el rectangulo del selector
|
||||||
|
SDL_Rect temp = mSelector.rect;
|
||||||
|
temp.y--;
|
||||||
|
temp.h++;
|
||||||
SDL_SetRenderDrawColor(mRenderer, mSelector.r, mSelector.g, mSelector.b, mSelector.a);
|
SDL_SetRenderDrawColor(mRenderer, mSelector.r, mSelector.g, mSelector.b, mSelector.a);
|
||||||
SDL_RenderFillRect(mRenderer, &mSelector.rect);
|
SDL_RenderFillRect(mRenderer, &temp);
|
||||||
|
|
||||||
// Renderiza el borde del fondo
|
// Renderiza el borde del fondo
|
||||||
if (mBackgroundType == MENU_BACKGROUND_SOLID)
|
if (mBackgroundType == MENU_BACKGROUND_SOLID)
|
||||||
@@ -316,47 +321,49 @@ void Menu::render()
|
|||||||
if (i == mSelector.index)
|
if (i == mSelector.index)
|
||||||
{
|
{
|
||||||
const color_t color = {mSelector.itemR, mSelector.itemG, mSelector.itemB};
|
const color_t color = {mSelector.itemR, mSelector.itemG, mSelector.itemB};
|
||||||
mText->writeColored(mItem[i].x, mItem[i].y, mItem[i].label, color);
|
mText->writeColored(mItem[i].rect.x, mItem[i].rect.y, mItem[i].label, color);
|
||||||
}
|
}
|
||||||
else if (mItem[i].selectable)
|
else if (mItem[i].selectable)
|
||||||
{
|
{
|
||||||
mText->write(mItem[i].x, mItem[i].y, mItem[i].label);
|
mText->write(mItem[i].rect.x, mItem[i].rect.y, mItem[i].label);
|
||||||
}
|
}
|
||||||
else if (mItem[i].greyed)
|
else if (mItem[i].greyed)
|
||||||
{
|
{
|
||||||
mText->writeColored(mItem[i].x, mItem[i].y, mItem[i].label, mColorGreyed);
|
mText->writeColored(mItem[i].rect.x, mItem[i].rect.y, mItem[i].label, mColorGreyed);
|
||||||
}
|
}
|
||||||
else // No seleccionable
|
else // No seleccionable
|
||||||
{
|
{
|
||||||
if ((mItem[i].linkedUp) && (i == mSelector.index + 1))
|
if ((mItem[i].linkedUp) && (i == mSelector.index + 1))
|
||||||
{
|
{
|
||||||
const color_t color = {mSelector.itemR, mSelector.itemG, mSelector.itemB};
|
const color_t color = {mSelector.itemR, mSelector.itemG, mSelector.itemB};
|
||||||
mText->writeColored(mItem[i].x, mItem[i].y, mItem[i].label, color);
|
mText->writeColored(mItem[i].rect.x, mItem[i].rect.y, mItem[i].label, color);
|
||||||
}
|
}
|
||||||
else // No enlazado con el de arriba
|
else // No enlazado con el de arriba
|
||||||
{
|
{
|
||||||
mText->write(mItem[i].x, mItem[i].y, mItem[i].label);
|
mText->write(mItem[i].rect.x, mItem[i].rect.y, mItem[i].label);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//borrar
|
||||||
|
//mText->write(0, 0, std::to_string(mSelector.h) + " " + std::to_string(mSelector.incH) + " " + std::to_string(mSelector.resizing));
|
||||||
|
//mText->write(0, 8, std::to_string(mSelector.y) + " " + std::to_string(mSelector.despY) + " " + std::to_string(mSelector.moving));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Establece el rectangulo de fondo del menu y el selector
|
// Establece el rectangulo de fondo del menu y el selector
|
||||||
void Menu::setRectSize()
|
void Menu::setRectSize()
|
||||||
{
|
{
|
||||||
mRectBG.rect.w = findWidth();
|
mRectBG.rect.w = findWidth() + mText->getCharacterWidth();
|
||||||
mRectBG.rect.h = findHeight();
|
mRectBG.rect.h = findHeight() + mText->getCharacterWidth();
|
||||||
|
|
||||||
// La posición X es la del menú menos medio caracter
|
// La posición X es la del menú menos medio caracter
|
||||||
mRectBG.rect.x = mPosX - (mText->getCharacterWidth() / 2);
|
mRectBG.rect.x = mPosX - (mText->getCharacterWidth() / 2);
|
||||||
|
|
||||||
// La posición Y es la del menu menos la altura de medio caracter i el padding
|
// La posición Y es la del menu menos la altura de medio caracter
|
||||||
mRectBG.rect.y = mPosY - (mText->getCharacterWidth() / 2) - mVerticalPadding;
|
mRectBG.rect.y = mPosY - (mText->getCharacterWidth() / 2);
|
||||||
|
|
||||||
// Establecemos los valores del rectangulo del selector a partir de los valores del rectangulo de fondo
|
// Establecemos los valores del rectangulo del selector a partir de los valores del rectangulo de fondo
|
||||||
mSelector.rect.h = getSelectorHeight(mSelector.index);
|
setSelectorPos(mSelector.index);
|
||||||
mSelector.rect.w = mRectBG.rect.w;
|
|
||||||
mSelector.rect.x = mRectBG.rect.x;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Establece el valor de la variable
|
// Establece el valor de la variable
|
||||||
@@ -400,28 +407,17 @@ void Menu::centerMenuOnX(int value)
|
|||||||
mCenterX = value;
|
mCenterX = value;
|
||||||
|
|
||||||
// Actualiza el rectangulo de fondo para recalcular las dimensiones
|
// Actualiza el rectangulo de fondo para recalcular las dimensiones
|
||||||
setRectSize();
|
//setRectSize();
|
||||||
|
|
||||||
// Obten el acho del menu
|
|
||||||
mWidestItem = getWidestItem();
|
|
||||||
|
|
||||||
// Establece la nueva posición centrada en funcion del elemento más ancho
|
// Establece la nueva posición centrada en funcion del elemento más ancho
|
||||||
mPosX = (value) - (mWidestItem / 2);
|
mPosX = (value) - (findWidth() / 2);
|
||||||
|
|
||||||
// Reposiciona los elementos del menu
|
// Reposiciona los elementos del menu
|
||||||
for (int i = 0; i < MENU_MAX_ITEMS; i++)
|
for (int i = 0; i < MENU_MAX_ITEMS; i++)
|
||||||
{
|
mItem[i].rect.x = mPosX;
|
||||||
mItem[i].x = mPosX;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Recalcula el rectangulo de fondo
|
// Recalcula el rectangulo de fondo
|
||||||
setRectSize();
|
setRectSize();
|
||||||
|
|
||||||
// Recoloca el selector
|
|
||||||
mSelector.originY = mSelector.targetY = mSelector.y = mItem[mSelector.index].y;
|
|
||||||
mSelector.moving = false;
|
|
||||||
mSelector.originH = mSelector.targetH = mSelector.rect.h = mItem[mSelector.index].h;
|
|
||||||
mSelector.resizing = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Centra el menu respecto un punto en el eje Y
|
// Centra el menu respecto un punto en el eje Y
|
||||||
@@ -431,25 +427,16 @@ void Menu::centerMenuOnY(int value)
|
|||||||
mCenterY = value;
|
mCenterY = value;
|
||||||
|
|
||||||
// Actualiza el rectangulo de fondo para recalcular las dimensiones
|
// Actualiza el rectangulo de fondo para recalcular las dimensiones
|
||||||
setRectSize();
|
//setRectSize();
|
||||||
|
|
||||||
// Obten el alto del menu
|
|
||||||
mHeight = findHeight();
|
|
||||||
|
|
||||||
// Establece la nueva posición centrada en funcion del elemento más ancho
|
// Establece la nueva posición centrada en funcion del elemento más ancho
|
||||||
mPosY = (value) - (mHeight / 2);
|
mPosY = (value) - (findHeight() / 2);
|
||||||
|
|
||||||
// Reposiciona los elementos del menu
|
// Reposiciona los elementos del menu
|
||||||
replaceElementsOnY();
|
replaceElementsOnY();
|
||||||
|
|
||||||
// Recalcula el rectangulo de fondo
|
// Recalcula el rectangulo de fondo
|
||||||
setRectSize();
|
setRectSize();
|
||||||
|
|
||||||
// Recoloca el selector
|
|
||||||
mSelector.originY = mSelector.targetY = mSelector.y = mItem[mSelector.index].y;
|
|
||||||
mSelector.moving = false;
|
|
||||||
mSelector.originH = mSelector.targetH = mSelector.rect.h = mItem[mSelector.index].h;
|
|
||||||
mSelector.resizing = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Centra los elementos del menu en el eje X
|
// Centra los elementos del menu en el eje X
|
||||||
@@ -458,40 +445,41 @@ void Menu::centerMenuElementsOnX()
|
|||||||
mAreElementsCenteredOnX = true;
|
mAreElementsCenteredOnX = true;
|
||||||
|
|
||||||
for (int i = 0; i < mTotalItems; i++)
|
for (int i = 0; i < mTotalItems; i++)
|
||||||
mItem[i].x = (mCenterX - (mItem[i].w / 2));
|
mItem[i].rect.x = (mCenterX - (mItem[i].rect.w / 2));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Añade un item al menu
|
// Añade un item al menu
|
||||||
void Menu::addItem(std::string text, const Uint8 hPaddingUp, const Uint8 hPaddingDown, bool selectable, bool greyed, bool linkedDown)
|
void Menu::addItem(std::string text, Uint8 hPaddingDown, bool selectable, bool greyed, bool linkedDown)
|
||||||
{
|
{
|
||||||
// Si es el primer item coge la posición en el eje Y del propio menu
|
// Si es el primer item coge la posición en el eje Y del propio menu
|
||||||
if (mTotalItems == 0)
|
if (mTotalItems == 0)
|
||||||
mItem[mTotalItems].y = mPosY;
|
mItem[mTotalItems].rect.y = mPosY;
|
||||||
else
|
else
|
||||||
// En caso contrario, coge la posición en el eje Y a partir del elemento anterior
|
// En caso contrario, coge la posición en el eje Y a partir del elemento anterior
|
||||||
mItem[mTotalItems].y = mItem[mTotalItems - 1].y + mItem[mTotalItems - 1].h + mItem[mTotalItems - 1].hPaddingDown;
|
mItem[mTotalItems].rect.y = mItem[mTotalItems - 1].rect.y + mItem[mTotalItems - 1].rect.h + mItem[mTotalItems - 1].hPaddingDown;
|
||||||
|
|
||||||
mItem[mTotalItems].label = text;
|
setItemCaption(mTotalItems, text);
|
||||||
mItem[mTotalItems].w = mText->lenght(mItem[mTotalItems].label);
|
mItem[mTotalItems].rect.x = mPosX;
|
||||||
mItem[mTotalItems].h = mText->getCharacterWidth() + (mVerticalPadding * 2);
|
|
||||||
mItem[mTotalItems].x = mPosX;
|
|
||||||
mItem[mTotalItems].hPaddingUp = hPaddingUp;
|
|
||||||
mItem[mTotalItems].hPaddingDown = hPaddingDown;
|
mItem[mTotalItems].hPaddingDown = hPaddingDown;
|
||||||
mItem[mTotalItems].selectable = selectable;
|
mItem[mTotalItems].selectable = selectable;
|
||||||
mItem[mTotalItems].greyed = greyed;
|
mItem[mTotalItems].greyed = greyed;
|
||||||
mItem[mTotalItems].linkedDown = linkedDown;
|
mItem[mTotalItems].linkedDown = linkedDown;
|
||||||
mItem[mTotalItems + 1].linkedUp = linkedDown;
|
if (mTotalItems > 0)
|
||||||
|
if (mItem[mTotalItems - 1].linkedDown)
|
||||||
|
mItem[mTotalItems].linkedUp = true;
|
||||||
|
|
||||||
setTotalItems(mTotalItems + 1);
|
setTotalItems(mTotalItems + 1);
|
||||||
|
mCenterX = mPosX + (findWidth() / 2);
|
||||||
|
//setSelectorPos(0);
|
||||||
reorganize();
|
reorganize();
|
||||||
setSelectorPos(0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cambia el texto de un item
|
// Cambia el texto de un item
|
||||||
void Menu::setItemCaption(Uint8 index, std::string text)
|
void Menu::setItemCaption(Uint8 index, std::string text)
|
||||||
{
|
{
|
||||||
mItem[index].label = text;
|
mItem[index].label = text;
|
||||||
mItem[index].w = mText->lenght(mItem[index].label);
|
mItem[index].rect.w = mText->lenght(mItem[index].label);
|
||||||
|
mItem[index].rect.h = mText->getCharacterWidth();
|
||||||
reorganize();
|
reorganize();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -532,17 +520,7 @@ void Menu::checkInput()
|
|||||||
// Calcula el ancho del menu
|
// Calcula el ancho del menu
|
||||||
Uint16 Menu::findWidth()
|
Uint16 Menu::findWidth()
|
||||||
{
|
{
|
||||||
Uint16 width = 0;
|
return getWidestItem();
|
||||||
|
|
||||||
// Obtenemos la anchura del item mas ancho
|
|
||||||
for (int i = 0; i < mTotalItems; i++)
|
|
||||||
if (mItem[i].w > width)
|
|
||||||
width = mItem[i].w;
|
|
||||||
|
|
||||||
// La anchura de la cadena más larga, mas un caracter
|
|
||||||
width += (mText->getCharacterWidth() * 1);
|
|
||||||
|
|
||||||
return width;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Calcula el alto del menu
|
// Calcula el alto del menu
|
||||||
@@ -552,10 +530,7 @@ Uint16 Menu::findHeight()
|
|||||||
|
|
||||||
// Obtenemos la altura de la suma de alturas de los items
|
// Obtenemos la altura de la suma de alturas de los items
|
||||||
for (int i = 0; i < mTotalItems; i++)
|
for (int i = 0; i < mTotalItems; i++)
|
||||||
height += mItem[i].h + mItem[i].hPaddingDown;
|
height += mItem[i].rect.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)
|
|
||||||
height += (mText->getCharacterWidth() * 1) - 1;
|
|
||||||
|
|
||||||
return height;
|
return height;
|
||||||
}
|
}
|
||||||
@@ -563,10 +538,10 @@ Uint16 Menu::findHeight()
|
|||||||
// Recoloca los elementos del menu en el eje Y
|
// Recoloca los elementos del menu en el eje Y
|
||||||
void Menu::replaceElementsOnY()
|
void Menu::replaceElementsOnY()
|
||||||
{
|
{
|
||||||
mItem[0].y = mPosY;
|
mItem[0].rect.y = mPosY;
|
||||||
|
|
||||||
for (int i = 1; i < mTotalItems; i++)
|
for (int i = 1; i < mTotalItems; i++)
|
||||||
mItem[i].y = mItem[i - 1].y + mItem[i - 1].h + mItem[i - 1].hPaddingDown;
|
mItem[i].rect.y = mItem[i - 1].rect.y + mItem[i - 1].rect.h + mItem[i - 1].hPaddingDown;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Establece el estado seleccionable de un item
|
// Establece el estado seleccionable de un item
|
||||||
@@ -591,7 +566,7 @@ void Menu::setLinkedDown(Uint8 index, bool value)
|
|||||||
int Menu::getSelectorHeight(int value)
|
int Menu::getSelectorHeight(int value)
|
||||||
{
|
{
|
||||||
if (mItem[value].linkedDown)
|
if (mItem[value].linkedDown)
|
||||||
return mItem[value + 1].y + mItem[value + 1].h - mItem[value].y - 1;
|
return mItem[value].rect.h + mItem[value].hPaddingDown + mItem[value + 1].rect.h;
|
||||||
else
|
else
|
||||||
return mItem[value].h - 1;
|
return mItem[value].rect.h;
|
||||||
}
|
}
|
||||||
@@ -14,28 +14,27 @@
|
|||||||
class Menu
|
class Menu
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
std::string mName; // Nombre del menu
|
||||||
int mPosX; // Posición en el eje X de la primera letra del primer elemento
|
int mPosX; // Posición en el eje X de la primera letra del primer elemento
|
||||||
int mPosY; // Posición en el eje Y de la primera letra del primer elemento
|
int mPosY; // Posición en el eje Y de la primera letra del primer elemento
|
||||||
std::string mName; // Nombre del menu
|
Uint16 mHeight; // Altura del menu
|
||||||
|
Uint16 mWidth; // Anchura del menu
|
||||||
Uint8 mTotalItems; // Numero total de items 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 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
|
Uint8 mBackgroundType; // Tipo de fondo para el menu
|
||||||
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 mIsCenteredOnX; // Variable para saber si el menu debe estar centrado respecto a un punto en el eje X
|
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
|
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 mCenterX; // Centro del menu en el eje X
|
||||||
int mCenterY; // Centro del menu en el eje Y
|
int mCenterY; // Centro del menu en el eje Y
|
||||||
bool mAreElementsCenteredOnX; // Variable para saber si los elementos van centrados en el eje X
|
bool mAreElementsCenteredOnX; // Variable para saber si los elementos van centrados en el eje X
|
||||||
Uint16 mWidestItem; // Anchura del elemento más ancho
|
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 mSoundAccept; // Sonido al aceptar o elegir una opción del menu
|
||||||
JA_Sound mSoundCancel; // Sonido al cancelar el menu
|
JA_Sound mSoundCancel; // Sonido al cancelar el menu
|
||||||
JA_Sound mSoundMove; // Sonido al mover el selector
|
JA_Sound mSoundMove; // Sonido al mover el selector
|
||||||
|
SDL_Renderer *mRenderer; // Puntero al renderizador de la ventana
|
||||||
|
std::string *mFileList; // Lista de ficheros
|
||||||
|
Text *mText; // Texto para poder escribir los items del menu
|
||||||
Input *mInput; // Gestor de eventos de entrada de teclado o gamepad
|
Input *mInput; // Gestor de eventos de entrada de teclado o gamepad
|
||||||
color_t mColorGreyed; // Color para los elementos agrisados
|
color_t mColorGreyed; // Color para los elementos agrisados
|
||||||
|
|
||||||
@@ -52,11 +51,7 @@ private:
|
|||||||
struct item
|
struct item
|
||||||
{
|
{
|
||||||
std::string label; // Texto
|
std::string label; // Texto
|
||||||
int x; // Posición en el eje X de la primera letra del elemento
|
SDL_Rect rect; // Rectangulo que delimita el elemento
|
||||||
int y; // Posición en el eje Y de la primera letra del elemento
|
|
||||||
Uint8 w; // Ancho del elemento
|
|
||||||
Uint8 h; // Alto del elemento
|
|
||||||
Uint8 hPaddingUp; // Espaciado sobre el elemento
|
|
||||||
Uint8 hPaddingDown; // Espaciado bajo el elemento
|
Uint8 hPaddingDown; // Espaciado bajo el elemento
|
||||||
bool selectable; // Indica si se puede seleccionar
|
bool selectable; // Indica si se puede seleccionar
|
||||||
bool greyed; // Indica si ha de aparecer con otro color mas oscuro
|
bool greyed; // Indica si ha de aparecer con otro color mas oscuro
|
||||||
@@ -75,7 +70,8 @@ private:
|
|||||||
float targetH; // Altura de destino
|
float targetH; // Altura de destino
|
||||||
float incH; // Cantidad de pixels que debe incrementar o decrementar el selector en cada salto
|
float incH; // Cantidad de pixels que debe incrementar o decrementar el selector en cada salto
|
||||||
bool resizing; // Indica si el selector está cambiando de tamaño
|
bool resizing; // Indica si el selector está cambiando de tamaño
|
||||||
float y; // Coordenada actual
|
float y; // Coordenada actual, usado para el desplazamiento
|
||||||
|
float h; // Altura actual, usado para el cambio de tamaño
|
||||||
Uint8 numJumps; // Numero de pasos preestablecido para llegar al destino
|
Uint8 numJumps; // Numero de pasos preestablecido para llegar al destino
|
||||||
Uint8 index; // Elemento del menu que tiene el foco
|
Uint8 index; // Elemento del menu que tiene el foco
|
||||||
SDL_Rect rect; // Rectangulo del selector
|
SDL_Rect rect; // Rectangulo del selector
|
||||||
@@ -110,12 +106,6 @@ private:
|
|||||||
// Actualiza la posicion y el estado del selector
|
// Actualiza la posicion y el estado del selector
|
||||||
void updateSelector();
|
void updateSelector();
|
||||||
|
|
||||||
// Establece el origen del selector
|
|
||||||
void setSelectorOrigin(int value);
|
|
||||||
|
|
||||||
// Establece el destino del selector
|
|
||||||
void setSelectorTarget(int value);
|
|
||||||
|
|
||||||
// Obtiene la anchura del elemento más ancho del menu
|
// Obtiene la anchura del elemento más ancho del menu
|
||||||
Uint16 getWidestItem();
|
Uint16 getWidestItem();
|
||||||
|
|
||||||
@@ -153,9 +143,6 @@ public:
|
|||||||
// Deja el menu apuntando al primer elemento
|
// Deja el menu apuntando al primer elemento
|
||||||
void reset();
|
void reset();
|
||||||
|
|
||||||
// Deja el menu sin elemento seleccionado
|
|
||||||
void deselectItem();
|
|
||||||
|
|
||||||
// Gestiona la entrada de teclado y mando durante el menu
|
// Gestiona la entrada de teclado y mando durante el menu
|
||||||
void checkInput();
|
void checkInput();
|
||||||
|
|
||||||
@@ -184,7 +171,7 @@ public:
|
|||||||
void centerMenuElementsOnX();
|
void centerMenuElementsOnX();
|
||||||
|
|
||||||
// Añade un item al menu
|
// Añade un item al menu
|
||||||
void addItem(std::string text, const Uint8 hPaddingUp = 0, const Uint8 hPaddingDown = 0, bool selectable = true, bool greyed = false, bool linkedDown = false);
|
void addItem(std::string text, Uint8 hPaddingDown = 1, bool selectable = true, bool greyed = false, bool linkedDown = false);
|
||||||
|
|
||||||
// Cambia el texto de un item
|
// Cambia el texto de un item
|
||||||
void setItemCaption(Uint8 index, std::string text);
|
void setItemCaption(Uint8 index, std::string text);
|
||||||
|
|||||||
@@ -136,6 +136,12 @@ void Title::init(bool demo, Uint8 subsection)
|
|||||||
mFade->init(0x17, 0x17, 0x26);
|
mFade->init(0x17, 0x17, 0x26);
|
||||||
mDemo = demo;
|
mDemo = demo;
|
||||||
|
|
||||||
|
if (!mInput->gameControllerFound())
|
||||||
|
{
|
||||||
|
mOptions->input[0] = INPUT_USE_KEYBOARD;
|
||||||
|
mOptions->input[1] = INPUT_USE_GAMECONTROLLER;
|
||||||
|
}
|
||||||
|
|
||||||
// Inicializa el bitmap de Coffee
|
// Inicializa el bitmap de Coffee
|
||||||
mCoffeeBitmap->init(mTitleTexture, mRenderer);
|
mCoffeeBitmap->init(mTitleTexture, mRenderer);
|
||||||
mCoffeeBitmap->setId(0);
|
mCoffeeBitmap->setId(0);
|
||||||
@@ -233,11 +239,11 @@ void Title::init(bool demo, Uint8 subsection)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Inicializa los objetos de menu
|
// Inicializa los objetos de menu
|
||||||
mMenu.title->init("TITLE", 0, 14 * BLOCK, MENU_BACKGROUND_TRANSPARENT);
|
mMenu.title->init("TITLE", 0, (14 * BLOCK) + 4, MENU_BACKGROUND_TRANSPARENT);
|
||||||
mMenu.title->addItem(mLang->getText(51)); // 1 PLAYER
|
mMenu.title->addItem(mLang->getText(51), 2); // 1 PLAYER
|
||||||
mMenu.title->addItem(mLang->getText(52), 0, 5); // 2 PLAYERS
|
mMenu.title->addItem(mLang->getText(52), 7); // 2 PLAYERS
|
||||||
mMenu.title->addItem(mLang->getText(1), 0, 5); // OPTIONS
|
mMenu.title->addItem(mLang->getText(1), 7); // OPTIONS
|
||||||
mMenu.title->addItem(mLang->getText(3)); // QUIT
|
mMenu.title->addItem(mLang->getText(3)); // QUIT
|
||||||
mMenu.title->setDefaultActionWhenCancel(3);
|
mMenu.title->setDefaultActionWhenCancel(3);
|
||||||
mMenu.title->setBackgroundColor(0x30, 0x30, 0x40, 192);
|
mMenu.title->setBackgroundColor(0x30, 0x30, 0x40, 192);
|
||||||
mMenu.title->setSelectorColor(0xe5, 0x1c, 0x23, 0);
|
mMenu.title->setSelectorColor(0xe5, 0x1c, 0x23, 0);
|
||||||
@@ -246,20 +252,20 @@ void Title::init(bool demo, Uint8 subsection)
|
|||||||
mMenu.title->centerMenuElementsOnX();
|
mMenu.title->centerMenuElementsOnX();
|
||||||
|
|
||||||
mMenu.options->init("OPTIONS", 0, BLOCK, MENU_BACKGROUND_TRANSPARENT);
|
mMenu.options->init("OPTIONS", 0, BLOCK, MENU_BACKGROUND_TRANSPARENT);
|
||||||
mMenu.options->addItem(mLang->getText(59), 0, 5); // (0) DIFFICULTY
|
mMenu.options->addItem(mLang->getText(59), 7); // (0) DIFFICULTY
|
||||||
mMenu.options->addItem(mLang->getText(62), 0, 0, true, false, true); // (1) PLAYER 1 CONTROLS
|
mMenu.options->addItem(mLang->getText(62), 2, true, false, true); // (1) PLAYER 1 CONTROLS
|
||||||
mMenu.options->addItem(mLang->getText(69), 0, 0, false, false); // (2) KEYBOARD
|
mMenu.options->addItem(mLang->getText(69), 7, 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), 2, 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(70), 7, false, false); // (4) GAME CONTROLLER
|
||||||
mMenu.options->addItem(mLang->getText(8), 0, 5); // (5) LANGUAGE
|
mMenu.options->addItem(mLang->getText(8), 7); // (5) LANGUAGE
|
||||||
mMenu.options->addItem(mLang->getText(58), 0, 0, true, false, true); // (6) DISPLAY MODE
|
mMenu.options->addItem(mLang->getText(58), 2, true, false, true); // (6) DISPLAY MODE
|
||||||
mMenu.options->addItem(mLang->getText(4), 0, 0, false, false); // (7) WINDOWED
|
mMenu.options->addItem(mLang->getText(4), 7, false, false); // (7) WINDOW
|
||||||
mMenu.options->addItem(mLang->getText(7)); // (8) WINDOW SIZE
|
mMenu.options->addItem(mLang->getText(7), 2); // (8) WINDOW SIZE
|
||||||
mMenu.options->addItem(mLang->getText(60)); // (9) FILTER
|
mMenu.options->addItem(mLang->getText(60), 2); // (9) FILTER
|
||||||
mMenu.options->addItem(mLang->getText(61), 0, 5); // (10) VSYNC
|
mMenu.options->addItem(mLang->getText(61), 7); // (10) VSYNC
|
||||||
mMenu.options->addItem(mLang->getText(2), 0, 5); // (11) HOW TO PLAY
|
mMenu.options->addItem(mLang->getText(2), 7); // (11) HOW TO PLAY
|
||||||
mMenu.options->addItem(mLang->getText(9)); // (12) ACCEPT
|
mMenu.options->addItem(mLang->getText(9), 2); // (12) ACCEPT
|
||||||
mMenu.options->addItem(mLang->getText(10)); // (13) CANCEL
|
mMenu.options->addItem(mLang->getText(10)); // (13) CANCEL
|
||||||
mMenu.options->setDefaultActionWhenCancel(13);
|
mMenu.options->setDefaultActionWhenCancel(13);
|
||||||
mMenu.options->setBackgroundColor(0x30, 0x30, 0x40, 192);
|
mMenu.options->setBackgroundColor(0x30, 0x30, 0x40, 192);
|
||||||
mMenu.options->setSelectorColor(0xe5, 0x1c, 0x23, 255);
|
mMenu.options->setSelectorColor(0xe5, 0x1c, 0x23, 255);
|
||||||
@@ -355,8 +361,10 @@ void Title::updateMenuLabels()
|
|||||||
if (!mInput->gameControllerFound())
|
if (!mInput->gameControllerFound())
|
||||||
mMenu.options->setGreyed(i, true);
|
mMenu.options->setGreyed(i, true);
|
||||||
else
|
else
|
||||||
|
{
|
||||||
mMenu.options->setGreyed(i, false);
|
mMenu.options->setGreyed(i, false);
|
||||||
mMenu.options->setItemCaption(i, mInput->getControllerName(0));
|
mMenu.options->setItemCaption(i, mInput->getControllerName(0));
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -382,8 +390,10 @@ void Title::updateMenuLabels()
|
|||||||
if (!mInput->gameControllerFound())
|
if (!mInput->gameControllerFound())
|
||||||
mMenu.options->setGreyed(i, true);
|
mMenu.options->setGreyed(i, true);
|
||||||
else
|
else
|
||||||
|
{
|
||||||
mMenu.options->setGreyed(i, false);
|
mMenu.options->setGreyed(i, false);
|
||||||
mMenu.options->setItemCaption(i, mInput->getControllerName(0));
|
mMenu.options->setItemCaption(i, mInput->getControllerName(0));
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|||||||
Reference in New Issue
Block a user