Abans de clavar-li ma a Input
This commit is contained in:
@@ -110,30 +110,18 @@ Director::Director(int argc, const char *argv[])
|
|||||||
manager->loadFromFile(Asset::get()->get("score.bin"));
|
manager->loadFromFile(Asset::get()->get("score.bin"));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Inicializa SDL
|
// Inicializa todo
|
||||||
initSDL();
|
initSDL();
|
||||||
|
|
||||||
// Inicializa JailAudio
|
|
||||||
initJailAudio();
|
initJailAudio();
|
||||||
|
|
||||||
// Inicializa el texto de debug
|
|
||||||
dbg_init(renderer_);
|
dbg_init(renderer_);
|
||||||
|
lang::loadFromFile(getLangFile(static_cast<lang::Code>(options.game.language)));
|
||||||
// Crea los objetos
|
|
||||||
lang::loadFromFile(getLangFile((lang::Code)options.game.language));
|
|
||||||
|
|
||||||
Screen::init(window_, renderer_);
|
Screen::init(window_, renderer_);
|
||||||
|
|
||||||
Resource::init();
|
Resource::init();
|
||||||
|
|
||||||
Input::init(Asset::get()->get("gamecontrollerdb.txt"));
|
Input::init(Asset::get()->get("gamecontrollerdb.txt"));
|
||||||
bindInputs();
|
bindInputs();
|
||||||
|
|
||||||
auto notifier_text = std::make_shared<Text>(Resource::get()->getTexture("8bithud.png"), Resource::get()->getTextFile("8bithud.txt"));
|
auto notifier_text = std::make_shared<Text>(Resource::get()->getTexture("8bithud.png"), Resource::get()->getTextFile("8bithud.txt"));
|
||||||
Notifier::init(std::string(), notifier_text, Asset::get()->get("notify.wav"));
|
Notifier::init(std::string(), notifier_text, Asset::get()->get("notify.wav"));
|
||||||
|
|
||||||
OnScreenHelp::init();
|
OnScreenHelp::init();
|
||||||
|
|
||||||
globalInputs::init();
|
globalInputs::init();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -204,16 +192,20 @@ void Director::bindInputs()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Mapea las asignaciones a los botones desde el archivo de configuración, si se da el caso
|
// Mapea las asignaciones a los botones desde el archivo de configuración, si se da el caso
|
||||||
for (int i = 0; i < num_gamepads; ++i)
|
for (size_t i = 0; i < num_gamepads; ++i)
|
||||||
for (int index = 0; index < (int)options.controller.size(); ++index)
|
{
|
||||||
if (Input::get()->getControllerName(i) == options.controller[index].name)
|
for (size_t index = 0; index < options.controller.size(); ++index)
|
||||||
|
{
|
||||||
|
if (Input::get()->getControllerName(i) == options.controller.at(index).name)
|
||||||
{
|
{
|
||||||
options.controller[index].plugged = true;
|
options.controller.at(index).plugged = true;
|
||||||
for (int j = 0; j < (int)options.controller[index].inputs.size(); ++j)
|
for (size_t j = 0; j < options.controller.at(index).inputs.size(); ++j)
|
||||||
{
|
{
|
||||||
Input::get()->bindGameControllerButton(i, options.controller[index].inputs[j], options.controller[index].buttons[j]);
|
Input::get()->bindGameControllerButton(i, options.controller.at(index).inputs.at(j), options.controller.at(index).buttons.at(j));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Asigna botones a inputs desde otros inputs
|
// Asigna botones a inputs desde otros inputs
|
||||||
for (int i = 0; i < num_gamepads; ++i)
|
for (int i = 0; i < num_gamepads; ++i)
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ void initOptions()
|
|||||||
|
|
||||||
options.controller.push_back(c);
|
options.controller.push_back(c);
|
||||||
}
|
}
|
||||||
options.controller[0].device_type = INPUT_USE_ANY; // El primer jugador puede usar tanto el teclado como el primer mando
|
options.controller.at(0).device_type = INPUT_USE_ANY; // El primer jugador puede usar tanto el teclado como el primer mando
|
||||||
}
|
}
|
||||||
|
|
||||||
// Carga el fichero de configuración
|
// Carga el fichero de configuración
|
||||||
|
|||||||
@@ -323,32 +323,28 @@ void Title::swapControllers()
|
|||||||
// Muestra información sobre los controles y los jugadores
|
// Muestra información sobre los controles y los jugadores
|
||||||
void Title::showControllers()
|
void Title::showControllers()
|
||||||
{
|
{
|
||||||
// Crea cadenas de texto vacias para un numero máximo de mandos
|
// Crea vectores de texto vacíos para un número máximo de mandos
|
||||||
constexpr int MAX_CONTROLLERS = 2;
|
constexpr size_t NUM_CONTROLLERS = 2;
|
||||||
std::string text[MAX_CONTROLLERS];
|
std::vector<std::string> text(NUM_CONTROLLERS);
|
||||||
int playerControllerIndex[MAX_CONTROLLERS];
|
std::vector<int> playerControllerIndex(NUM_CONTROLLERS, -1);
|
||||||
for (int i = 0; i < MAX_CONTROLLERS; ++i)
|
|
||||||
{
|
|
||||||
text[i].clear();
|
|
||||||
playerControllerIndex[i] = -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Obtiene para cada jugador el índice del mando correspondiente
|
// Obtiene de cada jugador el índice del mando que tiene asignado
|
||||||
for (int i = 0; i < MAX_CONTROLLERS; ++i)
|
for (size_t i = 0; i < NUM_CONTROLLERS; ++i)
|
||||||
{
|
{
|
||||||
playerControllerIndex[options.controller[i].player_id - 1] = i;
|
// Ejemplo: el jugador 1 tiene el mando 2
|
||||||
|
playerControllerIndex.at(options.controller.at(i).player_id - 1) = i;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Genera el texto correspondiente
|
// Genera el texto correspondiente
|
||||||
for (int i = 0; i < MAX_CONTROLLERS; ++i)
|
for (size_t i = 0; i < NUM_CONTROLLERS; ++i)
|
||||||
{
|
{
|
||||||
const int index = playerControllerIndex[i];
|
const size_t index = playerControllerIndex.at(i);
|
||||||
if (options.controller[index].plugged)
|
if (options.controller.at(index).plugged)
|
||||||
{
|
{
|
||||||
text[i] = lang::getText(100) + std::to_string(i + 1) + ": " + options.controller[index].name;
|
text.at(i) = lang::getText(100) + std::to_string(i + 1) + ": " + options.controller.at(index).name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Notifier::get()->showText(text[0], text[1]);
|
Notifier::get()->showText(text.at(0), text.at(1));
|
||||||
resetCounter();
|
resetCounter();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user