mirror of
https://gitlab.com/open-fpsz/open-fpsz.git
synced 2026-07-13 07:25:06 +00:00
✨ Introduce a map manager
This commit is contained in:
parent
5c4cc1a6ce
commit
ae58fb2d7e
3 changed files with 80 additions and 20 deletions
|
|
@ -13,31 +13,25 @@ script/source = "class_name Multiplayer extends Node
|
|||
@export var FLAG : PackedScene
|
||||
@export var MAX_CLIENTS : int = 24
|
||||
|
||||
@onready var map : Node = $Map
|
||||
@onready var players : Node = $Players
|
||||
@onready var objectives : Node = $Objectives
|
||||
@onready var map : Node = $Map
|
||||
|
||||
var _map_manager : Map
|
||||
|
||||
signal connected_to_server
|
||||
signal connection_failed
|
||||
|
||||
func load_map(scene : PackedScene) -> void:
|
||||
map.add_child(scene.instantiate())
|
||||
|
||||
func start_server(port : int, nickname : String) -> void:
|
||||
var peer : ENetMultiplayerPeer = ENetMultiplayerPeer.new()
|
||||
peer.create_server(port, MAX_CLIENTS)
|
||||
|
||||
multiplayer.multiplayer_peer = peer
|
||||
|
||||
load_map.call_deferred(MAP)
|
||||
_load_map.call_deferred(MAP, nickname)
|
||||
|
||||
multiplayer.peer_disconnected.connect(remove_player)
|
||||
|
||||
if DisplayServer.get_name() != \"headless\":
|
||||
add_player(1, nickname)
|
||||
|
||||
add_flag()
|
||||
|
||||
func join_server(host : String, port : int, nickname : String) -> void:
|
||||
var peer : ENetMultiplayerPeer= ENetMultiplayerPeer.new()
|
||||
peer.create_client(host, port)
|
||||
|
|
@ -60,7 +54,7 @@ func add_player(peer_id : int, nickname : String) -> void:
|
|||
player.name = str(peer_id)
|
||||
player.player_id = peer_id
|
||||
player.nickname = nickname
|
||||
player.position = Vector3(0.0, 150.0, 0.0)
|
||||
player.global_position = _map_manager.get_player_spawn().position
|
||||
players.add_child(player)
|
||||
player.died.connect(respawn_player)
|
||||
print(\"Peer `%s` connected\" % player.name)
|
||||
|
|
@ -73,17 +67,24 @@ func remove_player(peer_id : int) -> void:
|
|||
player.queue_free()
|
||||
print(\"Peer `%s` disconnected\" % node_name)
|
||||
|
||||
func _load_map(scene : PackedScene, nickname : String) -> void:
|
||||
var map_scene : Node = scene.instantiate()
|
||||
_map_manager = map_scene
|
||||
map_scene.ready.connect(_add_flag)
|
||||
if DisplayServer.get_name() != \"headless\":
|
||||
add_player(1, nickname)
|
||||
map.add_child(map_scene)
|
||||
|
||||
func _add_flag() -> void:
|
||||
var flag : Flag = FLAG.instantiate()
|
||||
flag.global_position = _map_manager.get_flagstand().global_position
|
||||
objectives.add_child(flag)
|
||||
|
||||
@rpc(\"any_peer\")
|
||||
func _join_match(nickname : String) -> void:
|
||||
if multiplayer.is_server():
|
||||
add_player(multiplayer.get_remote_sender_id(), nickname)
|
||||
|
||||
|
||||
func add_flag() -> void:
|
||||
var flag : Flag = FLAG.instantiate()
|
||||
flag.position = Vector3(5.0, 100.0, 0.0)
|
||||
objectives.add_child(flag)
|
||||
|
||||
func _exit_tree() -> void:
|
||||
if multiplayer.is_server():
|
||||
#multiplayer.peer_connected.disconnect(add_player)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue