Ja duplica la ultima lletra al posar el nom
This commit is contained in:
@@ -15,7 +15,7 @@ void EnterName::init()
|
|||||||
|
|
||||||
// Inicia la lista de caracteres permitidos
|
// Inicia la lista de caracteres permitidos
|
||||||
character_list_ = " ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-+-*/=?¿<>!\"#$%&/()";
|
character_list_ = " ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-+-*/=?¿<>!\"#$%&/()";
|
||||||
pos_ = 0;
|
position_ = 0;
|
||||||
num_characters_ = (int)character_list_.size();
|
num_characters_ = (int)character_list_.size();
|
||||||
|
|
||||||
// Pone la lista de indices para que refleje el nombre
|
// Pone la lista de indices para que refleje el nombre
|
||||||
@@ -26,26 +26,27 @@ void EnterName::init()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Incrementa la posición
|
// Incrementa la posición
|
||||||
void EnterName::incPos()
|
void EnterName::incPosition()
|
||||||
{
|
{
|
||||||
pos_++;
|
position_++;
|
||||||
pos_ = std::min(pos_, NAME_LENGHT - 1);
|
position_ = std::min(position_, NAME_LENGHT - 1);
|
||||||
|
checkIfPositionHasBeenUsed();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Decrementa la posición
|
// Decrementa la posición
|
||||||
void EnterName::decPos()
|
void EnterName::decPosition()
|
||||||
{
|
{
|
||||||
pos_--;
|
position_--;
|
||||||
pos_ = std::max(pos_, 0);
|
position_ = std::max(position_, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Incrementa el índice
|
// Incrementa el índice
|
||||||
void EnterName::incIndex()
|
void EnterName::incIndex()
|
||||||
{
|
{
|
||||||
++character_index_[pos_];
|
++character_index_[position_];
|
||||||
if (character_index_[pos_] >= num_characters_)
|
if (character_index_[position_] >= num_characters_)
|
||||||
{
|
{
|
||||||
character_index_[pos_] = 0;
|
character_index_[position_] = 0;
|
||||||
}
|
}
|
||||||
updateName();
|
updateName();
|
||||||
}
|
}
|
||||||
@@ -53,15 +54,15 @@ void EnterName::incIndex()
|
|||||||
// Decrementa el índice
|
// Decrementa el índice
|
||||||
void EnterName::decIndex()
|
void EnterName::decIndex()
|
||||||
{
|
{
|
||||||
--character_index_[pos_];
|
--character_index_[position_];
|
||||||
if (character_index_[pos_] < 0)
|
if (character_index_[position_] < 0)
|
||||||
{
|
{
|
||||||
character_index_[pos_] = num_characters_ - 1;
|
character_index_[position_] = num_characters_ - 1;
|
||||||
}
|
}
|
||||||
updateName();
|
updateName();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Actualiza la variable
|
// Actualiza el nombre a partir de la lista de índices
|
||||||
void EnterName::updateName()
|
void EnterName::updateName()
|
||||||
{
|
{
|
||||||
name_.clear();
|
name_.clear();
|
||||||
@@ -74,16 +75,18 @@ void EnterName::updateName()
|
|||||||
// Actualiza la variable
|
// Actualiza la variable
|
||||||
void EnterName::updateCharacterIndex()
|
void EnterName::updateCharacterIndex()
|
||||||
{
|
{
|
||||||
// Rellena de espacios
|
// Rellena de espacios y marca como no usados
|
||||||
for (int i = 0; i < NAME_LENGHT; ++i)
|
for (int i = 0; i < NAME_LENGHT; ++i)
|
||||||
{
|
{
|
||||||
character_index_[i] = 0;
|
character_index_[i] = 0;
|
||||||
|
position_has_been_used_[i] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Coloca los índices en funcion de los caracteres que forman el nombre
|
// Coloca los índices en funcion de los caracteres que forman el nombre
|
||||||
for (int i = 0; i < (int)name_.size(); ++i)
|
for (int i = 0; i < (int)name_.size(); ++i)
|
||||||
{
|
{
|
||||||
character_index_[i] = findIndex(name_.at(i));
|
character_index_[i] = findIndex(name_.at(i));
|
||||||
|
position_has_been_used_[i] = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -107,7 +110,21 @@ std::string EnterName::getName() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Obtiene la posición que se está editando
|
// Obtiene la posición que se está editando
|
||||||
int EnterName::getPos() const
|
int EnterName::getPosition() const
|
||||||
{
|
{
|
||||||
return pos_;
|
return position_;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Comprueba la posición y copia el caracter si es necesario
|
||||||
|
void EnterName::checkIfPositionHasBeenUsed()
|
||||||
|
{
|
||||||
|
auto used = position_has_been_used_[position_];
|
||||||
|
|
||||||
|
if (!used && position_ > 0)
|
||||||
|
{
|
||||||
|
character_index_[position_] = character_index_[position_ - 1];
|
||||||
|
}
|
||||||
|
|
||||||
|
position_has_been_used_[position_] = true;
|
||||||
|
updateName();
|
||||||
}
|
}
|
||||||
@@ -18,11 +18,12 @@ class EnterName
|
|||||||
private:
|
private:
|
||||||
std::string character_list_; // Lista de todos los caracteres permitidos
|
std::string character_list_; // Lista de todos los caracteres permitidos
|
||||||
std::string name_; // Nombre introducido
|
std::string name_; // Nombre introducido
|
||||||
int pos_; // Posición a editar del nombre
|
int position_; // Posición a editar del nombre
|
||||||
int num_characters_; // Cantidad de caracteres de la lista de caracteres
|
int num_characters_; // Cantidad de caracteres de la lista de caracteres
|
||||||
int character_index_[NAME_LENGHT]; // Indice de la lista para cada uno de los caracteres que forman el nombre
|
int character_index_[NAME_LENGHT]; // Indice de la lista para cada uno de los caracteres que forman el nombre
|
||||||
|
bool position_has_been_used_[NAME_LENGHT]; // Indica si en esa posición se ha puesto ya alguna letra. Se utiliza para replicar la letra anterior la primera vez
|
||||||
|
|
||||||
// Actualiza la variable
|
// Actualiza el nombre a partir de la lista de índices
|
||||||
void updateName();
|
void updateName();
|
||||||
|
|
||||||
// Actualiza la variable
|
// Actualiza la variable
|
||||||
@@ -31,6 +32,9 @@ private:
|
|||||||
// Encuentra el indice de un caracter en "characterList"
|
// Encuentra el indice de un caracter en "characterList"
|
||||||
int findIndex(char character);
|
int findIndex(char character);
|
||||||
|
|
||||||
|
// Comprueba la posición y copia el caracter si es necesario
|
||||||
|
void checkIfPositionHasBeenUsed();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Constructor
|
// Constructor
|
||||||
EnterName();
|
EnterName();
|
||||||
@@ -42,10 +46,10 @@ public:
|
|||||||
void init();
|
void init();
|
||||||
|
|
||||||
// Incrementa la posición
|
// Incrementa la posición
|
||||||
void incPos();
|
void incPosition();
|
||||||
|
|
||||||
// Decrementa la posición
|
// Decrementa la posición
|
||||||
void decPos();
|
void decPosition();
|
||||||
|
|
||||||
// Incrementa el índice
|
// Incrementa el índice
|
||||||
void incIndex();
|
void incIndex();
|
||||||
@@ -57,5 +61,5 @@ public:
|
|||||||
std::string getName() const;
|
std::string getName() const;
|
||||||
|
|
||||||
// Obtiene la posición que se está editando
|
// Obtiene la posición que se está editando
|
||||||
int getPos() const;
|
int getPosition() const;
|
||||||
};
|
};
|
||||||
@@ -1,166 +0,0 @@
|
|||||||
#ifdef JA_USESDLMIXER
|
|
||||||
#include "jail_audio.h"
|
|
||||||
#include <SDL2/SDL.h>
|
|
||||||
#include <SDL2/SDL_mixer.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
struct JA_Sound_t {}; // Dummy structs
|
|
||||||
struct JA_Music_t {};
|
|
||||||
|
|
||||||
int JA_freq {48000};
|
|
||||||
SDL_AudioFormat JA_format {AUDIO_S16};
|
|
||||||
Uint8 JA_channels {2};
|
|
||||||
int JA_musicVolume = 128;
|
|
||||||
int JA_soundVolume = 64;
|
|
||||||
bool JA_musicEnabled = true;
|
|
||||||
bool JA_soundEnabled = true;
|
|
||||||
|
|
||||||
void JA_Init(const int freq, const SDL_AudioFormat format, const int channels) {
|
|
||||||
JA_freq = freq;
|
|
||||||
JA_format = format;
|
|
||||||
JA_channels = channels;
|
|
||||||
Mix_OpenAudio(JA_freq, JA_format, JA_channels, 1024);
|
|
||||||
}
|
|
||||||
|
|
||||||
void JA_Quit() {
|
|
||||||
Mix_CloseAudio();
|
|
||||||
}
|
|
||||||
|
|
||||||
JA_Music_t *JA_LoadMusic(const char* filename) {
|
|
||||||
return (JA_Music_t*)Mix_LoadMUS(filename);
|
|
||||||
}
|
|
||||||
|
|
||||||
void JA_PlayMusic(JA_Music_t *music, const int loop)
|
|
||||||
{
|
|
||||||
if (!JA_musicEnabled) return;
|
|
||||||
Mix_PlayMusic((Mix_Music*)music, loop);
|
|
||||||
Mix_VolumeMusic(JA_musicVolume);
|
|
||||||
}
|
|
||||||
|
|
||||||
void JA_PauseMusic()
|
|
||||||
{
|
|
||||||
if (!JA_musicEnabled) return;
|
|
||||||
Mix_PauseMusic();
|
|
||||||
}
|
|
||||||
|
|
||||||
void JA_ResumeMusic()
|
|
||||||
{
|
|
||||||
if (!JA_musicEnabled) return;
|
|
||||||
Mix_ResumeMusic();
|
|
||||||
}
|
|
||||||
|
|
||||||
void JA_StopMusic()
|
|
||||||
{
|
|
||||||
if (!JA_musicEnabled) return;
|
|
||||||
Mix_HaltMusic();
|
|
||||||
}
|
|
||||||
|
|
||||||
JA_Music_state JA_GetMusicState()
|
|
||||||
{
|
|
||||||
if (!JA_musicEnabled) return JA_MUSIC_DISABLED;
|
|
||||||
|
|
||||||
if (Mix_PausedMusic()) {
|
|
||||||
return JA_MUSIC_PAUSED;
|
|
||||||
} else if (Mix_PlayingMusic()) {
|
|
||||||
return JA_MUSIC_PLAYING;
|
|
||||||
} else {
|
|
||||||
return JA_MUSIC_STOPPED;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void JA_DeleteMusic(JA_Music_t *music)
|
|
||||||
{
|
|
||||||
Mix_FreeMusic((Mix_Music*)music);
|
|
||||||
}
|
|
||||||
|
|
||||||
int JA_SetMusicVolume(int volume)
|
|
||||||
{
|
|
||||||
JA_musicVolume = volume;
|
|
||||||
Mix_VolumeMusic(JA_musicVolume);
|
|
||||||
return JA_musicVolume;
|
|
||||||
}
|
|
||||||
|
|
||||||
void JA_EnableMusic(const bool value)
|
|
||||||
{
|
|
||||||
if (Mix_PlayingMusic()) Mix_HaltMusic();
|
|
||||||
JA_musicEnabled = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
JA_Sound_t *JA_NewSound(Uint8* buffer, Uint32 length)
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
JA_Sound_t *JA_LoadSound(const char* filename) {
|
|
||||||
JA_Sound_t *sound = (JA_Sound_t*)Mix_LoadWAV(filename);
|
|
||||||
return sound;
|
|
||||||
}
|
|
||||||
|
|
||||||
int JA_PlaySound(JA_Sound_t *sound, const int loop) {
|
|
||||||
if (!JA_soundEnabled) return -1;
|
|
||||||
const int channel = Mix_PlayChannel(-1, (Mix_Chunk*)sound, loop);
|
|
||||||
Mix_Volume(-1, JA_soundVolume);
|
|
||||||
return channel;
|
|
||||||
}
|
|
||||||
|
|
||||||
void JA_DeleteSound(JA_Sound_t *sound)
|
|
||||||
{
|
|
||||||
Mix_FreeChunk((Mix_Chunk*)sound);
|
|
||||||
}
|
|
||||||
|
|
||||||
void JA_PauseChannel(const int channel)
|
|
||||||
{
|
|
||||||
if (!JA_soundEnabled) return;
|
|
||||||
Mix_Pause(channel);
|
|
||||||
}
|
|
||||||
|
|
||||||
void JA_ResumeChannel(const int channel)
|
|
||||||
{
|
|
||||||
if (!JA_soundEnabled) return;
|
|
||||||
Mix_Resume(channel);
|
|
||||||
}
|
|
||||||
|
|
||||||
void JA_StopChannel(const int channel)
|
|
||||||
{
|
|
||||||
if (!JA_soundEnabled) return;
|
|
||||||
Mix_HaltChannel(channel);
|
|
||||||
}
|
|
||||||
|
|
||||||
JA_Channel_state JA_GetChannelState(const int channel)
|
|
||||||
{
|
|
||||||
if (!JA_soundEnabled) return JA_SOUND_DISABLED;
|
|
||||||
|
|
||||||
if (Mix_Paused(channel)) {
|
|
||||||
return JA_CHANNEL_PAUSED;
|
|
||||||
} else if (Mix_Playing(channel)) {
|
|
||||||
return JA_CHANNEL_PLAYING;
|
|
||||||
} else {
|
|
||||||
return JA_CHANNEL_FREE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int JA_SetSoundVolume(int volume)
|
|
||||||
{
|
|
||||||
JA_musicVolume = volume;
|
|
||||||
Mix_Volume(-1, JA_musicVolume);
|
|
||||||
return JA_musicVolume;
|
|
||||||
}
|
|
||||||
|
|
||||||
void JA_EnableSound(const bool value)
|
|
||||||
{
|
|
||||||
Mix_HaltChannel(-1);
|
|
||||||
JA_soundEnabled = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int JA_SetVolume(int volume)
|
|
||||||
{
|
|
||||||
JA_SetSoundVolume(volume);
|
|
||||||
return JA_SetMusicVolume(volume);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -149,11 +149,11 @@ void Player::setInputEnteringName(InputType input)
|
|||||||
switch (input)
|
switch (input)
|
||||||
{
|
{
|
||||||
case InputType::LEFT:
|
case InputType::LEFT:
|
||||||
enter_name_->decPos();
|
enter_name_->decPosition();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case InputType::RIGHT:
|
case InputType::RIGHT:
|
||||||
enter_name_->incPos();
|
enter_name_->incPosition();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case InputType::UP:
|
case InputType::UP:
|
||||||
@@ -763,7 +763,7 @@ int Player::getRecordNamePos() const
|
|||||||
{
|
{
|
||||||
if (enter_name_)
|
if (enter_name_)
|
||||||
{
|
{
|
||||||
return enter_name_->getPos();
|
return enter_name_->getPosition();
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user