working on options menu, almost done
This commit is contained in:
@@ -63,7 +63,7 @@ void Menu::init(std::string name, int x, int y, int backgroundType)
|
||||
mSelector.moving = false;
|
||||
|
||||
// Elementos del menu
|
||||
for (int i = 0; i < 10; i++)
|
||||
for (int i = 0; i < MAX_ITEMS; i++)
|
||||
{
|
||||
mItem[i].label = "";
|
||||
mItem[i].w = 0;
|
||||
@@ -209,6 +209,8 @@ bool Menu::increaseSelectorIndex()
|
||||
if (mSelector.index < (mTotalItems - 1))
|
||||
{
|
||||
mSelector.index++;
|
||||
while ((!mItem[mSelector.index].selectable) && (mSelector.index < (mTotalItems - 1)))
|
||||
mSelector.index++;
|
||||
success = true;
|
||||
}
|
||||
|
||||
@@ -227,6 +229,8 @@ bool Menu::decreaseSelectorIndex()
|
||||
if (mSelector.index > 0)
|
||||
{
|
||||
mSelector.index--;
|
||||
while ((!mItem[mSelector.index].selectable) && (mSelector.index > 0))
|
||||
mSelector.index--;
|
||||
success = true;
|
||||
}
|
||||
|
||||
@@ -302,6 +306,7 @@ void Menu::setRectSize()
|
||||
void Menu::setTotalItems(int num)
|
||||
{
|
||||
mTotalItems = num;
|
||||
mTotalItems > MAX_ITEMS ? MAX_ITEMS : mTotalItems;
|
||||
}
|
||||
|
||||
// Establece el color del rectangulo de fondo
|
||||
@@ -346,7 +351,7 @@ void Menu::centerMenuOnX(int value)
|
||||
mPosX = (value) - (mWidestItem / 2);
|
||||
|
||||
// Reposiciona los elementos del menu
|
||||
for (int i = 0; i < 10; i++)
|
||||
for (int i = 0; i < MAX_ITEMS; i++)
|
||||
{
|
||||
mItem[i].x = mPosX;
|
||||
}
|
||||
@@ -395,33 +400,24 @@ void Menu::centerMenuElementsOnX()
|
||||
}
|
||||
|
||||
// Añade un item al menu
|
||||
void Menu::addItem(std::string text, const Uint8 hPaddingUp, const Uint8 hPaddingDown)
|
||||
void Menu::addItem(std::string text, const Uint8 hPaddingUp, const Uint8 hPaddingDown, bool selectable, bool greyed)
|
||||
{
|
||||
// Si es el primer item coge la posición y del propio menu
|
||||
// Si es el primer item coge la posición en el eje Y del propio menu
|
||||
if (mTotalItems == 0)
|
||||
{
|
||||
mItem[mTotalItems].label = text;
|
||||
mItem[mTotalItems].w = mText->lenght(mItem[mTotalItems].label);
|
||||
mItem[mTotalItems].h = mText->getCharacterWidth() + (mVerticalPadding * 2);
|
||||
mItem[mTotalItems].x = mPosX;
|
||||
mItem[mTotalItems].y = mPosY;
|
||||
mItem[mTotalItems].hPaddingUp = hPaddingUp;
|
||||
mItem[mTotalItems].hPaddingDown = hPaddingDown;
|
||||
}
|
||||
else
|
||||
{
|
||||
// En caso contrario, coge la posición y a partir del elemento anterior
|
||||
if (mTotalItems < 10)
|
||||
{
|
||||
mItem[mTotalItems].label = text;
|
||||
mItem[mTotalItems].w = mText->lenght(mItem[mTotalItems].label);
|
||||
mItem[mTotalItems].h = mText->getCharacterWidth() + (mVerticalPadding * 2);
|
||||
mItem[mTotalItems].x = mPosX;
|
||||
mItem[mTotalItems].y = mItem[mTotalItems - 1].y + mItem[mTotalItems - 1].h + mItem[mTotalItems - 1].hPaddingDown;
|
||||
mItem[mTotalItems].hPaddingUp = hPaddingUp;
|
||||
mItem[mTotalItems].hPaddingDown = hPaddingDown;
|
||||
}
|
||||
}
|
||||
// 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].label = text;
|
||||
mItem[mTotalItems].w = mText->lenght(mItem[mTotalItems].label);
|
||||
mItem[mTotalItems].h = mText->getCharacterWidth() + (mVerticalPadding * 2);
|
||||
mItem[mTotalItems].x = mPosX;
|
||||
mItem[mTotalItems].hPaddingUp = hPaddingUp;
|
||||
mItem[mTotalItems].hPaddingDown = hPaddingDown;
|
||||
mItem[mTotalItems].selectable = selectable;
|
||||
mItem[mTotalItems].greyed = greyed;
|
||||
|
||||
setTotalItems(mTotalItems + 1);
|
||||
reorganize();
|
||||
setSelectorPos(0);
|
||||
|
||||
Reference in New Issue
Block a user