mirror of
https://github.com/RandomityGuy/MBHaxe.git
synced 2025-12-24 00:42:46 +00:00
work on rewind touch controls and fix scroll bugs
This commit is contained in:
parent
f08bfaf7d7
commit
581e5de970
8 changed files with 66 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 |
|
|
@ -992,10 +992,13 @@ class MarbleWorld extends Scheduler {
|
|||
|
||||
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;
|
||||
} 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) {
|
||||
this.replay.spliceReplay(timeState.currentAttemptTime);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -75,6 +75,8 @@ typedef TouchSettings = {
|
|||
var powerupButtonSize:Float;
|
||||
var blastButtonPos:Array<Float>;
|
||||
var blastButtonSize:Float;
|
||||
var rewindButtonPos:Array<Float>;
|
||||
var rewindButtonSize:Float;
|
||||
var buttonJoystickMultiplier:Float;
|
||||
}
|
||||
|
||||
|
|
@ -159,6 +161,8 @@ class Settings {
|
|||
powerupButtonSize: 60,
|
||||
blastButtonPos: [300, 240],
|
||||
blastButtonSize: 60,
|
||||
rewindButtonPos: [380, 240],
|
||||
rewindButtonSize: 60,
|
||||
buttonJoystickMultiplier: 2.5
|
||||
}
|
||||
|
||||
|
|
@ -378,6 +382,10 @@ class Settings {
|
|||
touchSettings.blastButtonPos = [300, 240];
|
||||
touchSettings.blastButtonSize = 60;
|
||||
}
|
||||
if (touchSettings.rewindButtonPos == null) {
|
||||
touchSettings.rewindButtonPos = [380, 240];
|
||||
touchSettings.rewindButtonSize = 60;
|
||||
}
|
||||
if (json.gamepad != null) {
|
||||
gamepadSettings = json.gamepad;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -93,7 +93,8 @@ class GuiScrollCtrl extends GuiControl {
|
|||
|
||||
public override function getRenderRectangle():Rect {
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
@ -196,6 +197,7 @@ class GuiScrollCtrl extends GuiControl {
|
|||
if (Util.isTouchDevice()) {
|
||||
this.pressed = false;
|
||||
this.dirty = true;
|
||||
deltaY = 0;
|
||||
this.updateScrollVisual();
|
||||
}
|
||||
}
|
||||
|
|
@ -204,7 +206,8 @@ class GuiScrollCtrl extends GuiControl {
|
|||
if (Util.isTouchDevice()) {
|
||||
super.onMouseMove(mouseState);
|
||||
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.prevMousePos = mouseState.position;
|
||||
this.updateScrollVisual();
|
||||
|
|
|
|||
|
|
@ -81,6 +81,7 @@ class HelpCreditsGui extends GuiImage {
|
|||
.toTile());
|
||||
scrollCtrl2.position = new Vector(219, 28);
|
||||
scrollCtrl2.extent = new Vector(386, 342);
|
||||
scrollCtrl2.childrenHandleScroll = true;
|
||||
wnd.addChild(scrollCtrl2);
|
||||
|
||||
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,
|
||||
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) -> {
|
||||
sender.setSelected(true);
|
||||
powerupBtn.setSelected(false);
|
||||
joystick.setSelected(false);
|
||||
blastBtn.setSelected(false);
|
||||
rewindBtn.setSelected(false);
|
||||
}
|
||||
|
||||
jumpBtn.onChangeCb = (sender, value, rvalue) -> {
|
||||
|
|
@ -84,6 +88,7 @@ class TouchCtrlsEditGui extends GuiImage {
|
|||
jumpBtn.setSelected(false);
|
||||
joystick.setSelected(false);
|
||||
blastBtn.setSelected(false);
|
||||
rewindBtn.setSelected(false);
|
||||
}
|
||||
|
||||
powerupBtn.onChangeCb = (sender, value, rvalue) -> {
|
||||
|
|
@ -96,6 +101,7 @@ class TouchCtrlsEditGui extends GuiImage {
|
|||
jumpBtn.setSelected(false);
|
||||
powerupBtn.setSelected(false);
|
||||
joystick.setSelected(false);
|
||||
rewindBtn.setSelected(false);
|
||||
}
|
||||
|
||||
blastBtn.onChangeCb = (sender, value, rvalue) -> {
|
||||
|
|
@ -103,11 +109,25 @@ class TouchCtrlsEditGui extends GuiImage {
|
|||
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.setSelected(true);
|
||||
jumpBtn.setSelected(false);
|
||||
powerupBtn.setSelected(false);
|
||||
blastBtn.setSelected(false);
|
||||
rewindBtn.setSelected(false);
|
||||
}
|
||||
|
||||
joystick.onChangeCb = (value, rvalue) -> {
|
||||
|
|
@ -121,5 +141,6 @@ class TouchCtrlsEditGui extends GuiImage {
|
|||
this.addChild(jumpBtn);
|
||||
this.addChild(powerupBtn);
|
||||
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 blastbutton:BlastButton;
|
||||
public var pauseButton:PauseButton;
|
||||
public var rewindButton:RewindButton;
|
||||
public var restartButton:RestartButton;
|
||||
|
||||
public var currentTouchState:TouchEventState;
|
||||
|
|
@ -57,6 +58,7 @@ class TouchInput {
|
|||
this.powerupButton = new PowerupButton();
|
||||
this.blastbutton = new BlastButton();
|
||||
this.pauseButton = new PauseButton();
|
||||
this.rewindButton = new RewindButton();
|
||||
this.restartButton = new RestartButton();
|
||||
this.currentTouchState = new TouchEventState();
|
||||
this.previousTouchState = new TouchEventState();
|
||||
|
|
@ -116,6 +118,8 @@ class TouchInput {
|
|||
this.movementInput = new MovementInput();
|
||||
this.jumpButton = new JumpButton();
|
||||
this.powerupButton = new PowerupButton();
|
||||
if (Settings.optionsSettings.rewindEnabled)
|
||||
this.rewindButton = new RewindButton();
|
||||
if (ultra)
|
||||
this.blastbutton = new BlastButton();
|
||||
this.pauseButton = new PauseButton();
|
||||
|
|
@ -124,6 +128,8 @@ class TouchInput {
|
|||
restartButton.add(parentGui);
|
||||
jumpButton.add(parentGui);
|
||||
powerupButton.add(parentGui);
|
||||
if (Settings.optionsSettings.rewindEnabled)
|
||||
rewindButton.add(parentGui);
|
||||
if (ultra)
|
||||
blastbutton.add(parentGui);
|
||||
movementInput.add(parentGui);
|
||||
|
|
@ -139,6 +145,8 @@ class TouchInput {
|
|||
this.movementInput.setVisible(enabled);
|
||||
this.pauseButton.setVisible(enabled);
|
||||
this.restartButton.setVisible(enabled);
|
||||
if (this.rewindButton != null)
|
||||
this.rewindButton.setVisible(enabled);
|
||||
this.cameraInput.enabled = enabled;
|
||||
}
|
||||
|
||||
|
|
@ -151,11 +159,15 @@ class TouchInput {
|
|||
pauseButton.remove(parentGui);
|
||||
restartButton.remove(parentGui);
|
||||
cameraInput.remove(parentGui);
|
||||
if (this.rewindButton != null)
|
||||
rewindButton.remove(parentGui);
|
||||
jumpButton.dispose();
|
||||
powerupButton.dispose();
|
||||
movementInput.dispose();
|
||||
pauseButton.dispose();
|
||||
restartButton.dispose();
|
||||
cameraInput.dispose();
|
||||
if (this.rewindButton != null)
|
||||
rewindButton.dispose();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue