Tewam spawner
This commit is contained in:
parent
938feb9b35
commit
2bfbfa5089
8 changed files with 126 additions and 67 deletions
|
|
@ -1,15 +0,0 @@
|
|||
extends Node3D
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
if not multiplayer.is_server():
|
||||
return
|
||||
spawn_player(multiplayer.get_unique_id())
|
||||
for i in multiplayer.get_peers():
|
||||
spawn_player(i)
|
||||
|
||||
func spawn_player(id) -> void:
|
||||
var player: PackedScene = load("res://scenes/player.tscn")
|
||||
var inst = player.instantiate()
|
||||
inst.name = str(id)
|
||||
get_tree().current_scene.add_child.call_deferred(inst,true)
|
||||
46
scripts/multiplayer/team_spawner.gd
Normal file
46
scripts/multiplayer/team_spawner.gd
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
extends Node3D
|
||||
|
||||
@export var team: Session.TEAMS
|
||||
@export var spawn_radius: float
|
||||
|
||||
func _ready() -> void:
|
||||
if not multiplayer.is_server():
|
||||
return
|
||||
match team:
|
||||
Session.TEAMS.ATTACK:
|
||||
for attacker in Lobby.attack_team:
|
||||
spawn_attacker(attacker)
|
||||
Session.TEAMS.DEFENCE:
|
||||
for defender in Lobby.defence_team:
|
||||
spawn_defender(defender)
|
||||
Session.TEAMS.SPECTATE:
|
||||
for specator in Lobby.specators_team:
|
||||
spawn_spectator(specator)
|
||||
|
||||
func spawn_defender(id: int) -> void:
|
||||
var player: PackedScene = load("res://scenes/molikman.tscn")
|
||||
var inst: Player = player.instantiate()
|
||||
inst.name = str(id)
|
||||
inst.team = Session.TEAMS.DEFENCE
|
||||
|
||||
deferred_setup.bind(inst).call_deferred()
|
||||
|
||||
func spawn_attacker(id: int) -> void:
|
||||
var player: PackedScene = load("res://scenes/molikman.tscn")
|
||||
var inst: Player = player.instantiate()
|
||||
inst.name = str(id)
|
||||
inst.team = Session.TEAMS.ATTACK
|
||||
|
||||
deferred_setup.bind(inst).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).call_deferred()
|
||||
|
||||
func deferred_setup(what: Node3D):
|
||||
get_tree().current_scene.add_child(what)
|
||||
var distance = randf_range(0,spawn_radius)
|
||||
var angle = randf_range(0,TAU)
|
||||
what.set_start_position.rpc_id(int(what.name),global_position + Vector3.RIGHT.rotated(Vector3.UP,angle) * distance)
|
||||
|
|
@ -18,7 +18,7 @@ const MAX_HP = 100
|
|||
get:
|
||||
return hp
|
||||
|
||||
@onready var TEMP_start_pos = global_position
|
||||
var TEMP_start_pos
|
||||
|
||||
func _enter_tree() -> void:
|
||||
set_multiplayer_authority(str(name).to_int())
|
||||
|
|
@ -32,3 +32,8 @@ func _physics_process(_delta: float) -> void:
|
|||
func die() -> void:
|
||||
global_position = TEMP_start_pos
|
||||
hp = MAX_HP
|
||||
|
||||
@rpc("any_peer","call_local","reliable")
|
||||
func set_start_position(start_position: Vector3):
|
||||
global_position = start_position
|
||||
TEMP_start_pos = global_position
|
||||
|
|
|
|||
|
|
@ -12,15 +12,11 @@ var compensation_speed: float
|
|||
@export var compensation_time: float = 1.0
|
||||
@export var compensation_delay: float = 0.5
|
||||
|
||||
func _enter_tree() -> void:
|
||||
set_multiplayer_authority(get_parent().name.to_int())
|
||||
|
||||
func _ready() -> void:
|
||||
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
|
||||
# Move to level controller when possible
|
||||
#Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
|
||||
if not is_multiplayer_authority():
|
||||
return
|
||||
# Move to level controller when possible
|
||||
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
|
||||
current = true
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
|
|
|
|||
|
|
@ -3,6 +3,16 @@ extends Camera3D
|
|||
@export var SENSITIVITY = 0.02
|
||||
@export var SPEED = 10.0
|
||||
|
||||
func _enter_tree() -> void:
|
||||
set_multiplayer_authority(int(name))
|
||||
|
||||
func _ready() -> void:
|
||||
if not is_multiplayer_authority():
|
||||
return
|
||||
# Move to level controller when possible
|
||||
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
|
||||
current = true
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
var xz_plane = Input.get_vector("plr_strafe_l","plr_strafe_r","plr_forward","plr_back")
|
||||
var y = Input.get_axis("spc_down","spc_up")
|
||||
|
|
@ -18,3 +28,7 @@ func rotate_camera(x,y) -> void:
|
|||
func _input(event: InputEvent) -> void:
|
||||
if event is InputEventMouseMotion:
|
||||
rotate_camera(-event.relative.x * SENSITIVITY,-event.relative.y * SENSITIVITY)
|
||||
|
||||
@rpc("any_peer","call_local","reliable")
|
||||
func set_start_position(start_position: Vector3):
|
||||
global_position = start_position
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue