From 2b40a4eca90b1229dbea7baa4da6f5e70932e6e3 Mon Sep 17 00:00:00 2001 From: RandomityGuy <31925790+RandomityGuy@users.noreply.github.com> Date: Mon, 3 Jul 2023 23:43:19 +0530 Subject: [PATCH] minor replay bugfixes --- src/MarbleGame.hx | 1 + src/MarbleWorld.hx | 20 +++++---- src/Replay.hx | 5 ++- src/gui/ReplayCenterGui.hx | 87 +------------------------------------- src/modes/HuntMode.hx | 7 ++- 5 files changed, 24 insertions(+), 96 deletions(-) diff --git a/src/MarbleGame.hx b/src/MarbleGame.hx index e1c5e59c..cdf42edc 100644 --- a/src/MarbleGame.hx +++ b/src/MarbleGame.hx @@ -300,6 +300,7 @@ class MarbleGame { public function watchMissionReplay(mission:Mission, replay:Replay) { canvas.clearContent(); + destroyPreviewWorld(); world = new MarbleWorld(scene, scene2d, mission); world.replay = replay; world.isWatching = true; diff --git a/src/MarbleWorld.hx b/src/MarbleWorld.hx index a8ac0784..0a9858f7 100644 --- a/src/MarbleWorld.hx +++ b/src/MarbleWorld.hx @@ -967,15 +967,19 @@ class MarbleWorld extends Scheduler { MarbleGame.instance.touchInput.hideControls(@:privateAccess this.playGui.playGuiCtrl); } this.setCursorLock(false); + var misFile = haxe.io.Path.withoutExtension(haxe.io.Path.withoutDirectory(mission.path)); this.dispose(); - #if !js - MarbleGame.canvas.setContent(new ReplayCenterGui()); - #end - #if js - MarbleGame.canvas.setContent(new MainMenuGui()); - var pointercontainer = js.Browser.document.querySelector("#pointercontainer"); - pointercontainer.hidden = false; - #end + MarbleGame.instance.setPreviewMission(misFile, () -> { + #if !js + MarbleGame.canvas.setContent(new ReplayCenterGui()); + #end + #if js + MarbleGame.canvas.setContent(new MainMenuGui()); + var pointercontainer = js.Browser.document.querySelector("#pointercontainer"); + pointercontainer.hidden = false; + #end + }); + return; } } diff --git a/src/Replay.hx b/src/Replay.hx index 44ad9770..0b2289fa 100644 --- a/src/Replay.hx +++ b/src/Replay.hx @@ -371,7 +371,10 @@ class Replay { public function recordRandomGenState(ri:Int) { initialState.randomGens.push(ri); - initialState.randomGenTimes.push(currentRecordFrame.time); + if (currentRecordFrame == null) + initialState.randomGenTimes.push(0); + else + initialState.randomGenTimes.push(currentRecordFrame.time); } public function getRandomGenState() { diff --git a/src/gui/ReplayCenterGui.hx b/src/gui/ReplayCenterGui.hx index 47f1cd72..aaf1bd76 100644 --- a/src/gui/ReplayCenterGui.hx +++ b/src/gui/ReplayCenterGui.hx @@ -55,7 +55,7 @@ class ReplayCenterGui extends GuiImage { rootTitle.position = new Vector(100, 30); rootTitle.extent = new Vector(1120, 80); rootTitle.text.textColor = 0xFFFFFF; - rootTitle.text.text = "REPLAY CENTRE"; + rootTitle.text.text = "REPLAYS"; rootTitle.text.alpha = 0.5; innerCtrl.addChild(rootTitle); @@ -160,91 +160,6 @@ class ReplayCenterGui extends GuiImage { } }; bottomBar.addChild(nextButton); - - // var playButton = new GuiButton(loadButtonImages('data/ui/replay/play', true)); - // playButton.position = new Vector(323, 386); - // playButton.extent = new Vector(94, 46); - // playButton.disabled = true; - // playButton.pressedAction = (e) -> { - // var repl = replayList[selectedIdx]; - // if (repl.readFull()) { - // var repmis = repl.mission; - // if (!StringTools.contains(repmis, "data/")) - // repmis = "data/" + repmis; - // var mi = repl.customId == 0 ? MissionList.missions.get(repmis) : Marbleland.missions.get(repl.customId); - // if (mi.isClaMission) { - // mi.download(() -> { - // MarbleGame.instance.watchMissionReplay(mi, repl); - // }); - // playButton.disabled = true; // Don't let us play anything else - // } else { - // MarbleGame.instance.watchMissionReplay(mi, repl); - // } - // } - // } - // wnd.addChild(playButton); - - // var homeButton = new GuiButton(loadButtonImages('data/ui/replay/home')); - // homeButton.position = new Vector(224, 386); - // homeButton.extent = new Vector(94, 46); - // homeButton.pressedAction = (e) -> { - // MarbleGame.canvas.setContent(new MainMenuGui()); - // } - // wnd.addChild(homeButton); - - // var scrollCtrl = new GuiScrollCtrl(ResourceLoader.getResource("data/ui/common/philscroll.png", ResourceLoader.getImage, this.imageResources).toTile()); - // scrollCtrl.position = new Vector(30, 25); - // scrollCtrl.extent = new Vector(283, 346); - // scrollCtrl.childrenHandleScroll = true; - // wnd.addChild(scrollCtrl); - - // var arial14fontdata = ResourceLoader.getFileEntry("data/font/arial.fnt"); - // var arial14b = new BitmapFont(arial14fontdata.entry); - // @:privateAccess arial14b.loader = ResourceLoader.loader; - // var arial14 = arial14b.toSdfFont(cast 12 * Settings.uiScale, MultiChannel); - // var markerFelt32fontdata = ResourceLoader.getFileEntry("data/font/MarkerFelt.fnt"); - // var markerFelt32b = new BitmapFont(markerFelt32fontdata.entry); - // @:privateAccess markerFelt32b.loader = ResourceLoader.loader; - // var markerFelt32 = markerFelt32b.toSdfFont(cast 26 * Settings.uiScale, MultiChannel); - // var markerFelt24 = markerFelt32b.toSdfFont(cast 18 * Settings.uiScale, MultiChannel); - // var markerFelt18 = markerFelt32b.toSdfFont(cast 14 * Settings.uiScale, MultiChannel); - - // var missionName = new GuiText(markerFelt24); - // missionName.position = new Vector(327, 181); - // missionName.extent = new Vector(278, 14); - // missionName.text.textColor = 0; - // missionName.justify = Center; - // wnd.addChild(missionName); - - // var replayListBox = new GuiTextListCtrl(markerFelt24, replayList.map(x -> x.name)); - // replayListBox.position = new Vector(0, 0); - // replayListBox.extent = new Vector(283, 346); - // replayListBox.textYOffset = -6; - // replayListBox.scrollable = true; - // replayListBox.onSelectedFunc = (idx) -> { - // if (idx < 0) - // return; - // selectedIdx = idx; - // playButton.disabled = false; - // var thisReplay = replayList[idx]; - // var repmis = thisReplay.mission; - // if (!StringTools.contains(repmis, "data/")) - // repmis = "data/" + repmis; - // if (MissionList.missions == null) - // MissionList.buildMissionList(); - // var m = thisReplay.customId == 0 ? MissionList.missions.get(repmis) : Marbleland.missions.get(thisReplay.customId); - // missionName.text.text = m.title; - // m.getPreviewImage((t) -> { - // pmPreview.bmp.tile = t; - // }); - // } - // scrollCtrl.addChild(replayListBox); - // scrollCtrl.setScrollMax(replayListBox.calculateFullHeight()); - - // var replayFrame = new GuiImage(ResourceLoader.getResource("data/ui/replay/replayframe.png", ResourceLoader.getImage, this.imageResources).toTile()); - // replayFrame.position = new Vector(351, 21); - // replayFrame.extent = new Vector(234, 168); - // wnd.addChild(replayFrame); } override function onResize(width:Int, height:Int) { diff --git a/src/modes/HuntMode.hx b/src/modes/HuntMode.hx index cc929125..cdd1b576 100644 --- a/src/modes/HuntMode.hx +++ b/src/modes/HuntMode.hx @@ -289,7 +289,12 @@ class HuntMode extends NullMode { function findGemSpawnGroup(outSpawnPoint:Vector) { // Pick random spawn point - var spawnPoint = gemSpawnPoints[Math.floor(Math.random() * gemSpawnPoints.length)]; + var rnd:Int = Std.int(Math.random() * gemSpawnPoints.length); + if (level.isRecording) + level.replay.recordRandomGenState(rnd); + if (level.isWatching) + rnd = level.replay.getRandomGenState(); + var spawnPoint = gemSpawnPoints[rnd]; var pos = spawnPoint.position; var results = [];