SpaceClient/Scripts/Arena.gd

61 lines
1.9 KiB
GDScript

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)