extends Node class_name GameInstance onready var ui = $CanvasLayer/ui onready var world = $world onready var systems = $systems onready var netgame = $"/root/Multiplayer" func _ready() -> void: ui.connect("command", world, "process_command") if netgame.hosting: world.load_map(netgame.get_current_map()) rpc("spawn_player", 1) else: world.load_map(GameWorld.Map.EMPTY) rpc_id(1, "send_map") yield(world.map, "map_received") rpc_id(1, "ready_to_spawn") master func send_map() -> void: var id = get_tree().get_rpc_sender_id() print("sending map data to ", id) world.map.send_data(id) master func ready_to_spawn() -> void: var id = get_tree().get_rpc_sender_id() print(id, " is ready to spawn players") # Tell him everyone to spawn var players = $world/players.get_children() for player in players: rpc_id(id, "spawn_player", player.get_network_master()) # Then spawn him as well rpc("spawn_player", id) remotesync func spawn_player(id): print("must spawn ", id) world.spawn_player(id, multiplayer.get_network_unique_id() == id) func process_command(cmd: UICommand): match cmd.cmd_type: UICommand.CommandType.SetShipSpeed: world.map.ship_speed = cmd.cmd_args[0] UICommand.CommandType.SetShipDirection: world.map.ship_direction = cmd.cmd_args[0]