mirror of
https://github.com/RandomityGuy/MBHaxe.git
synced 2026-04-26 12:41:40 +00:00
work on rewind touch controls and fix scroll bugs
This commit is contained in:
parent
df669cca17
commit
2e6eedba81
8 changed files with 67 additions and 4 deletions
BIN
data/ui/touch/rewind.png
Normal file
BIN
data/ui/touch/rewind.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.3 KiB |
|
|
@ -991,10 +991,13 @@ class MarbleWorld extends Scheduler {
|
||||||
|
|
||||||
var realDt = dt;
|
var realDt = dt;
|
||||||
|
|
||||||
if (Key.isDown(Settings.controlsSettings.rewind) && Settings.optionsSettings.rewindEnabled && !this.isWatching) {
|
if ((Key.isDown(Settings.controlsSettings.rewind) || MarbleGame.instance.touchInput.rewindButton.pressed)
|
||||||
|
&& Settings.optionsSettings.rewindEnabled
|
||||||
|
&& !this.isWatching) {
|
||||||
this.rewinding = true;
|
this.rewinding = true;
|
||||||
} else {
|
} else {
|
||||||
if (Key.isReleased(Settings.controlsSettings.rewind) && this.rewinding) {
|
if ((Key.isReleased(Settings.controlsSettings.rewind) || !MarbleGame.instance.touchInput.rewindButton.pressed)
|
||||||
|
&& this.rewinding) {
|
||||||
if (this.isRecording) {
|
if (this.isRecording) {
|
||||||
this.replay.spliceReplay(timeState.currentAttemptTime);
|
this.replay.spliceReplay(timeState.currentAttemptTime);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -75,6 +75,8 @@ typedef TouchSettings = {
|
||||||
var powerupButtonSize:Float;
|
var powerupButtonSize:Float;
|
||||||
var blastButtonPos:Array<Float>;
|
var blastButtonPos:Array<Float>;
|
||||||
var blastButtonSize:Float;
|
var blastButtonSize:Float;
|
||||||
|
var rewindButtonPos:Array<Float>;
|
||||||
|
var rewindButtonSize:Float;
|
||||||
var buttonJoystickMultiplier:Float;
|
var buttonJoystickMultiplier:Float;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -159,6 +161,8 @@ class Settings {
|
||||||
powerupButtonSize: 60,
|
powerupButtonSize: 60,
|
||||||
blastButtonPos: [300, 240],
|
blastButtonPos: [300, 240],
|
||||||
blastButtonSize: 60,
|
blastButtonSize: 60,
|
||||||
|
rewindButtonPos: [380, 240],
|
||||||
|
rewindButtonSize: 60,
|
||||||
buttonJoystickMultiplier: 2.5
|
buttonJoystickMultiplier: 2.5
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -354,6 +358,10 @@ class Settings {
|
||||||
touchSettings.blastButtonPos = [300, 240];
|
touchSettings.blastButtonPos = [300, 240];
|
||||||
touchSettings.blastButtonSize = 60;
|
touchSettings.blastButtonSize = 60;
|
||||||
}
|
}
|
||||||
|
if (touchSettings.rewindButtonPos == null) {
|
||||||
|
touchSettings.rewindButtonPos = [380, 240];
|
||||||
|
touchSettings.rewindButtonSize = 60;
|
||||||
|
}
|
||||||
if (json.gamepad != null) {
|
if (json.gamepad != null) {
|
||||||
gamepadSettings = json.gamepad;
|
gamepadSettings = json.gamepad;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ class GuiScrollCtrl extends GuiControl {
|
||||||
public var scrollY:Float = 0;
|
public var scrollY:Float = 0;
|
||||||
public var enabled:Bool = true;
|
public var enabled:Bool = true;
|
||||||
public var childrenHandleScroll:Bool = false;
|
public var childrenHandleScroll:Bool = false;
|
||||||
|
public var scrollSpeed = 500;
|
||||||
|
|
||||||
var maxScrollY:Float;
|
var maxScrollY:Float;
|
||||||
|
|
||||||
|
|
@ -102,7 +103,8 @@ class GuiScrollCtrl extends GuiControl {
|
||||||
|
|
||||||
public override function getRenderRectangle():Rect {
|
public override function getRenderRectangle():Rect {
|
||||||
var rrec = super.getRenderRectangle();
|
var rrec = super.getRenderRectangle();
|
||||||
rrec.scroll.y = scrollY * this.maxScrollY / rrec.extent.y;
|
if (!this.childrenHandleScroll)
|
||||||
|
rrec.scroll.y = scrollY * this.maxScrollY / rrec.extent.y;
|
||||||
return rrec;
|
return rrec;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -220,6 +222,7 @@ class GuiScrollCtrl extends GuiControl {
|
||||||
if (Util.isTouchDevice()) {
|
if (Util.isTouchDevice()) {
|
||||||
this.pressed = false;
|
this.pressed = false;
|
||||||
this.dirty = true;
|
this.dirty = true;
|
||||||
|
deltaY = 0;
|
||||||
this.updateScrollVisual();
|
this.updateScrollVisual();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -228,7 +231,8 @@ class GuiScrollCtrl extends GuiControl {
|
||||||
if (Util.isTouchDevice()) {
|
if (Util.isTouchDevice()) {
|
||||||
super.onMouseMove(mouseState);
|
super.onMouseMove(mouseState);
|
||||||
if (this.pressed) {
|
if (this.pressed) {
|
||||||
var dy = mouseState.position.y - this.prevMousePos.y;
|
var dy = (mouseState.position.y - this.prevMousePos.y) * scrollSpeed / this.maxScrollY;
|
||||||
|
deltaY = -dy;
|
||||||
this.scrollY -= dy;
|
this.scrollY -= dy;
|
||||||
this.prevMousePos = mouseState.position;
|
this.prevMousePos = mouseState.position;
|
||||||
this.updateScrollVisual();
|
this.updateScrollVisual();
|
||||||
|
|
|
||||||
|
|
@ -81,6 +81,7 @@ class HelpCreditsGui extends GuiImage {
|
||||||
.toTile());
|
.toTile());
|
||||||
scrollCtrl2.position = new Vector(219, 28);
|
scrollCtrl2.position = new Vector(219, 28);
|
||||||
scrollCtrl2.extent = new Vector(386, 342);
|
scrollCtrl2.extent = new Vector(386, 342);
|
||||||
|
scrollCtrl2.childrenHandleScroll = true;
|
||||||
wnd.addChild(scrollCtrl2);
|
wnd.addChild(scrollCtrl2);
|
||||||
|
|
||||||
var arial14fontdata = ResourceLoader.getFileEntry("data/font/arial.fnt");
|
var arial14fontdata = ResourceLoader.getFileEntry("data/font/arial.fnt");
|
||||||
|
|
|
||||||
|
|
@ -67,11 +67,15 @@ class TouchCtrlsEditGui extends GuiImage {
|
||||||
var blastBtn = new TouchEditButton(ResourceLoader.getImage("data/ui/touch/explosion.png").resource,
|
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);
|
new Vector(Settings.touchSettings.blastButtonPos[0], Settings.touchSettings.blastButtonPos[1]), Settings.touchSettings.blastButtonSize);
|
||||||
|
|
||||||
|
var rewindBtn = new TouchEditButton(ResourceLoader.getImage("data/ui/touch/rewind.png").resource,
|
||||||
|
new Vector(Settings.touchSettings.rewindButtonPos[0], Settings.touchSettings.rewindButtonPos[1]), Settings.touchSettings.rewindButtonSize);
|
||||||
|
|
||||||
jumpBtn.onClick = (sender, mousePos) -> {
|
jumpBtn.onClick = (sender, mousePos) -> {
|
||||||
sender.setSelected(true);
|
sender.setSelected(true);
|
||||||
powerupBtn.setSelected(false);
|
powerupBtn.setSelected(false);
|
||||||
joystick.setSelected(false);
|
joystick.setSelected(false);
|
||||||
blastBtn.setSelected(false);
|
blastBtn.setSelected(false);
|
||||||
|
rewindBtn.setSelected(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
jumpBtn.onChangeCb = (sender, value, rvalue) -> {
|
jumpBtn.onChangeCb = (sender, value, rvalue) -> {
|
||||||
|
|
@ -84,6 +88,7 @@ class TouchCtrlsEditGui extends GuiImage {
|
||||||
jumpBtn.setSelected(false);
|
jumpBtn.setSelected(false);
|
||||||
joystick.setSelected(false);
|
joystick.setSelected(false);
|
||||||
blastBtn.setSelected(false);
|
blastBtn.setSelected(false);
|
||||||
|
rewindBtn.setSelected(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
powerupBtn.onChangeCb = (sender, value, rvalue) -> {
|
powerupBtn.onChangeCb = (sender, value, rvalue) -> {
|
||||||
|
|
@ -96,6 +101,7 @@ class TouchCtrlsEditGui extends GuiImage {
|
||||||
jumpBtn.setSelected(false);
|
jumpBtn.setSelected(false);
|
||||||
powerupBtn.setSelected(false);
|
powerupBtn.setSelected(false);
|
||||||
joystick.setSelected(false);
|
joystick.setSelected(false);
|
||||||
|
rewindBtn.setSelected(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
blastBtn.onChangeCb = (sender, value, rvalue) -> {
|
blastBtn.onChangeCb = (sender, value, rvalue) -> {
|
||||||
|
|
@ -103,11 +109,25 @@ class TouchCtrlsEditGui extends GuiImage {
|
||||||
Settings.touchSettings.blastButtonSize = rvalue;
|
Settings.touchSettings.blastButtonSize = rvalue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rewindBtn.onClick = (sender, mousePos) -> {
|
||||||
|
sender.setSelected(true);
|
||||||
|
jumpBtn.setSelected(false);
|
||||||
|
powerupBtn.setSelected(false);
|
||||||
|
joystick.setSelected(false);
|
||||||
|
blastBtn.setSelected(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
rewindBtn.onChangeCb = (sender, value, rvalue) -> {
|
||||||
|
Settings.touchSettings.rewindButtonPos = [value.x, value.y];
|
||||||
|
Settings.touchSettings.rewindButtonSize = rvalue;
|
||||||
|
}
|
||||||
|
|
||||||
joystick.onClick = (mousePos) -> {
|
joystick.onClick = (mousePos) -> {
|
||||||
joystick.setSelected(true);
|
joystick.setSelected(true);
|
||||||
jumpBtn.setSelected(false);
|
jumpBtn.setSelected(false);
|
||||||
powerupBtn.setSelected(false);
|
powerupBtn.setSelected(false);
|
||||||
blastBtn.setSelected(false);
|
blastBtn.setSelected(false);
|
||||||
|
rewindBtn.setSelected(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
joystick.onChangeCb = (value, rvalue) -> {
|
joystick.onChangeCb = (value, rvalue) -> {
|
||||||
|
|
@ -121,5 +141,6 @@ class TouchCtrlsEditGui extends GuiImage {
|
||||||
this.addChild(jumpBtn);
|
this.addChild(jumpBtn);
|
||||||
this.addChild(powerupBtn);
|
this.addChild(powerupBtn);
|
||||||
this.addChild(blastBtn);
|
this.addChild(blastBtn);
|
||||||
|
this.addChild(rewindBtn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
14
src/touch/RewindButton.hx
Normal file
14
src/touch/RewindButton.hx
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
package touch;
|
||||||
|
|
||||||
|
import touch.TouchInput.Touch;
|
||||||
|
import h3d.Vector;
|
||||||
|
import hxd.Window;
|
||||||
|
import src.ResourceLoader;
|
||||||
|
import src.Settings;
|
||||||
|
|
||||||
|
class RewindButton extends TouchButton {
|
||||||
|
public function new() {
|
||||||
|
super(ResourceLoader.getImage("data/ui/touch/rewind.png").resource,
|
||||||
|
new Vector(Settings.touchSettings.rewindButtonPos[0], Settings.touchSettings.rewindButtonPos[1]), Settings.touchSettings.rewindButtonSize);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -42,6 +42,7 @@ class TouchInput {
|
||||||
public var powerupButton:PowerupButton;
|
public var powerupButton:PowerupButton;
|
||||||
public var blastbutton:BlastButton;
|
public var blastbutton:BlastButton;
|
||||||
public var pauseButton:PauseButton;
|
public var pauseButton:PauseButton;
|
||||||
|
public var rewindButton:RewindButton;
|
||||||
public var restartButton:RestartButton;
|
public var restartButton:RestartButton;
|
||||||
|
|
||||||
public var currentTouchState:TouchEventState;
|
public var currentTouchState:TouchEventState;
|
||||||
|
|
@ -57,6 +58,7 @@ class TouchInput {
|
||||||
this.powerupButton = new PowerupButton();
|
this.powerupButton = new PowerupButton();
|
||||||
this.blastbutton = new BlastButton();
|
this.blastbutton = new BlastButton();
|
||||||
this.pauseButton = new PauseButton();
|
this.pauseButton = new PauseButton();
|
||||||
|
this.rewindButton = new RewindButton();
|
||||||
this.restartButton = new RestartButton();
|
this.restartButton = new RestartButton();
|
||||||
this.currentTouchState = new TouchEventState();
|
this.currentTouchState = new TouchEventState();
|
||||||
this.previousTouchState = new TouchEventState();
|
this.previousTouchState = new TouchEventState();
|
||||||
|
|
@ -116,6 +118,8 @@ class TouchInput {
|
||||||
this.movementInput = new MovementInput();
|
this.movementInput = new MovementInput();
|
||||||
this.jumpButton = new JumpButton();
|
this.jumpButton = new JumpButton();
|
||||||
this.powerupButton = new PowerupButton();
|
this.powerupButton = new PowerupButton();
|
||||||
|
if (Settings.optionsSettings.rewindEnabled)
|
||||||
|
this.rewindButton = new RewindButton();
|
||||||
if (ultra)
|
if (ultra)
|
||||||
this.blastbutton = new BlastButton();
|
this.blastbutton = new BlastButton();
|
||||||
this.pauseButton = new PauseButton();
|
this.pauseButton = new PauseButton();
|
||||||
|
|
@ -124,6 +128,8 @@ class TouchInput {
|
||||||
restartButton.add(parentGui);
|
restartButton.add(parentGui);
|
||||||
jumpButton.add(parentGui);
|
jumpButton.add(parentGui);
|
||||||
powerupButton.add(parentGui);
|
powerupButton.add(parentGui);
|
||||||
|
if (Settings.optionsSettings.rewindEnabled)
|
||||||
|
rewindButton.add(parentGui);
|
||||||
if (ultra)
|
if (ultra)
|
||||||
blastbutton.add(parentGui);
|
blastbutton.add(parentGui);
|
||||||
movementInput.add(parentGui);
|
movementInput.add(parentGui);
|
||||||
|
|
@ -139,6 +145,8 @@ class TouchInput {
|
||||||
this.movementInput.setVisible(enabled);
|
this.movementInput.setVisible(enabled);
|
||||||
this.pauseButton.setVisible(enabled);
|
this.pauseButton.setVisible(enabled);
|
||||||
this.restartButton.setVisible(enabled);
|
this.restartButton.setVisible(enabled);
|
||||||
|
if (this.rewindButton != null)
|
||||||
|
this.rewindButton.setVisible(enabled);
|
||||||
this.cameraInput.enabled = enabled;
|
this.cameraInput.enabled = enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -151,11 +159,15 @@ class TouchInput {
|
||||||
pauseButton.remove(parentGui);
|
pauseButton.remove(parentGui);
|
||||||
restartButton.remove(parentGui);
|
restartButton.remove(parentGui);
|
||||||
cameraInput.remove(parentGui);
|
cameraInput.remove(parentGui);
|
||||||
|
if (this.rewindButton != null)
|
||||||
|
rewindButton.remove(parentGui);
|
||||||
jumpButton.dispose();
|
jumpButton.dispose();
|
||||||
powerupButton.dispose();
|
powerupButton.dispose();
|
||||||
movementInput.dispose();
|
movementInput.dispose();
|
||||||
pauseButton.dispose();
|
pauseButton.dispose();
|
||||||
restartButton.dispose();
|
restartButton.dispose();
|
||||||
cameraInput.dispose();
|
cameraInput.dispose();
|
||||||
|
if (this.rewindButton != null)
|
||||||
|
rewindButton.dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue