Ya se pueden definir los botones para cada jugador. Falta guardarlos en el fichero de configuración

This commit is contained in:
2024-07-07 11:02:49 +02:00
parent 9a91e6b6ec
commit 3ee04f7e1c
13 changed files with 64 additions and 87 deletions

View File

@@ -256,7 +256,7 @@ void AnimatedSprite::animate()
}
}
// Obtiene el numero de frames de la animación actual
// Obtiene el número de frames de la animación actual
int AnimatedSprite::getNumFrames()
{
return (int)animation[currentAnimation].frames.size();

View File

@@ -49,7 +49,7 @@ public:
// Calcula el frame correspondiente a la animación actual
void animate();
// Obtiene el numero de frames de la animación actual
// Obtiene el número de frames de la animación actual
int getNumFrames();
// Establece el frame actual de la animación

View File

@@ -246,12 +246,15 @@ bool Input::discoverGameController()
}
}
const int nJoysticks = SDL_NumJoysticks();
numJoysticks = SDL_NumJoysticks();
numGamepads = 0;
// Cuenta el numero de mandos
for (int i = 0; i < nJoysticks; ++i)
// Cuenta el número de mandos
joysticks.clear();
for (int i = 0; i < numJoysticks; ++i)
{
SDL_Joystick *joy = SDL_JoystickOpen(i);
joysticks.push_back(joy);
if (SDL_IsGameController(i))
{
numGamepads++;
@@ -261,7 +264,7 @@ bool Input::discoverGameController()
if (verbose)
{
std::cout << "\nChecking for game controllers...\n";
std::cout << nJoysticks << " joysticks found, " << numGamepads << " are gamepads\n";
std::cout << numJoysticks << " joysticks found, " << numGamepads << " are gamepads\n";
}
if (numGamepads > 0)
@@ -326,7 +329,7 @@ std::string Input::getControllerName(int index)
}
}
// Obten el numero de mandos conectados
// Obten el número de mandos conectados
int Input::getNumControllers()
{
return numGamepads;
@@ -350,4 +353,13 @@ void Input::enable()
{
enabled = true;
disabledUntil = d_notDisabled;
}
// Obtiene el indice del controlador a partir de un event.id
int Input::getJoyIndex(int id)
{
for (int i = 0; i < numJoysticks; ++i)
if (SDL_JoystickInstanceID(joysticks[i]) == id)
return i;
return -1;
}

View File

@@ -76,12 +76,14 @@ private:
// Variables
std::vector<SDL_GameController *> connectedControllers; // Vector con todos los mandos conectados
std::vector<SDL_Joystick *> joysticks; // Vector con todos los joysticks conectados
std::vector<keyBindings_t> keyBindings; // Vector con las teclas asociadas a los inputs predefinidos
std::vector<GameControllerBindings_t> gameControllerBindings; // Vector con las teclas asociadas a los inputs predefinidos
std::vector<std::string> controllerNames; // Vector con los nombres de los mandos
std::vector<inputs_e> gameInputs; // Inputs usados para jugar, normalmente direcciones y botones
std::vector<inputs_e> buttonInputs; // Inputs asignados al jugador y a botones, excluyendo direcciones
int numGamepads; // Numero de mandos conectados
int numJoysticks; // Número de joysticks conectados
int numGamepads; // Número de mandos conectados
std::string dbPath; // Ruta al archivo gamecontrollerdb.txt
bool verbose; // Indica si ha de mostrar mensajes
i_disable_e disabledUntil; // Tiempo que esta deshabilitado
@@ -115,7 +117,7 @@ public:
// Comprueba si hay algun mando conectado
bool gameControllerFound();
// Obten el numero de mandos conectados
// Obten el número de mandos conectados
int getNumControllers();
// Obten el nombre de un mando de juego
@@ -129,6 +131,9 @@ public:
// Hablita las entradas
void enable();
// Obtiene el indice del controlador a partir de un event.id
int getJoyIndex(int id);
};
#endif

View File

@@ -62,7 +62,7 @@ private:
bool resizing; // Indica si el selector está cambiando de tamaño
float y; // Coordenada actual, usado para el desplazamiento
float h; // Altura actual, usado para el cambio de tamaño
int numJumps; // Numero de pasos preestablecido para llegar al destino
int numJumps; // Número de pasos preestablecido para llegar al destino
int index; // Elemento del menu que tiene el foco
int previousIndex; // Elemento que tenia el foco previamente
color_t previousItemColor; // Color del item nque tenia el foco previamente