41 lines
1.2 KiB
GDScript
41 lines
1.2 KiB
GDScript
extends Node3D
|
|
|
|
@export var team: Session.TEAMS
|
|
@export var spawn_radius: float
|
|
|
|
func _ready() -> void:
|
|
if not multiplayer.is_server():
|
|
queue_free()
|
|
return
|
|
match team:
|
|
Session.TEAMS.ATTACK:
|
|
for attacker in Lobby.attack_team:
|
|
spawn_player(attacker)
|
|
Session.TEAMS.DEFENCE:
|
|
for defender in Lobby.defence_team:
|
|
spawn_player(defender)
|
|
Session.TEAMS.SPECTATE:
|
|
for specator in Lobby.specators_team:
|
|
spawn_spectator(specator)
|
|
|
|
func spawn_player(id: int) -> void:
|
|
var player: PackedScene = load("res://scenes/molikman.tscn")
|
|
var inst: Player = player.instantiate()
|
|
Session.player_nodes[id] = inst
|
|
inst.name = str(id)
|
|
|
|
deferred_setup.bind(inst,team).call_deferred()
|
|
|
|
func spawn_spectator(id: int) -> void:
|
|
var spectator: PackedScene = load("res://scenes/spectator.tscn")
|
|
var inst = spectator.instantiate()
|
|
|
|
inst.name = str(id)
|
|
deferred_setup.bind(inst,Session.TEAMS.SPECTATE).call_deferred()
|
|
|
|
func deferred_setup(what: Node3D, new_team: Session.TEAMS):
|
|
get_parent().add_child(what)
|
|
var distance = randf_range(0,spawn_radius)
|
|
var angle = randf_range(0,TAU)
|
|
var new_position = global_position + Vector3.RIGHT.rotated(Vector3.UP,angle) * distance
|
|
what.set_after_spawn.rpc_id(int(what.name),new_position,new_team)
|