Finalitzada la part de entrar nom. Falta posar un temporitzador i una animació

This commit is contained in:
2024-09-30 19:35:41 +02:00
parent 6acf0b7efc
commit 0af441b5df
5 changed files with 25 additions and 19 deletions

View File

@@ -5,7 +5,7 @@
EnterName::EnterName() EnterName::EnterName()
{ {
// Obtiene el puntero al nombre // Obtiene el puntero al nombre
name = ""; name = "A";
// Inicia la lista de caracteres permitidos // Inicia la lista de caracteres permitidos
// characterList = " ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; // characterList = " ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
@@ -15,6 +15,9 @@ EnterName::EnterName()
// Pone la lista de indices para que refleje el nombre // Pone la lista de indices para que refleje el nombre
updateCharacterIndex(); updateCharacterIndex();
// Actualiza el nombre para que ocupe 8 espacios
updateName();
} }
// Destructor // Destructor
@@ -71,11 +74,13 @@ void EnterName::updateName()
// Actualiza la variable // Actualiza la variable
void EnterName::updateCharacterIndex() void EnterName::updateCharacterIndex()
{ {
// Rellena de espacios
for (int i = 0; i < NAME_LENGHT; ++i) for (int i = 0; i < NAME_LENGHT; ++i)
{ {
characterIndex[i] = 0; characterIndex[i] = 0;
} }
// 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)
{ {
characterIndex[i] = findIndex(name.at(i)); characterIndex[i] = findIndex(name.at(i));

View File

@@ -2265,13 +2265,16 @@ void Game::checkInput()
const bool fire3 = input->checkInput(input_fire_right, INPUT_DO_NOT_ALLOW_REPEAT, options.controller[controllerIndex].deviceType, options.controller[controllerIndex].index); const bool fire3 = input->checkInput(input_fire_right, INPUT_DO_NOT_ALLOW_REPEAT, options.controller[controllerIndex].deviceType, options.controller[controllerIndex].index);
if (fire1 || fire2 || fire3) if (fire1 || fire2 || fire3)
{ {
player->setInput(input_right);
if (player->getRecordNamePos() == 7) if (player->getRecordNamePos() == 7)
{ {
player->setInput(input_start); player->setInput(input_start);
addScoreToScoreBoard(player->getRecordName(), player->getScore()); addScoreToScoreBoard(player->getRecordName(), player->getScore());
player->setStatusPlaying(PLAYER_STATUS_CONTINUE); player->setStatusPlaying(PLAYER_STATUS_CONTINUE);
} }
else
{
player->setInput(input_right);
}
} }
else if (input->checkInput(input_up, INPUT_DO_NOT_ALLOW_REPEAT, options.controller[controllerIndex].deviceType, options.controller[controllerIndex].index)) else if (input->checkInput(input_up, INPUT_DO_NOT_ALLOW_REPEAT, options.controller[controllerIndex].deviceType, options.controller[controllerIndex].index))
{ {

View File

@@ -34,6 +34,7 @@ Player::Player(int id, float x, int y, SDL_Rect *playArea, std::vector<Texture *
statusPlaying = PLAYER_STATUS_WAITING; statusPlaying = PLAYER_STATUS_WAITING;
scoreBoardPanel = 0; scoreBoardPanel = 0;
name = ""; name = "";
setRecordName(enterName->getName());
init(); init();
} }
@@ -425,7 +426,6 @@ void Player::setStatusPlaying(int value)
break; break;
case PLAYER_STATUS_ENTERING_NAME: case PLAYER_STATUS_ENTERING_NAME:
setRecordName("");
break; break;
case PLAYER_STATUS_DYING: case PLAYER_STATUS_DYING:

View File

@@ -309,26 +309,24 @@ void Scoreboard::fillPanelTextures()
// ENTER NAME // ENTER NAME
textScoreBoard->writeCentered(slot4_3.x, slot4_3.y, lang::getText(106)); textScoreBoard->writeCentered(slot4_3.x, slot4_3.y, lang::getText(106));
//color_t selectorColor = lightenColor(color, 36); SDL_Rect rect = {enterNamePos.x, enterNamePos.y, 5, 7};
color_t textColor = {0xFB, 0xF2, 0x36}; SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0xEB, 255);
SDL_Rect rect = {enterNamePos.x, enterNamePos.y, 8, 8};
for (int j = 0; j < (int)recordName[i].size(); ++j) for (int j = 0; j < (int)recordName[i].size(); ++j)
{ {
SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0xFF, 255);
SDL_RenderDrawLine(renderer, rect.x + 1, rect.y + rect.h + 1, rect.x + rect.w - 2, rect.y + rect.h + 1);
if (j == selectorPos[i]) if (j == selectorPos[i])
{ {// La letra seleccionada se pinta de forma intermitente
// SDL_SetRenderDrawColor(renderer, selectorColor.r, selectorColor.g, selectorColor.b, 255); if (counter % 3 > 0)
// SDL_RenderFillRect(renderer, &rect); {
SDL_SetRenderDrawColor(renderer, textColor.r, textColor.g, textColor.b, 255); SDL_RenderDrawLine(renderer, rect.x, rect.y + rect.h, rect.x + rect.w, rect.y + rect.h);
SDL_RenderDrawLine(renderer, rect.x + 1, rect.y + rect.h + 1, rect.x + rect.w - 2, rect.y + rect.h + 1); textScoreBoard->write(rect.x, rect.y, recordName[i].substr(j, 1));
textScoreBoard->writeColored(rect.x + 1, rect.y + 1, recordName[i].substr(j, 1), textColor); }
} }
else else
{ {
textScoreBoard->write(rect.x + 1, rect.y + 1, recordName[i].substr(j, 1)); SDL_RenderDrawLine(renderer, rect.x, rect.y + rect.h, rect.x + rect.w, rect.y + rect.h);
textScoreBoard->write(rect.x, rect.y, recordName[i].substr(j, 1));
} }
rect.x += 8; rect.x += 7;
} }
break; break;
} }
@@ -402,9 +400,9 @@ void Scoreboard::recalculateAnchors()
slot4_4 = {col, row4}; slot4_4 = {col, row4};
// Primer cuadrado para poner el nombre de record // Primer cuadrado para poner el nombre de record
const int enterNameLenght = 8 * 8; const int enterNameLenght = 8 * 7;
enterNamePos.x = (panelWidth - enterNameLenght) / 2; enterNamePos.x = (panelWidth - enterNameLenght) / 2;
enterNamePos.y = row4 - 1; enterNamePos.y = row4;
// Recoloca los sprites // Recoloca los sprites
if (powerMeterSprite) if (powerMeterSprite)

View File

@@ -68,7 +68,7 @@ Screen::Screen(SDL_Window *window, SDL_Renderer *renderer)
fpsCounter = 0; fpsCounter = 0;
fps = 0; fps = 0;
#ifdef DEBUG #ifdef DEBUG
showInfo = false; showInfo = true;
#else #else
showInfo = false; showInfo = false;
#endif #endif