exit LB replays on pmg

This commit is contained in:
RandomityGuy 2025-02-05 00:50:32 +05:30
parent c12cdfc908
commit efd4f50e4e
7 changed files with 17 additions and 20 deletions

4
.gitignore vendored
View file

@ -16,6 +16,10 @@ node_modules
fonts fonts
package.json package.json
package-lock.json package-lock.json
leaderboards
out
server
mpcustom
macos-dist/MarbleBlast Platinum.app/ macos-dist/MarbleBlast Platinum.app/
macos-dist/data/ macos-dist/data/

View file

@ -62,6 +62,8 @@ class MarbleGame {
var _mouseWheelDelta:Float; var _mouseWheelDelta:Float;
var replayEndClass:Class<GuiControl>;
public function new(scene2d:h2d.Scene, scene:h3d.scene.Scene) { public function new(scene2d:h2d.Scene, scene:h3d.scene.Scene) {
Console.log("Initializing the game..."); Console.log("Initializing the game...");
canvas = new Canvas(scene2d, cast this); canvas = new Canvas(scene2d, cast this);
@ -369,12 +371,8 @@ class MarbleGame {
Analytics.trackLevelQuit(world.mission.title, world.mission.path, Std.int(world.timeState.timeSinceLoad * 1000), stats.oobs, stats.respawns, Analytics.trackLevelQuit(world.mission.title, world.mission.path, Std.int(world.timeState.timeSinceLoad * 1000), stats.oobs, stats.respawns,
Settings.optionsSettings.rewindEnabled); Settings.optionsSettings.rewindEnabled);
paused = false; paused = false;
if (world.isWatching && !world.replay.isLBReplay) { if (world.isWatching) {
#if !js canvas.setContent(Type.createInstance(replayEndClass, []));
canvas.setContent(new ReplayCenterGui());
#else
canvas.setContent(new MainMenuGui());
#end
} else { } else {
if (Net.isMP) { if (Net.isMP) {
var lobby = new MPPlayMissionGui(Net.isHost); var lobby = new MPPlayMissionGui(Net.isHost);
@ -405,8 +403,9 @@ class MarbleGame {
world.init(); world.init();
} }
public function watchMissionReplay(mission:Mission, replay:Replay) { public function watchMissionReplay(mission:Mission, replay:Replay, replayEndGui:Class<GuiControl>) {
canvas.clearContent(); canvas.clearContent();
replayEndClass = replayEndGui;
Analytics.trackSingle("replay-watch"); Analytics.trackSingle("replay-watch");
world = new MarbleWorld(scene, scene2d, mission); world = new MarbleWorld(scene, scene2d, mission);
world.replay = replay; world.replay = replay;

View file

@ -1818,11 +1818,8 @@ class MarbleWorld extends Scheduler {
} }
this.setCursorLock(false); this.setCursorLock(false);
this.dispose(); this.dispose();
#if !js MarbleGame.canvas.setContent(Type.createInstance(@:privateAccess MarbleGame.instance.replayEndClass, []));
MarbleGame.canvas.setContent(new ReplayCenterGui());
#end
#if js #if js
MarbleGame.canvas.setContent(new MainMenuGui());
var pointercontainer = js.Browser.document.querySelector("#pointercontainer"); var pointercontainer = js.Browser.document.querySelector("#pointercontainer");
pointercontainer.hidden = false; pointercontainer.hidden = false;
#end #end

View file

@ -265,7 +265,6 @@ class Replay {
public var mission:String; public var mission:String;
public var name:String; public var name:String;
public var customId:Int; public var customId:Int;
public var isLBReplay:Bool;
var frames:Array<ReplayFrame>; var frames:Array<ReplayFrame>;
var initialState:ReplayInitialState; var initialState:ReplayInitialState;
@ -283,7 +282,6 @@ class Replay {
this.mission = mission; this.mission = mission;
this.customId = customId; this.customId = customId;
this.initialState = new ReplayInitialState(); this.initialState = new ReplayInitialState();
this.isLBReplay = false;
} }
public function startFrame() { public function startFrame() {

View file

@ -144,11 +144,11 @@ class MainMenuGui extends GuiImage {
var mi = replay.customId == 0 ? MissionList.missions.get(repmis) : Marbleland.missions.get(replay.customId); var mi = replay.customId == 0 ? MissionList.missions.get(repmis) : Marbleland.missions.get(replay.customId);
if (mi.isClaMission) { if (mi.isClaMission) {
mi.download(() -> { mi.download(() -> {
MarbleGame.instance.watchMissionReplay(mi, replay); MarbleGame.instance.watchMissionReplay(mi, replay, MainMenuGui);
}); });
} else { } else {
if (mi != null) { if (mi != null) {
cast(this.parent, Canvas).marbleGame.watchMissionReplay(mi, replay); cast(this.parent, Canvas).marbleGame.watchMissionReplay(mi, replay, MainMenuGui);
} else { } else {
cast(this.parent, Canvas).pushDialog(new MessageBoxOkDlg("Cannot load replay.")); cast(this.parent, Canvas).pushDialog(new MessageBoxOkDlg("Cannot load replay."));
} }

View file

@ -835,7 +835,6 @@ class PlayMissionGui extends GuiImage {
Leaderboards.watchTopReplay(lbPath, scoreView, (b) -> { Leaderboards.watchTopReplay(lbPath, scoreView, (b) -> {
if (b != null) { if (b != null) {
var replayF = new Replay(""); var replayF = new Replay("");
replayF.isLBReplay = true;
if (replayF.read(b)) { if (replayF.read(b)) {
var repmis = replayF.mission; var repmis = replayF.mission;
// Strip data/ from the mission name // Strip data/ from the mission name
@ -854,10 +853,10 @@ class PlayMissionGui extends GuiImage {
if (mi.isClaMission) { if (mi.isClaMission) {
mi.download(() -> { mi.download(() -> {
MarbleGame.instance.watchMissionReplay(mi, replayF); MarbleGame.instance.watchMissionReplay(mi, replayF, PlayMissionGui);
}); });
} else { } else {
MarbleGame.instance.watchMissionReplay(mi, replayF); MarbleGame.instance.watchMissionReplay(mi, replayF, PlayMissionGui);
} }
} else { } else {
MarbleGame.canvas.pushDialog(new MessageBoxOkDlg("Could not load replay for this level.")); MarbleGame.canvas.pushDialog(new MessageBoxOkDlg("Could not load replay for this level."));

View file

@ -76,11 +76,11 @@ class ReplayCenterGui extends GuiImage {
var mi = repl.customId == 0 ? MissionList.missions.get(repmis) : Marbleland.missions.get(repl.customId); var mi = repl.customId == 0 ? MissionList.missions.get(repmis) : Marbleland.missions.get(repl.customId);
if (mi.isClaMission) { if (mi.isClaMission) {
mi.download(() -> { mi.download(() -> {
MarbleGame.instance.watchMissionReplay(mi, repl); MarbleGame.instance.watchMissionReplay(mi, repl, ReplayCenterGui);
}); });
playButton.disabled = true; // Don't let us play anything else playButton.disabled = true; // Don't let us play anything else
} else { } else {
MarbleGame.instance.watchMissionReplay(mi, repl); MarbleGame.instance.watchMissionReplay(mi, repl, ReplayCenterGui);
} }
} }
} }