feat(input): assignació mando↔jugador persistida a config.yaml
This commit is contained in:
1 parent
4e9d5df872
commit
a725b76684
5 files changed
+226
-13
No files matched your search
@@ -25,11 +25,14 @@ namespace {
|
||||
// repòs i no contribueix a la velocitat.
|
||||
constexpr Sint16 STICK_DEADZONE = 12000;
|
||||
|
||||
// Acumula la contribució del primer gamepad (cruceta + stick esquerre)
|
||||
// sobre els acumuladors de velocitat. Extracció d'`update()` per a
|
||||
// mantenir la complexitat cognitiva sota llindar (threshold 25).
|
||||
void accumulateGamepadMovement(float& vx, float& vy) {
|
||||
SDL_Gamepad* pad = GamepadManager::get().getPrimary();
|
||||
// Acumula la contribució del mando assignat al jugador (cruceta +
|
||||
// stick esquerre) sobre els acumuladors de velocitat. Extracció
|
||||
// d'`update()` per a mantenir la complexitat cognitiva sota llindar
|
||||
// (threshold 25). L'assignació mando↔jugador viu al `GamepadManager`
|
||||
// i la persisteix Options; si aquest jugador no en té cap assignat,
|
||||
// la funció és un no-op (sols es mou amb el teclat).
|
||||
void accumulateGamepadMovement(int player_id, float& vx, float& vy) {
|
||||
SDL_Gamepad* pad = GamepadManager::get().getForPlayer(player_id);
|
||||
if (pad == nullptr) { return; }
|
||||
if (InputState::getGamepadButton(pad, SDL_GAMEPAD_BUTTON_DPAD_LEFT)) { vx -= SPEED_PX_PER_S; }
|
||||
if (InputState::getGamepadButton(pad, SDL_GAMEPAD_BUTTON_DPAD_RIGHT)) { vx += SPEED_PX_PER_S; }
|
||||
@@ -256,7 +259,7 @@ void Player::update(float delta_time) {
|
||||
// Direccions oposades (teclat left + d-pad right) es cancel·len de
|
||||
// forma natural; premuda simultània en la mateixa direcció no duplica
|
||||
// la velocitat perquè cada branca només resta/suma una vegada.
|
||||
accumulateGamepadMovement(vx, vy);
|
||||
accumulateGamepadMovement(id_, vx, vy);
|
||||
|
||||
setVelX(vx);
|
||||
setVelY(vy);
|
||||
|
||||
Reference in new issue
Block a user