extends Spatial var players = {} # keys are String, values are Players const Player = preload("res://Scenes/Player.tscn") var winner_name = null # String or null remote func place_player(player_id : int, position : Vector3, rotation : Vector3) -> void: get_parent().console_print('Placing player with id: ' + String(player_id)) var player = Player.instance() player.set_name('player' + String(player_id)) add_child(player) player.set_translation(position) player.set_rotation(rotation) get_parent().console_print('Player Coords: ' + String(player.translation) + String(player.rotation)) players[player_id] = player if player_id == get_tree().get_network_unique_id(): player.is_local = true get_parent().console_print('Setting player with id (' + String(player_id) + ') as local') player.init(player_id, get_parent().color_dict[player_id]) $Camera.register_player(player) $WinnerPanel.visible = false func init(): get_parent().arena_ready() func play_full_plans(): for player in players.values(): player.play_full_plan() func mouse_enter(player_obj : RigidBody): players[get_tree().get_network_unique_id()].display_data(player_obj) func mouse_exit(player_obj : RigidBody): players[get_tree().get_network_unique_id()].clear_info_panel() remote func declare_winner(name : String) -> void: winner_name = "Victor: " + name $WinnerPanel/WinnerLabel.text = winner_name func show_winner() -> void: if winner_name != null: $WinnerPanel.visible = true func _on_RematchButton_pressed(): $WinnerPanel/RematchButton.disabled = true $Camera.clear_register() for player_id in players.keys(): players[player_id].queue_free() players.clear() winner_name = null rpc_id(1, "request_rematch", get_tree().get_network_unique_id()) func _on_ExitButton_pressed(): get_parent().exit_button_pressed() func set_all_firing_arc_visibilities(toggle : bool) -> void: for player in players.values(): player.set_firing_arc_visibility(toggle)