mirror of
https://github.com/RandomityGuy/MBHaxe.git
synced 2026-01-07 07:42:18 +00:00
add blast button for touch controls
This commit is contained in:
parent
19ca4fef2d
commit
39450065c1
8 changed files with 64 additions and 7 deletions
BIN
data/ui/touch/explosion.png
Normal file
BIN
data/ui/touch/explosion.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 19 KiB |
|
|
@ -1160,7 +1160,10 @@ class MarbleWorld extends Scheduler {
|
|||
|
||||
this.tickSchedule(timeState.currentAttemptTime);
|
||||
|
||||
if (Key.isPressed(Settings.controlsSettings.blast) && !this.isWatching && this.game == "ultra") {
|
||||
if (Key.isPressed(Settings.controlsSettings.blast)
|
||||
|| (MarbleGame.instance.touchInput.blastbutton.pressed)
|
||||
&& !this.isWatching
|
||||
&& this.game == "ultra") {
|
||||
this.marble.useBlast();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -67,6 +67,8 @@ typedef TouchSettings = {
|
|||
var jumpButtonSize:Float;
|
||||
var powerupButtonPos:Array<Float>;
|
||||
var powerupButtonSize:Float;
|
||||
var blastButtonPos:Array<Float>;
|
||||
var blastButtonSize:Float;
|
||||
var buttonJoystickMultiplier:Float;
|
||||
}
|
||||
|
||||
|
|
@ -131,6 +133,8 @@ class Settings {
|
|||
jumpButtonSize: 60,
|
||||
powerupButtonPos: [440, 180],
|
||||
powerupButtonSize: 60,
|
||||
blastButtonPos: [300, 240],
|
||||
blastButtonSize: 60,
|
||||
buttonJoystickMultiplier: 2.5
|
||||
}
|
||||
|
||||
|
|
@ -287,6 +291,10 @@ class Settings {
|
|||
if (json.touch != null) {
|
||||
touchSettings = json.touch;
|
||||
}
|
||||
if (touchSettings.blastButtonPos == null) {
|
||||
touchSettings.blastButtonPos = [300, 240];
|
||||
touchSettings.blastButtonSize = 60;
|
||||
}
|
||||
if (json.stats != null) {
|
||||
playStatistics = json.stats;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,7 +47,6 @@ class ManifestEntry extends FileEntry {
|
|||
private var bytes:Bytes;
|
||||
private var readPos:Int;
|
||||
private var loaded:Bool;
|
||||
private var loadPromise:js.lib.Promise<Void>;
|
||||
#end
|
||||
|
||||
public function new(fs:ManifestFileSystem, name:String, relPath:String, file:String, ?originalFile:String) {
|
||||
|
|
@ -131,7 +130,7 @@ class ManifestEntry extends FileEntry {
|
|||
if (onReady != null)
|
||||
haxe.Timer.delay(onReady, 1);
|
||||
} else {
|
||||
this.loadPromise = js.Browser.window.fetch(file).then((res:js.html.Response) -> {
|
||||
js.Browser.window.fetch(file).then((res:js.html.Response) -> {
|
||||
return res.arrayBuffer();
|
||||
}).then((buf:js.lib.ArrayBuffer) -> {
|
||||
loaded = true;
|
||||
|
|
|
|||
|
|
@ -154,7 +154,7 @@ class PlayGui {
|
|||
initFPSMeter();
|
||||
|
||||
if (Util.isTouchDevice()) {
|
||||
MarbleGame.instance.touchInput.showControls(this.playGuiCtrl);
|
||||
MarbleGame.instance.touchInput.showControls(this.playGuiCtrl, game == 'ultra');
|
||||
}
|
||||
|
||||
playGuiCtrl.render(scene2d);
|
||||
|
|
@ -461,13 +461,16 @@ class PlayGui {
|
|||
blastFill.extent = new Vector(Util.lerp(0, 110, value), 17);
|
||||
if (oldVal < 22 && blastFill.extent.x >= 22) {
|
||||
blastFill.bmp.tile = ResourceLoader.getResource("data/ui/game/blastbar_bargreen.png", ResourceLoader.getImage, this.imageResources).toTile();
|
||||
MarbleGame.instance.touchInput.blastbutton.setEnabled(true);
|
||||
}
|
||||
if (oldVal >= 22 && blastFill.extent.x < 22) {
|
||||
blastFill.bmp.tile = ResourceLoader.getResource("data/ui/game/blastbar_bargray.png", ResourceLoader.getImage, this.imageResources).toTile();
|
||||
MarbleGame.instance.touchInput.blastbutton.setEnabled(false);
|
||||
}
|
||||
} else {
|
||||
blastFill.extent = new Vector(0, 16); // WE will just use this extra number to store whether it was previously charged or not
|
||||
blastFrame.bmp.tile = ResourceLoader.getResource("data/ui/game/blastbar_charged.png", ResourceLoader.getImage, this.imageResources).toTile();
|
||||
MarbleGame.instance.touchInput.blastbutton.setEnabled(true);
|
||||
}
|
||||
this.blastBar.render(scene2d);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -64,10 +64,14 @@ class TouchCtrlsEditGui extends GuiImage {
|
|||
var powerupBtn = new TouchEditButton(ResourceLoader.getImage("data/ui/touch/energy.png").resource,
|
||||
new Vector(Settings.touchSettings.powerupButtonPos[0], Settings.touchSettings.powerupButtonPos[1]), Settings.touchSettings.powerupButtonSize);
|
||||
|
||||
var blastBtn = new TouchEditButton(ResourceLoader.getImage("data/ui/touch/explosion.png").resource,
|
||||
new Vector(Settings.touchSettings.blastButtonPos[0], Settings.touchSettings.blastButtonPos[1]), Settings.touchSettings.blastButtonSize);
|
||||
|
||||
jumpBtn.onClick = (sender, mousePos) -> {
|
||||
sender.setSelected(true);
|
||||
powerupBtn.setSelected(false);
|
||||
joystick.setSelected(false);
|
||||
blastBtn.setSelected(false);
|
||||
}
|
||||
|
||||
jumpBtn.onChangeCb = (sender, value, rvalue) -> {
|
||||
|
|
@ -79,6 +83,7 @@ class TouchCtrlsEditGui extends GuiImage {
|
|||
sender.setSelected(true);
|
||||
jumpBtn.setSelected(false);
|
||||
joystick.setSelected(false);
|
||||
blastBtn.setSelected(false);
|
||||
}
|
||||
|
||||
powerupBtn.onChangeCb = (sender, value, rvalue) -> {
|
||||
|
|
@ -86,10 +91,23 @@ class TouchCtrlsEditGui extends GuiImage {
|
|||
Settings.touchSettings.powerupButtonSize = rvalue;
|
||||
}
|
||||
|
||||
blastBtn.onClick = (sender, mousePos) -> {
|
||||
sender.setSelected(true);
|
||||
jumpBtn.setSelected(false);
|
||||
powerupBtn.setSelected(false);
|
||||
joystick.setSelected(false);
|
||||
}
|
||||
|
||||
blastBtn.onChangeCb = (sender, value, rvalue) -> {
|
||||
Settings.touchSettings.blastButtonPos = [value.x, value.y];
|
||||
Settings.touchSettings.blastButtonSize = rvalue;
|
||||
}
|
||||
|
||||
joystick.onClick = (mousePos) -> {
|
||||
joystick.setSelected(true);
|
||||
jumpBtn.setSelected(false);
|
||||
powerupBtn.setSelected(false);
|
||||
blastBtn.setSelected(false);
|
||||
}
|
||||
|
||||
joystick.onChangeCb = (value, rvalue) -> {
|
||||
|
|
@ -102,5 +120,6 @@ class TouchCtrlsEditGui extends GuiImage {
|
|||
this.addChild(joystick);
|
||||
this.addChild(jumpBtn);
|
||||
this.addChild(powerupBtn);
|
||||
this.addChild(blastBtn);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
15
src/touch/BlastButton.hx
Normal file
15
src/touch/BlastButton.hx
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
package touch;
|
||||
|
||||
import touch.TouchInput.Touch;
|
||||
import h3d.Vector;
|
||||
import hxd.Window;
|
||||
import src.ResourceLoader;
|
||||
import src.Settings;
|
||||
|
||||
class BlastButton extends TouchButton {
|
||||
public function new() {
|
||||
super(ResourceLoader.getImage("data/ui/touch/explosion.png").resource,
|
||||
new Vector(Settings.touchSettings.blastButtonPos[0], Settings.touchSettings.blastButtonPos[1]), Settings.touchSettings.blastButtonSize);
|
||||
this.setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
|
@ -39,9 +39,8 @@ class TouchInput {
|
|||
public var movementInput:MovementInput;
|
||||
|
||||
public var jumpButton:JumpButton;
|
||||
|
||||
public var powerupButton:PowerupButton;
|
||||
|
||||
public var blastbutton:BlastButton;
|
||||
public var pauseButton:PauseButton;
|
||||
|
||||
public var currentTouchState:TouchEventState;
|
||||
|
|
@ -55,6 +54,7 @@ class TouchInput {
|
|||
this.movementInput = new MovementInput();
|
||||
this.jumpButton = new JumpButton();
|
||||
this.powerupButton = new PowerupButton();
|
||||
this.blastbutton = new BlastButton();
|
||||
this.pauseButton = new PauseButton();
|
||||
this.currentTouchState = new TouchEventState();
|
||||
this.previousTouchState = new TouchEventState();
|
||||
|
|
@ -101,9 +101,11 @@ class TouchInput {
|
|||
currentTouchState = new TouchEventState();
|
||||
}
|
||||
|
||||
public function showControls(parentGui:GuiControl) {
|
||||
public function showControls(parentGui:GuiControl, ultra:Bool) {
|
||||
jumpButton.dispose();
|
||||
powerupButton.dispose();
|
||||
if (ultra)
|
||||
blastbutton.dispose();
|
||||
movementInput.dispose();
|
||||
pauseButton.dispose();
|
||||
cameraInput.dispose();
|
||||
|
|
@ -111,10 +113,14 @@ class TouchInput {
|
|||
this.movementInput = new MovementInput();
|
||||
this.jumpButton = new JumpButton();
|
||||
this.powerupButton = new PowerupButton();
|
||||
if (ultra)
|
||||
this.blastbutton = new BlastButton();
|
||||
this.pauseButton = new PauseButton();
|
||||
pauseButton.add(parentGui);
|
||||
jumpButton.add(parentGui);
|
||||
powerupButton.add(parentGui);
|
||||
if (ultra)
|
||||
blastbutton.add(parentGui);
|
||||
movementInput.add(parentGui);
|
||||
cameraInput.add(parentGui);
|
||||
cameraInput.enabled = true;
|
||||
|
|
@ -123,6 +129,8 @@ class TouchInput {
|
|||
public function setControlsEnabled(enabled:Bool) {
|
||||
this.jumpButton.setVisible(enabled);
|
||||
this.powerupButton.setVisible(enabled);
|
||||
if (this.blastbutton != null)
|
||||
this.blastbutton.setVisible(enabled);
|
||||
this.movementInput.setVisible(enabled);
|
||||
this.pauseButton.setVisible(enabled);
|
||||
this.cameraInput.enabled = enabled;
|
||||
|
|
@ -131,6 +139,8 @@ class TouchInput {
|
|||
public function hideControls(parentGui:GuiControl) {
|
||||
jumpButton.remove(parentGui);
|
||||
powerupButton.remove(parentGui);
|
||||
if (this.blastbutton != null)
|
||||
blastbutton.remove(parentGui);
|
||||
movementInput.remove(parentGui);
|
||||
pauseButton.remove(parentGui);
|
||||
cameraInput.remove(parentGui);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue