43 lines
1.9 KiB
C++
43 lines
1.9 KiB
C++
#pragma once
|
|
|
|
#include <stddef.h> // Para size_t
|
|
#include <array> // Para array
|
|
#include <string> // Para string, basic_string
|
|
|
|
#include "utils.h" // Para trim
|
|
|
|
// Tamaño máximo del nombre
|
|
constexpr size_t NAME_SIZE = 5;
|
|
|
|
// Clase EnterName
|
|
class EnterName
|
|
{
|
|
public:
|
|
EnterName();
|
|
~EnterName() = default;
|
|
|
|
void init(const std::string &name = ""); // Inicializa con un nombre opcional
|
|
|
|
void incPosition(); // Incrementa la posición del carácter actual
|
|
void decPosition(); // Decrementa la posición del carácter actual
|
|
void incIndex(); // Incrementa el índice del carácter en la lista
|
|
void decIndex(); // Decrementa el índice del carácter en la lista
|
|
|
|
std::string getFinalName(); // Obtiene el nombre final introducido
|
|
std::string getCurrentName() const { return trim(name_); } // Obtiene el nombre actual en proceso
|
|
|
|
int getPosition() const { return position_; } // Posición actual del carácter editado
|
|
bool getPositionOverflow() const { return position_overflow_; } // Indica si la posición excede el límite
|
|
|
|
private:
|
|
std::string character_list_; // Lista de caracteres permitidos
|
|
std::string name_; // Nombre en proceso
|
|
size_t position_ = 0; // Índice del carácter que se edita
|
|
bool position_overflow_ = false; // Flag para exceder límite
|
|
std::array<int, NAME_SIZE> character_index_; // Índices a "character_list_"
|
|
|
|
void updateNameFromCharacterIndex(); // Actualiza "name_" según "character_index_"
|
|
void initCharacterIndex(const std::string &name); // Inicializa índices desde el nombre
|
|
int findIndex(char character) const; // Busca el índice de un carácter en "character_list_"
|
|
static std::string getRandomName(); // Devuelve un nombre al azar
|
|
}; |