From cc29a57ba1ac154df25581513ada5bbddfc6aa8b Mon Sep 17 00:00:00 2001 From: Dave Smith Date: Sun, 24 Mar 2024 08:41:36 +0000 Subject: [PATCH] OOPS: Restored scene manager previous --- .../src/main/scala/indigo/scenes/SceneManager.scala | 13 +++++++++++++ .../src/test/scala/indigo/scenes/TestScenes.scala | 8 ++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/indigo/indigo/src/main/scala/indigo/scenes/SceneManager.scala b/indigo/indigo/src/main/scala/indigo/scenes/SceneManager.scala index 568db03b4..101f09516 100644 --- a/indigo/indigo/src/main/scala/indigo/scenes/SceneManager.scala +++ b/indigo/indigo/src/main/scala/indigo/scenes/SceneManager.scala @@ -95,6 +95,19 @@ class SceneManager[StartUpData, GameModel, ViewModel]( Outcome(model, events) + case SceneEvent.Previous => + lastSceneChangeAt = frameContext.gameTime.running + + val from = finderInstance.current.name + finderInstance = finderInstance.backward + val to = finderInstance.current.name + + val events = + if from == to then Batch.empty + else Batch(SceneEvent.SceneChange(from, to, lastSceneChangeAt)) + + Outcome(model, events) + case SceneEvent.LoopPrevious => lastSceneChangeAt = frameContext.gameTime.running diff --git a/indigo/indigo/src/test/scala/indigo/scenes/TestScenes.scala b/indigo/indigo/src/test/scala/indigo/scenes/TestScenes.scala index 663528141..8ee35f0b2 100644 --- a/indigo/indigo/src/test/scala/indigo/scenes/TestScenes.scala +++ b/indigo/indigo/src/test/scala/indigo/scenes/TestScenes.scala @@ -62,7 +62,9 @@ final case class TestSceneA(id: String) extends Scene[Unit, TestGameModel, TestV val subSystems: Set[SubSystem] = Set() def updateModel(context: SceneContext[Unit], sceneModel: TestSceneModelA): GlobalEvent => Outcome[TestSceneModelA] = - _ => Outcome(sceneModel.copy(count = sceneModel.count + 1)) + _ => + // println(s"A - before: ${sceneModel.count}, after: ${sceneModel.count + 1}") + Outcome(sceneModel.copy(count = sceneModel.count + 1)) def updateViewModel( context: SceneContext[Unit], @@ -125,7 +127,9 @@ final case class TestSceneB(id: String) extends Scene[Unit, TestGameModel, TestV val subSystems: Set[SubSystem] = Set() def updateModel(context: SceneContext[Unit], sceneModel: TestSceneModelB): GlobalEvent => Outcome[TestSceneModelB] = - _ => Outcome(sceneModel.copy(count = sceneModel.count + 10)) + _ => + // println(s"B - before: ${sceneModel.count}, after: ${sceneModel.count + 10}") + Outcome(sceneModel.copy(count = sceneModel.count + 10)) def updateViewModel( context: SceneContext[Unit],