treball en curs: correccions de tidy

This commit is contained in:
2026-05-16 17:45:32 +02:00
parent ee2dd0bc2c
commit 9f6d38cf48
22 changed files with 813 additions and 1074 deletions
+104 -182
View File
@@ -24,6 +24,56 @@ constexpr int MENU_NO_OPTION = -1;
// Clase Menu
class Menu {
public:
explicit Menu(SDL_Renderer *renderer, const std::string &file = ""); // Constructor
~Menu(); // Destructor
auto loadFromBytes(const std::vector<uint8_t> &bytes, const std::string &name_for_logs = "") -> bool; // Carga el menu desde bytes en memoria
void loadAudioFile(const std::string &file, int sound); // Carga los ficheros de audio
[[nodiscard]] auto getName() const -> const std::string &; // Obtiene el nombre del menu
auto getItemSelected() -> int; // Obtiene el valor de la variable
void reset(); // Deja el menu apuntando al primer elemento
void checkInput(); // Gestiona la entrada de teclado y mando durante el menu
void update(); // Actualiza la logica del menu
void render(); // Pinta el menu en pantalla
void setBackgroundColor(Color color, int alpha); // Establece el color del rectangulo de fondo
void setSelectorColor(Color color, int alpha); // Establece el color del rectangulo del selector
void setSelectorTextColor(Color color); // Establece el color del texto del selector
void centerMenuOnX(int value = 0); // Centra el menu respecto a un punto en el eje X
void centerMenuOnY(int value); // Centra el menu respecto a un punto en el eje Y
void centerMenuElementsOnX(); // Centra los elementos del menu en el eje X
struct Item {
std::string label; // Texto
SDL_Rect rect; // Rectangulo que delimita el elemento
int h_padding_down; // Espaciado bajo el elemento
bool selectable; // Indica si se puede seleccionar
bool greyed; // Indica si ha de aparecer con otro color mas oscuro
bool linked_down; // Indica si el elemento actual y el siguiente se tratan como uno solo. Afecta al selector
bool linked_up; // Indica si el elemento actual y el anterior se tratan como uno solo. Afecta al selector
bool visible; // Indica si el elemento es visible
bool line; // Indica si el elemento lleva una linea a continuación
};
void addItem(Item new_item); // Añade un item al menu
void setItemCaption(int index, const std::string &text); // Cambia el texto de un item
void setDefaultActionWhenCancel(int item); // Establece el indice del item que se usará por defecto al cancelar el menu
void setSelectorPos(int index); // Coloca el selector en una posición específica
void setSelectable(int index, bool value); // Establece el estado seleccionable de un item
void setGreyed(int index, bool value); // Establece el estado agrisado de un item
void setLinkedDown(int index, bool value); // Establece el estado de enlace de un item
void setVisible(int index, bool value); // Establece el estado de visibilidad de un item
void setName(const std::string &name); // Establece el nombre del menu
void setPos(int x, int y); // Establece la posición del menu
void setBackgroundType(int value); // Establece el tipo de fondo del menu
void setText(const std::string &font_png, const std::string &font_txt); // Establece la fuente de texto que se utilizará
void setRectSize(int w = 0, int h = 0); // Establece el rectangulo de fondo del menu
private:
struct Rectangle {
SDL_Rect rect; // Rectangulo
@@ -31,200 +81,72 @@ class Menu {
int a; // Transparencia
};
struct Item {
std::string label; // Texto
SDL_Rect rect; // Rectangulo que delimita el elemento
int hPaddingDown; // Espaciado bajo el elemento
bool selectable; // Indica si se puede seleccionar
bool greyed; // Indica si ha de aparecer con otro color mas oscuro
bool linkedDown; // Indica si el elemento actual y el siguiente se tratan como uno solo. Afecta al selector
bool linkedUp; // Indica si el elemento actual y el anterior se tratan como uno solo. Afecta al selector
bool visible; // Indica si el elemento es visible
bool line; // Indica si el elemento lleva una linea a continuación
};
struct Selector {
float originY; // Coordenada de origen
float targetY; // Coordenada de destino
float despY; // Cantidad de pixeles que se desplaza el selector en cada salto: (target - origin) / numJumps
float origin_y; // Coordenada de origen
float target_y; // Coordenada de destino
float desp_y; // Cantidad de pixeles que se desplaza el selector en cada salto: (target - origin) / numJumps
bool moving; // Indica si el selector está avanzando hacia el destino
float originH; // Altura de origen
float targetH; // Altura de destino
float incH; // Cantidad de pixels que debe incrementar o decrementar el selector en cada salto
float origin_h; // Altura de origen
float target_h; // Altura de destino
float inc_h; // Cantidad de pixels que debe incrementar o decrementar el selector en cada salto
bool resizing; // Indica si el selector está cambiando de tamaño
float y; // Coordenada actual, usado para el desplazamiento
float h; // Altura actual, usado para el cambio de tamaño
int numJumps; // Numero de pasos preestablecido para llegar al destino
int num_jumps; // Numero de pasos preestablecido para llegar al destino
int index; // Elemento del menu que tiene el foco
int previousIndex; // Elemento que tenia el foco previamente
Color previousItemColor; // Color del item nque tenia el foco previamente
int previous_index; // Elemento que tenia el foco previamente
Color previous_item_color; // Color del item nque tenia el foco previamente
SDL_Rect rect; // Rectangulo del selector
Color color; // Color del selector
Color itemColor; // Color del item
Color jumpItemColors[8]; // Transición de colores para el item seleccionado
int itemColorIndex; // Indice del color de transición para el item seleccionado
Color item_color; // Color del item
Color jump_item_colors[8]; // Transición de colores para el item seleccionado
int item_color_index; // Indice del color de transición para el item seleccionado
int a; // Cantidad de transparencia para el rectangulo del selector
};
auto load(const std::string &file_path) -> bool; // Carga la configuración del menu desde un archivo de texto
auto parseFromStream(std::istream &file, const std::string &filename) -> bool; // Parser compartido (recibe cualquier istream)
auto setVars(const std::string &var, const std::string &value) -> bool; // Asigna variables a partir de dos cadenas
static auto setItem(Item *item, const std::string &var, const std::string &value) -> bool; // Asigna variables a partir de dos cadenas
void reorganize(); // Actualiza el menu para recolocarlo correctamente y establecer el tamaño
void increaseSelectorIndex(); // Deja el menu apuntando al siguiente elemento
void decreaseSelectorIndex(); // Deja el menu apuntando al elemento anterior
void updateSelector(); // Actualiza la posicion y el estado del selector
auto getWidestItem() -> int; // Obtiene la anchura del elemento más ancho del menu
void checkMenuInput(Menu *menu); // Gestiona la entrada de teclado y mando durante el menu
auto findWidth() -> int; // Calcula el ancho del menu
auto findHeight() -> int; // Calcula el alto del menu
void replaceElementsOnY(); // Recoloca los elementos del menu en el eje Y
auto getSelectorHeight(int value) -> int; // Calcula la altura del selector
void setSelectorItemColors(); // Calcula los colores del selector para el degradado
// Objetos y punteros
SDL_Renderer *renderer; // Puntero al renderizador de la ventana
Text *text; // Texto para poder escribir los items del menu
SDL_Renderer *renderer_; // Puntero al renderizador de la ventana
Text *text_; // Texto para poder escribir los items del menu
// Variables
std::string name; // Nombre del menu
int x; // Posición en el eje X de la primera letra del primer elemento
int y; // Posición en el eje Y de la primera letra del primer elemento
int h; // Altura del menu
int w; // Anchura del menu
int itemSelected; // Índice del item del menu que ha sido seleccionado
int defaultActionWhenCancel; // Indice del item del menu que se selecciona cuando se cancela el menu
int backgroundType; // Tipo de fondo para el menu
int centerX; // Centro del menu en el eje X
int centerY; // Centro del menu en el eje Y
bool isCenteredOnX; // Variable para saber si el menu debe estar centrado respecto a un punto en el eje X
bool isCenteredOnY; // Variable para saber si el menu debe estar centrado respecto a un punto en el eje Y
bool areElementsCenteredOnX; // Variable para saber si los elementos van centrados en el eje X
int widestItem; // Anchura del elemento más ancho
JA_Sound_t *soundAccept; // Sonido al aceptar o elegir una opción del menu
JA_Sound_t *soundCancel; // Sonido al cancelar el menu
JA_Sound_t *soundMove; // Sonido al mover el selector
Color colorGreyed; // Color para los elementos agrisados
Rectangle rectBG; // Rectangulo de fondo del menu
std::vector<Item> item; // Estructura para cada elemento del menu
Selector selector; // Variables para pintar el selector del menu
std::string font_png;
std::string font_txt;
// Carga la configuración del menu desde un archivo de texto
auto load(const std::string &file_path) -> bool;
// Parser compartido (recibe cualquier istream)
auto parseFromStream(std::istream &file, const std::string &filename) -> bool;
// Asigna variables a partir de dos cadenas
auto setVars(const std::string &var, const std::string &value) -> bool;
// Asigna variables a partir de dos cadenas
static auto setItem(Item *item, const std::string &var, const std::string &value) -> bool;
// Actualiza el menu para recolocarlo correctamente y establecer el tamaño
void reorganize();
// Deja el menu apuntando al siguiente elemento
void increaseSelectorIndex();
// Deja el menu apuntando al elemento anterior
void decreaseSelectorIndex();
// Actualiza la posicion y el estado del selector
void updateSelector();
// Obtiene la anchura del elemento más ancho del menu
auto getWidestItem() -> int;
// Gestiona la entrada de teclado y mando durante el menu
void checkMenuInput(Menu *menu);
// Calcula el ancho del menu
auto findWidth() -> int;
// Calcula el alto del menu
auto findHeight() -> int;
// Recoloca los elementos del menu en el eje Y
void replaceElementsOnY();
// Calcula la altura del selector
auto getSelectorHeight(int value) -> int;
// Calcula los colores del selector para el degradado
void setSelectorItemColors();
public:
// Constructor
explicit Menu(SDL_Renderer *renderer, const std::string &file = "");
// Destructor
~Menu();
// Carga el menu desde bytes en memoria
auto loadFromBytes(const std::vector<uint8_t> &bytes, const std::string &nameForLogs = "") -> bool;
// Carga los ficheros de audio
void loadAudioFile(const std::string &file, int sound);
// Obtiene el nombre del menu
[[nodiscard]] auto getName() const -> const std::string &;
// Obtiene el valor de la variable
auto getItemSelected() -> int;
// Deja el menu apuntando al primer elemento
void reset();
// Gestiona la entrada de teclado y mando durante el menu
void checkInput();
// Actualiza la logica del menu
void update();
// Pinta el menu en pantalla
void render();
// Establece el color del rectangulo de fondo
void setBackgroundColor(Color color, int alpha);
// Establece el color del rectangulo del selector
void setSelectorColor(Color color, int alpha);
// Establece el color del texto del selector
void setSelectorTextColor(Color color);
// Centra el menu respecto a un punto en el eje X
void centerMenuOnX(int value = 0);
// Centra el menu respecto a un punto en el eje Y
void centerMenuOnY(int value);
// Centra los elementos del menu en el eje X
void centerMenuElementsOnX();
// Añade un item al menu
void addItem(Item new_item);
// Cambia el texto de un item
void setItemCaption(int index, const std::string &text);
// Establece el indice del item que se usará por defecto al cancelar el menu
void setDefaultActionWhenCancel(int item);
// Coloca el selector en una posición específica
void setSelectorPos(int index);
// Establece el estado seleccionable de un item
void setSelectable(int index, bool value);
// Establece el estado agrisado de un item
void setGreyed(int index, bool value);
// Establece el estado de enlace de un item
void setLinkedDown(int index, bool value);
// Establece el estado de visibilidad de un item
void setVisible(int index, bool value);
// Establece el nombre del menu
void setName(const std::string &name);
// Establece la posición del menu
void setPos(int x, int y);
// Establece el tipo de fondo del menu
void setBackgroundType(int value);
// Establece la fuente de texto que se utilizará
void setText(const std::string &font_png, const std::string &font_txt);
// Establece el rectangulo de fondo del menu
void setRectSize(int w = 0, int h = 0);
std::string name_; // Nombre del menu
int x_; // Posición en el eje X de la primera letra del primer elemento
int y_; // Posición en el eje Y de la primera letra del primer elemento
int h_; // Altura del menu
int w_; // Anchura del menu
int item_selected_; // Índice del item del menu que ha sido seleccionado
int default_action_when_cancel_; // Indice del item del menu que se selecciona cuando se cancela el menu
int background_type_; // Tipo de fondo para el menu
int center_x_; // Centro del menu en el eje X
int center_y_; // Centro del menu en el eje Y
bool is_centered_on_x_; // Variable para saber si el menu debe estar centrado respecto a un punto en el eje X
bool is_centered_on_y_; // Variable para saber si el menu debe estar centrado respecto a un punto en el eje Y
bool are_elements_centered_on_x_; // Variable para saber si los elementos van centrados en el eje X
int widest_item_; // Anchura del elemento más ancho
JA_Sound_t *sound_accept_; // Sonido al aceptar o elegir una opción del menu
JA_Sound_t *sound_cancel_; // Sonido al cancelar el menu
JA_Sound_t *sound_move_; // Sonido al mover el selector
Color color_greyed_; // Color para los elementos agrisados
Rectangle rect_bg_; // Rectangulo de fondo del menu
std::vector<Item> items_; // Estructura para cada elemento del menu
Selector selector_; // Variables para pintar el selector del menu
std::string font_png_;
std::string font_txt_;
};