Files
Dawn-Godot/scene/RootScene.gd
2026-01-14 21:54:38 -06:00

68 lines
1.8 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
@export var currentScene:Node = null
func _enter_tree() -> void:
SCENE.sceneChanged.connect(onSceneChange)
SCENE.setScene(SceneSingleton.SceneType.INITIAL)
# SCENE.setScene(SceneSingleton.SceneType.BATTLE)
# # Wait a frame
# await get_tree().process_frame
# BATTLE.startBattle({
# 'fighters': {
# BATTLE.BattlePosition.RIGHT_TOP_FRONT: PartySingleton.PARTY_JOHN,
# }
# })
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():
node.get_parent().remove_child(node)
node.visible = false
func addAndShow(node:Node3D) -> void:
if node && currentScene:
if node.get_parent() && node.get_parent() != currentScene:
node.get_parent().remove_child(node)
currentScene.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)
_:
removeAndHide(initial)
removeAndHide(overworld)
removeAndHide(battle)
removeAndHide(cooking)