Trabajando en el marcador

This commit is contained in:
2022-09-22 22:22:27 +02:00
parent 1d9e5ff27d
commit 52d0c182f3
5 changed files with 80 additions and 5 deletions

View File

@@ -89,6 +89,10 @@ void Game::update()
// Comprueba los eventos de la cola // Comprueba los eventos de la cola
checkEventHandler(); checkEventHandler();
// Comprueba si se ha pulsado alguna tecla
if (input->checkAnyInput())
scoreboard->reset();
board.diamonds = player->diamonds; board.diamonds = player->diamonds;
// Actualiza los objetos // Actualiza los objetos

View File

@@ -130,6 +130,43 @@ bool Input::checkInput(Uint8 input, bool repeat, int device, int index)
return (successKeyboard || successGameController); return (successKeyboard || successGameController);
} }
// Comprueba si hay almenos un input activo
bool Input::checkAnyInput(int device, int index)
{
bool successKeyboard = false;
bool successGameController = false;
if (device == INPUT_USE_ANY)
index = 0;
if ((device == INPUT_USE_KEYBOARD) || (device == INPUT_USE_ANY))
{
const Uint8 *mKeystates = SDL_GetKeyboardState(NULL);
for (int i = 0; i < 17; i++)
{
if (mKeystates[keyBindings[i].scancode] != 0)
{
successKeyboard |= true;
}
}
}
if (gameControllerFound())
if ((device == INPUT_USE_GAMECONTROLLER) || (device == INPUT_USE_ANY))
{
for (int i = 0; i < 17; i++)
{
if (SDL_GameControllerGetButton(connectedControllers[index], gameControllerBindings[i].button) != 0)
{
successGameController |= true;
}
}
}
return (successKeyboard || successGameController);
}
// Comprueba si hay un mando conectado // Comprueba si hay un mando conectado
bool Input::discoverGameController() bool Input::discoverGameController()
{ {

View File

@@ -74,6 +74,9 @@ public:
// Comprueba si un input esta activo // Comprueba si un input esta activo
bool checkInput(Uint8 input, bool repeat, int device = INPUT_USE_ANY, int index = 0); bool checkInput(Uint8 input, bool repeat, int device = INPUT_USE_ANY, int index = 0);
// Comprueba si hay almenos un input activo
bool checkAnyInput(int device = INPUT_USE_ANY, int index = 0);
// Comprueba si hay algun mando conectado // Comprueba si hay algun mando conectado
bool gameControllerFound(); bool gameControllerFound();

View File

@@ -23,6 +23,7 @@ ScoreBoard::ScoreBoard(SDL_Renderer *renderer, Asset *asset, board_t *board)
// Inicializa las variables // Inicializa las variables
counter = 0; counter = 0;
state = sb_hide;
} }
// Destructor // Destructor
@@ -67,6 +68,10 @@ void ScoreBoard::fillTexture()
// Pinta el objeto en pantalla // Pinta el objeto en pantalla
void ScoreBoard::render() void ScoreBoard::render()
{ {
if (state == sb_hide)
{
return;
}
// Dibuja la textura con el marcador en pantalla // Dibuja la textura con el marcador en pantalla
SDL_Rect rect = {SCOREBOARD_X, SCOREBOARD_Y, SCOREBOARD_WIDTH, SCOREBOARD_HEIGHT}; SDL_Rect rect = {SCOREBOARD_X, SCOREBOARD_Y, SCOREBOARD_WIDTH, SCOREBOARD_HEIGHT};
SDL_RenderCopy(renderer, layer, NULL, &rect); SDL_RenderCopy(renderer, layer, NULL, &rect);
@@ -74,9 +79,16 @@ void ScoreBoard::render()
// Actualiza las variables del objeto // Actualiza las variables del objeto
void ScoreBoard::update() void ScoreBoard::update()
{
if (counter == 200)
{
state = sb_show;
}
else
{ {
counter++; counter++;
} }
}
// Recarga la textura // Recarga la textura
void ScoreBoard::reLoadTexture() void ScoreBoard::reLoadTexture()
@@ -84,3 +96,10 @@ void ScoreBoard::reLoadTexture()
texture->reLoad(); texture->reLoad();
text->reLoadTexture(); text->reLoadTexture();
} }
// Resetea el tiempo de aparición del marcador
void ScoreBoard::reset()
{
counter = 0;
state = sb_hide;
}

View File

@@ -17,6 +17,14 @@ struct board_t
int lives; // Lleva la cuenta de ls vidas restantes del jugador int lives; // Lleva la cuenta de ls vidas restantes del jugador
}; };
enum sb_state_e
{
sb_show,
sb_hide,
sb_showing,
sb_hiding
};
// Clase ScoreBoard // Clase ScoreBoard
class ScoreBoard class ScoreBoard
{ {
@@ -29,6 +37,7 @@ private:
Text *text; // Objeto para escribir texto Text *text; // Objeto para escribir texto
int counter; // Contador interno int counter; // Contador interno
board_t *board; // Contiene las variables a mostrar en el marcador board_t *board; // Contiene las variables a mostrar en el marcador
sb_state_e state; // Estado en el que se encuentra el marcador
public: public:
// Constructor // Constructor
@@ -48,6 +57,9 @@ public:
// Recarga la textura // Recarga la textura
void reLoadTexture(); void reLoadTexture();
// Resetea el tiempo de aparición del marcador
void reset();
}; };
#endif #endif