Trabajando en el marcador
This commit is contained in:
@@ -89,6 +89,10 @@ void Game::update()
|
||||
// Comprueba los eventos de la cola
|
||||
checkEventHandler();
|
||||
|
||||
// Comprueba si se ha pulsado alguna tecla
|
||||
if (input->checkAnyInput())
|
||||
scoreboard->reset();
|
||||
|
||||
board.diamonds = player->diamonds;
|
||||
|
||||
// Actualiza los objetos
|
||||
|
||||
@@ -130,6 +130,43 @@ bool Input::checkInput(Uint8 input, bool repeat, int device, int index)
|
||||
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
|
||||
bool Input::discoverGameController()
|
||||
{
|
||||
@@ -174,7 +211,7 @@ bool Input::discoverGameController()
|
||||
std::cout << "SDL_GetError() = " << SDL_GetError() << std::endl;
|
||||
}
|
||||
|
||||
//mGameController = connectedControllers[0];
|
||||
// mGameController = connectedControllers[0];
|
||||
SDL_GameControllerEventState(SDL_ENABLE);
|
||||
}
|
||||
|
||||
|
||||
@@ -51,9 +51,9 @@ private:
|
||||
GameControllerBindings_t gameControllerBindings[17]; // Vector con las teclas asociadas a los inputs predefinidos
|
||||
|
||||
std::vector<SDL_GameController *> connectedControllers; // Vector con todos los mandos conectados
|
||||
std::vector<std::string> controllerNames; // Vector con los nombres de los mandos
|
||||
int numGamepads; // Numero de mandos conectados
|
||||
std::string dbPath; // Ruta al archivo gamecontrollerdb.txt
|
||||
std::vector<std::string> controllerNames; // Vector con los nombres de los mandos
|
||||
int numGamepads; // Numero de mandos conectados
|
||||
std::string dbPath; // Ruta al archivo gamecontrollerdb.txt
|
||||
|
||||
// Comprueba si hay un mando conectado
|
||||
bool discoverGameController();
|
||||
@@ -74,6 +74,9 @@ public:
|
||||
// Comprueba si un input esta activo
|
||||
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
|
||||
bool gameControllerFound();
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@ ScoreBoard::ScoreBoard(SDL_Renderer *renderer, Asset *asset, board_t *board)
|
||||
|
||||
// Inicializa las variables
|
||||
counter = 0;
|
||||
state = sb_hide;
|
||||
}
|
||||
|
||||
// Destructor
|
||||
@@ -67,6 +68,10 @@ void ScoreBoard::fillTexture()
|
||||
// Pinta el objeto en pantalla
|
||||
void ScoreBoard::render()
|
||||
{
|
||||
if (state == sb_hide)
|
||||
{
|
||||
return;
|
||||
}
|
||||
// Dibuja la textura con el marcador en pantalla
|
||||
SDL_Rect rect = {SCOREBOARD_X, SCOREBOARD_Y, SCOREBOARD_WIDTH, SCOREBOARD_HEIGHT};
|
||||
SDL_RenderCopy(renderer, layer, NULL, &rect);
|
||||
@@ -75,7 +80,14 @@ void ScoreBoard::render()
|
||||
// Actualiza las variables del objeto
|
||||
void ScoreBoard::update()
|
||||
{
|
||||
counter++;
|
||||
if (counter == 200)
|
||||
{
|
||||
state = sb_show;
|
||||
}
|
||||
else
|
||||
{
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
|
||||
// Recarga la textura
|
||||
@@ -83,4 +95,11 @@ void ScoreBoard::reLoadTexture()
|
||||
{
|
||||
texture->reLoad();
|
||||
text->reLoadTexture();
|
||||
}
|
||||
|
||||
// Resetea el tiempo de aparición del marcador
|
||||
void ScoreBoard::reset()
|
||||
{
|
||||
counter = 0;
|
||||
state = sb_hide;
|
||||
}
|
||||
@@ -17,6 +17,14 @@ struct board_t
|
||||
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
|
||||
class ScoreBoard
|
||||
{
|
||||
@@ -29,6 +37,7 @@ private:
|
||||
Text *text; // Objeto para escribir texto
|
||||
int counter; // Contador interno
|
||||
board_t *board; // Contiene las variables a mostrar en el marcador
|
||||
sb_state_e state; // Estado en el que se encuentra el marcador
|
||||
|
||||
public:
|
||||
// Constructor
|
||||
@@ -48,6 +57,9 @@ public:
|
||||
|
||||
// Recarga la textura
|
||||
void reLoadTexture();
|
||||
|
||||
// Resetea el tiempo de aparición del marcador
|
||||
void reset();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user