define_buttons ja acaba be de definir els buttons

This commit is contained in:
2024-11-01 18:39:10 +01:00
parent 0757f63b73
commit c66cc965f1

View File

@@ -20,7 +20,7 @@ DefineButtons::DefineButtons(std::unique_ptr<Text> text_)
buttons_.emplace_back(lang::getText(96), InputType::FIRE_CENTER, SDL_CONTROLLER_BUTTON_INVALID); buttons_.emplace_back(lang::getText(96), InputType::FIRE_CENTER, SDL_CONTROLLER_BUTTON_INVALID);
buttons_.emplace_back(lang::getText(97), InputType::FIRE_RIGHT, SDL_CONTROLLER_BUTTON_INVALID); buttons_.emplace_back(lang::getText(97), InputType::FIRE_RIGHT, SDL_CONTROLLER_BUTTON_INVALID);
buttons_.emplace_back(lang::getText(98), InputType::START, SDL_CONTROLLER_BUTTON_INVALID); buttons_.emplace_back(lang::getText(98), InputType::START, SDL_CONTROLLER_BUTTON_INVALID);
buttons_.emplace_back(lang::getText(99), InputType::EXIT, SDL_CONTROLLER_BUTTON_INVALID); buttons_.emplace_back(lang::getText(99), InputType::SERVICE, SDL_CONTROLLER_BUTTON_INVALID);
for (int i = 0; i < input_->getNumControllers(); ++i) for (int i = 0; i < input_->getNumControllers(); ++i)
{ {
@@ -33,19 +33,17 @@ void DefineButtons::render()
{ {
if (enabled_) if (enabled_)
{ {
text_->writeCentered(x_, y_ - 10, lang::getText(100) + std::to_string(options.controller[index_controller_].player_id)); text_->writeCentered(x_, y_ - 10, lang::getText(100) + std::to_string(options.controller.at(index_controller_).player_id));
text_->writeCentered(x_, y_, controller_names_[index_controller_]); text_->writeCentered(x_, y_, controller_names_.at(index_controller_));
text_->writeCentered(x_, y_ + 10, buttons_[index_button_].label); text_->writeCentered(x_, y_ + 10, buttons_.at(index_button_).label);
} }
} }
// Comprueba el botón que se ha pulsado // Comprueba el botón que se ha pulsado
void DefineButtons::doControllerButtonDown(SDL_ControllerButtonEvent &event) void DefineButtons::doControllerButtonDown(SDL_ControllerButtonEvent &event)
{ {
size_t i = input_->getJoyIndex(event.which); // Solo pilla botones del mando que toca
if (input_->getJoyIndex(event.which) != static_cast<int>(index_controller_))
// Solo pillamos botones del mando que toca
if (i != index_controller_)
{ {
return; return;
} }
@@ -53,7 +51,7 @@ void DefineButtons::doControllerButtonDown(SDL_ControllerButtonEvent &event)
const auto button = static_cast<SDL_GameControllerButton>(event.button); const auto button = static_cast<SDL_GameControllerButton>(event.button);
if (checkButtonNotInUse(button)) if (checkButtonNotInUse(button))
{ {
buttons_[index_button_].button = button; buttons_.at(index_button_).button = button;
incIndexButton(); incIndexButton();
} }
} }
@@ -61,9 +59,9 @@ void DefineButtons::doControllerButtonDown(SDL_ControllerButtonEvent &event)
// Asigna los botones definidos al input_ // Asigna los botones definidos al input_
void DefineButtons::bindButtons() void DefineButtons::bindButtons()
{ {
for (size_t i = 0; i < buttons_.size(); ++i) for (const auto &button : buttons_)
{ {
input_->bindGameControllerButton(index_controller_, buttons_[i].input, buttons_[i].button); input_->bindGameControllerButton(index_controller_, button.input, button.button);
} }
} }
@@ -85,13 +83,11 @@ void DefineButtons::checkEvents()
section::options = section::Options::QUIT_WITH_KEYBOARD; section::options = section::Options::QUIT_WITH_KEYBOARD;
break; break;
} }
case SDL_CONTROLLERBUTTONDOWN: case SDL_CONTROLLERBUTTONDOWN:
{ {
doControllerButtonDown(event.cbutton); doControllerButtonDown(event.cbutton);
break; break;
} }
default: default:
break; break;
} }
@@ -114,15 +110,12 @@ bool DefineButtons::enable(int index)
} }
// Comprueba si está habilitado // Comprueba si está habilitado
bool DefineButtons::isEnabled() bool DefineButtons::isEnabled() { return enabled_; }
{
return enabled_;
}
// Incrementa el indice de los botones // Incrementa el indice de los botones
void DefineButtons::incIndexButton() void DefineButtons::incIndexButton()
{ {
index_button_++; ++index_button_;
// Comprueba si ha finalizado // Comprueba si ha finalizado
if (index_button_ == buttons_.size()) if (index_button_ == buttons_.size())
@@ -133,8 +126,6 @@ void DefineButtons::incIndexButton()
// Guarda los cambios en las opciones // Guarda los cambios en las opciones
saveBindingsToOptions(); saveBindingsToOptions();
// input_->allActive(index_controller_);
// Reinicia variables // Reinicia variables
index_button_ = 0; index_button_ = 0;
index_controller_ = 0; index_controller_ = 0;
@@ -146,10 +137,11 @@ void DefineButtons::incIndexButton()
void DefineButtons::saveBindingsToOptions() void DefineButtons::saveBindingsToOptions()
{ {
// Modifica las opciones para colocar los valores asignados // Modifica las opciones para colocar los valores asignados
options.controller[index_controller_].name = input_->getControllerName(index_controller_); auto &controller = options.controller.at(index_controller_);
for (int j = 0; j < (int)options.controller[index_controller_].inputs.size(); ++j) controller.name = input_->getControllerName(index_controller_);
for (size_t j = 0; j < controller.inputs.size(); ++j)
{ {
options.controller[index_controller_].buttons[j] = input_->getControllerBinding(index_controller_, options.controller[index_controller_].inputs[j]); controller.buttons.at(j) = input_->getControllerBinding(index_controller_, controller.inputs.at(j));
} }
} }