From 2457c283dd0683a0cdbe25865ab9d0c6d8368391 Mon Sep 17 00:00:00 2001 From: OleSTEEP Date: Wed, 14 Feb 2024 20:45:34 +0300 Subject: [PATCH] PIXI Controls: Initial commit for Edit Mode --- www.rus/js/plugins/VND_ONSControls.js | 302 +++++++++++++++++--------- 1 file changed, 200 insertions(+), 102 deletions(-) diff --git a/www.rus/js/plugins/VND_ONSControls.js b/www.rus/js/plugins/VND_ONSControls.js index df714d9..06a935e 100644 --- a/www.rus/js/plugins/VND_ONSControls.js +++ b/www.rus/js/plugins/VND_ONSControls.js @@ -23,18 +23,7 @@ ONSControls.createCanvas = function() { 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; } @@ -51,14 +40,6 @@ ONSControls.createButtons = function() { 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); btn.hitArea = new PIXI.Circle(0, 0, 40); @@ -110,24 +91,6 @@ ONSControls.createDPad = function() { ONSControls.sendEvent({type: "pointerup"}, "DPAD_UP"); ONSControls.sendEvent({type: "pointerup"}, "DPAD_LEFT"); } - container.on("pointerup", () => {container.upAll();}) - container.on("pointerupoutside", () => {container.upAll();}) - container.on("pointerdown", (event) => { - var x = event.data.global.x - this._dPadContainer.x; - var y = event.data.global.y - this._dPadContainer.y; - container.down(x, y); - }) - container.on("pointermove", (event) => { - if (container.pressed) { - // DPad pressed, set up button - var x = event.data.global.x - this._dPadContainer.x; - var y = event.data.global.y - this._dPadContainer.y; - container.down(x, y); - } else { - // DPad not pressed, clear all buttons - container.upAll(); - } - }) this._controlsCanvas.stage.addChild(container); this._dPadContainer = container; } @@ -139,12 +102,8 @@ ONSControls.createBumpers = function() { 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; @@ -157,7 +116,6 @@ ONSControls.createAdditionalButtons = function() { const showButton = new PIXI.Sprite.fromImage("js/porting/assets/omori_show_button.png"); showButton.anchor.set(0.5); showButton.interactive = true; - showButton.on("pointerdown", this.toggle) this._controlsCanvas.stage.addChild(showButton); this._showButton = showButton; } @@ -226,6 +184,14 @@ ONSControls.toggle = function() { //============================================================================= ONSControls.updateButtons = function() { + // Update canvas + const canvas = this._controlsCanvas; + 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; + // Update A/B/X/Y const buttonsSize = ConfigManager.ONSConfig.buttonsSize; const container = this._buttonsContainer; @@ -272,10 +238,137 @@ ONSControls.updateButtons = function() { showButton.alpha = ConfigManager.ONSConfig.buttonsOpacity; console.log("ONSControls: Controls updated"); } +//============================================================================= +// * Setup controls touch events +//============================================================================= +ONSControls.setupInteractive = function () { + // Canvas + var idleInterval = setInterval(ONSControls.playIdleAnimation, 60000); + this._controlsCanvas.stage.on("pointerdown", () => { + this.stopIdleAnimation(); + clearInterval(idleInterval); + idleInterval = setInterval(ONSControls.playIdleAnimation, 60000); + }); + this._idleInterval = idleInterval; + + // A/B/X/Y + const buttons = this._buttonsContainer.children; + 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")}); + + // DPAD + const container = this._dPadContainer; + container.on("pointerup", () => {container.upAll();}) + container.on("pointerupoutside", () => {container.upAll();}) + container.on("pointerdown", (event) => { + var x = event.data.global.x - this._dPadContainer.x; + var y = event.data.global.y - this._dPadContainer.y; + container.down(x, y); + }) + container.on("pointermove", (event) => { + if (container.pressed) { + // DPad pressed, set up button + var x = event.data.global.x - this._dPadContainer.x; + var y = event.data.global.y - this._dPadContainer.y; + container.down(x, y); + } else { + // DPad not pressed, clear all buttons + container.upAll(); + } + }); + + // LB/RB + this._LBsprite.on("pointerdown", (event) => {this.sendEvent(event, "BUTTON_LB")}) + .on("pointerup", (event) => {this.sendEvent(event, "BUTTON_LB")}); + this._RBsprite.on("pointerdown", (event) => {this.sendEvent(event, "BUTTON_RB")}) + .on("pointerup", (event) => {this.sendEvent(event, "BUTTON_RB")}); + + // Show button + this._showButton.on("pointerdown", this.toggle); +} +ONSControls.getControlElements = function() { + return [ + this._dPadContainer, this._LBsprite, + this._RBsprite, this._showButton, this._buttonsContainer.children[0], + this._buttonsContainer.children[1], this._buttonsContainer.children[2], + this._buttonsContainer.children[3] + ]; +} +//============================================================================= +// * Clear all controls touch events +//============================================================================= +ONSControls.clearInteractive = function() { + this._controlsCanvas.stage.removeAllListeners(); + for (elem of this.getControlElements()) { + elem.removeAllListeners(); + } +} +//============================================================================= +// * Setup drag'n drop events for element +//============================================================================= +ONSControls.setupDragNDrop = function(element) { + var orig_alpha = element.alpha; + element.cursor = "pointer"; + + var onStart = function(event) { + element.alpha = orig_alpha / 2; + ONSControls._controlsCanvas.stage.on("pointermove", onMove); + } + var onMove = function(event) { + if (element) {element.parent.toLocal(event.data.global, null, element.position);}; + } + var onEnd = function(event) { + if (element) { + ONSControls._controlsCanvas.stage.off("pointermove", onMove); + element.alpha = orig_alpha; + }; + } + + element.on("pointerdown", onStart); + this._controlsCanvas.stage.on("pointerup", onEnd); + this._controlsCanvas.stage.on("pointerupoutside", onEnd); +} +//============================================================================= +// * Disable native RPG Maker touch support +//============================================================================= ONSControls.disableTouch = function() { TouchInput.update = function() {return;}; } +//============================================================================= +// * Replace default cordova's backbutton event +//============================================================================= +ONSControls.replaceBackEvent = function() { + document.addEventListener("backbutton", function(event){ + event.preventDefault(); + this.closeEditMode(); + }); +} +//============================================================================= +// * Open Edit Mode +//============================================================================= +ONSControls.openEditMode = function() { + Graphics._canvas.hidden = true; + this.clearInteractive(); + clearInterval(this._idleInterval); + for (elem of this.getControlElements()) { + this.setupDragNDrop(elem); + } +} +//============================================================================= +// * Close Edit Mode +//============================================================================= +ONSControls.closeEditMode = function() { + Graphics._canvas.hidden = false; + this.clearInteractive(); + this.setupInteractive(); +} @@ -378,26 +471,24 @@ ONSControls.configManager = function() { ConfigManager.ONSConfig ||= {}; ConfigManager.ONSConfig.buttonsScale ||= this.options.buttonsScale; ConfigManager.ONSConfig.buttonsOpacity ||= this.options.buttonsOpacity; -ConfigManager.ONSConfig.controlsOffsetX ||= 32; -ConfigManager.ONSConfig.controlsOffsetY ||= 16; +ConfigManager.ONSConfig.safeArea ||= ONSControls._controlsCanvas.vh(0.032); 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.buttonsX ||= ONSControls._controlsCanvas.screen.width - (ConfigManager.ONSConfig.buttonsSize + ConfigManager.ONSConfig.safeArea); +ConfigManager.ONSConfig.buttonsY ||= ONSControls._controlsCanvas.screen.height - (ConfigManager.ONSConfig.buttonsSize + ConfigManager.ONSConfig.safeArea); 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.dPadX ||= ConfigManager.ONSConfig.dPadSize / 2 + ConfigManager.ONSConfig.safeArea; +ConfigManager.ONSConfig.dPadY ||= ONSControls._controlsCanvas.screen.height - (ConfigManager.ONSConfig.dPadSize / 2 + ConfigManager.ONSConfig.safeArea); 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.LBX ||= ConfigManager.ONSConfig.bumpersOffsetX + ConfigManager.ONSConfig.safeArea + ConfigManager.ONSConfig.bumpersWidth / 2; +ConfigManager.ONSConfig.LBY ||= (ConfigManager.ONSConfig.bumpersOffsetY + ConfigManager.ONSConfig.safeArea + ConfigManager.ONSConfig.bumpersHeight / 2); +ConfigManager.ONSConfig.RBX ||= ONSControls._controlsCanvas.screen.width - (ConfigManager.ONSConfig.safeArea + ConfigManager.ONSConfig.bumpersOffsetX + ConfigManager.ONSConfig.bumpersWidth / 2); +ConfigManager.ONSConfig.RBY ||= (ConfigManager.ONSConfig.bumpersOffsetY + ConfigManager.ONSConfig.safeArea + ConfigManager.ONSConfig.bumpersHeight / 2); 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.showX ||= ONSControls._controlsCanvas.screen.width - (ConfigManager.ONSConfig.additonalSize / 2 + ConfigManager.ONSConfig.safeArea); +ConfigManager.ONSConfig.showY ||= ONSControls._controlsCanvas.screen.height - (ConfigManager.ONSConfig.additonalSize / 2 + ConfigManager.ONSConfig.safeArea); //============================================================================= // * Restore defaults //============================================================================= @@ -411,26 +502,24 @@ ConfigManager.restoreDefaultConfig = function () { if (fs.existsSync(base + "config.rpgsave")) { fs.unlinkSync(base + "config.rpgsave"); } ConfigManager.ONSConfig.buttonsScale = this.options.buttonsScale; ConfigManager.ONSConfig.buttonsOpacity = this.options.buttonsOpacity; - ConfigManager.ONSConfig.controlsOffsetX = 32; - ConfigManager.ONSConfig.controlsOffsetY = 16; + ConfigManager.ONSConfig.safeArea = ONSControls._controlsCanvas.vh(0.032); 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.buttonsX = ONSControls._controlsCanvas.screen.width - (ConfigManager.ONSConfig.buttonsSize + ConfigManager.ONSConfig.safeArea); + ConfigManager.ONSConfig.buttonsY = ONSControls._controlsCanvas.screen.height - (ConfigManager.ONSConfig.buttonsSize + ConfigManager.ONSConfig.safeArea); 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.dPadX = ConfigManager.ONSConfig.dPadSize / 2 + ConfigManager.ONSConfig.safeArea; + ConfigManager.ONSConfig.dPadY = ONSControls._controlsCanvas.screen.height - (ConfigManager.ONSConfig.dPadSize / 2 + ConfigManager.ONSConfig.safeArea); 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.LBX = ConfigManager.ONSConfig.bumpersOffsetX + ConfigManager.ONSConfig.safeArea + ConfigManager.ONSConfig.bumpersWidth / 2; + ConfigManager.ONSConfig.LBY = (ConfigManager.ONSConfig.bumpersOffsetY + ConfigManager.ONSConfig.safeArea + ConfigManager.ONSConfig.bumpersHeight / 2); + ConfigManager.ONSConfig.RBX = ONSControls._controlsCanvas.screen.width - (ConfigManager.ONSConfig.safeArea + ConfigManager.ONSConfig.bumpersOffsetX + ConfigManager.ONSConfig.bumpersWidth / 2); + ConfigManager.ONSConfig.RBY = (ConfigManager.ONSConfig.bumpersOffsetY + ConfigManager.ONSConfig.safeArea + 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.showX = ONSControls._controlsCanvas.screen.width - (ConfigManager.ONSConfig.additonalSize / 2 + ConfigManager.ONSConfig.safeArea); + ConfigManager.ONSConfig.showY = ONSControls._controlsCanvas.screen.height - (ConfigManager.ONSConfig.additonalSize / 2 + ConfigManager.ONSConfig.safeArea); ConfigManager.applyData(ConfigManager); let needsRestore = confirm(LanguageManager.languageData().text.System.plugins.optionsMenu.alertMessages["restoreGeneral"]); if (!!needsRestore) { DataManager._restoreGlobalInfo(); } @@ -441,26 +530,24 @@ ConfigManager.restoreDefaultConfig = function () { ConfigManager.ONSConfig.updateData = function() { ConfigManager.ONSConfig.buttonsScale = ConfigManager.ONSConfig.buttonsScale; ConfigManager.ONSConfig.buttonsOpacity = ConfigManager.ONSConfig.buttonsOpacity; - ConfigManager.ONSConfig.controlsOffsetX = ConfigManager.ONSConfig.controlsOffsetX; - ConfigManager.ONSConfig.controlsOffsetY = ConfigManager.ONSConfig.controlsOffsetY; + ConfigManager.ONSConfig.safeArea = ConfigManager.ONSConfig.safeArea; 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.buttonsX = ONSControls._controlsCanvas.screen.width - (ConfigManager.ONSConfig.buttonsSize + ConfigManager.ONSConfig.safeArea);; + ConfigManager.ONSConfig.buttonsY = ONSControls._controlsCanvas.screen.height - (ConfigManager.ONSConfig.buttonsSize + ConfigManager.ONSConfig.safeArea); 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.dPadX = ConfigManager.ONSConfig.dPadSize / 2 + ConfigManager.ONSConfig.safeArea; + ConfigManager.ONSConfig.dPadY = ONSControls._controlsCanvas.screen.height - (ConfigManager.ONSConfig.dPadSize / 2 + ConfigManager.ONSConfig.safeArea); 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.LBX = ConfigManager.ONSConfig.bumpersOffsetX + ConfigManager.ONSConfig.safeArea + ConfigManager.ONSConfig.bumpersWidth / 2; + ConfigManager.ONSConfig.LBY = (ConfigManager.ONSConfig.bumpersOffsetY + ConfigManager.ONSConfig.safeArea + ConfigManager.ONSConfig.bumpersHeight / 2); + ConfigManager.ONSConfig.RBX = ONSControls._controlsCanvas.screen.width - (ConfigManager.ONSConfig.safeArea + ConfigManager.ONSConfig.bumpersOffsetX + ConfigManager.ONSConfig.bumpersWidth / 2); + ConfigManager.ONSConfig.RBY = (ConfigManager.ONSConfig.bumpersOffsetY + ConfigManager.ONSConfig.safeArea + 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.showX = ONSControls._controlsCanvas.screen.width - (ConfigManager.ONSConfig.additonalSize / 2 + ConfigManager.ONSConfig.safeArea); + ConfigManager.ONSConfig.showY = ONSControls._controlsCanvas.screen.height - (ConfigManager.ONSConfig.additonalSize / 2 + ConfigManager.ONSConfig.safeArea); ONSControls.updateButtons(); } } @@ -476,11 +563,9 @@ 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.buttonsOpacity = this.ONSConfig.buttonsOpacity; - config.ONSConfig.additionalOffset = this.ONSConfig.additionalOffset; + config.ONSConfig.safeArea = this.ONSConfig.safeArea; config.ONSConfig.buttonsSize = this.ONSConfig.buttonsSize; config.ONSConfig.buttonsX = this.ONSConfig.buttonsX; config.ONSConfig.buttonsY = this.ONSConfig.buttonsY; @@ -495,7 +580,6 @@ ConfigManager.makeData = function () { 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; @@ -509,11 +593,9 @@ ConfigManager.applyData = function (config) { _ConfigManager_applyData.apply(this, arguments); try { this.ONSConfig = config.ONSConfig; - this.ONSConfig.controlsOffsetX = config.ONSConfig.controlsOffsetX; - this.ONSConfig.controlsOffsetY = config.ONSConfig.controlsOffsetY; this.ONSConfig.buttonsScale = config.ONSConfig.buttonsScale; this.ONSConfig.buttonsOpacity = config.ONSConfig.buttonsOpacity; - this.ONSConfig.additionalOffset = config.ONSConfig.additionalOffset; + this.ONSConfig.safeArea = config.ONSConfig.safeArea; this.ONSConfig.buttonsSize = config.ONSConfig.buttonsSize; this.ONSConfig.buttonsX = config.ONSConfig.buttonsX; this.ONSConfig.buttonsY = config.ONSConfig.buttonsY; @@ -528,7 +610,6 @@ ConfigManager.applyData = function (config) { 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; @@ -610,7 +691,7 @@ Window_OmoMenuOptionsONSControls.prototype.createOptionBars = function () { bitmap.fillRect(x, 20, 2, 20, 'rgba(255, 255, 255, 1)'); }; // Create Sprites - for (var i = 0; i < 8; i++) { + for (var i = 0; i < 6; i++) { var sprite = new Sprite(bitmap); var index = Math.floor(i / 2); var rect = this.itemRect(index); @@ -629,10 +710,10 @@ Window_OmoMenuOptionsONSControls.prototype.makeOptionsList = function () { // Get Text //var text = LanguageManager.getPluginText('optionsMenu', 'audio'); var text = { - buttonsScale: {help: "Изменить размер наэкранных кнопок управления.", text: "РАЗМЕР УПРАВЛЕНИЯ", persent: true, maxValue: 500}, - buttonsOpacity: {help: "Изменить прозрачность наэкранных кнопок управления.", text: "ПРОЗРАЧНОСТЬ УПРАВЛЕНИЯ", persent: true, maxValue: 100}, - bumpersOffsetX: {help: "Сместить кнопки LB/RB по X координате.", text: "СМЕЩЕНИЕ LB/RB ПО X", persent: false, maxValue: 500}, - bumpersOffsetY: {help: "Сместить кнопки LB/RB по Y координате.", text: "СМЕЩЕНИЕ LB/RB ПО Y", persent: false, maxValue: 500} + buttonsScale: {help: "Изменить размер наэкранных кнопок управления.", text: "РАЗМЕР УПРАВЛЕНИЯ", isBar: true, persent: true, maxValue: 500}, + buttonsOpacity: {help: "Изменить прозрачность наэкранных кнопок управления.", text: "ПРОЗРАЧНОСТЬ УПРАВЛЕНИЯ", isBar: true, persent: true, maxValue: 100}, + safeArea: {help: "Изменить размер безопасной области для управления.", text: "БЕЗОПАСНАЯ ОБЛАСТЬ", isBar: true, persent: false, maxValue: 500}, + editMenu: {help: "Нажмите кнопку влево или вправо, чтобы открыть меню.", text: "ОТКРЫТЬ МЕНЮ НАСТРОЕК", isBar: false} } // Get Config var config = ConfigManager; @@ -647,10 +728,14 @@ Window_OmoMenuOptionsONSControls.prototype.makeOptionsList = function () { // Get Data var data = text[name]; // Add Option - if (data.persent) { - this._optionsList.push({ header: data.text + ':', config: name, option: ConfigManager.ONSConfig[name] * 100, helpText: data.help, persent: data.persent, maxValue: data.maxValue }); + if (data.isBar) { + if (data.persent) { + this._optionsList.push({ header: data.text + ':', config: name, option: ConfigManager.ONSConfig[name] * 100, helpText: data.help, isBar: data.isBar, persent: data.persent, maxValue: data.maxValue }); + } else { + this._optionsList.push({ header: data.text + ':', config: name, option: ConfigManager.ONSConfig[name], helpText: data.help, isBar: data.isBar, persent: data.persent, maxValue: data.maxValue }); + } } else { - this._optionsList.push({ header: data.text + ':', config: name, option: ConfigManager.ONSConfig[name], helpText: data.help, persent: data.persent, maxValue: data.maxValue }); + this._optionsList.push({ header: data.text, config: name, helpText: data.help, isBar: data.isBar}); } }; } @@ -666,8 +751,11 @@ Window_OmoMenuOptionsONSControls.prototype.drawItem = function (index) { if (data) { // Draw Header this.contents.drawText(data.header, rect.x + 50, rect.y, rect.width, 24); + if (!data.isBar) {console.log(this.contents);} // Update option bar - this.updateOptionBar(index, data.option, data.persent); + if (data.isBar) { + this.updateOptionBar(index, data.option, data.persent); + } }; }; //============================================================================= @@ -693,7 +781,11 @@ Window_OmoMenuOptionsONSControls.prototype.cursorRight = function (wrap) { if (data) { var rate = Input.isLongPressed('right') ? 5 : 5 data.option = Math.min(data.option + rate, data.maxValue); - this.updateOptionBar(this.index(), data.option, data.persent); + if (data.isBar) { + this.updateOptionBar(this.index(), data.option, data.persent); + } else { + ONSControls.openEditMode(); + } }; }; //============================================================================= @@ -708,11 +800,15 @@ Window_OmoMenuOptionsONSControls.prototype.cursorLeft = function (wrap) { if (data) { var rate = Input.isLongPressed('left') ? 5 : 5 data.option = Math.max(data.option - rate, 0); - this.updateOptionBar(this.index(), data.option, data.persent); + if (data.isBar) { + this.updateOptionBar(this.index(), data.option, data.persent); + } else { + ONSControls.openEditMode(); + } }; }; //============================================================================= -// * Cursor Left +// * Update option bar //============================================================================= Window_OmoMenuOptionsONSControls.prototype.updateOptionBar = function (index, option, persent) { // Get Data @@ -754,7 +850,7 @@ Window_OmoMenuOptionsONSControls.prototype.add = function () { return [this._generalOptionsWindow, this._audioOptionsWindow, this._controlOptionsWindow, this._onscontrolsOptionsWindow, this._systemOptionsWindow] } Scene_OmoriTitleScreen.prototype.createONSControlsOptionsWindow = function () { - // Create Audio Options Window + // Create ONSControls Options Window this._onscontrolsOptionsWindow = new Window_OmoMenuOptionsONSControls(); this._onscontrolsOptionsWindow.setHandler('cancel', this.onOptionWindowCancel.bind(this)); this._onscontrolsOptionsWindow.visible = false; @@ -809,7 +905,9 @@ ONSControls.initialize = function() { this.createBumpers(); this.createAdditionalButtons(); this.updateButtons(); + this.setupInteractive(); this.disableTouch(); + this.replaceBackEvent(); VirtualGamepad.connect(); Window_OmoMenuOptionsONSControls.prototype.add(); } \ No newline at end of file