diff --git a/src/MarbleWorld.hx b/src/MarbleWorld.hx index 8279244a..cc4286a1 100644 --- a/src/MarbleWorld.hx +++ b/src/MarbleWorld.hx @@ -1131,7 +1131,8 @@ class MarbleWorld extends Scheduler { ProfilerUI.measure("updateTimer"); this.updateTimer(dt); - if (Key.isPressed(Settings.controlsSettings.respawn) && this.finishTime == null) { + if ((Key.isPressed(Settings.controlsSettings.respawn) || MarbleGame.instance.touchInput.restartButton.pressed) + && this.finishTime == null) { this.respawnPressedTime = timeState.timeSinceLoad; this.restart(); if (!this.isWatching) { @@ -1150,7 +1151,9 @@ class MarbleWorld extends Scheduler { return; } - if (Key.isDown(Settings.controlsSettings.respawn) && !this.isWatching && this.finishTime == null) { + if ((Key.isDown(Settings.controlsSettings.respawn) || MarbleGame.instance.touchInput.restartButton.pressed) + && !this.isWatching + && this.finishTime == null) { if (timeState.timeSinceLoad - this.respawnPressedTime > 1.5) { this.restart(true); this.respawnPressedTime = Math.POSITIVE_INFINITY; diff --git a/src/gui/GuiSlider.hx b/src/gui/GuiSlider.hx index 45ef1a40..b40e28d3 100644 --- a/src/gui/GuiSlider.hx +++ b/src/gui/GuiSlider.hx @@ -11,10 +11,11 @@ class GuiSlider extends GuiImage { public var sliderValue:Float = 0; public var slidingSound:Channel; + public var enabled:Bool = true; public override function update(dt:Float, mouseState:MouseState) { var renderRect = getRenderRectangle(); - if (renderRect.inRect(mouseState.position)) { + if (renderRect.inRect(mouseState.position) && enabled) { if (Key.isDown(Key.MOUSE_LEFT)) { sliderValue = (mouseState.position.x - renderRect.position.x - bmp.width / 2) / renderRect.extent.x; sliderValue = Util.clamp(sliderValue, 0, 1); diff --git a/src/gui/OptionsDlg.hx b/src/gui/OptionsDlg.hx index 7c2f32a0..d5efe7e0 100644 --- a/src/gui/OptionsDlg.hx +++ b/src/gui/OptionsDlg.hx @@ -120,6 +120,9 @@ class OptionsDlg extends GuiImage { for (b in optBtns) { b.disabled = !enabled; } + for (s in optSliders) { + s.enabled = enabled; + } } window.pressedAction = (sender) -> { diff --git a/src/touch/RestartButton.hx b/src/touch/RestartButton.hx new file mode 100644 index 00000000..f09ca93e --- /dev/null +++ b/src/touch/RestartButton.hx @@ -0,0 +1,14 @@ +package touch; + +import src.MarbleGame; +import h3d.Vector; +import src.ResourceLoader; + +class RestartButton extends TouchButton { + public function new() { + var offset = MarbleGame.instance.world != null ? (MarbleGame.instance.world.totalGems > 0 ? 30 : 0) : 0; + super(ResourceLoader.getImage("data/ui/touch/refresh.png").resource, new Vector(135, 55 + offset), 35); + this.guiElement.horizSizing = Right; + this.guiElement.vertSizing = Bottom; + } +} diff --git a/src/touch/TouchInput.hx b/src/touch/TouchInput.hx index 0b6d58b2..485c0fae 100644 --- a/src/touch/TouchInput.hx +++ b/src/touch/TouchInput.hx @@ -42,6 +42,7 @@ class TouchInput { public var powerupButton:PowerupButton; public var blastbutton:BlastButton; public var pauseButton:PauseButton; + public var restartButton:RestartButton; public var currentTouchState:TouchEventState; @@ -56,6 +57,7 @@ class TouchInput { this.powerupButton = new PowerupButton(); this.blastbutton = new BlastButton(); this.pauseButton = new PauseButton(); + this.restartButton = new RestartButton(); this.currentTouchState = new TouchEventState(); this.previousTouchState = new TouchEventState(); } @@ -108,6 +110,7 @@ class TouchInput { blastbutton.dispose(); movementInput.dispose(); pauseButton.dispose(); + restartButton.dispose(); cameraInput.dispose(); this.cameraInput = new CameraInput(); this.movementInput = new MovementInput(); @@ -116,7 +119,9 @@ class TouchInput { if (ultra) this.blastbutton = new BlastButton(); this.pauseButton = new PauseButton(); + this.restartButton = new RestartButton(); pauseButton.add(parentGui); + restartButton.add(parentGui); jumpButton.add(parentGui); powerupButton.add(parentGui); if (ultra) @@ -133,6 +138,7 @@ class TouchInput { this.blastbutton.setVisible(enabled); this.movementInput.setVisible(enabled); this.pauseButton.setVisible(enabled); + this.restartButton.setVisible(enabled); this.cameraInput.enabled = enabled; } @@ -143,11 +149,13 @@ class TouchInput { blastbutton.remove(parentGui); movementInput.remove(parentGui); pauseButton.remove(parentGui); + restartButton.remove(parentGui); cameraInput.remove(parentGui); jumpButton.dispose(); powerupButton.dispose(); movementInput.dispose(); pauseButton.dispose(); + restartButton.dispose(); cameraInput.dispose(); } }