OMORI_Android/www.rus/js/plugins/VND_ONSControls.js

567 lines
No EOL
30 KiB
JavaScript

// by VienDesu! Poring Team 2024
//=============================================================================
// ** ONSControls
//=============================================================================
class ONSControls {};
//=============================================================================
// * Plugin options
//=============================================================================
ONSControls.parameters = PluginManager.parameters('VND_ONSControls');
ONSControls.options = {
zIndex: this.parameters.zIndex,
gamepadId: String(this.parameters.gamepadId),
gamepadIndex: this.parameters.gamepadIndex
}
//=============================================================================
// * 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(), new PIXI.Sprite(),
new PIXI.Sprite(), new PIXI.Sprite()
]
container.anchor.set(0.5);
for (elem of directions) {
container.addChild(elem);
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.x = ConfigManager.ONSConfig.buttonsX;
container.y = 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.x = ConfigManager.ONSConfig.dPadX;
dpadContainer.y = ConfigManager.ONSConfig.dPadY;
for (elem of directions) {
elem.width = dPadSize / 5.5;
elem.height = dPadSize / 5.5;
elem.interactive = true;
}
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.x = ConfigManager.ONSConfig.LBX;
LBsprite.y = ConfigManager.ONSConfig.LBY;
LBsprite.width = ConfigManager.ONSConfig.bumpersWidth;
LBsprite.height = ConfigManager.ONSConfig.bumpersHeight;
RBsprite.x = ConfigManager.ONSConfig.RBX;
RBsprite.y = ConfigManager.ONSConfig.RBY;
RBsprite.width = ConfigManager.ONSConfig.bumpersWidth;
RBsprite.height = ConfigManager.ONSConfig.bumpersHeight;
// Update additional
const showButton = this.ShowButton;
// const switchButton = this.switchButton;
showButton.x = ConfigManager.ONSConfig.showX;
showButton.y = ConfigManager.ONSConfig.showY;
showButton.width = ConfigManager.ONSConfig.additonalSize;
showButton.height = ConfigManager.ONSConfig.additonalSize;
// switchButton.x = ConfigManager.ONSConfig.switchX;
// switchButton.y = 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.dPadScale ||= 1;
ConfigManager.ONSConfig.dPadSize ||= ONSControls.controlsCanvas.vh(0.36) * ConfigManager.ONSConfig.dPadScale;
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.bumpersScale ||= 1;
ConfigManager.ONSConfig.bumpersOffsetX ||= 16;
ConfigManager.ONSConfig.bumpersWidth ||= ONSControls.controlsCanvas.vh(0.188) * ConfigManager.ONSConfig.bumpersScale;
ConfigManager.ONSConfig.bumpersHeight ||= ONSControls.controlsCanvas.vh(0.12) * ConfigManager.ONSConfig.bumpersScale;
ConfigManager.ONSConfig.bumpersOffsetY ||= ONSControls.controlsCanvas.vh(0.56);
ConfigManager.ONSConfig.LBX ||= ConfigManager.ONSConfig.bumpersOffsetX + ConfigManager.ONSConfig.bumpersWidth / 2;
ConfigManager.ONSConfig.LBY ||= ONSControls.controlsCanvas.screen.height - (ConfigManager.ONSConfig.bumpersOffsetY + ConfigManager.ONSConfig.bumpersHeight / 2);
ConfigManager.ONSConfig.RBX ||= ONSControls.controlsCanvas.screen.width - (ConfigManager.ONSConfig.bumpersOffsetX + ConfigManager.ONSConfig.bumpersWidth / 2);
ConfigManager.ONSConfig.RBY ||= ONSControls.controlsCanvas.screen.height - (ConfigManager.ONSConfig.bumpersOffsetY + ConfigManager.ONSConfig.bumpersHeight / 2);
ConfigManager.ONSConfig.additionalScale ||= 1;
ConfigManager.ONSConfig.additionalOffset ||= ONSControls.controlsCanvas.vh(0.03);
ConfigManager.ONSConfig.additonalSize ||= ONSControls.controlsCanvas.vh(0.06) * ConfigManager.ONSConfig.additionalScale;
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.dPadScale = this.ONSConfig.dPadScale;
config.ONSConfig.bumpersScale = this.ONSConfig.bumpersScale;
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.additionalScale = this.ONSConfig.additionalScale;
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.dPadScale = config.ONSConfig.dPadScale;
this.ONSConfig.bumpersScale = config.ONSConfig.bumpersScale;
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.additionalScale = config.ONSConfig.additionalScale;
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.dPadScale = 1;
ConfigManager.ONSConfig.dPadSize = ONSControls.controlsCanvas.vh(0.36) * ConfigManager.ONSConfig.dPadScale;
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.bumpersScale = 1;
ConfigManager.ONSConfig.bumpersOffsetX = 16;
ConfigManager.ONSConfig.bumpersWidth = ONSControls.controlsCanvas.vh(0.188) * ConfigManager.ONSConfig.bumpersScale;
ConfigManager.ONSConfig.bumpersHeight = ONSControls.controlsCanvas.vh(0.12) * ConfigManager.ONSConfig.bumpersScale;
ConfigManager.ONSConfig.bumpersOffsetY = ONSControls.controlsCanvas.vh(0.56);
ConfigManager.ONSConfig.LBX = ConfigManager.ONSConfig.bumpersOffsetX + ConfigManager.ONSConfig.bumpersWidth / 2;
ConfigManager.ONSConfig.LBY = ONSControls.controlsCanvas.screen.height - (ConfigManager.ONSConfig.bumpersOffsetY + ConfigManager.ONSConfig.bumpersHeight / 2);
ConfigManager.ONSConfig.RBX = ONSControls.controlsCanvas.screen.width - (ConfigManager.ONSConfig.bumpersOffsetX + ConfigManager.ONSConfig.bumpersWidth / 2);
ConfigManager.ONSConfig.RBY = ONSControls.controlsCanvas.screen.height - (ConfigManager.ONSConfig.bumpersOffsetY + ConfigManager.ONSConfig.bumpersHeight / 2);
ConfigManager.ONSConfig.additionalScale = 1;
ConfigManager.ONSConfig.additionalOffset = ONSControls.controlsCanvas.vh(0.03);
ConfigManager.ONSConfig.additonalSize = ONSControls.controlsCanvas.vh(0.06) * ConfigManager.ONSConfig.additionalScale;
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.dPadScale = ConfigManager.ONSConfig.dPadScale;
ConfigManager.ONSConfig.dPadSize = ONSControls.controlsCanvas.vh(0.36) * ConfigManager.ONSConfig.dPadScale;
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.bumpersScale = ConfigManager.ONSConfig.bumpersScale;
ConfigManager.ONSConfig.bumpersOffsetX = ConfigManager.ONSConfig.bumpersOffsetX;
ConfigManager.ONSConfig.bumpersWidth = ONSControls.controlsCanvas.vh(0.188) * ConfigManager.ONSConfig.bumpersScale;
ConfigManager.ONSConfig.bumpersHeight = ONSControls.controlsCanvas.vh(0.12) * ConfigManager.ONSConfig.bumpersScale;
ConfigManager.ONSConfig.bumpersOffsetY = ONSControls.controlsCanvas.vh(0.56);
ConfigManager.ONSConfig.LBX = ConfigManager.ONSConfig.bumpersOffsetX + ConfigManager.ONSConfig.bumpersWidth / 2;
ConfigManager.ONSConfig.LBY = ONSControls.controlsCanvas.screen.height - (ConfigManager.ONSConfig.bumpersOffsetY + ConfigManager.ONSConfig.bumpersHeight / 2);
ConfigManager.ONSConfig.RBX = ONSControls.controlsCanvas.screen.width - (ConfigManager.ONSConfig.bumpersOffsetX + ConfigManager.ONSConfig.bumpersWidth / 2);
ConfigManager.ONSConfig.RBY = ONSControls.controlsCanvas.screen.height - (ConfigManager.ONSConfig.bumpersOffsetY + ConfigManager.ONSConfig.bumpersHeight / 2);
ConfigManager.ONSConfig.additionalScale = ConfigManager.ONSConfig.additionalScale;
ConfigManager.ONSConfig.additionalOffset = ONSControls.controlsCanvas.vh(0.03);
ConfigManager.ONSConfig.additonalSize = ONSControls.controlsCanvas.vh(0.06) * ConfigManager.ONSConfig.additionalScale;
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();
Window_OmoMenuOptionsONSControls.prototype.add();
}