More work on multiplayer and first pass of the trap icons

This commit is contained in:
2025-12-11 11:40:26 -05:00
parent c6da8344a4
commit 0451361af8
37 changed files with 495 additions and 71 deletions

View File

@@ -1,4 +1,14 @@
extends Node
const vs_man_level = preload("res://scenes/multiplayer_test.tscn")
var player : Player
func start_vs_man() -> void:
var setup = get_tree().get_first_node_in_group("scenes")
setup.queue_free()
var level = vs_man_level.instantiate()
var spawner = get_tree().get_first_node_in_group("level_spawner") as MultiplayerSpawner
spawner.add_child(level)

View File

@@ -6,6 +6,7 @@ const SERVER_IP = "127.0.0.1"
var handle : String
var id : int
var players : Dictionary = {}
signal client_added(handle : String, id : int)
func become_host() -> void:
print("Starting host!")
@@ -14,37 +15,43 @@ func become_host() -> void:
server_peer.create_server(SERVER_PORT)
players[handle] = 1
multiplayer.multiplayer_peer = server_peer
id = multiplayer.get_unique_id()
print("%s %d t" % [handle, multiplayer.get_unique_id()])
multiplayer.peer_connected.connect(_add_player_to_game)
multiplayer.peer_disconnected.connect(_remove_player_from_game)
func join_game(handle : String) -> Error:
func join_game(new_handle : String) -> Error:
print("Player 2 joining.")
var client_peer = ENetMultiplayerPeer.new()
var error = client_peer.create_client(SERVER_IP, SERVER_PORT)
multiplayer.multiplayer_peer = client_peer
var p = multiplayer.get_unique_id()
var is_host = multiplayer.is_server()
handle = new_handle
id = multiplayer.get_unique_id()
if !error:
print("%s %d" % [handle, multiplayer.get_unique_id()])
rpc_id(1, "receive_peer_handle",multiplayer.get_unique_id(), handle )
return !error
func _add_player_to_game(id : int) -> void:
print("Player %s joined the game!" % id)
players[handle] = id
await get_tree().create_timer(0.5).timeout
get_handle_from_peer(id)
func _remove_player_from_game(id : int) -> void:
print("Player %s left the game!" % id)
@rpc("any_peer")
func get_handle_from_peer(peer_id) -> void:
rpc_id(peer_id, "receive_peer_handle", id, handle)
rpc_id(peer_id, "report_handle_to_peer", id)
@rpc("any_peer", "call_remote")
func receive_peer_handle(peer_id, peer_handle) -> void:
print("Player %s identified as %s!" % [peer_id, peer_handle])
players[peer_handle] = peer_id
client_added.emit(peer_handle, peer_id)
@rpc("any_peer", "call_remote")
func report_handle_to_peer(peer_id : int) -> void:
rpc_id(peer_id, "receive_peer_handle", multiplayer.get_unique_id(), handle)