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 PUTT_PUTT_ROGUELIKE_SCENE := "res://scenes/putt_putt_roguelike.tscn"
19const OBJECTIVE_SCENE := "res://scenes/objective.tscn"
20const THEME_EDITOR_SCENE := "res://scenes/theme_editor.tscn"
21const LEVEL_EDITOR_SCENE := "res://scenes/level_editor.tscn"
22const SPRITE_MAPPER_SCENE := "res://scenes/sprite_mapper.tscn"
23const BuildInfo = preload("res://scripts/systems/buildInfo/build_info.gd")
24@onready var GameState = get_node_or_null("/root/GameState")
25
26var build_info = BuildInfo.new()
27
28
29func _ready() -> void:
30 build_info.load_info()
31
32
33func go_to_splash() -> void:
34 _change_scene(SPLASH_SCENE)
35
36
37func go_to_start_menu() -> void:
38 _change_scene(_profile_home_scene())
39
40
41func go_to_settings() -> void:
42 _change_scene(SETTINGS_SCENE)
43
44
45func go_to_theme_editor() -> void:
46 _change_scene(THEME_EDITOR_SCENE)
47
48
49func go_to_level_editor() -> void:
50 _change_scene(LEVEL_EDITOR_SCENE)
51
52
53func go_to_sprite_mapper() -> void:
54 _change_scene(SPRITE_MAPPER_SCENE)
55
56
57func go_to_scene(scene_path:String) -> void:
58 _change_scene(scene_path)
59
60
61func continue_game() -> void:
62 _change_scene(GAME_SCENE)
63
64
65func new_game() -> void:
66 GameState.request_new_game()
67 _change_scene(GAME_SCENE)
68
69
70func go_to_card_game(slot:int = -1, start_new:bool = false) -> void:
71 if slot > 0:
72 GameState.select_card_save_slot(slot, start_new)
73 _change_scene(CARD_GAME_SCENE)
74
75
76func go_to_pong() -> void:
77 _change_scene(PONG_SCENE)
78
79
80func go_to_platformer_demo(level_id:String = "") -> void:
81 if level_id.strip_edges() != "":
82 GameState.select_platformer_level(level_id)
83 _change_scene(PLATFORMER_DEMO_SCENE)
84
85
86func go_to_putt_putt_roguelike() -> void:
87 _change_scene(PUTT_PUTT_ROGUELIKE_SCENE)
88
89
90func go_to_objective() -> void:
91 _change_scene(OBJECTIVE_SCENE)
92
93
94func go_to_project_alchemy(start_new:bool = false, slot:int = -1) -> void:
95 if slot > 0:
96 GameState.select_project_alchemy_save_slot(slot, start_new)
97 elif start_new:
98 GameState.request_project_alchemy_new_game()
99 _change_scene(PROJECT_ALCHEMY_SCENE)
100
101
102func _change_scene(scene_path:String) -> void:
103 get_tree().change_scene_to_file(scene_path)
104
105
106func _profile_home_scene() -> String:
107 build_info.load_info()
108 var state := build_info.get_state()
109 if str(state.get("game_id", "all_demos")) == "all_demos":
110 return START_MENU_SCENE
111 var launch_scene := build_info.get_launch_scene(START_MENU_SCENE)
112 if launch_scene == SPLASH_SCENE or launch_scene.strip_edges() == "":
113 return START_MENU_SCENE
114 return launch_scene