From 4d2002804caacab8b0530de24653dd9d490c0ad7 Mon Sep 17 00:00:00 2001 From: RandomityGuy <31925790+RandomityGuy@users.noreply.github.com> Date: Wed, 24 Apr 2024 02:11:19 +0530 Subject: [PATCH] fix few bugs, proper game leaving midgame and endgame --- src/MarbleWorld.hx | 11 ++++++++++- src/modes/GameMode.hx | 1 + src/modes/HuntMode.hx | 13 +++++++++++++ src/modes/NullMode.hx | 2 ++ src/net/MoveManager.hx | 2 +- 5 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/MarbleWorld.hx b/src/MarbleWorld.hx index 1961eac1..c19a8c3d 100644 --- a/src/MarbleWorld.hx +++ b/src/MarbleWorld.hx @@ -1,5 +1,6 @@ package src; +import gui.MultiplayerLevelSelectGui; import collision.CollisionPool; import net.GemPredictionStore; import modes.HuntMode; @@ -646,7 +647,11 @@ class MarbleWorld extends Scheduler { AudioManager.playSound(ResourceLoader.getResource('data/sound/spawn_alternate.wav', ResourceLoader.getAudio, this.soundResources)); - this.gameMode.onRestart(); + if (marble == this.marble) + this.gameMode.onRestart(); + if (Net.isClient) { + this.gameMode.onClientRestart(); + } return 0; } @@ -1984,6 +1989,10 @@ class MarbleWorld extends Scheduler { if (isMultiplayer) { if (Net.isHost) { NetCommands.endGame(); + this.dispose(); + MultiplayerLevelSelectGui.currentSelectionStatic = mission.index + 1; + var pmg = new MultiplayerLevelSelectGui(true); + MarbleGame.canvas.setContent(pmg); } if (Net.isClient) { Net.disconnect(); diff --git a/src/modes/GameMode.hx b/src/modes/GameMode.hx index ff375c60..c1948055 100644 --- a/src/modes/GameMode.hx +++ b/src/modes/GameMode.hx @@ -25,6 +25,7 @@ interface GameMode { public function applyRewindState(state:RewindableState):Void; public function onTimeExpire():Void; public function onRestart():Void; + public function onClientRestart():Void; public function onRespawn(marble:Marble):Void; public function onGemPickup(marble:Marble, gem:Gem):Void; diff --git a/src/modes/HuntMode.hx b/src/modes/HuntMode.hx index 975356e2..752c8162 100644 --- a/src/modes/HuntMode.hx +++ b/src/modes/HuntMode.hx @@ -297,6 +297,18 @@ class HuntMode extends NullMode { @:privateAccess level.playGui.formatGemHuntCounter(points); } + override function onClientRestart() { + for (gi in 0...gemSpawnPoints.length) { + var gemSpawn = gemSpawnPoints[gi]; + var vec = gemSpawn.position; + if (gemSpawn.gem != null) { + gemSpawn.gem.setHide(true); + gemSpawn.gem.pickedUp = true; + gemSpawn.gemBeam.setHide(true); + } + } + } + override function onGemPickup(marble:Marble, gem:Gem) { if (@:privateAccess !marble.isNetUpdate) { if (marble == level.marble) @@ -476,6 +488,7 @@ class HuntMode extends NullMode { } } for (sphereId in spawnGroup) { + Console.log('Spawning gem id ${sphereId}'); var gemSpawn = gemSpawnPoints[sphereId]; if (gemSpawn.gem != null) { gemSpawn.gem.pickedUp = false; diff --git a/src/modes/NullMode.hx b/src/modes/NullMode.hx index 5d12809c..3da19a76 100644 --- a/src/modes/NullMode.hx +++ b/src/modes/NullMode.hx @@ -108,4 +108,6 @@ class NullMode implements GameMode { public function constructRewindState() { return null; } + + public function onClientRestart() {} } diff --git a/src/net/MoveManager.hx b/src/net/MoveManager.hx index 19f8b051..f7f62831 100644 --- a/src/net/MoveManager.hx +++ b/src/net/MoveManager.hx @@ -242,7 +242,7 @@ class MoveManager { delta = queuedMoves[0].id - lastAckMoveId; mv = queuedMoves.shift(); ackRTT = timeState.ticks - mv.timeState.ticks; - maxMoves = ackRTT + 2; + // maxMoves = ackRTT + 2; } lastAckMoveId = m.id; return mv;