63 lines
2.1 KiB
C++
63 lines
2.1 KiB
C++
#pragma once
|
||
|
||
#include <string>
|
||
#include <array>
|
||
#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<int, MAX_NAME_LENGHT> 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_; }
|
||
}; |