New controls: Implement base functionality

This commit is contained in:
OleSTEEP 2024-02-01 16:27:54 +03:00
parent b5d5cc6c89
commit 043164ec38

View file

@ -80,12 +80,35 @@ ONSControls.createButtons = function() {
//=============================================================================
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()
]
var dPadSize = ConfigManager.ONSConfig.dPadSize;
container.width = dPadSize;
container.height = dPadSize;
container.anchor.set(0.5);
container.x = ConfigManager.ONSConfig.dPadX;
container.y = ConfigManager.ONSConfig.dPadY;
for (elem of directions) {
container.addChild(elem);
elem.anchor.set(0.5);
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;
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;
}
@ -93,43 +116,51 @@ ONSControls.createDPad = function() {
// * LB/RB Buttons
//=============================================================================
ONSControls.createBumpers = function() {
const LBcontainer = new PIXI.Sprite.fromImage("js/porting/assets/omori_lb_button.png");
const RBcontainer = new PIXI.Sprite.fromImage("js/porting/assets/omori_rb_button.png");
LBcontainer.x = ConfigManager.ONSConfig.LBX;
LBcontainer.y = ConfigManager.ONSConfig.LBY;
LBcontainer.width = ConfigManager.ONSConfig.bumpersWidth;
LBcontainer.height = ConfigManager.ONSConfig.bumpersHeight;
LBcontainer.anchor.set(0.5);
RBcontainer.x = ConfigManager.ONSConfig.RBX;
RBcontainer.y = ConfigManager.ONSConfig.RBY;
RBcontainer.width = ConfigManager.ONSConfig.bumpersWidth;
RBcontainer.height = ConfigManager.ONSConfig.bumpersHeight;
RBcontainer.anchor.set(0.5);
this.controlsCanvas.stage.addChild(LBcontainer);
this.controlsCanvas.stage.addChild(RBcontainer);
this.LBcontainer = LBcontainer;
this.RBcontainer = RBcontainer;
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.x = ConfigManager.ONSConfig.LBX;
LBsprite.y = ConfigManager.ONSConfig.LBY;
LBsprite.width = ConfigManager.ONSConfig.bumpersWidth;
LBsprite.height = ConfigManager.ONSConfig.bumpersHeight;
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.x = ConfigManager.ONSConfig.RBX;
RBsprite.y = ConfigManager.ONSConfig.RBY;
RBsprite.width = ConfigManager.ONSConfig.bumpersWidth;
RBsprite.height = ConfigManager.ONSConfig.bumpersHeight;
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");
//const switchButton = new PIXI.Sprite.fromImage("js/porting/assets/omori_switch_button.png");
showButton.x = ConfigManager.ONSConfig.showX;
showButton.y = ConfigManager.ONSConfig.showY;
showButton.width = ConfigManager.ONSConfig.additonalSize;
showButton.height = ConfigManager.ONSConfig.additonalSize;
showButton.anchor.set(0.5);
switchButton.x = ConfigManager.ONSConfig.switchX;
switchButton.y = ConfigManager.ONSConfig.switchY;
switchButton.width = ConfigManager.ONSConfig.additonalSize;
switchButton.height = ConfigManager.ONSConfig.additonalSize;
switchButton.anchor.set(0.5);
showButton.interactive = true;
showButton.on("pointerdown", this.toggle)
// switchButton.x = ConfigManager.ONSConfig.switchX;
// switchButton.y = ConfigManager.ONSConfig.switchY;
// switchButton.width = ConfigManager.ONSConfig.additonalSize;
// switchButton.height = ConfigManager.ONSConfig.additonalSize;
// switchButton.anchor.set(0.5);
this.controlsCanvas.stage.addChild(showButton);
this.controlsCanvas.stage.addChild(switchButton);
// this.controlsCanvas.stage.addChild(switchButton);
this.ShowButton = showButton;
this.SwitchButton = switchButton;
// this.SwitchButton = switchButton;
}
//=============================================================================
// * Idle animation (spinning buttons)
@ -149,7 +180,26 @@ ONSControls.playIdleAnimation = function() {
//=============================================================================
ONSControls.sendEvent = function(event, button) {
const key = VirtualGamepad.keys.find((element) => element.name == button);
VirtualGamepad.gamepad.buttons[key.code].pressed = event.type == "pointerdown" ? true : false
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;
}
}
}
//=============================================================================
// * Fix controls size on empty screen
@ -157,11 +207,12 @@ ONSControls.sendEvent = function(event, button) {
document.addEventListener("deviceready", onCordovaDeviceReady, false);
ONSControls.onCordovaDeviceReady = function () {
console.log("ONSControls - SETUP!!!"); //Remove in release
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
};
@ -274,8 +325,8 @@ ConfigManager.ONSConfig.dPadX = ConfigManager.ONSConfig.dPadSize / 2 + ConfigMan
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.204) * ConfigManager.ONSConfig.bumpersScale;
ConfigManager.ONSConfig.bumpersHeight = ONSControls.controlsCanvas.vh(0.13) * ConfigManager.ONSConfig.bumpersScale;
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);
@ -383,8 +434,8 @@ ConfigManager.restoreDefaultConfig = function () {
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.204) * ConfigManager.ONSConfig.bumpersScale;
ConfigManager.ONSConfig.bumpersHeight = ONSControls.controlsCanvas.vh(0.13) * ConfigManager.ONSConfig.bumpersScale;
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);
@ -410,7 +461,7 @@ ConfigManager.restoreDefaultConfig = function () {
// * Plugin init
//=============================================================================
ONSControls.initialize = function() {
console.log("PLUGIN INIT");
console.log("ONSControls: Initialized");
this.createCanvas();
this.configManager();
this.createButtons();