Files
Dawn-Godot/scene/RootScene.gd

74 lines
2.0 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
var testEnemy = BattleFighter.new({
'controller': BattleFighter.FighterController.AI
})
BATTLE.startBattle({
'fighters': {
# Test fighters
BATTLE.BattlePosition.RIGHT_MIDDLE_FRONT: PartySingleton.PARTY_JOHN,
BATTLE.BattlePosition.LEFT_MIDDLE_FRONT: testEnemy
}
})
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)