update menu.cpp
This commit is contained in:
@@ -57,15 +57,6 @@ void Menu::init(std::string name, int x, int y, int backgroundType, LTexture *te
|
|||||||
mSelector.despY = 0;
|
mSelector.despY = 0;
|
||||||
mSelector.moving = false;
|
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
|
// Elementos del menu
|
||||||
for (int i = 0; i < 10; i++)
|
for (int i = 0; i < 10; i++)
|
||||||
{
|
{
|
||||||
@@ -77,9 +68,6 @@ void Menu::init(std::string name, int x, int y, int backgroundType, LTexture *te
|
|||||||
mItem[i].hPaddingUp = 0;
|
mItem[i].hPaddingUp = 0;
|
||||||
mItem[i].hPaddingDown = 0;
|
mItem[i].hPaddingDown = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mueve el grafico del selector al elemento seleccionado
|
|
||||||
//moveSelectorSprite(mSelector.index);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Obtiene el nombre del menu
|
// Obtiene el nombre del menu
|
||||||
@@ -94,12 +82,6 @@ Uint8 Menu::getItemSelected()
|
|||||||
return mItemSelected;
|
return mItemSelected;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 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
|
// Actualiza la posicion y el estado del selector
|
||||||
void Menu::updateSelector()
|
void Menu::updateSelector()
|
||||||
{
|
{
|
||||||
@@ -240,11 +222,9 @@ bool Menu::checkInput(Uint8 input)
|
|||||||
{
|
{
|
||||||
case INPUT_UP:
|
case INPUT_UP:
|
||||||
success = decreaseSelectorIndex();
|
success = decreaseSelectorIndex();
|
||||||
//moveSelectorSprite(mSelector.index);
|
|
||||||
break;
|
break;
|
||||||
case INPUT_DOWN:
|
case INPUT_DOWN:
|
||||||
success = increaseSelectorIndex();
|
success = increaseSelectorIndex();
|
||||||
//moveSelectorSprite(mSelector.index);
|
|
||||||
break;
|
break;
|
||||||
case INPUT_ACCEPT:
|
case INPUT_ACCEPT:
|
||||||
mItemSelected = mSelector.index;
|
mItemSelected = mSelector.index;
|
||||||
@@ -276,9 +256,6 @@ void Menu::render()
|
|||||||
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, &mSelector.rect);
|
||||||
|
|
||||||
// Renderiza el sprite del selector
|
|
||||||
//mSelectorSprite.render();
|
|
||||||
|
|
||||||
// Renderitza el text
|
// Renderitza el text
|
||||||
for (Uint8 i = 0; i < mTotalItems; i++)
|
for (Uint8 i = 0; i < mTotalItems; i++)
|
||||||
{
|
{
|
||||||
@@ -313,19 +290,19 @@ void Menu::setRectSize()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// La anchura de la cadena más larga, mas un caracter, mas la anchura del sprite del selector
|
// La anchura de la cadena más larga, mas un caracter, mas la anchura del sprite del selector
|
||||||
mRectBG.rect.w += (mText->getSize() * 1); // + mSelectorSprite.getWidth();
|
mRectBG.rect.w += (mText->getHeight() * 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)
|
// 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->getSize() * 1) - 1;
|
mRectBG.rect.h += (mText->getHeight() * 1) - 1;
|
||||||
|
|
||||||
// La posición X es la del menú menos la anchura del sprite del selector y menos medio caracter
|
// La posición X es la del menú menos la anchura del sprite del selector y menos medio caracter
|
||||||
mRectBG.rect.x = mPosX - (mText->getSize() / 2); // - mSelectorSprite.getWidth();
|
mRectBG.rect.x = mPosX - (mText->getHeight() / 2); // - mSelectorSprite.getWidth();
|
||||||
|
|
||||||
// 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 i el padding
|
||||||
mRectBG.rect.y = mPosY - (mText->getSize() / 2) - mVerticalPadding;
|
mRectBG.rect.y = mPosY - (mText->getHeight() / 2) - mVerticalPadding;
|
||||||
|
|
||||||
// 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 = (mText->getSize() * 1) + 1;
|
mSelector.rect.h = (mText->getHeight() * 1) + 1;
|
||||||
mSelector.rect.w = mRectBG.rect.w;
|
mSelector.rect.w = mRectBG.rect.w;
|
||||||
mSelector.rect.x = mRectBG.rect.x;
|
mSelector.rect.x = mRectBG.rect.x;
|
||||||
}
|
}
|
||||||
@@ -402,9 +379,6 @@ void Menu::centerMenuElements()
|
|||||||
//mItem[i].x = (mCenter - ((mText->lenght(mItem[i].label, 0)) / 2));
|
//mItem[i].x = (mCenter - ((mText->lenght(mItem[i].label, 0)) / 2));
|
||||||
mItem[i].x = (mCenter - (mItem[i].w / 2));
|
mItem[i].x = (mCenter - (mItem[i].w / 2));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mueve el grafico del selector al elemento seleccionado
|
|
||||||
//moveSelectorSprite(mSelector.index);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Añade un item al menu
|
// Añade un item al menu
|
||||||
@@ -415,7 +389,7 @@ void Menu::addItem(std::string text, const Uint8 hPaddingUp, const Uint8 hPaddin
|
|||||||
{
|
{
|
||||||
mItem[mTotalItems].label = text;
|
mItem[mTotalItems].label = text;
|
||||||
mItem[mTotalItems].w = mText->lenght(mItem[mTotalItems].label, 0);
|
mItem[mTotalItems].w = mText->lenght(mItem[mTotalItems].label, 0);
|
||||||
mItem[mTotalItems].h = mText->getSize() + (mVerticalPadding * 2);
|
mItem[mTotalItems].h = mText->getHeight() + (mVerticalPadding * 2);
|
||||||
mItem[mTotalItems].x = mPosX;
|
mItem[mTotalItems].x = mPosX;
|
||||||
mItem[mTotalItems].y = mPosY;
|
mItem[mTotalItems].y = mPosY;
|
||||||
mItem[mTotalItems].hPaddingUp = hPaddingUp;
|
mItem[mTotalItems].hPaddingUp = hPaddingUp;
|
||||||
@@ -428,7 +402,7 @@ void Menu::addItem(std::string text, const Uint8 hPaddingUp, const Uint8 hPaddin
|
|||||||
{
|
{
|
||||||
mItem[mTotalItems].label = text;
|
mItem[mTotalItems].label = text;
|
||||||
mItem[mTotalItems].w = mText->lenght(mItem[mTotalItems].label, 0);
|
mItem[mTotalItems].w = mText->lenght(mItem[mTotalItems].label, 0);
|
||||||
mItem[mTotalItems].h = mText->getSize() + (mVerticalPadding * 2);
|
mItem[mTotalItems].h = mText->getHeight() + (mVerticalPadding * 2);
|
||||||
mItem[mTotalItems].x = mPosX;
|
mItem[mTotalItems].x = mPosX;
|
||||||
mItem[mTotalItems].y = mItem[mTotalItems - 1].y + mItem[mTotalItems - 1].h + mItem[mTotalItems - 1].hPaddingDown;
|
mItem[mTotalItems].y = mItem[mTotalItems - 1].y + mItem[mTotalItems - 1].h + mItem[mTotalItems - 1].hPaddingDown;
|
||||||
mItem[mTotalItems].hPaddingUp = hPaddingUp;
|
mItem[mTotalItems].hPaddingUp = hPaddingUp;
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ public:
|
|||||||
|
|
||||||
// Establece el color del rectangulo del selector
|
// Establece el color del rectangulo del selector
|
||||||
void setSelectorColor(int r, int g, int b, int alpha);
|
void setSelectorColor(int r, int g, int b, int alpha);
|
||||||
|
|
||||||
// Establece el color del texto del selector
|
// Establece el color del texto del selector
|
||||||
void setSelectorTextColor(int r, int g, int b);
|
void setSelectorTextColor(int r, int g, int b);
|
||||||
|
|
||||||
@@ -97,38 +97,28 @@ private:
|
|||||||
// Obtiene la anchura del elemento más ancho del menu
|
// Obtiene la anchura del elemento más ancho del menu
|
||||||
Uint16 getWidestItem();
|
Uint16 getWidestItem();
|
||||||
|
|
||||||
// Posicion X/Y del texto del primer elemento del menu
|
bool mAreElementsCentered; // Variable para saber si los elementos del menu van centrados respecto a este
|
||||||
int mPosX; // En esta posición se pinta la primera letra del primer elemento
|
bool mIsCentered; // Variable para saber si el menu debe estar centrado respecto a un punto
|
||||||
int mPosY;
|
int mCenter; // Centro del menu
|
||||||
|
int mPosX; // En esta posición del eje X se pinta la primera letra del primer elemento
|
||||||
// Nombre del menu
|
int mPosY; // En esta posición del eje Y se pinta la primera letra del primer elemento
|
||||||
std::string mName;
|
SDL_Renderer *mRenderer; // Puntero al renderizador de la ventana
|
||||||
|
std::string mName; // Nombre del menu
|
||||||
// Numero de items del menu
|
Text *mText; // Objeto de texto para poder escribir los items del menu
|
||||||
Uint8 mTotalItems;
|
Uint16 mWidestItem; // Anchura del elemento más ancho
|
||||||
|
Uint8 mBackgroundType; // Tipo de fondo para el menu, visible o no
|
||||||
// Item del menu que ha sido seleccionado
|
Uint8 mDefaultActionWhenCancel; // Item del menu que se selecciona cuando se cancela el menu
|
||||||
Uint8 mItemSelected;
|
Uint8 mItemSelected; // Item del menu que ha sido seleccionado
|
||||||
|
Uint8 mTotalItems; // Numero de items del menu
|
||||||
// Item del menu seleccionado cuando se cancela el menu
|
Uint8 mVerticalPadding; // Espacio de separacion entre items
|
||||||
Uint8 mDefaultActionWhenCancel;
|
|
||||||
|
|
||||||
// Espacio de separacion entre items
|
|
||||||
Uint8 mVerticalPadding;
|
|
||||||
|
|
||||||
// Tipo de fondo para el menu
|
|
||||||
Uint8 mBackgroundType;
|
|
||||||
|
|
||||||
// Sprite con los graficos del selector
|
|
||||||
//Sprite mSelectorSprite;
|
|
||||||
|
|
||||||
struct rectangle
|
struct rectangle
|
||||||
{
|
{
|
||||||
SDL_Rect rect;
|
SDL_Rect rect; // Rectangulo
|
||||||
Uint8 r; // Rojo
|
Uint8 r; // Rojo
|
||||||
Uint8 g; // Verde
|
Uint8 g; // Verde
|
||||||
Uint8 b; // Azul
|
Uint8 b; // Azul
|
||||||
Uint8 a; // Transparencia
|
Uint8 a; // Transparencia
|
||||||
};
|
};
|
||||||
|
|
||||||
rectangle mRectBG; // Rectangulo de fondo del menu
|
rectangle mRectBG; // Rectangulo de fondo del menu
|
||||||
@@ -136,35 +126,17 @@ private:
|
|||||||
// Estructura para cada elemento del menu
|
// Estructura para cada elemento del menu
|
||||||
struct item
|
struct item
|
||||||
{
|
{
|
||||||
std::string label;
|
std::string label; // Texto del elemento
|
||||||
int x;
|
int x; // Posición en el eje X donde se empieza a escribir el texto
|
||||||
int y;
|
int y; // Posición en el eje Y donde se empieza a escribir el texto
|
||||||
Uint8 w;
|
Uint8 w; // Anchura del elemento
|
||||||
Uint8 h;
|
Uint8 h; // Altura del elemento
|
||||||
Uint8 hPaddingUp;
|
Uint8 hPaddingUp; // Espacio vacío arriba
|
||||||
Uint8 hPaddingDown;
|
Uint8 hPaddingDown; // Espacio vacío abajo
|
||||||
};
|
};
|
||||||
|
|
||||||
item mItem[10];
|
item mItem[10];
|
||||||
|
|
||||||
// Texto para poder escribir los items del menu
|
|
||||||
Text *mText;
|
|
||||||
|
|
||||||
// Puntero al renderizador de la ventana
|
|
||||||
SDL_Renderer *mRenderer;
|
|
||||||
|
|
||||||
// Variable para saber si el menu debe estar centrado respecto a un punto
|
|
||||||
bool mIsCentered;
|
|
||||||
|
|
||||||
// Centro del menu
|
|
||||||
int mCenter;
|
|
||||||
|
|
||||||
// Variable para saber si los elementos van centrados
|
|
||||||
bool mAreElementsCentered;
|
|
||||||
|
|
||||||
// Anchura del elemento más ancho
|
|
||||||
Uint16 mWidestItem;
|
|
||||||
|
|
||||||
struct selector
|
struct selector
|
||||||
{
|
{
|
||||||
double origin; // Coordenada de origen
|
double origin; // Coordenada de origen
|
||||||
@@ -174,14 +146,14 @@ private:
|
|||||||
double despY; // (target - origin) / numJumps
|
double despY; // (target - origin) / numJumps
|
||||||
bool moving; // Indica si el selector está avanzando hacia el destino
|
bool moving; // Indica si el selector está avanzando hacia el destino
|
||||||
Uint8 index; // Elemento del menu que tiene el foco
|
Uint8 index; // Elemento del menu que tiene el foco
|
||||||
SDL_Rect rect;
|
SDL_Rect rect; // Rectangulo para dibujar el selector
|
||||||
Uint8 r; // Rojo
|
Uint8 r; // Color para el selector. Rojo
|
||||||
Uint8 g; // Verde
|
Uint8 g; // Color para el selector. Verde
|
||||||
Uint8 b; // Azul
|
Uint8 b; // Color para el selector. Azul
|
||||||
Uint8 a; // Transparencia
|
Uint8 a; // Color para el selector. Transparencia
|
||||||
Uint8 itemR; // Rojo
|
Uint8 itemR; // Color para el texto seleccionado. Rojo
|
||||||
Uint8 itemG; // Verde
|
Uint8 itemG; // Color para el texto seleccionado. Verde
|
||||||
Uint8 itemB; // Azul
|
Uint8 itemB; // Color para el texto seleccionado. Azul
|
||||||
};
|
};
|
||||||
|
|
||||||
selector mSelector;
|
selector mSelector;
|
||||||
|
|||||||
Reference in New Issue
Block a user