diff --git a/data/ui/touch/video-camera.png b/data/ui/touch/video-camera.png new file mode 100644 index 00000000..23130bf8 Binary files /dev/null and b/data/ui/touch/video-camera.png differ diff --git a/src/Main.hx b/src/Main.hx index d4ad4e5d..427ebf25 100644 --- a/src/Main.hx +++ b/src/Main.hx @@ -1,5 +1,6 @@ package; +import gui.VersionGui; import src.Debug; import src.Marbleland; import src.Console; @@ -103,6 +104,7 @@ class Main extends hxd.App { Marbleland.init(); marbleGame = new MarbleGame(s2d, s3d); MarbleGame.canvas.setContent(new MainMenuGui()); + VersionGui.checkVersion(); new ProfilerUI(s2d); diff --git a/src/MarbleGame.hx b/src/MarbleGame.hx index e834daed..4935de6a 100644 --- a/src/MarbleGame.hx +++ b/src/MarbleGame.hx @@ -42,6 +42,8 @@ class MarbleGame { static var instance:MarbleGame; + static var currentVersion = "1.5.4"; + var world:MarbleWorld; var scene2d:h2d.Scene; diff --git a/src/MarbleWorld.hx b/src/MarbleWorld.hx index 775a8f27..d2f72ae8 100644 --- a/src/MarbleWorld.hx +++ b/src/MarbleWorld.hx @@ -593,6 +593,9 @@ class MarbleWorld extends Scheduler { public function showPreGame() { MarbleGame.canvas.pushDialog(new MPPreGameDlg()); this.setCursorLock(false); + if (Util.isTouchDevice()) { + MarbleGame.instance.touchInput.setControlsEnabled(false); + } this.marble.camera.startOverview(); // Hide all gems diff --git a/src/gui/VersionGui.hx b/src/gui/VersionGui.hx index e2c7b9e4..9910ac0e 100644 --- a/src/gui/VersionGui.hx +++ b/src/gui/VersionGui.hx @@ -89,4 +89,18 @@ class VersionGui extends GuiImage { }); scrollCtrl.addChild(changelogContent); } + + public static function checkVersion() { + Http.get("https://raw.githubusercontent.com/RandomityGuy/MBHaxe/master/CHANGELOG.md", (res) -> { + var mdtext = res.toString(); + var firstline = mdtext.split("\n")[0]; + firstline = StringTools.replace(firstline, "#", ""); + firstline = StringTools.trim(firstline); + if (firstline != MarbleGame.currentVersion) { + // We need to update lol + var mbo = new MessageBoxOkDlg("New version available! Please update your game."); + MarbleGame.canvas.pushDialog(mbo); + } + }, (e) -> {}); + } } diff --git a/src/net/NetCommands.hx b/src/net/NetCommands.hx index 94d0d8c6..a9dcbbe6 100644 --- a/src/net/NetCommands.hx +++ b/src/net/NetCommands.hx @@ -17,6 +17,7 @@ import src.MissionList; import src.Console; import src.Marbleland; import src.Settings; +import src.Util; @:build(net.RPCMacro.build()) class NetCommands { @@ -242,6 +243,10 @@ class NetCommands { if (MarbleGame.canvas.children[MarbleGame.canvas.children.length - 1] is MPPreGameDlg) { MarbleGame.canvas.popDialog(MarbleGame.canvas.children[MarbleGame.canvas.children.length - 1]); MarbleGame.instance.world.setCursorLock(true); + if (Util.isTouchDevice()) { + MarbleGame.canvas.render(MarbleGame.canvas.scene2d); + MarbleGame.instance.touchInput.setControlsEnabled(true); + } MarbleGame.instance.world.marble.camera.stopOverview(); } diff --git a/src/touch/BlastButton.hx b/src/touch/BlastButton.hx index 689047bd..14f8b137 100644 --- a/src/touch/BlastButton.hx +++ b/src/touch/BlastButton.hx @@ -1,5 +1,6 @@ package touch; +import src.MarbleGame; import touch.TouchInput.Touch; import h3d.Vector; import hxd.Window; @@ -8,7 +9,8 @@ import src.Settings; class BlastButton extends TouchButton { public function new() { - super(ResourceLoader.getImage("data/ui/touch/explosion.png").resource, + var mode = MarbleGame.instance.world != null ? @:privateAccess MarbleGame.instance.world.marble.camera.spectate : false; + super(ResourceLoader.getImage(mode ? "data/ui/touch/video-camera.png" : "data/ui/touch/explosion.png").resource, new Vector(Settings.touchSettings.blastButtonPos[0], Settings.touchSettings.blastButtonPos[1]), Settings.touchSettings.blastButtonSize); this.setEnabled(false); }