#pragma once #include #include #include "utils.h" constexpr int MAX_NAME_LENGHT = 6; /* Un array, "characterList", contiene la lista de caracteres Un segundo array, "characterIndex", contiene el indice a "characterList" de cada una de las letras que conforman el nombre "pos" es la posición de "characterIndex" que se está modificando Izquierda o derecha modifican "pos", arriba o abajo modifican el índice de "characterIndex[pos]" Pulsar cualquier botón, mueve "pos" a la derecha. Al pulsar el botón en la ´´ultima posición se finaliza la introducción de nombres */ // Clase EnterName class EnterName { private: std::string character_list_; // Lista de todos los caracteres permitidos std::string name_; // Nombre introducido int position_ = 0; // Posición a editar del nombre bool position_overflow_ = false; // Indica si hemos incrementado la posición más allá del límite std::array character_index_; // Indice de la lista para cada uno de los caracteres que forman el nombre // Actualiza el nombre a partir de la lista de índices void updateNameFromCharacterIndex(); // Actualiza la variable void initCharacterIndex(const std::string &name); // Encuentra el indice de un caracter en "characterList" int findIndex(char character) const; public: // Constructor EnterName(); // Destructor ~EnterName() = default; // Inicializa el objeto void init(const std::string &name = ""); // Incrementa la posición void incPosition(); // Decrementa la posición void decPosition(); // Incrementa el índice void incIndex(); // Decrementa el índice void decIndex(); // Getters std::string getFinalName() const { return trim(name_.substr(0, position_)); } std::string getCurrentName() const { return trim(name_); } int getPosition() const { return position_; } bool getPositionOverflow() const { return position_overflow_; } };