Simplify SceneManager initial scene logic

This commit is contained in:
2025-10-25 03:20:35 +01:00
parent 2ed1763b83
commit 0e66f20423
3 changed files with 27 additions and 14 deletions

View File

@@ -1,15 +1,19 @@
package org.hirw.game; package org.hirw.game;
public abstract class Scene { import lombok.Getter;
public final SceneType SCENE_TYPE = SceneType.UNDEFINED;
public Scene() {} public abstract class Scene {
@Getter private final SceneType sceneType;
public Scene(SceneType sceneType) {
this.sceneType = sceneType;
}
public abstract void init(); public abstract void init();
public abstract void update(); public abstract void update();
public String toString() { public String toString() {
return SCENE_TYPE.toString(); return getSceneType().toString();
} }
} }

View File

@@ -15,32 +15,42 @@ public final class SceneManager {
SceneType.MENU, new SplashScene(), SceneType.MENU, new SplashScene(),
SceneType.GAME, new SplashScene())); SceneType.GAME, new SplashScene()));
@Getter private static Scene scene = SCENES.get(DEFAULT_SCENE_TYPE); @Getter private static Scene scene;
public static void init() { public static void init() {
setScene(DEFAULT_SCENE_TYPE); setScene(DEFAULT_SCENE_TYPE);
} }
public static void setScene(SceneType sceneType) { public static void setScene(SceneType sceneType) {
scene = SCENES.get(sceneType); Scene newScene = SCENES.get(sceneType);
if (scene == newScene) {
Log.warning("SceneManager", sameSceneWarningString());
return;
} else {
scene = newScene;
}
scene.init(); scene.init();
logSceneChange(); logSceneChange();
} }
public static void update() { public static void update() {
if (scene.SCENE_TYPE == SceneType.UNDEFINED) return; if (scene.getSceneType() == null) return;
getScene().update(); getScene().update();
} }
private static void logSceneChange() { private static void logSceneChange() {
SceneType newSceneType = getScene().SCENE_TYPE; SceneType newSceneType = getScene().getSceneType();
String loadedSceneMessage = String.format("Changed to scene '%s'", newSceneType.toString()); String loadedSceneMessage = String.format("Changed to scene '%s'", newSceneType.toString());
if (newSceneType == SceneType.UNDEFINED) { Log.success("SceneManager", loadedSceneMessage);
Log.warning("SceneManager", loadedSceneMessage); }
} else {
Log.success("SceneManager", loadedSceneMessage); private static String sameSceneWarningString() {
} return String.format(
"Tried to switch to scene '%s' but that scene is already loaded",
scene.getSceneType().toString());
} }
} }

View File

@@ -1,7 +1,6 @@
package org.hirw.game; package org.hirw.game;
public enum SceneType { public enum SceneType {
UNDEFINED,
SPLASH, SPLASH,
MENU, MENU,
GAME, GAME,