Simplify SceneManager initial scene logic
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
private static String sameSceneWarningString() {
|
||||
return String.format(
|
||||
"Tried to switch to scene '%s' but that scene is already loaded",
|
||||
scene.getSceneType().toString());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package org.hirw.game;
|
||||
|
||||
public enum SceneType {
|
||||
UNDEFINED,
|
||||
SPLASH,
|
||||
MENU,
|
||||
GAME,
|
||||
|
||||
Reference in New Issue
Block a user