PIXI Controls: Hide when physical gamepad connected

This commit is contained in:
OleSTEEP 2024-02-17 15:56:02 +03:00
parent a7d628416f
commit d833b24e7a

View file

@ -190,13 +190,13 @@ ONSControls.sendEvent = function(event, button) {
//=============================================================================
// * Toggle controls
//=============================================================================
ONSControls.toggle = function() {
ONSControls.toggle = function(neededState = null) {
const elements = [
ONSControls._buttonsContainer, ONSControls._dPadContainer,
ONSControls._LBsprite, ONSControls._RBsprite
]
for (elem of elements) {
if (elem.visible) {
if (elem.visible || neededState === false) {
elem.visible = false;
} else {
elem.visible = true;
@ -426,6 +426,17 @@ ONSControls.closeEditMode = function() {
this.setupInteractive();
ConfigManager.ONSConfig.saveButtonsPosition();
}
//=============================================================================
// * Handle connected physical gamepad and hide ONSControls
//=============================================================================
ONSControls.gamepadHandler = function() {
if (VirtualGamepad._originalNavigator.call(navigator)[0] !== null &&
VirtualGamepad._originalNavigator.call(navigator).length !== 0) {
this.toggle(false);
}
window.addEventListener("gamepadconnected", () => {this.toggle(false);});
window.addEventListener("gamepaddisconnected", () => {this.toggle(true);});
}
@ -479,7 +490,6 @@ VirtualGamepad.gamepad = {
VirtualGamepad._originalNavigator = navigator.getGamepads;
VirtualGamepad.updateNavigator = function() {
var gamepads = VirtualGamepad._originalNavigator.call(navigator);
console.log(gamepads);
navigator.getGamepads = function() {
var index = ONSControls.options.gamepadIndex;
gamepads[index] = VirtualGamepad.gamepad;
@ -1005,4 +1015,5 @@ ONSControls.initialize = function() {
this.replaceBackEvent();
VirtualGamepad.initialize();
Window_OmoMenuOptionsONSControls.prototype.add();
this.gamepadHandler();
}