RW2026 - Abans d'anar li vaig dir a Claude que arreglara coses de input i game pq pareixia que al disparar es perdien inputs

This commit is contained in:
2026-03-22 23:04:45 +01:00
parent c610065fe0
commit c35889a840
4 changed files with 28 additions and 4 deletions

View File

@@ -325,6 +325,17 @@ void Input::initSDLGamePad() {
}
}
void Input::resetJustPressed() {
for (auto& key : keyboard_.bindings) {
key.second.just_pressed = false;
}
for (auto& gamepad : gamepads_) {
for (auto& binding : gamepad->bindings) {
binding.second.just_pressed = false;
}
}
}
void Input::resetInputStates() {
// Resetear todos los KeyBindings.active a false
for (auto& key : keyboard_.bindings) {
@@ -349,7 +360,7 @@ void Input::update() {
bool key_is_down_now = key_states[binding.second.scancode];
// El estado .is_held del fotograma anterior nos sirve para saber si es un pulso nuevo
binding.second.just_pressed = key_is_down_now && !binding.second.is_held;
binding.second.just_pressed = binding.second.just_pressed || (key_is_down_now && !binding.second.is_held);
binding.second.is_held = key_is_down_now;
}
@@ -367,6 +378,16 @@ void Input::update() {
auto Input::handleEvent(const SDL_Event& event) -> std::string {
switch (event.type) {
case SDL_EVENT_KEY_DOWN:
if (!event.key.repeat) {
for (auto& [action, binding] : keyboard_.bindings) {
if (binding.scancode == event.key.scancode) {
binding.just_pressed = true;
break;
}
}
}
break;
case SDL_EVENT_GAMEPAD_ADDED:
return addGamepad(event.gdevice.which);
case SDL_EVENT_GAMEPAD_REMOVED: