v3.0.2: fixed 'none' not being considered a controller key

this created issues when with contrlller controller button binding configurations, where 'none' effectively couldn't be assigned to an action by the user
This commit is contained in:
Evan Debenham
2025-03-13 17:44:15 -04:00
parent e9739dcc20
commit c0becf809e
4 changed files with 15 additions and 4 deletions

View File

@@ -246,6 +246,10 @@ public class ControllerHandler implements ControllerListener {
}
public static boolean icControllerKey(int keyCode){
if (keyCode == 0){
return true;
}
if (keyCode >= Input.Keys.BUTTON_A
&& keyCode <= Input.Keys.BUTTON_MODE){
return true;

View File

@@ -82,4 +82,8 @@ public class KeyEvent {
}
keyEvents.clear();
}
public static boolean isKeyboardKey(int keyCode){
return keyCode == 0 || !ControllerHandler.icControllerKey(keyCode);
}
}

View File

@@ -25,6 +25,7 @@ import com.badlogic.gdx.Input;
import com.watabou.input.ControllerHandler;
import com.watabou.input.GameAction;
import com.watabou.input.KeyBindings;
import com.watabou.input.KeyEvent;
import com.watabou.utils.Bundle;
import com.watabou.utils.FileUtils;
@@ -213,7 +214,7 @@ public class SPDAction extends GameAction {
LinkedHashMap<Integer, GameAction> merged = new LinkedHashMap<>();
for (GameAction a : allActions()) {
if (firstKeys.contains(a.name()) && !ControllerHandler.icControllerKey(firstKeys.getInt(a.name()))) {
if (firstKeys.contains(a.name()) && KeyEvent.isKeyboardKey(firstKeys.getInt(a.name()))) {
if (firstKeys.getInt(a.name()) == 0){
continue; //we have no keys assigned to this action, move to the next one
} else {
@@ -236,7 +237,7 @@ public class SPDAction extends GameAction {
}
}
if (secondKeys.contains(a.name()) && !ControllerHandler.icControllerKey(secondKeys.getInt(a.name()))) {
if (secondKeys.contains(a.name()) && KeyEvent.isKeyboardKey(secondKeys.getInt(a.name()))) {
if (secondKeys.getInt(a.name()) == 0){
continue; //we have no more keys assigned to this action, move to the next one
} else {
@@ -259,7 +260,7 @@ public class SPDAction extends GameAction {
}
}
if (thirdKeys.contains(a.name()) && !ControllerHandler.icControllerKey(thirdKeys.getInt(a.name()))) {
if (thirdKeys.contains(a.name()) && KeyEvent.isKeyboardKey(thirdKeys.getInt(a.name()))) {
if (thirdKeys.getInt(a.name()) == 0){
continue; //we have no more keys assigned to this action, move to the next one
} else {

View File

@@ -509,7 +509,9 @@ public class WndKeyBindings extends Window {
}
//ignore controller buttons on key bindings, and vice-versa
if (ControllerHandler.icControllerKey(event.code) != controller){
if (controller && !ControllerHandler.icControllerKey(event.code)){
return true;
} else if (!controller && !KeyEvent.isKeyboardKey(event.code)){
return true;
}