make Game.gd not rely on autoload/global
This commit is contained in:
28
main.gd
28
main.gd
@ -1,30 +1,47 @@
|
||||
class_name Main
|
||||
extends Node
|
||||
|
||||
signal loaded_scene
|
||||
|
||||
@export var scene: Node
|
||||
@export var movies: Node
|
||||
|
||||
var game_manager: GameManager
|
||||
var loaded: bool = false
|
||||
var main_menu_scene_path: String = "res://Scenes/Menus/MainMenu/main_menu.tscn"
|
||||
var multiplayer_lobby_scene_path: String = "res://Scenes/Menus/multiplayer_lobby.tscn"
|
||||
var singleplayer_lobby_scene_path: String = "res://Scenes/Menus/singleplayer_lobby.tscn"
|
||||
|
||||
func _ready() -> void:
|
||||
Game.switch_to_main_menu.connect(load_main_menu)
|
||||
Game.switch_to_single_player.connect(load_singleplayer)
|
||||
Game.switch_to_multi_player.connect(load_multiplayer)
|
||||
|
||||
|
||||
func load_main_menu() -> void:
|
||||
load_scene(main_menu_scene_path)
|
||||
await loaded_scene
|
||||
if game_manager:
|
||||
game_manager.queue_free()
|
||||
game_manager = GameManager.new()
|
||||
add_child(game_manager)
|
||||
game_manager.switch_to_main_menu.connect(load_main_menu)
|
||||
game_manager.switch_to_single_player.connect(load_singleplayer)
|
||||
game_manager.switch_to_multi_player.connect(load_multiplayer)
|
||||
var main_menu: MainMenu = scene.get_child(0) as MainMenu
|
||||
main_menu.multiplayer_game_requested.connect(load_multiplayer)
|
||||
main_menu.singleplayer_game_requested.connect(load_singleplayer)
|
||||
main_menu.game = game_manager
|
||||
|
||||
|
||||
func load_singleplayer() -> void:
|
||||
load_scene(singleplayer_lobby_scene_path)
|
||||
await loaded_scene
|
||||
var single_player_lobby: SinglePlayerLobby = scene.get_child(0) as SinglePlayerLobby
|
||||
single_player_lobby.game_manager = game_manager
|
||||
single_player_lobby.setup_game()
|
||||
|
||||
|
||||
func load_multiplayer() -> void:
|
||||
load_scene(multiplayer_lobby_scene_path)
|
||||
await loaded_scene
|
||||
var multi_player_lobby: MultiplayerLobby = scene.get_child(0) as MultiplayerLobby
|
||||
multi_player_lobby.game_manager = game_manager
|
||||
|
||||
|
||||
func load_scene(scene_path: String) -> void:
|
||||
@ -42,3 +59,4 @@ func load_scene(scene_path: String) -> void:
|
||||
movies = null
|
||||
$CanvasLayer.visible = true
|
||||
scene.add_child(new_scene.instantiate())
|
||||
loaded_scene.emit()
|
||||
|
Reference in New Issue
Block a user