28 lines
1.3 KiB
GDScript
28 lines
1.3 KiB
GDScript
class_name Map
|
|
extends Node3D
|
|
|
|
func _ready() -> void:
|
|
if multiplayer.is_server():
|
|
randomize()
|
|
var random_id: int = Multiplayer.players.keys()[randi_range(0, Multiplayer.players.size() - 1)]
|
|
Multiplayer.players[random_id].hunter = true
|
|
for i: int in $PlayerSpawners.get_children().size():
|
|
if i < Multiplayer.players.size():
|
|
var spawner: PlayerSpawner = $PlayerSpawners.get_child(i)
|
|
var player: Dictionary = Multiplayer.players[Multiplayer.players.keys()[i]]
|
|
spawner.spawn_player(player)
|
|
|
|
func _on_exit_entered(body: Node3D) -> void:
|
|
if multiplayer.is_server() and (body is Player):
|
|
var player: Player = body
|
|
if !player.hunter and Multiplayer.fuseboxes <= 0:
|
|
Multiplayer.players[player.get_multiplayer_authority()].escaped = true
|
|
player.get_caught.rpc_id(player.get_multiplayer_authority(), $SpectatorCamera.get_path())
|
|
|
|
func _process(_delta: float) -> void:
|
|
if Multiplayer.fuseboxes <= 0:
|
|
(($EscapeArea/Light as CSGBox3D).material as StandardMaterial3D).albedo_color.r8 = 0
|
|
(($EscapeArea/Light as CSGBox3D).material as StandardMaterial3D).albedo_color.g8 = 255
|
|
else:
|
|
(($EscapeArea/Light as CSGBox3D).material as StandardMaterial3D).albedo_color.r8 = 255
|
|
(($EscapeArea/Light as CSGBox3D).material as StandardMaterial3D).albedo_color.g8 = 0
|