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)

