diff --git a/src/Leaderboards.hx b/src/Leaderboards.hx index 18c97020..51d7e3ee 100644 --- a/src/Leaderboards.hx +++ b/src/Leaderboards.hx @@ -21,7 +21,7 @@ enum abstract LeaderboardsKind(Int) { } class Leaderboards { - static var host = "http://127.0.0.1:7000"; + static var host = "https://lb.randomityguy.me"; static var game = "Platinum"; public static function submitScore(mission:String, score:Float, rewindUsed:Bool, needsReplayCb:(Bool, Int) -> Void) { diff --git a/src/MarbleGame.hx b/src/MarbleGame.hx index ebac6f22..1a29fc0e 100644 --- a/src/MarbleGame.hx +++ b/src/MarbleGame.hx @@ -336,7 +336,7 @@ 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) { + if (world.isWatching && !world.replay.isLBReplay) { #if !js canvas.setContent(new ReplayCenterGui()); #else @@ -349,10 +349,10 @@ class MarbleGame { } else { if (!world.mission.isClaMission && !world.mission.isCustom) { PlayMissionGui.currentCategoryStatic = world.mission.type; + PlayMissionGui.currentSelectionStatic = world.mission.index; + PlayMissionGui.currentGameStatic = world.mission.game; } var pmg = new PlayMissionGui(); - PlayMissionGui.currentSelectionStatic = world.mission.index; - PlayMissionGui.currentGameStatic = world.mission.game; canvas.setContent(pmg); } } diff --git a/src/Replay.hx b/src/Replay.hx index a15d909e..2500f88f 100644 --- a/src/Replay.hx +++ b/src/Replay.hx @@ -265,6 +265,7 @@ class Replay { public var mission:String; public var name:String; public var customId:Int; + public var isLBReplay:Bool; var frames:Array; var initialState:ReplayInitialState; @@ -282,6 +283,7 @@ class Replay { this.mission = mission; this.customId = customId; this.initialState = new ReplayInitialState(); + this.isLBReplay = false; } public function startFrame() { diff --git a/src/gui/EndGameGui.hx b/src/gui/EndGameGui.hx index 16d751f3..90452720 100644 --- a/src/gui/EndGameGui.hx +++ b/src/gui/EndGameGui.hx @@ -424,15 +424,41 @@ class EndGameGui extends GuiControl { } Settings.saveScore(mission.path, myScore); - Leaderboards.submitScore(mission.path, myScore.time, MarbleGame.instance.world.rewindUsed, (sendReplay, rowId) -> { + var lbPath = mission.path; + if (mission.isClaMission) + lbPath = 'custom/${mission.id}'; + var replayData = MarbleGame.instance.world.replay.write(); + Leaderboards.submitScore(lbPath, myScore.time, MarbleGame.instance.world.rewindUsed, (sendReplay, rowId) -> { if (sendReplay) { - Leaderboards.submitReplay(rowId, MarbleGame.instance.world.replay.write()); + Leaderboards.submitReplay(rowId, replayData); } }); scoreSubmitted = true; }); this.addChild(end); + } else { + // Check if we can submit LB scores + var replayData = MarbleGame.instance.world.replay.write(); + var lbPath = mission.path; + if (mission.isClaMission) + lbPath = 'custom/${mission.id}'; + Leaderboards.getScores(lbPath, All, (scores) -> { + var hasMyScore = false; + for (score in scores) { + if (score.name == Settings.highscoreName) { + hasMyScore = true; + break; + } + } + if (!hasMyScore) { + Leaderboards.submitScore(lbPath, timeState.gameplayClock, MarbleGame.instance.world.rewindUsed, (sendReplay, rowId) -> { + if (sendReplay) { + Leaderboards.submitReplay(rowId, replayData); + } + }); + } + }); } } } diff --git a/src/gui/PlayMissionGui.hx b/src/gui/PlayMissionGui.hx index 4368f491..ea5f9e85 100644 --- a/src/gui/PlayMissionGui.hx +++ b/src/gui/PlayMissionGui.hx @@ -829,9 +829,13 @@ class PlayMissionGui extends GuiImage { scoreBox.text.onHyperlink = (url) -> { if (url == "watch") { var currentMission = currentList[currentSelection]; - Leaderboards.watchTopReplay(currentMission.path, scoreView, (b) -> { + var lbPath = currentMission.path; + if (currentMission.isClaMission) + lbPath = 'custom/${currentMission.id}'; + 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 @@ -1221,14 +1225,17 @@ class PlayMissionGui extends GuiImage { Http.cancel(lbRequest); #end var lTok = lbToken++; - var req = Leaderboards.getScores(currentMission.path, scoreView, (scoreList) -> { + var lbPath = currentMission.path; + if (currentMission.isClaMission) + lbPath = 'custom/${currentMission.id}'; + var req = Leaderboards.getScores(lbPath, scoreView, (scoreList) -> { if (lTok + 1 != lbToken || !showLBs) return; var sFmt = []; var i = 1; for (score in scoreList) { sFmt.push('${i}. - ${score.name} + ${score.name.substr(0, 30)} ${Util.formatTime(score.score)} ${score.rewind == 1 ? ' ' : ""}');