diff --git a/.gitignore b/.gitignore index e8790825..508dd647 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,10 @@ node_modules fonts package.json package-lock.json +leaderboards +out +server +mpcustom macos-dist/MarbleBlast Platinum.app/ macos-dist/data/ diff --git a/src/MarbleGame.hx b/src/MarbleGame.hx index 5f507b70..6165a865 100644 --- a/src/MarbleGame.hx +++ b/src/MarbleGame.hx @@ -61,6 +61,8 @@ class MarbleGame { var consoleShown:Bool = false; var console:ConsoleDlg; + var replayEndClass:Class; + public function new(scene2d:h2d.Scene, scene:h3d.scene.Scene) { Console.log("Initializing the game..."); canvas = new Canvas(scene2d, cast this); @@ -336,12 +338,8 @@ class MarbleGame { Analytics.trackLevelQuit(world.mission.title, world.mission.path, Std.int(world.timeState.timeSinceLoad * 1000), stats.oobs, stats.respawns, Settings.optionsSettings.rewindEnabled); paused = false; - if (world.isWatching && !world.replay.isLBReplay) { - #if !js - canvas.setContent(new ReplayCenterGui()); - #else - canvas.setContent(new MainMenuGui()); - #end + if (world.isWatching) { + canvas.setContent(Type.createInstance(replayEndClass, [])); } else { if (Net.isMP) { var lobby = new MPPlayMissionGui(Net.isHost); @@ -372,8 +370,9 @@ class MarbleGame { world.init(); } - public function watchMissionReplay(mission:Mission, replay:Replay) { + public function watchMissionReplay(mission:Mission, replay:Replay, replayEndGui:Class) { canvas.clearContent(); + replayEndClass = replayEndGui; Analytics.trackSingle("replay-watch"); world = new MarbleWorld(scene, scene2d, mission); world.replay = replay; diff --git a/src/MarbleWorld.hx b/src/MarbleWorld.hx index 53816909..2cfd67c2 100644 --- a/src/MarbleWorld.hx +++ b/src/MarbleWorld.hx @@ -1819,11 +1819,8 @@ class MarbleWorld extends Scheduler { } this.setCursorLock(false); this.dispose(); - #if !js - MarbleGame.canvas.setContent(new ReplayCenterGui()); - #end + MarbleGame.canvas.setContent(Type.createInstance(@:privateAccess MarbleGame.instance.replayEndClass, [])); #if js - MarbleGame.canvas.setContent(new MainMenuGui()); var pointercontainer = js.Browser.document.querySelector("#pointercontainer"); pointercontainer.hidden = false; #end diff --git a/src/Replay.hx b/src/Replay.hx index 2500f88f..a15d909e 100644 --- a/src/Replay.hx +++ b/src/Replay.hx @@ -265,7 +265,6 @@ class Replay { public var mission:String; public var name:String; public var customId:Int; - public var isLBReplay:Bool; var frames:Array; var initialState:ReplayInitialState; @@ -283,7 +282,6 @@ class Replay { this.mission = mission; this.customId = customId; this.initialState = new ReplayInitialState(); - this.isLBReplay = false; } public function startFrame() { diff --git a/src/gui/MainMenuGui.hx b/src/gui/MainMenuGui.hx index c10689a8..e60307b8 100644 --- a/src/gui/MainMenuGui.hx +++ b/src/gui/MainMenuGui.hx @@ -144,11 +144,11 @@ class MainMenuGui extends GuiImage { var mi = replay.customId == 0 ? MissionList.missions.get(repmis) : Marbleland.missions.get(replay.customId); if (mi.isClaMission) { mi.download(() -> { - MarbleGame.instance.watchMissionReplay(mi, replay); + MarbleGame.instance.watchMissionReplay(mi, replay, MainMenuGui); }); } else { if (mi != null) { - cast(this.parent, Canvas).marbleGame.watchMissionReplay(mi, replay); + cast(this.parent, Canvas).marbleGame.watchMissionReplay(mi, replay, MainMenuGui); } else { cast(this.parent, Canvas).pushDialog(new MessageBoxOkDlg("Cannot load replay.")); } diff --git a/src/gui/PlayMissionGui.hx b/src/gui/PlayMissionGui.hx index e8c0cb01..67c8e992 100644 --- a/src/gui/PlayMissionGui.hx +++ b/src/gui/PlayMissionGui.hx @@ -834,7 +834,6 @@ class PlayMissionGui extends GuiImage { Leaderboards.watchTopReplay(lbPath, scoreView, (b) -> { if (b != null) { var replayF = new Replay(""); - replayF.isLBReplay = true; if (replayF.read(b)) { var repmis = replayF.mission; // Strip data/ from the mission name @@ -853,10 +852,10 @@ class PlayMissionGui extends GuiImage { if (mi.isClaMission) { mi.download(() -> { - MarbleGame.instance.watchMissionReplay(mi, replayF); + MarbleGame.instance.watchMissionReplay(mi, replayF, PlayMissionGui); }); } else { - MarbleGame.instance.watchMissionReplay(mi, replayF); + MarbleGame.instance.watchMissionReplay(mi, replayF, PlayMissionGui); } } else { MarbleGame.canvas.pushDialog(new MessageBoxOkDlg("Could not load replay for this level.")); diff --git a/src/gui/ReplayCenterGui.hx b/src/gui/ReplayCenterGui.hx index 1275053f..48fa04a0 100644 --- a/src/gui/ReplayCenterGui.hx +++ b/src/gui/ReplayCenterGui.hx @@ -94,11 +94,11 @@ class ReplayCenterGui extends GuiImage { var mi = repl.customId == 0 ? MissionList.missions.get(repmis) : Marbleland.missions.get(repl.customId); if (mi.isClaMission) { mi.download(() -> { - MarbleGame.instance.watchMissionReplay(mi, repl); + MarbleGame.instance.watchMissionReplay(mi, repl, ReplayCenterGui); }); playButton.disabled = true; // Don't let us play anything else } else { - MarbleGame.instance.watchMissionReplay(mi, repl); + MarbleGame.instance.watchMissionReplay(mi, repl, ReplayCenterGui); } } }