Development Syncup: Working on the map testing.

This commit is contained in:
Patrick_Pluto 2024-12-06 17:36:49 +01:00
parent c07c04e8f9
commit 1351ce3178
4 changed files with 45 additions and 0 deletions

3
scenes/maps/testmap.tscn Normal file
View file

@ -0,0 +1,3 @@
[gd_scene format=3 uid="uid://cbyee7drds7qu"]
[node name="Testmap" type="Node3D"]

View file

@ -18,3 +18,18 @@ anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
[node name="StartButton" type="Button" parent="."]
visible = false
layout_mode = 1
anchors_preset = 3
anchor_left = 1.0
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -96.0
offset_top = -31.0
grow_horizontal = 0
grow_vertical = 0
disabled = true
text = "Start Game"

View file

@ -5,12 +5,23 @@ var label: PackedScene = preload("res://scenes/ui/elements/name_label.tscn")
func _ready() -> void: func _ready() -> void:
if Networking.playerlist_changed.connect(_on_playerlist_changed) != OK: if Networking.playerlist_changed.connect(_on_playerlist_changed) != OK:
Log.error("FAILED to connect the playerlist_changed signal to _on_playerlist_changed!", "Internal Error: Failed to connect signal.") Log.error("FAILED to connect the playerlist_changed signal to _on_playerlist_changed!", "Internal Error: Failed to connect signal.")
var start_button: Button = $StartButton
if start_button.pressed.connect(_on_start_button_pressed) != OK:
Log.error("FAILED to connect the pressed signal to _on_start_button_pressed!", "Internal Error: Failed to connect signal.")
_on_playerlist_changed() _on_playerlist_changed()
func _on_playerlist_changed() -> void: func _on_playerlist_changed() -> void:
if Networking.isManager:
var start_button: Button = $StartButton
start_button.show()
start_button.disabled = false
for child: Label in $NameContainer.get_children(): for child: Label in $NameContainer.get_children():
child.free() child.free()
for peer: String in Networking.peers: for peer: String in Networking.peers:
var instance: Label = label.instantiate() var instance: Label = label.instantiate()
instance.text = peer instance.text = peer
$NameContainer.add_child(instance) $NameContainer.add_child(instance)
func _on_start_button_pressed() -> void:
Networking.send_rpcs("start_game", ["hello", " world"])

View file

@ -236,3 +236,19 @@ func send_playerlist(status: int, newPeers: Dictionary) -> void:
Log.warning("Name %s is already taken in the room!" % Game.username) Log.warning("Name %s is already taken in the room!" % Game.username)
3: 3:
Log.warning("Sent a playerlist request to a regular peer, not the host!") Log.warning("Sent a playerlist request to a regular peer, not the host!")
## General Game RPCs
# Does RPCs to all clients.
func send_rpcs(method: String, args: Array) -> void:
for peer: String in peers:
var id: int = peers[peer]
if rpc_id(id, method, args) != OK:
Log.warning("Failed to send the rpc %s to %d." % [method, id])
# Starts the game.
@rpc("any_peer", "call_remote", "reliable")
func start_game() -> void:
if multiplayer.get_remote_sender_id() == managerID:
if !get_tree().change_scene_to_file("res://scenes/maps/testmap.tscn"):
Log.warning("Couldn't load the map!")