From cdd3a0018608d1a0f59e9d5aecaa01945f96f4c9 Mon Sep 17 00:00:00 2001 From: Daniel Flanagan Date: Tue, 7 Dec 2021 16:43:37 -0600 Subject: [PATCH] WIP cleanup --- objects/lobby.tscn | 20 +++++++++++++++ project.godot | 6 +---- .../{multiplayer.tscn => lobby_browser.tscn} | 7 ++++-- screens/{main.tscn => main_menu.tscn} | 18 ++++++------- .../{lobby.tscn => multiplayer_lobby.tscn} | 2 +- scripts/global/global.gd | 8 +++--- scripts/global/signaller_client.gd | 8 ++++-- scripts/objects/lobby.gd | 25 +++++++++++++++++++ .../{multiplayer.gd => lobby_browser.gd} | 0 scripts/screens/{main.gd => main_menu.gd} | 0 .../{lobby.gd => multiplayer_lobby.gd} | 3 ++- 11 files changed, 73 insertions(+), 24 deletions(-) create mode 100644 objects/lobby.tscn rename screens/{multiplayer.tscn => lobby_browser.tscn} (92%) rename screens/{main.tscn => main_menu.tscn} (90%) rename screens/{lobby.tscn => multiplayer_lobby.tscn} (98%) create mode 100644 scripts/objects/lobby.gd rename scripts/screens/{multiplayer.gd => lobby_browser.gd} (100%) rename scripts/screens/{main.gd => main_menu.gd} (100%) rename scripts/screens/{lobby.gd => multiplayer_lobby.gd} (98%) diff --git a/objects/lobby.tscn b/objects/lobby.tscn new file mode 100644 index 0000000..3ad902b --- /dev/null +++ b/objects/lobby.tscn @@ -0,0 +1,20 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://scripts/objects/lobby.gd" type="Script" id=1] + +[node name="Control" type="HBoxContainer"] +anchor_right = 1.0 +anchor_bottom = 1.0 +size_flags_horizontal = 0 +size_flags_vertical = 0 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label" type="Label" parent="."] +margin_right = 1024.0 +margin_bottom = 600.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Lobby Name" diff --git a/project.godot b/project.godot index 39f342e..18e3fe7 100644 --- a/project.godot +++ b/project.godot @@ -11,7 +11,7 @@ config_version=4 [application] config/name="kdt" -run/main_scene="res://screens/main.tscn" +run/main_scene="res://screens/main_menu.tscn" config/icon="res://assets/img/icon.png" [autoload] @@ -22,10 +22,6 @@ Global="*res://scripts/global/global.gd" singletons=[ "res://webrtc/webrtc.tres" ] -[network] - -ssl/certificates="res://ca-certificates.crt" - [physics] common/enable_pause_aware_picking=true diff --git a/screens/multiplayer.tscn b/screens/lobby_browser.tscn similarity index 92% rename from screens/multiplayer.tscn rename to screens/lobby_browser.tscn index f15f540..ba2a5c6 100644 --- a/screens/multiplayer.tscn +++ b/screens/lobby_browser.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=3 format=2] +[gd_scene load_steps=4 format=2] -[ext_resource path="res://scripts/screens/multiplayer.gd" type="Script" id=1] +[ext_resource path="res://scripts/screens/lobby_browser.gd" type="Script" id=1] [ext_resource path="res://assets/theme.tres" type="Theme" id=2] +[ext_resource path="res://objects/lobby.tscn" type="PackedScene" id=3] [node name="Control" type="MarginContainer"] anchor_right = 1.0 @@ -112,6 +113,8 @@ __meta__ = { "_edit_use_anchors_": false } +[node name="Control" parent="v/body/lobbies" instance=ExtResource( 3 )] + [connection signal="pressed" from="v/head/back" to="." method="_on_back_pressed"] [connection signal="pressed" from="v/head/create_lobby" to="." method="_on_create_lobby_pressed"] [connection signal="pressed" from="v/head/join" to="." method="_on_join_pressed"] diff --git a/screens/main.tscn b/screens/main_menu.tscn similarity index 90% rename from screens/main.tscn rename to screens/main_menu.tscn index 8af35e0..71daab1 100644 --- a/screens/main.tscn +++ b/screens/main_menu.tscn @@ -1,12 +1,12 @@ [gd_scene load_steps=5 format=2] -[ext_resource path="res://scripts/screens/main.gd" type="Script" id=1] -[ext_resource path="res://assets/fonts/iosevkalyte/iosevkalyte-regular.ttf" type="DynamicFontData" id=2] -[ext_resource path="res://assets/theme.tres" type="Theme" id=3] +[ext_resource path="res://assets/fonts/iosevkalyte/iosevkalyte-regular.ttf" type="DynamicFontData" id=1] +[ext_resource path="res://assets/theme.tres" type="Theme" id=2] +[ext_resource path="res://scripts/screens/main_menu.gd" type="Script" id=3] [sub_resource type="DynamicFont" id=1] size = 70 -font_data = ExtResource( 2 ) +font_data = ExtResource( 1 ) [node name="Control" type="MarginContainer"] anchor_right = 1.0 @@ -15,8 +15,8 @@ margin_left = 20.0 margin_top = 20.0 margin_right = -20.0 margin_bottom = -20.0 -theme = ExtResource( 3 ) -script = ExtResource( 1 ) +theme = ExtResource( 2 ) +script = ExtResource( 3 ) __meta__ = { "_edit_use_anchors_": false } @@ -37,7 +37,7 @@ rect_min_size = Vector2( 150, 50 ) hint_tooltip = "Yeah, let's get out of here." size_flags_horizontal = 3 size_flags_vertical = 3 -theme = ExtResource( 3 ) +theme = ExtResource( 2 ) text = "Quit" __meta__ = { "_edit_use_anchors_": false @@ -51,7 +51,7 @@ rect_min_size = Vector2( 150, 50 ) hint_tooltip = "This is what you came for!" size_flags_horizontal = 3 size_flags_vertical = 3 -theme = ExtResource( 3 ) +theme = ExtResource( 2 ) text = "Multiplayer" [node name="Singleplayer" type="Button" parent="VBoxContainer/HBoxContainer"] @@ -64,7 +64,7 @@ hint_tooltip = "This is a multiplayer tech demo, you dunce. And no, you may not ask why the button is here." size_flags_horizontal = 3 size_flags_vertical = 3 -theme = ExtResource( 3 ) +theme = ExtResource( 2 ) disabled = true text = "Singleplayer" __meta__ = { diff --git a/screens/lobby.tscn b/screens/multiplayer_lobby.tscn similarity index 98% rename from screens/lobby.tscn rename to screens/multiplayer_lobby.tscn index 4f36da2..7f151d6 100644 --- a/screens/lobby.tscn +++ b/screens/multiplayer_lobby.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=3 format=2] -[ext_resource path="res://scripts/screens/lobby.gd" type="Script" id=1] +[ext_resource path="res://scripts/screens/multiplayer_lobby.gd" type="Script" id=1] [ext_resource path="res://assets/theme.tres" type="Theme" id=2] [node name="lobby" type="MarginContainer"] diff --git a/scripts/global/global.gd b/scripts/global/global.gd index 733b95d..7dd5f30 100644 --- a/scripts/global/global.gd +++ b/scripts/global/global.gd @@ -26,25 +26,25 @@ func _ready(): lobby_browser() func goto_scene(scene_resource_name): - var _result = get_tree().change_scene("res://%s.tscn" % scene_resource_name) + var _result = get_tree().change_scene("res://screens/%s.tscn" % scene_resource_name) func main_menu(): client.close() - goto_scene("main") + goto_scene("main_menu") func start_singleplayer_game(): client.close() goto_scene("game") func _signaller_connected(): - goto_scene("multiplayer") + goto_scene("lobby_browser") func lobby_browser(): client.close() Global.client.connect_to_signaller() func lobby(): - goto_scene("lobby") + goto_scene("multiplayer_lobby") func quit(): client.close() diff --git a/scripts/global/signaller_client.gd b/scripts/global/signaller_client.gd index d606af3..ce8c8b7 100644 --- a/scripts/global/signaller_client.gd +++ b/scripts/global/signaller_client.gd @@ -3,13 +3,14 @@ extends Node """ This module is responsible for making a WebSocket connection to the signaller in order to enable establishish WebRTC P2P connections. Another module is -expected to fully setup the peer connections. +expected to fully setup the peer connections. (./multiplayer_client.gd) """ signal lobby_new(lobbiesList) signal lobby_delete(id) signal lobby_joined(id, peer_id) signal lobby_left(id) + signal peer_joined(peers) signal peer_left(id) signal candidate_received(data) @@ -82,7 +83,6 @@ func _process(_delta: float): var status: int = ws.get_connection_status() if status == WebSocketClient.CONNECTION_CONNECTED or status == WebSocketClient.CONNECTION_CONNECTING: ws.poll() - func join_lobby(id: String): return _send("lobby_join:%s" % id) @@ -118,6 +118,10 @@ func set_lobby_max_players(n: int): if is_host(): _send("json:%s" % JSON.print({"type": "update_lobby", "data": {"maxPlayers": n}})) +func set_ready(n: bool): + if !is_host(): + _send("set_ready:%s" % JSON.print(n)) + func _parse_msg(): var msg: String = ws.get_peer(1).get_packet().get_string_from_utf8() if msg.begins_with("json:"): diff --git a/scripts/objects/lobby.gd b/scripts/objects/lobby.gd new file mode 100644 index 0000000..325c57a --- /dev/null +++ b/scripts/objects/lobby.gd @@ -0,0 +1,25 @@ +extends HBoxContainer + +export(String) var id = "Some UUID" +export(String) var text = "Lobby" setget set_text +export(int) var max_players = 20 setget set_max_players +export(int) var current_players = 1 setget set_current_players +export(bool) var locked = false + +func _ready(): + _update_text() + +func _update_text(): + $Label.text = "%s (%d/%d players)" % [text, current_players, max_players] + +func set_text(t): + text = t + _update_text() + +func set_max_players(n): + max_players = n + _update_text() + +func set_current_players(n): + current_players = n + _update_text() diff --git a/scripts/screens/multiplayer.gd b/scripts/screens/lobby_browser.gd similarity index 100% rename from scripts/screens/multiplayer.gd rename to scripts/screens/lobby_browser.gd diff --git a/scripts/screens/main.gd b/scripts/screens/main_menu.gd similarity index 100% rename from scripts/screens/main.gd rename to scripts/screens/main_menu.gd diff --git a/scripts/screens/lobby.gd b/scripts/screens/multiplayer_lobby.gd similarity index 98% rename from scripts/screens/lobby.gd rename to scripts/screens/multiplayer_lobby.gd index bdf94c7..3de604f 100644 --- a/scripts/screens/lobby.gd +++ b/scripts/screens/multiplayer_lobby.gd @@ -87,9 +87,10 @@ func update_player_count(): peers_list_label.text = "Players: %d" % peers.get_item_count() func _on_Button_pressed(): - send_chkkkkkkat_message() + send_chat_message() func _on_ready_up_toggled(button_pressed: bool): + Global.client.signaller.set_ready(button_pressed) func _on_lobby_info_text_changed(new_text: String): Global.client.signaller.set_lobby_name(new_text)