56 lines
1.4 KiB
GDScript
56 lines
1.4 KiB
GDScript
class_name RootScene extends Node3D
|
|
|
|
@export var overworld:Node3D = null
|
|
@export var initial:Node3D = null
|
|
@export var battle:Node3D = null
|
|
@export var cooking:Node3D = null
|
|
|
|
func _enter_tree() -> void:
|
|
SCENE.sceneChanged.connect(onSceneChange)
|
|
SCENE.setScene(SceneSingleton.SceneType.INITIAL)
|
|
|
|
func _exit_tree() -> void:
|
|
push_error("RootScene should not be removed from the scene tree. This is a bug.")
|
|
|
|
func removeAndHide(node:Node3D) -> void:
|
|
if node && node.get_parent() == self:
|
|
remove_child(node)
|
|
node.visible = false
|
|
|
|
func addAndShow(node:Node3D) -> void:
|
|
if node && node.get_parent() != self:
|
|
add_child(node)
|
|
node.visible = true
|
|
|
|
func onSceneChange(newScene:SceneSingleton.SceneType) -> void:
|
|
match newScene:
|
|
SceneSingleton.SceneType.INITIAL:
|
|
removeAndHide(overworld)
|
|
removeAndHide(battle)
|
|
removeAndHide(cooking)
|
|
addAndShow(initial)
|
|
|
|
SceneSingleton.SceneType.OVERWORLD:
|
|
removeAndHide(initial)
|
|
removeAndHide(battle)
|
|
removeAndHide(cooking)
|
|
addAndShow(overworld)
|
|
|
|
SceneSingleton.SceneType.BATTLE:
|
|
removeAndHide(initial)
|
|
removeAndHide(overworld)
|
|
removeAndHide(cooking)
|
|
addAndShow(battle)
|
|
|
|
SceneSingleton.SceneType.COOKING:
|
|
removeAndHide(initial)
|
|
removeAndHide(overworld)
|
|
removeAndHide(battle)
|
|
addAndShow(cooking)
|
|
|
|
SceneSingleton.SceneType.UNSET:
|
|
pass
|
|
|
|
_:
|
|
pass
|