From 5ef6704c37814be05ac31db6e245ceec71e14250 Mon Sep 17 00:00:00 2001 From: Jan Heemstra Date: Fri, 24 Sep 2021 23:16:54 +0200 Subject: [PATCH] Added menus for hosting and connecting to games --- Game/Assets/UI/ConnectMenu.gd | 4 ++++ Game/Assets/UI/ConnectMenu.tscn | 32 ++++++++++++++++++++++++++++++++ Game/Assets/UI/GUI.tscn | 25 ++++++++++++++++++------- Game/Assets/UI/GraphicsMenu.tscn | 2 +- Game/Assets/UI/Menu.gd | 1 + Game/Assets/UI/Menu.tscn | 6 +++--- Game/Assets/UI/MenuData.gd | 3 +++ Game/Assets/UI/MenuLineEdit.gd | 10 ++++++++++ Game/Assets/UI/MenuLineEdit.tscn | 29 +++++++++++++++++++++++++++++ Game/Assets/UI/PlayMenu.gd | 4 ++++ Game/Assets/UI/PlayMenu.tscn | 32 ++++++++++++++++++++++++++++++++ Game/Main.gd | 12 +++++++++++- 12 files changed, 148 insertions(+), 12 deletions(-) create mode 100644 Game/Assets/UI/ConnectMenu.gd create mode 100644 Game/Assets/UI/ConnectMenu.tscn create mode 100644 Game/Assets/UI/MenuLineEdit.gd create mode 100644 Game/Assets/UI/MenuLineEdit.tscn create mode 100644 Game/Assets/UI/PlayMenu.gd create mode 100644 Game/Assets/UI/PlayMenu.tscn diff --git a/Game/Assets/UI/ConnectMenu.gd b/Game/Assets/UI/ConnectMenu.gd new file mode 100644 index 0000000..43bff0b --- /dev/null +++ b/Game/Assets/UI/ConnectMenu.gd @@ -0,0 +1,4 @@ +extends "res://Assets/UI/Menu.gd" + +func connect_to_server(): + Main.connect_to_server($MenuLineEdit.data) diff --git a/Game/Assets/UI/ConnectMenu.tscn b/Game/Assets/UI/ConnectMenu.tscn new file mode 100644 index 0000000..5706138 --- /dev/null +++ b/Game/Assets/UI/ConnectMenu.tscn @@ -0,0 +1,32 @@ +[gd_scene load_steps=5 format=3 uid="uid://dl04vkws76mj5"] + +[ext_resource type="PackedScene" uid="uid://81ymy0o073e5" path="res://Assets/UI/Menu.tscn" id="1_cf8yy"] +[ext_resource type="PackedScene" uid="uid://xptjyy2hwb77" path="res://Assets/UI/MenuLineEdit.tscn" id="2_isg6p"] +[ext_resource type="PackedScene" uid="uid://d135tevauvmoq" path="res://Assets/UI/MenuButton.tscn" id="2_n4o24"] +[ext_resource type="Script" path="res://Assets/UI/ConnectMenu.gd" id="2_wk4wj"] + +[node name="ConnectMenu" instance=ExtResource( "1_cf8yy" )] +script = ExtResource( "2_wk4wj" ) + +[node name="MenuLineEdit" parent="." index="0" instance=ExtResource( "2_isg6p" )] +anchor_right = 0.0 +anchor_bottom = 0.0 +offset_right = 75.0 +offset_bottom = 33.0 +text = "IP" + +[node name="Connect" parent="." index="1" instance=ExtResource( "2_n4o24" )] +anchor_right = 0.0 +anchor_bottom = 0.0 +offset_top = 37.0 +offset_right = 75.0 +offset_bottom = 66.0 +text = "connect" +label = "connect" + +[node name="Back" parent="." index="2"] +offset_top = 70.0 +offset_right = 75.0 +offset_bottom = 99.0 + +[connection signal="pressed" from="Connect" to="." method="connect_to_server"] diff --git a/Game/Assets/UI/GUI.tscn b/Game/Assets/UI/GUI.tscn index 8280d32..25519e9 100644 --- a/Game/Assets/UI/GUI.tscn +++ b/Game/Assets/UI/GUI.tscn @@ -1,10 +1,10 @@ [gd_scene load_steps=6 format=3 uid="uid://b856vwmg8a6o4"] [ext_resource type="PackedScene" uid="uid://d135tevauvmoq" path="res://Assets/UI/MenuButton.tscn" id="1"] -[ext_resource type="PackedScene" uid="uid://d2d0sbb84rehm" path="res://Assets/UI/Menu.tscn" id="2"] +[ext_resource type="PackedScene" uid="uid://81ymy0o073e5" path="res://Assets/UI/Menu.tscn" id="2"] [ext_resource type="Texture2D" uid="uid://njj8psk8fh7" path="res://Assets/UI/Logo.png" id="2_oueme"] [ext_resource type="Script" path="res://Assets/UI/GUI.gd" id="3"] -[ext_resource type="AudioStream" uid="uid://dfxftf2huumhn" path="res://Assets/SFX/UI_Cancel.wav" id="4_lnh50"] +[ext_resource type="AudioStream" uid="uid://dpjwcruomxgkk" path="res://Assets/SFX/UI_Cancel.wav" id="4_lnh50"] [node name="GUI" type="CenterContainer"] anchor_right = 1.0 @@ -30,32 +30,43 @@ __meta__ = { [node name="Menu" parent="." instance=ExtResource( "2" )] offset_left = 412.0 -offset_top = 252.0 +offset_top = 236.0 offset_right = 612.0 -offset_bottom = 347.0 +offset_bottom = 364.0 rect_min_size = Vector2(200, 0) -[node name="Options" parent="Menu" instance=ExtResource( "1" )] +[node name="Play" parent="Menu" instance=ExtResource( "1" )] anchor_right = 0.0 anchor_bottom = 0.0 offset_top = 33.0 offset_right = 200.0 offset_bottom = 62.0 +text = "play +" +label = "play" + +[node name="Options" parent="Menu" instance=ExtResource( "1" )] +anchor_right = 0.0 +anchor_bottom = 0.0 +offset_top = 66.0 +offset_right = 200.0 +offset_bottom = 95.0 text = "options" label = "options" [node name="Quit" parent="Menu" instance=ExtResource( "1" )] anchor_right = 0.0 anchor_bottom = 0.0 -offset_top = 66.0 +offset_top = 99.0 offset_right = 200.0 -offset_bottom = 95.0 +offset_bottom = 128.0 text = "quit" label = "quit" [node name="ClickSound" parent="Menu/Quit" index="0"] stream = ExtResource( "4_lnh50" ) +[connection signal="pressed" from="Menu/Play" to="Menu" method="open_menu" binds= ["res://Assets/UI/PlayMenu.tscn"]] [connection signal="pressed" from="Menu/Options" to="Menu" method="open_menu" binds= ["res://Assets/UI/OptionsMenu.tscn"]] [connection signal="pressed" from="Menu/Quit" to="." method="quit_game"] diff --git a/Game/Assets/UI/GraphicsMenu.tscn b/Game/Assets/UI/GraphicsMenu.tscn index eb11a4e..9c9570e 100644 --- a/Game/Assets/UI/GraphicsMenu.tscn +++ b/Game/Assets/UI/GraphicsMenu.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=4 format=3 uid="uid://cd6qhohan2oa1"] -[ext_resource type="PackedScene" uid="uid://d2d0sbb84rehm" path="res://Assets/UI/Menu.tscn" id="1"] +[ext_resource type="PackedScene" uid="uid://81ymy0o073e5" path="res://Assets/UI/Menu.tscn" id="1"] [ext_resource type="Script" path="res://Assets/UI/GraphicsMenu.gd" id="2"] [ext_resource type="PackedScene" uid="uid://bl1fc5cl4fcav" path="res://Assets/UI/MenuCheckButton.tscn" id="3"] diff --git a/Game/Assets/UI/Menu.gd b/Game/Assets/UI/Menu.gd index 3f3db6c..dbbc9af 100644 --- a/Game/Assets/UI/Menu.gd +++ b/Game/Assets/UI/Menu.gd @@ -3,6 +3,7 @@ extends VBoxContainer var previous_menu : Node = null var settings = {} @onready var GUI = get_parent() +@onready var Main = get_parent().get_parent() # Called when the node enters the scene tree for the first time. func _ready(): diff --git a/Game/Assets/UI/Menu.tscn b/Game/Assets/UI/Menu.tscn index 1290cdc..b027262 100644 --- a/Game/Assets/UI/Menu.tscn +++ b/Game/Assets/UI/Menu.tscn @@ -1,8 +1,8 @@ -[gd_scene load_steps=4 format=3 uid="uid://d2d0sbb84rehm"] +[gd_scene load_steps=4 format=3 uid="uid://81ymy0o073e5"] [ext_resource type="Script" path="res://Assets/UI/Menu.gd" id="1"] -[ext_resource type="AudioStream" uid="uid://tmb3cqyy8s33" path="res://Assets/SFX/UI_Click.wav" id="2_nkrit"] -[ext_resource type="AudioStream" uid="uid://dvfvty8gqab0a" path="res://Assets/SFX/UI_Hover.wav" id="3_qqhse"] +[ext_resource type="AudioStream" uid="uid://da7hq3d1msmud" path="res://Assets/SFX/UI_Click.wav" id="2_nkrit"] +[ext_resource type="AudioStream" uid="uid://dc4rractm5dhf" path="res://Assets/SFX/UI_Hover.wav" id="3_qqhse"] [node name="Menu" type="VBoxContainer"] offset_left = 475.0 diff --git a/Game/Assets/UI/MenuData.gd b/Game/Assets/UI/MenuData.gd index 6970e6a..abae6b5 100644 --- a/Game/Assets/UI/MenuData.gd +++ b/Game/Assets/UI/MenuData.gd @@ -10,6 +10,9 @@ func _ready(): set_data(GUI.settings[index]) func set_data(_data): + if GUI == null: + GUI = get_parent().get_parent() + data = _data var data = null: diff --git a/Game/Assets/UI/MenuLineEdit.gd b/Game/Assets/UI/MenuLineEdit.gd new file mode 100644 index 0000000..224767b --- /dev/null +++ b/Game/Assets/UI/MenuLineEdit.gd @@ -0,0 +1,10 @@ +extends "res://Assets/UI/MenuData.gd" + +@export var text = "": + set(_text): + text = _text + $Label.text = _text + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. diff --git a/Game/Assets/UI/MenuLineEdit.tscn b/Game/Assets/UI/MenuLineEdit.tscn new file mode 100644 index 0000000..d2b50c2 --- /dev/null +++ b/Game/Assets/UI/MenuLineEdit.tscn @@ -0,0 +1,29 @@ +[gd_scene load_steps=2 format=3 uid="uid://xptjyy2hwb77"] + +[ext_resource type="Script" path="res://Assets/UI/MenuLineEdit.gd" id="1_lc6vq"] + +[node name="MenuLineEdit" type="HBoxContainer"] +anchor_right = 1.0 +anchor_bottom = 1.0 +script = ExtResource( "1_lc6vq" ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label" type="Label" parent="."] +offset_top = 288.0 +offset_right = 1.0 +offset_bottom = 311.0 +structured_text_bidi_override_options = [] +script = null + +[node name="LineEdit" type="LineEdit" parent="."] +offset_left = 5.0 +offset_right = 75.0 +offset_bottom = 600.0 +structured_text_bidi_override_options = [] +caret_blink = true +caret_blink_speed = 0.5 +script = null + +[connection signal="text_changed" from="LineEdit" to="." method="set_data"] diff --git a/Game/Assets/UI/PlayMenu.gd b/Game/Assets/UI/PlayMenu.gd new file mode 100644 index 0000000..b05a674 --- /dev/null +++ b/Game/Assets/UI/PlayMenu.gd @@ -0,0 +1,4 @@ +extends "res://Assets/UI/Menu.gd" + +func host_button_pressed(): + Main.host_server() diff --git a/Game/Assets/UI/PlayMenu.tscn b/Game/Assets/UI/PlayMenu.tscn new file mode 100644 index 0000000..34c98da --- /dev/null +++ b/Game/Assets/UI/PlayMenu.tscn @@ -0,0 +1,32 @@ +[gd_scene load_steps=4 format=3 uid="uid://cc62u7shucxqi"] + +[ext_resource type="PackedScene" uid="uid://81ymy0o073e5" path="res://Assets/UI/Menu.tscn" id="1_21oe2"] +[ext_resource type="PackedScene" uid="uid://d135tevauvmoq" path="res://Assets/UI/MenuButton.tscn" id="2_oo0fl"] +[ext_resource type="Script" path="res://Assets/UI/PlayMenu.gd" id="2_pgqlf"] + +[node name="PlayMenu" instance=ExtResource( "1_21oe2" )] +script = ExtResource( "2_pgqlf" ) + +[node name="HostButton" parent="." index="0" instance=ExtResource( "2_oo0fl" )] +anchor_right = 0.0 +anchor_bottom = 0.0 +offset_right = 73.0 +offset_bottom = 29.0 +text = "host" +label = "host" + +[node name="ConnectButton" parent="." index="1" instance=ExtResource( "2_oo0fl" )] +anchor_right = 0.0 +anchor_bottom = 0.0 +offset_top = 33.0 +offset_right = 73.0 +offset_bottom = 62.0 +text = "connect" +label = "connect" + +[node name="Back" parent="." index="2"] +offset_top = 66.0 +offset_bottom = 95.0 + +[connection signal="pressed" from="HostButton" to="." method="host_button_pressed"] +[connection signal="pressed" from="ConnectButton" to="." method="open_menu" binds= ["res://Assets/UI/ConnectMenu.tscn"]] diff --git a/Game/Main.gd b/Game/Main.gd index 07afad7..ca34eee 100644 --- a/Game/Main.gd +++ b/Game/Main.gd @@ -315,6 +315,16 @@ func start_dedicated_server(): # start server without creating a local player get_tree().multiplayer_peer = peer #create_player(1, true) +func host_server(): + _on_Host_pressed() + +func connect_to_server(ip): + $NetworkTesting/Host.disabled = true + $NetworkTesting/Connect.disabled = true + + peer.create_client(ip, NET_PORT) + get_tree().multiplayer.multiplayer_peer = peer + func _on_Host_pressed(): # start server and create a local player role = MultiplayerRole.SERVER $NetworkTesting/Host.disabled = true @@ -332,7 +342,7 @@ func _on_Connect_pressed(): peer.create_client(NET_SERVER, NET_PORT) get_tree().multiplayer.multiplayer_peer = peer - + func _player_connected(pid) -> void: print("player connected, id: ", pid) create_player(pid, false)