open-fpsz/game_modes/multiplayer.tscn
2024-04-07 21:03:56 +00:00

69 lines
1.9 KiB
Plaintext

[gd_scene load_steps=2 format=3 uid="uid://c7ae4jw5d8mue"]
[sub_resource type="GDScript" id="GDScript_pj58d"]
script/source = "extends Node
@onready var map = $Map
@onready var players = $Players
const PLAYER : PackedScene = preload(\"res://characters/player/player.tscn\")
func start_server(peer):
multiplayer.multiplayer_peer = peer
print(\"Server started\")
load_map.call_deferred(load(\"res://maps/genesis/genesis.tscn\"))
multiplayer.peer_connected.connect(add_player)
multiplayer.peer_disconnected.connect(remove_player)
for id in multiplayer.get_peers():
add_player(id)
add_player(1)
func join_server(peer):
multiplayer.multiplayer_peer = peer
func load_map(scene : PackedScene):
map.add_child(scene.instantiate())
func add_player(peer_id : int):
var node_name = str(peer_id)
var player_scene_instance = PLAYER.instantiate()
player_scene_instance.name = node_name
player_scene_instance.player_id = peer_id
player_scene_instance.position = Vector3(0.0, 150.0, 0.0)
players.add_child(player_scene_instance)
print(\"Peer `%s` connected\" % node_name)
func remove_player(peer_id : int):
var node_name = str(peer_id)
players.get_node(node_name).queue_free()
print(\"Peer `%s` disconnected\" % node_name)
func _exit_tree():
if not multiplayer.is_server():
return
multiplayer.peer_connected.disconnect(add_player)
multiplayer.peer_disconnected.disconnect(remove_player)
"
[node name="Multiplayer" type="Node"]
script = SubResource("GDScript_pj58d")
[node name="Map" type="Node" parent="."]
[node name="MapSpawner" type="MultiplayerSpawner" parent="."]
_spawnable_scenes = PackedStringArray("res://maps/genesis/genesis.tscn")
spawn_path = NodePath("../Map")
spawn_limit = 1
[node name="Players" type="Node" parent="."]
[node name="PlayersSpawner" type="MultiplayerSpawner" parent="."]
_spawnable_scenes = PackedStringArray("res://characters/player/player.tscn")
spawn_path = NodePath("../Players")