#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