// by VienDesu! Poring Team 2024 //============================================================================= // ** ONSControls //============================================================================= class ONSControls {}; //============================================================================= // * Plugin options //============================================================================= ONSControls.options = PluginManager.parameters('VND_ONSControls'); //============================================================================= // * Controls canvas //============================================================================= ONSControls.createCanvas = function() { const canvas = new PIXI.Application({ width: innerWidth, height: innerHeight, autoResize: true, resolution: devicePixelRatio, transparent: true }); document.body.appendChild(canvas.view); canvas.view.id = "ControlsCanvas"; canvas.view.style.zIndex = this.options.zIndex; canvas.view.style.position = "absolute"; canvas.view.style.left = 0; canvas.view.style.right = 0; canvas.view.style.down = 0; canvas.view.style.top = 0; canvas.stage.interactive = true; var idleInterval = setInterval(ONSControls.playIdleAnimation, 60000); canvas.stage.on("pointerdown", () => { this.stopIdleAnimation(); clearInterval(idleInterval); idleInterval = setInterval(ONSControls.playIdleAnimation, 60000); }) canvas.vh = (persent) => { return canvas.screen.height * persent; } this._controlsCanvas = canvas; } //============================================================================= // * A/B/X/Y Buttons //============================================================================= ONSControls.createButtons = function() { const container = new PIXI.Container(); const buttons = [ new PIXI.Sprite.fromImage("js/porting/assets/omori_a_button.png"), new PIXI.Sprite.fromImage("js/porting/assets/omori_x_button.png"), new PIXI.Sprite.fromImage("js/porting/assets/omori_b_button.png"), new PIXI.Sprite.fromImage("js/porting/assets/omori_y_button.png") ] buttons[0].on("pointerdown", (event) => {this.sendEvent(event, "BUTTON_A")}) .on("pointerup", (event) => {this.sendEvent(event, "BUTTON_A")}); buttons[1].on("pointerdown", (event) => {this.sendEvent(event, "BUTTON_X")}) .on("pointerup", (event) => {this.sendEvent(event, "BUTTON_X")}); buttons[2].on("pointerdown", (event) => {this.sendEvent(event, "BUTTON_B")}) .on("pointerup", (event) => {this.sendEvent(event, "BUTTON_B")}); buttons[3].on("pointerdown", (event) => {this.sendEvent(event, "BUTTON_Y")}) .on("pointerup", (event) => {this.sendEvent(event, "BUTTON_Y")}); for (btn of buttons) { btn.anchor.set(0.5); container.addChild(btn); } this._controlsCanvas.stage.addChild(container); this._buttonsContainer = container; } //============================================================================= // * DPad Buttons //============================================================================= ONSControls.createDPad = function() { const container = new PIXI.Sprite.fromImage("js/porting/assets/omori_dpad.png"); const directions = [ new PIXI.Sprite(PIXI.Texture.WHITE), new PIXI.Sprite(PIXI.Texture.WHITE), new PIXI.Sprite(PIXI.Texture.WHITE), new PIXI.Sprite(PIXI.Texture.WHITE) ] container.anchor.set(0.5); for (elem of directions) { container.addChild(elem); elem.interactive = true; elem.anchor.set(0.5); } directions[0].on("pointerdown", (event) => {this.sendEvent(event, "DPAD_RIGHT")}) .on("pointerup", (event) => {this.sendEvent(event, "DPAD_RIGHT")}); directions[1].on("pointerdown", (event) => {this.sendEvent(event, "DPAD_DOWN")}) .on("pointerup", (event) => {this.sendEvent(event, "DPAD_DOWN")}); directions[2].on("pointerdown", (event) => {this.sendEvent(event, "DPAD_UP")}) .on("pointerup", (event) => {this.sendEvent(event, "DPAD_UP")}); directions[3].on("pointerdown", (event) => {this.sendEvent(event, "DPAD_LEFT")}) .on("pointerup", (event) => {this.sendEvent(event, "DPAD_LEFT")}); this._controlsCanvas.stage.addChild(container); this._dPadContainer = container; } //============================================================================= // * LB/RB Buttons //============================================================================= ONSControls.createBumpers = function() { const LBsprite = new PIXI.Sprite.fromImage("js/porting/assets/omori_lb_button.png"); const RBsprite = new PIXI.Sprite.fromImage("js/porting/assets/omori_rb_button.png"); LBsprite.anchor.set(0.5); LBsprite.interactive = true; LBsprite.on("pointerdown", (event) => {this.sendEvent(event, "BUTTON_LB")}) .on("pointerup", (event) => {this.sendEvent(event, "BUTTON_LB")}) RBsprite.anchor.set(0.5); RBsprite.interactive = true; RBsprite.on("pointerdown", (event) => {this.sendEvent(event, "BUTTON_RB")}) .on("pointerup", (event) => {this.sendEvent(event, "BUTTON_RB")}) this._controlsCanvas.stage.addChild(LBsprite); this._controlsCanvas.stage.addChild(RBsprite); this._LBsprite = LBsprite; this._RBsprite = RBsprite; } //============================================================================= // * Show/Switch Buttons //============================================================================= ONSControls.createAdditionalButtons = function() { const showButton = new PIXI.Sprite.fromImage("js/porting/assets/omori_show_button.png"); //const switchButton = new PIXI.Sprite.fromImage("js/porting/assets/omori_switch_button.png"); showButton.anchor.set(0.5); showButton.interactive = true; showButton.on("pointerdown", this.toggle) // switchButton.anchor.set(0.5); this._controlsCanvas.stage.addChild(showButton); // this._controlsCanvas.stage.addChild(switchButton); this._showButton = showButton; // this.SwitchButton = switchButton; } //============================================================================= // * Check idle animation (spinning buttons) //============================================================================= ONSControls.idleAnimation = function() { ONSControls._buttonsContainer.rotation -= 0.1; ONSControls._dPadContainer.rotation += 0.1; ONSControls._LBsprite.rotation += 0.1; ONSControls._RBsprite.rotation -= 0.1; ONSControls._showButton.rotation += 0.1; //ONSControls._switchButton.rotation -= 0.1; } //============================================================================= // * Check idle animation (spinning buttons) //============================================================================= ONSControls.isIdlePlaying = false; //============================================================================= // * Play idle animation (spinning buttons) //============================================================================= ONSControls.playIdleAnimation = function() { if (!ONSControls.isIdlePlaying) { ONSControls.isIdlePlaying = true; ONSControls._controlsCanvas.ticker.add(ONSControls.idleAnimation); } } //============================================================================= // * Stop idle animation (spinning buttons) //============================================================================= ONSControls.stopIdleAnimation = function() { ONSControls._controlsCanvas.ticker.remove(ONSControls.idleAnimation); ONSControls._buttonsContainer.rotation = 0; ONSControls._dPadContainer.rotation = 0; ONSControls._LBsprite.rotation = 0; ONSControls._RBsprite.rotation = 0; ONSControls._showButton.rotation = 0; //ONSControls._switchButton.rotation = 0; } //============================================================================= // * Send event to virtual controller //============================================================================= ONSControls.sendEvent = function(event, button) { const key = VirtualGamepad.keys.find((element) => element.name == button); if (event.type === "pointerdown") { console.log(`ONSControls: Pointer down for ${button}`); // Remove in release } VirtualGamepad.gamepad.buttons[key.code].pressed = event.type === "pointerdown" ? true : false } //============================================================================= // * Toggle controls //============================================================================= ONSControls.toggle = function() { const elements = [ ONSControls._buttonsContainer, ONSControls._dPadContainer, ONSControls._LBsprite, ONSControls._RBsprite ] for (elem of elements) { if (elem.visible) { elem.visible = false; } else { elem.visible = true; } } } //============================================================================= // * Update controls parameters //============================================================================= ONSControls.updateButtons = function() { // Update A/B/X/Y const buttonsSize = ConfigManager.ONSConfig.buttonsSize; const container = this._buttonsContainer; const buttons = container.children; for (btn of buttons) { btn.width = buttonsSize; btn.height = buttonsSize; btn.interactive = true; } buttons[0].y = buttonsSize / 2 + buttonsSize / 4; buttons[1].x = -(buttonsSize / 2 + buttonsSize / 4); buttons[2].x = buttonsSize / 2 + buttonsSize / 4; buttons[3].y = -(buttonsSize / 2 + buttonsSize / 4); container.width = buttonsSize * 2; container.height = buttonsSize * 2; container.position.set(ConfigManager.ONSConfig.buttonsX, ConfigManager.ONSConfig.buttonsY); // Update DPAD const dPadSize = ConfigManager.ONSConfig.dPadSize; const dpadContainer = this._dPadContainer; const directions = dpadContainer.children; dpadContainer.width = dPadSize; dpadContainer.height = dPadSize; dpadContainer.position.set(ConfigManager.ONSConfig.dPadX, ConfigManager.ONSConfig.dPadY); for (elem of directions) { elem.width = this._controlsCanvas.vh(0.12); elem.height = this._controlsCanvas.vh(0.12); elem.cursor = 'pointer'; } directions[0].x = directions[0].width; directions[1].y = directions[1].height; directions[2].y = -directions[2].height; directions[3].x = -directions[3].width; // Update LB/RB const LBsprite = this._LBsprite; const RBsprite = this._RBsprite; LBsprite.position.set(ConfigManager.ONSConfig.LBX, ConfigManager.ONSConfig.LBY); LBsprite.width = ConfigManager.ONSConfig.bumpersWidth; LBsprite.height = ConfigManager.ONSConfig.bumpersHeight; RBsprite.position.set(ConfigManager.ONSConfig.RBX, ConfigManager.ONSConfig.RBY); RBsprite.width = ConfigManager.ONSConfig.bumpersWidth; RBsprite.height = ConfigManager.ONSConfig.bumpersHeight; // Update additional const showButton = this._showButton; // const switchButton = this._switchButton; showButton.position.set(ConfigManager.ONSConfig.showX, ConfigManager.ONSConfig.showY); showButton.width = ConfigManager.ONSConfig.additonalSize; showButton.height = ConfigManager.ONSConfig.additonalSize; // switchButton.position.set(ConfigManager.ONSConfig.switchX, ConfigManager.ONSConfig.switchY); // switchButton.width = ConfigManager.ONSConfig.additonalSize; // switchButton.height = ConfigManager.ONSConfig.additonalSize; console.log("ONSControls: Controls updated"); } //============================================================================= // * Fix controls size on empty screen //============================================================================= document.addEventListener("deviceready", onCordovaDeviceReady, false); ONSControls.onCordovaDeviceReady = function () { console.log("ONSControls: Received deviceready event from cordova"); //Remove in release document.addEventListener("resume", onCordovaResume, false); }; ONSControls.onCordovaResume = function () { console.log("ONSControls: Received resume event from cordova"); //Remove in release // TODO: HERE CONTROLS WILL BE UPDATED OR RECREATED }; //============================================================================= // ** VirtualGamepad //============================================================================= class VirtualGamepad {}; //============================================================================= // * Virtual gamepad mapping //============================================================================= VirtualGamepad.keys = [ {name: "BUTTON_A", code: 0}, {name: "BUTTON_B", code: 1}, {name: "BUTTON_X", code: 2}, {name: "BUTTON_Y", code: 3}, {name: "BUTTON_LB", code: 4}, {name: "BUTTON_RB", code: 5}, {name: "BUTTON_LT", code: 6}, {name: "BUTTON_RT", code: 7}, {name: "BUTTON_SELECT", code: 8}, {name: "BUTTON_START", code: 9}, {name: "DPAD_UP", code: 12}, {name: "DPAD_DOWN", code: 13}, {name: "DPAD_LEFT", code: 14}, {name: "DPAD_RIGHT", code: 15}, {name: "BACK", code: 16} ] //============================================================================= // * Define gamepad //============================================================================= VirtualGamepad.gamepad = { id: ONSControls.options.gamepadId || 'builtin', index: ONSControls.options.gamepadIndex || 0, connected: true, timestamp: Math.floor(Date.now() / 1000), mapping: "standard", axes: [0, 0, 0, 0], buttons: Array.apply(0, Array(17)).map(function () { return { pressed: false, touched: false, value: 0 }; }) } //============================================================================= // * Replace first gamepad with virtual //============================================================================= VirtualGamepad.replaceNavigator = function() { var gamepads = navigator.getGamepads(); navigator.getGamepads = function() { gamepads[0] = VirtualGamepad.gamepad; return gamepads; } } //============================================================================= // * Connect virtual gamepad //============================================================================= VirtualGamepad.originalNavigator = navigator.getGamepads; VirtualGamepad.connect = function () { this.replaceNavigator(); const event = new Event("gamepadconnected"); event.gamepad = this.gamepad; window.dispatchEvent(event); console.log(`ONSControls: Virtual gamepad connected with index ${this.gamepad.index}`); } //============================================================================= // * Disconnect virtual gamepad //============================================================================= VirtualGamepad.disconnect = function () { const event = new Event("gamepaddisconnected"); this.gamepad.axes = [0, 0, 0, 0]; this.gamepad.buttons = Array.apply(0, Array(17)).map(function () { return { pressed: false, touched: false, value: 0 }; }) window.dispatchEvent(event); //VirtualGamepad.originalNavigator.getGamepads.call(); console.log(`ONSControls: Virtual gamepad disconnected with index ${this.gamepad.index}`); } //============================================================================= // ** ConfigManager //============================================================================= ONSControls.configManager = function() { //============================================================================= // * Class Variables //============================================================================= ConfigManager.ONSConfig ||= {}; ConfigManager.ONSConfig.buttonsScale ||= 1; ConfigManager.ONSConfig.controlsOffsetX ||= 32; ConfigManager.ONSConfig.controlsOffsetY ||= 16; ConfigManager.ONSConfig.buttonsSize ||= ONSControls._controlsCanvas.vh(0.18) * ConfigManager.ONSConfig.buttonsScale; ConfigManager.ONSConfig.buttonsX ||= ONSControls._controlsCanvas.screen.width - (ConfigManager.ONSConfig.buttonsSize + ConfigManager.ONSConfig.controlsOffsetX);; ConfigManager.ONSConfig.buttonsY ||= ONSControls._controlsCanvas.screen.height - (ConfigManager.ONSConfig.buttonsSize + ConfigManager.ONSConfig.controlsOffsetY); ConfigManager.ONSConfig.dPadSize ||= ONSControls._controlsCanvas.vh(0.36) * ConfigManager.ONSConfig.buttonsScale; ConfigManager.ONSConfig.dPadX ||= ConfigManager.ONSConfig.dPadSize / 2 + ConfigManager.ONSConfig.controlsOffsetX; ConfigManager.ONSConfig.dPadY ||= ONSControls._controlsCanvas.screen.height - (ConfigManager.ONSConfig.dPadSize / 2 + ConfigManager.ONSConfig.controlsOffsetY); ConfigManager.ONSConfig.bumpersOffsetX ||= 16; ConfigManager.ONSConfig.bumpersOffsetY ||= ONSControls._controlsCanvas.vh(0.30); ConfigManager.ONSConfig.bumpersWidth ||= ONSControls._controlsCanvas.vh(0.188) * ConfigManager.ONSConfig.buttonsScale; ConfigManager.ONSConfig.bumpersHeight ||= ONSControls._controlsCanvas.vh(0.12) * ConfigManager.ONSConfig.buttonsScale; ConfigManager.ONSConfig.LBX ||= ConfigManager.ONSConfig.bumpersOffsetX + ConfigManager.ONSConfig.bumpersWidth / 2; ConfigManager.ONSConfig.LBY ||= (ConfigManager.ONSConfig.bumpersOffsetY + ConfigManager.ONSConfig.bumpersHeight / 2); ConfigManager.ONSConfig.RBX ||= ONSControls._controlsCanvas.screen.width - (ConfigManager.ONSConfig.bumpersOffsetX + ConfigManager.ONSConfig.bumpersWidth / 2); ConfigManager.ONSConfig.RBY ||= (ConfigManager.ONSConfig.bumpersOffsetY + ConfigManager.ONSConfig.bumpersHeight / 2); ConfigManager.ONSConfig.additionalOffset ||= ONSControls._controlsCanvas.vh(0.03); ConfigManager.ONSConfig.additonalSize ||= ONSControls._controlsCanvas.vh(0.06) * ConfigManager.ONSConfig.buttonsScale; ConfigManager.ONSConfig.showX ||= ONSControls._controlsCanvas.screen.width - (ConfigManager.ONSConfig.additonalSize / 2 + ConfigManager.ONSConfig.additionalOffset); ConfigManager.ONSConfig.showY ||= ONSControls._controlsCanvas.screen.height - (ConfigManager.ONSConfig.additonalSize / 2 + ConfigManager.ONSConfig.additionalOffset); ConfigManager.ONSConfig.switchX ||= ConfigManager.ONSConfig.additonalSize / 2 + ConfigManager.ONSConfig.additionalOffset; ConfigManager.ONSConfig.switchY ||= ONSControls._controlsCanvas.screen.height - (ConfigManager.ONSConfig.additonalSize / 2 + ConfigManager.ONSConfig.additionalOffset); //============================================================================= // * Original functions //============================================================================= var ConfigManager_makeData = ConfigManager.makeData; var ConfigManager_applyData = ConfigManager.applyData; var ConfigManager_restoreDefaultConfig = ConfigManager.restoreDefaultConfig; //============================================================================= // * Make Data //============================================================================= var _ConfigManager_makeData = ConfigManager.makeData; ConfigManager.makeData = function () { var config = _ConfigManager_makeData.apply(this, arguments); config.ONSConfig = {}; config.ONSConfig.controlsOffsetX = this.ONSConfig.controlsOffsetX; config.ONSConfig.controlsOffsetY = this.ONSConfig.controlsOffsetY; config.ONSConfig.buttonsScale = this.ONSConfig.buttonsScale; config.ONSConfig.additionalOffset = this.ONSConfig.additionalOffset; config.ONSConfig.buttonsSize = this.ONSConfig.buttonsSize; config.ONSConfig.buttonsX = this.ONSConfig.buttonsX; config.ONSConfig.buttonsY = this.ONSConfig.buttonsY; config.ONSConfig.dPadSize = this.ONSConfig.dPadSize; config.ONSConfig.dPadX = this.ONSConfig.dPadX; config.ONSConfig.dPadY = this.ONSConfig.dPadY; config.ONSConfig.bumpersWidth = this.ONSConfig.bumpersWidth; config.ONSConfig.bumpersHeight = this.ONSConfig.bumpersHeight; config.ONSConfig.bumpersOffsetX = this.ONSConfig.bumpersOffsetX; config.ONSConfig.bumpersOffsetY = this.ONSConfig.bumpersOffsetY; config.ONSConfig.LBX = this.ONSConfig.LBX; config.ONSConfig.LBY = this.ONSConfig.LBY; config.ONSConfig.RBX = this.ONSConfig.RBX; config.ONSConfig.RBY = this.ONSConfig.RBY; config.ONSConfig.additionalOffset = this.ONSConfig.additionalOffset; config.ONSConfig.additonalSize = this.ONSConfig.additonalSize; config.ONSConfig.showX = this.ONSConfig.showX; config.ONSConfig.showY = this.ONSConfig.showY; config.ONSConfig.switchX = this.ONSConfig.switchX; config.ONSConfig.switchY = this.ONSConfig.switchY; return config; } //============================================================================= // * Apply Data //============================================================================= var _ConfigManager_applyData = ConfigManager.applyData; ConfigManager.applyData = function (config) { _ConfigManager_applyData.apply(this, arguments); this.ONSConfig.controlsOffsetX = config.ONSConfig.controlsOffsetX; this.ONSConfig.controlsOffsetY = config.ONSConfig.controlsOffsetY; this.ONSConfig.buttonsScale = config.ONSConfig.buttonsScale; this.ONSConfig.additionalOffset = config.ONSConfig.additionalOffset; this.ONSConfig.buttonsSize = config.ONSConfig.buttonsSize; this.ONSConfig.buttonsX = config.ONSConfig.buttonsX; this.ONSConfig.buttonsY = config.ONSConfig.buttonsY; this.ONSConfig.dPadSize = config.ONSConfig.dPadSize; this.ONSConfig.dPadX = config.ONSConfig.dPadX; this.ONSConfig.dPadY = config.ONSConfig.dPadY; this.ONSConfig.bumpersWidth = config.ONSConfig.bumpersWidth; this.ONSConfig.bumpersHeight = config.ONSConfig.bumpersHeight; this.ONSConfig.bumpersOffsetX = config.ONSConfig.bumpersOffsetX; this.ONSConfig.bumpersOffsetY = config.ONSConfig.bumpersOffsetY; this.ONSConfig.LBX = config.ONSConfig.LBX; this.ONSConfig.LBY = config.ONSConfig.LBY; this.ONSConfig.RBX = config.ONSConfig.RBX; this.ONSConfig.RBY = config.ONSConfig.RBY; this.ONSConfig.additionalOffset = config.ONSConfig.additionalOffset; this.ONSConfig.additonalSize = config.ONSConfig.additonalSize; this.ONSConfig.showX = config.ONSConfig.showX; this.ONSConfig.showY = config.ONSConfig.showY; this.ONSConfig.switchX = config.ONSConfig.switchX; this.ONSConfig.switchY = config.ONSConfig.switchY; } //============================================================================= // * Restore defaults //============================================================================= var _ConfigManager_restoreDefaultConfig = ConfigManager.restoreDefaultConfig; ConfigManager.restoreDefaultConfig = function () { _ConfigManager_restoreDefaultConfig.apply(this, arguments); const fs = require("fs"); const path = require('path'); var base = path.dirname(process.mainModule.filename); base = path.join(base, 'save/'); if (fs.existsSync(base + "config.rpgsave")) { fs.unlinkSync(base + "config.rpgsave"); } ConfigManager.ONSConfig.buttonsScale = 1; ConfigManager.ONSConfig.controlsOffsetX = 32; ConfigManager.ONSConfig.controlsOffsetY = 16; ConfigManager.ONSConfig.buttonsSize = ONSControls._controlsCanvas.vh(0.18) * ConfigManager.ONSConfig.buttonsScale; ConfigManager.ONSConfig.buttonsX = ONSControls._controlsCanvas.screen.width - (ConfigManager.ONSConfig.buttonsSize + ConfigManager.ONSConfig.controlsOffsetX);; ConfigManager.ONSConfig.buttonsY = ONSControls._controlsCanvas.screen.height - (ConfigManager.ONSConfig.buttonsSize + ConfigManager.ONSConfig.controlsOffsetY); ConfigManager.ONSConfig.dPadSize = ONSControls._controlsCanvas.vh(0.36) * ConfigManager.ONSConfig.buttonsScale; ConfigManager.ONSConfig.dPadX = ConfigManager.ONSConfig.dPadSize / 2 + ConfigManager.ONSConfig.controlsOffsetX; ConfigManager.ONSConfig.dPadY = ONSControls._controlsCanvas.screen.height - (ConfigManager.ONSConfig.dPadSize / 2 + ConfigManager.ONSConfig.controlsOffsetY); ConfigManager.ONSConfig.bumpersOffsetX = 16; ConfigManager.ONSConfig.bumpersOffsetY = ONSControls._controlsCanvas.vh(0.30); ConfigManager.ONSConfig.bumpersWidth = ONSControls._controlsCanvas.vh(0.188) * ConfigManager.ONSConfig.buttonsScale; ConfigManager.ONSConfig.bumpersHeight = ONSControls._controlsCanvas.vh(0.12) * ConfigManager.ONSConfig.buttonsScale; ConfigManager.ONSConfig.LBX = ConfigManager.ONSConfig.bumpersOffsetX + ConfigManager.ONSConfig.bumpersWidth / 2; ConfigManager.ONSConfig.LBY = (ConfigManager.ONSConfig.bumpersOffsetY + ConfigManager.ONSConfig.bumpersHeight / 2); ConfigManager.ONSConfig.RBX = ONSControls._controlsCanvas.screen.width - (ConfigManager.ONSConfig.bumpersOffsetX + ConfigManager.ONSConfig.bumpersWidth / 2); ConfigManager.ONSConfig.RBY = (ConfigManager.ONSConfig.bumpersOffsetY + ConfigManager.ONSConfig.bumpersHeight / 2); ConfigManager.ONSConfig.additionalOffset = ONSControls._controlsCanvas.vh(0.03); ConfigManager.ONSConfig.additonalSize = ONSControls._controlsCanvas.vh(0.06) * ConfigManager.ONSConfig.buttonsScale; ConfigManager.ONSConfig.showX = ONSControls._controlsCanvas.screen.width - (ConfigManager.ONSConfig.additonalSize / 2 + ConfigManager.ONSConfig.additionalOffset); ConfigManager.ONSConfig.showY = ONSControls._controlsCanvas.screen.height - (ConfigManager.ONSConfig.additonalSize / 2 + ConfigManager.ONSConfig.additionalOffset); ConfigManager.ONSConfig.switchX = ConfigManager.ONSConfig.additonalSize / 2 + ConfigManager.ONSConfig.additionalOffset; ConfigManager.ONSConfig.switchY = ONSControls._controlsCanvas.screen.height - (ConfigManager.ONSConfig.additonalSize / 2 + ConfigManager.ONSConfig.additionalOffset); ConfigManager.applyData(ConfigManager); let needsRestore = confirm(LanguageManager.languageData().text.System.plugins.optionsMenu.alertMessages["restoreGeneral"]); if (!!needsRestore) { DataManager._restoreGlobalInfo(); } } //============================================================================= // * Update all controls data //============================================================================= ConfigManager.ONSConfig.updateData = function() { ConfigManager.ONSConfig.buttonsScale = ConfigManager.ONSConfig.buttonsScale; ConfigManager.ONSConfig.controlsOffsetX = ConfigManager.ONSConfig.controlsOffsetX; ConfigManager.ONSConfig.controlsOffsetY = ConfigManager.ONSConfig.controlsOffsetY; ConfigManager.ONSConfig.buttonsSize = ONSControls._controlsCanvas.vh(0.18) * ConfigManager.ONSConfig.buttonsScale; ConfigManager.ONSConfig.buttonsX = ONSControls._controlsCanvas.screen.width - (ConfigManager.ONSConfig.buttonsSize + ConfigManager.ONSConfig.controlsOffsetX);; ConfigManager.ONSConfig.buttonsY = ONSControls._controlsCanvas.screen.height - (ConfigManager.ONSConfig.buttonsSize + ConfigManager.ONSConfig.controlsOffsetY); ConfigManager.ONSConfig.dPadSize = ONSControls._controlsCanvas.vh(0.36) * ConfigManager.ONSConfig.buttonsScale; ConfigManager.ONSConfig.dPadX = ConfigManager.ONSConfig.dPadSize / 2 + ConfigManager.ONSConfig.controlsOffsetX; ConfigManager.ONSConfig.dPadY = ONSControls._controlsCanvas.screen.height - (ConfigManager.ONSConfig.dPadSize / 2 + ConfigManager.ONSConfig.controlsOffsetY); ConfigManager.ONSConfig.bumpersOffsetX = ConfigManager.ONSConfig.bumpersOffsetX; ConfigManager.ONSConfig.bumpersOffsetY = ConfigManager.ONSConfig.bumpersOffsetY; ConfigManager.ONSConfig.bumpersWidth = ONSControls._controlsCanvas.vh(0.188) * ConfigManager.ONSConfig.buttonsScale; ConfigManager.ONSConfig.bumpersHeight = ONSControls._controlsCanvas.vh(0.12) * ConfigManager.ONSConfig.buttonsScale; ConfigManager.ONSConfig.LBX = ConfigManager.ONSConfig.bumpersOffsetX + ConfigManager.ONSConfig.bumpersWidth / 2; ConfigManager.ONSConfig.LBY = (ConfigManager.ONSConfig.bumpersOffsetY + ConfigManager.ONSConfig.bumpersHeight / 2); ConfigManager.ONSConfig.RBX = ONSControls._controlsCanvas.screen.width - (ConfigManager.ONSConfig.bumpersOffsetX + ConfigManager.ONSConfig.bumpersWidth / 2); ConfigManager.ONSConfig.RBY = (ConfigManager.ONSConfig.bumpersOffsetY + ConfigManager.ONSConfig.bumpersHeight / 2); ConfigManager.ONSConfig.additionalOffset = ConfigManager.ONSConfig.additionalOffset; ConfigManager.ONSConfig.additonalSize = ONSControls._controlsCanvas.vh(0.06) * ConfigManager.ONSConfig.buttonsScale; ConfigManager.ONSConfig.showX = ONSControls._controlsCanvas.screen.width - (ConfigManager.ONSConfig.additonalSize / 2 + ConfigManager.ONSConfig.additionalOffset); ConfigManager.ONSConfig.showY = ONSControls._controlsCanvas.screen.height - (ConfigManager.ONSConfig.additonalSize / 2 + ConfigManager.ONSConfig.additionalOffset); ConfigManager.ONSConfig.switchX = ConfigManager.ONSConfig.additonalSize / 2 + ConfigManager.ONSConfig.additionalOffset; ConfigManager.ONSConfig.switchY = ONSControls._controlsCanvas.screen.height - (ConfigManager.ONSConfig.additonalSize / 2 + ConfigManager.ONSConfig.additionalOffset); ONSControls.updateButtons(); } } //============================================================================= // * Plugin init //============================================================================= ONSControls.initialize = function() { console.log("ONSControls: Initialized"); this.createCanvas(); this.configManager(); this.createButtons(); this.createDPad(); this.createBumpers(); this.createAdditionalButtons(); this.updateButtons(); VirtualGamepad.connect(); }