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;
public abstract class Scene {
public final SceneType SCENE_TYPE = SceneType.UNDEFINED;
import lombok.Getter;
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 update();
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.GAME, new SplashScene()));
@Getter private static Scene scene = SCENES.get(DEFAULT_SCENE_TYPE);
@Getter private static Scene scene;
public static void init() {
setScene(DEFAULT_SCENE_TYPE);
}
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();
logSceneChange();
}
public static void update() {
if (scene.SCENE_TYPE == SceneType.UNDEFINED) return;
if (scene.getSceneType() == null) return;
getScene().update();
}
private static void logSceneChange() {
SceneType newSceneType = getScene().SCENE_TYPE;
SceneType newSceneType = getScene().getSceneType();
String loadedSceneMessage = String.format("Changed to scene '%s'", newSceneType.toString());
if (newSceneType == SceneType.UNDEFINED) {
Log.warning("SceneManager", loadedSceneMessage);
} else {
Log.success("SceneManager", loadedSceneMessage);
}
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;
public enum SceneType {
UNDEFINED,
SPLASH,
MENU,
GAME,