RapidGameFramework
Reusable Godot managers for data-driven small games
Loading...
Searching...
No Matches
scene_manager.gd
Go to the documentation of this file.
1extends Node
2
3
9
10const SPLASH_SCENE := "res://scenes/splash_screen.tscn"
11const START_MENU_SCENE := "res://scenes/start_menu.tscn"
12const SETTINGS_SCENE := "res://scenes/settings_menu.tscn"
13const GAME_SCENE := "res://scenes/main.tscn"
14const CARD_GAME_SCENE := "res://scenes/emoji_card_collector.tscn"
15const PONG_SCENE := "res://scenes/arcade_pong.tscn"
16const PROJECT_ALCHEMY_SCENE := "res://scenes/project_alchemy.tscn"
17const PLATFORMER_DEMO_SCENE := "res://scenes/platformer_demo.tscn"
18const THEME_EDITOR_SCENE := "res://scenes/theme_editor.tscn"
19const LEVEL_EDITOR_SCENE := "res://scenes/level_editor.tscn"
20const BuildInfo = preload("res://scripts/systems/buildInfo/build_info.gd")
21@onready var GameState = get_node_or_null("/root/GameState")
22
23var build_info = BuildInfo.new()
24
25
26func _ready() -> void:
27 build_info.load_info()
28
29
30func go_to_splash() -> void:
31 _change_scene(SPLASH_SCENE)
32
33
34func go_to_start_menu() -> void:
35 _change_scene(_profile_home_scene())
36
37
38func go_to_settings() -> void:
39 _change_scene(SETTINGS_SCENE)
40
41
42func go_to_theme_editor() -> void:
43 _change_scene(THEME_EDITOR_SCENE)
44
45
46func go_to_level_editor() -> void:
47 _change_scene(LEVEL_EDITOR_SCENE)
48
49
50func go_to_scene(scene_path:String) -> void:
51 _change_scene(scene_path)
52
53
54func continue_game() -> void:
55 _change_scene(GAME_SCENE)
56
57
58func new_game() -> void:
59 GameState.request_new_game()
60 _change_scene(GAME_SCENE)
61
62
63func go_to_card_game(slot:int = -1, start_new:bool = false) -> void:
64 if slot > 0:
65 GameState.select_card_save_slot(slot, start_new)
66 _change_scene(CARD_GAME_SCENE)
67
68
69func go_to_pong() -> void:
70 _change_scene(PONG_SCENE)
71
72
73func go_to_platformer_demo(level_id:String = "") -> void:
74 if level_id.strip_edges() != "":
75 GameState.select_platformer_level(level_id)
76 _change_scene(PLATFORMER_DEMO_SCENE)
77
78
79func go_to_project_alchemy(start_new:bool = false, slot:int = -1) -> void:
80 if slot > 0:
81 GameState.select_project_alchemy_save_slot(slot, start_new)
82 elif start_new:
83 GameState.request_project_alchemy_new_game()
84 _change_scene(PROJECT_ALCHEMY_SCENE)
85
86
87func _change_scene(scene_path:String) -> void:
88 get_tree().change_scene_to_file(scene_path)
89
90
91func _profile_home_scene() -> String:
92 build_info.load_info()
93 var state := build_info.get_state()
94 if str(state.get("game_id", "all_demos")) == "all_demos":
95 return START_MENU_SCENE
96 var launch_scene := build_info.get_launch_scene(START_MENU_SCENE)
97 if launch_scene == SPLASH_SCENE or launch_scene.strip_edges() == "":
98 return START_MENU_SCENE
99 return launch_scene