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
package.json
package-lock.json
leaderboards
out
server
mpcustom
macos-dist/MarbleBlast Platinum.app/
macos-dist/data/

View file

@ -62,6 +62,8 @@ class MarbleGame {
var _mouseWheelDelta:Float;
var replayEndClass:Class<GuiControl>;
public function new(scene2d:h2d.Scene, scene:h3d.scene.Scene) {
Console.log("Initializing the game...");
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,
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);
@ -405,8 +403,9 @@ class MarbleGame {
world.init();
}
public function watchMissionReplay(mission:Mission, replay:Replay) {
public function watchMissionReplay(mission:Mission, replay:Replay, replayEndGui:Class<GuiControl>) {
canvas.clearContent();
replayEndClass = replayEndGui;
Analytics.trackSingle("replay-watch");
world = new MarbleWorld(scene, scene2d, mission);
world.replay = replay;

View file

@ -1818,11 +1818,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

View file

@ -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<ReplayFrame>;
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() {

View file

@ -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."));
}

View file

@ -835,7 +835,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
@ -854,10 +853,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."));

View file

@ -76,11 +76,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);
}
}
}