summaryrefslogtreecommitdiff
path: root/ui/clientmenu
diff options
context:
space:
mode:
Diffstat (limited to 'ui/clientmenu')
-rw-r--r--ui/clientmenu/ClientUI.gd59
-rw-r--r--ui/clientmenu/ClientUI.tscn45
2 files changed, 104 insertions, 0 deletions
diff --git a/ui/clientmenu/ClientUI.gd b/ui/clientmenu/ClientUI.gd
new file mode 100644
index 0000000..8b9fbcc
--- /dev/null
+++ b/ui/clientmenu/ClientUI.gd
@@ -0,0 +1,59 @@
+extends Node2D
+
+var client : NetworkedMultiplayerENet
+var world
+var local_server_tree = null
+var is_local = false
+
+func _ready():
+ world = preload("res://scenes/GameBase.tscn").instance()
+ #get_tree().connect("network_peer_connected", self, "_player_connected")
+ #get_tree().connect("network_peer_disconnected", self, "_player_disconnected")
+ get_tree().connect("connected_to_server", self, "_connection_successful")
+ get_tree().connect("connection_failed", self, "_connected_fail")
+ get_tree().connect("server_disconnected", world, "_connection_lost")
+ set_process(false)
+ set_physics_process(false)
+
+func _connect_btn():
+ client = NetworkedMultiplayerENet.new()
+ client.create_client($IP.text, $Port.value)
+
+ get_tree().set_network_peer(client)
+
+func _connection_successful():
+ get_tree().get_root().add_child(world)
+ world.client = client
+ world.client_id = get_tree().get_network_unique_id()
+ world.player_name = $Name.text
+ if is_local:
+ world.is_local = true
+ world.local_server_tree = local_server_tree
+ print("Connected.")
+ queue_free()
+
+func _run_local_server():
+ local_server_tree = SceneTree.new()
+ local_server_tree.init()
+ local_server_tree.get_root().set_update_mode(Viewport.UPDATE_DISABLED)
+ var server_script = preload("res://scenes/Server.tscn").instance()
+
+ #CHANGE LEVEL HERE
+ server_script.start_server("Local Server", "Local Singleplayer Server", 3, "res://maps/Main.tscn", "127.0.0.1", 25565, local_server_tree, null, "print")
+ set_process(true)
+ set_physics_process(true)
+ is_local = true
+ client = NetworkedMultiplayerENet.new()
+ client.create_client("127.0.0.1", 25565)
+ get_tree().set_network_peer(client)
+
+func back_to_main():
+ var main_menu = load("res://ui/MainMenu.tscn").instance()
+ get_tree().get_root().add_child(main_menu)
+ queue_free()
+
+func _process(delta):
+ local_server_tree.idle(delta)
+
+func _physics_process(delta):
+ local_server_tree.iteration(delta)
diff --git a/ui/clientmenu/ClientUI.tscn b/ui/clientmenu/ClientUI.tscn
new file mode 100644
index 0000000..6df552b
--- /dev/null
+++ b/ui/clientmenu/ClientUI.tscn
@@ -0,0 +1,45 @@
+[gd_scene load_steps=2 format=2]
+
+[ext_resource path="res://ui/clientmenu/ClientUI.gd" type="Script" id=1]
+
+[node name="ClientUI" type="Node2D"]
+script = ExtResource( 1 )
+
+[node name="IP" type="LineEdit" parent="."]
+margin_left = 16.0
+margin_top = 64.0
+margin_right = 112.0
+margin_bottom = 88.0
+text = "127.0.0.1"
+
+[node name="Port" type="SpinBox" parent="."]
+margin_left = 128.0
+margin_top = 64.0
+margin_right = 202.0
+margin_bottom = 88.0
+max_value = 65536.0
+value = 25565.0
+
+[node name="Name" type="LineEdit" parent="."]
+margin_left = 16.0
+margin_top = 96.0
+margin_right = 199.0
+margin_bottom = 120.0
+text = "PlayerName"
+
+[node name="ConnectButton" type="Button" parent="."]
+margin_left = 16.0
+margin_top = 128.0
+margin_right = 202.0
+margin_bottom = 153.0
+text = "Connect"
+
+[node name="BackButton" type="Button" parent="."]
+margin_left = 16.0
+margin_top = 16.0
+margin_right = 80.0
+margin_bottom = 36.0
+text = "Back"
+
+[connection signal="pressed" from="ConnectButton" to="." method="_connect_btn"]
+[connection signal="pressed" from="BackButton" to="." method="back_to_main"]