101 lines
2.1 KiB
C++
101 lines
2.1 KiB
C++
#pragma once
|
|
|
|
#include "sprite.h"
|
|
#include "const.h"
|
|
#include "globals.h"
|
|
#include "text.h"
|
|
|
|
#ifndef MENU_H
|
|
#define MENU_H
|
|
|
|
// Clase menu
|
|
class Menu
|
|
{
|
|
public:
|
|
// Constructor
|
|
Menu(SDL_Renderer *gRenderer);
|
|
|
|
// Destructor
|
|
~Menu();
|
|
|
|
// Inicializador
|
|
void init(int x, int y, int offset_sprite_selector, int backgroundType);
|
|
|
|
// Obtiene el valor de la variable
|
|
Uint8 getItemSelected();
|
|
|
|
// Mueve el grafico del selector al elemento seleccionado
|
|
void moveSelectorSprite(int pos);
|
|
|
|
// Deja el menu apuntando al primer elemento
|
|
void resetMenu();
|
|
|
|
// Deja el menu apuntando al siguiente elemento
|
|
void increaseSelectorIndex();
|
|
|
|
// Deja el menu apuntando al elemento anterior
|
|
void decreaseSelectorIndex();
|
|
|
|
// Comprueba la entrada (teclado, gamepad) y actua en consecuencia
|
|
void checkInput(Uint8 input);
|
|
|
|
// Pinta el menu en pantalla
|
|
void render(Text &text);
|
|
|
|
// Establece el rectangulo de fondo del menu
|
|
void setRectSize();
|
|
|
|
// Establece el valor de la variable
|
|
void setTotalItems(int num);
|
|
|
|
// Establece el color del rectangulo de fondo
|
|
void setBackgroundColor(int r, int g, int b, int alpha);
|
|
|
|
// Centra el menu en pantalla
|
|
void centerMenuOnScreen();
|
|
|
|
// Añade un item al menu
|
|
void addItem(std::string text);
|
|
|
|
private:
|
|
// El renderizador de la ventana
|
|
SDL_Renderer *gRenderer;
|
|
|
|
LTexture *gMenuTexture;
|
|
|
|
// Posicion X/Y del texto del primer elemento del menu
|
|
int mPosX;
|
|
int mPosY;
|
|
|
|
// Elemento del menu que tiene el foco
|
|
Uint8 mSelectorIndex;
|
|
|
|
// Numero de items del menu
|
|
Uint8 mTotalItems;
|
|
|
|
// Item del menu que ha sido seleccionado
|
|
Uint8 mItemSelected;
|
|
|
|
// Tipo de fondo para el menu
|
|
Uint8 mBackgroundType;
|
|
|
|
// Sprite con los graficos del selector
|
|
Sprite mSelectorSprite;
|
|
|
|
// Rectangulo y colores para el fondo del menu
|
|
SDL_Rect mRect;
|
|
Uint8 mRectR; // Rojo
|
|
Uint8 mRectG; // Verde
|
|
Uint8 mRectB; // Azul
|
|
Uint8 mRectA; // Alfa o transparencia
|
|
|
|
// Estructura para cada elemento del menu
|
|
struct MenuItem
|
|
{
|
|
std::string label;
|
|
int x;
|
|
int y;
|
|
} mMenuItem[10];
|
|
};
|
|
|
|
#endif |