summaryrefslogtreecommitdiff
path: root/godot/ui/servermenu
diff options
context:
space:
mode:
authorAnson Bridges <bridges.anson@gmail.com>2022-09-07 14:07:30 -0400
committerAnson Bridges <bridges.anson@gmail.com>2022-09-07 14:07:30 -0400
commitc232b92e2dde1277324d1f89d0e75ae641e4ac3b (patch)
treee11a5dd52f259c1cc7345baa40b372b304417f00 /godot/ui/servermenu
parenta0967ebe815cd229b69fb9578f2288b95b2ddb28 (diff)
reorganized, ladders, vehicle control
Diffstat (limited to 'godot/ui/servermenu')
-rw-r--r--godot/ui/servermenu/CmdPrompt.gd26
-rw-r--r--godot/ui/servermenu/Console.gd14
-rw-r--r--godot/ui/servermenu/ServerUI.gd43
-rw-r--r--godot/ui/servermenu/ServerUI.tscn108
4 files changed, 191 insertions, 0 deletions
diff --git a/godot/ui/servermenu/CmdPrompt.gd b/godot/ui/servermenu/CmdPrompt.gd
new file mode 100644
index 0000000..965631b
--- /dev/null
+++ b/godot/ui/servermenu/CmdPrompt.gd
@@ -0,0 +1,26 @@
+extends LineEdit
+
+export var console_path := @""; onready var console := get_node(console_path) as ScrollContainer
+var server_ref = null
+var ui_ref = null
+
+func enter_cmd(new_text: String):
+ console.add_line(new_text)
+ text = ""
+ if new_text.substr(0,1) == "/": #PROCESS COMMAND
+ var end_ind = new_text.find(" ")-1
+ if end_ind < -1: end_ind = -1
+ var cmd : String = new_text.substr(1, end_ind)
+ var args = new_text.substr(end_ind+1, -1).split(" ", false)
+
+ if cmd == "say":
+ if server_ref != null:
+ var m_args = {"name" : "SERVER", "msg" : args.join(" ")}
+ server_ref._send_chat(m_args)
+ elif cmd == "start":
+ if server_ref == null:
+ ui_ref.start_server()
+ elif cmd == "stop":
+ if server_ref != null:
+ ui_ref.stop_server()
+
diff --git a/godot/ui/servermenu/Console.gd b/godot/ui/servermenu/Console.gd
new file mode 100644
index 0000000..ac73525
--- /dev/null
+++ b/godot/ui/servermenu/Console.gd
@@ -0,0 +1,14 @@
+extends ScrollContainer
+
+# Called when the node enters the scene tree for the first time.
+func _ready():
+ pass
+
+func add_line(text):
+ var lbl = Label.new()
+ lbl.autowrap = true
+ lbl.text = text
+ text = ""
+ $ConsoleLines.add_child(lbl)
+ yield(get_tree().create_timer(0.05), "timeout")
+ ensure_control_visible(lbl)
diff --git a/godot/ui/servermenu/ServerUI.gd b/godot/ui/servermenu/ServerUI.gd
new file mode 100644
index 0000000..d065b21
--- /dev/null
+++ b/godot/ui/servermenu/ServerUI.gd
@@ -0,0 +1,43 @@
+extends Node2D
+
+
+var server
+onready var console = get_node("Console")
+
+var is_running :bool = false
+
+func _ready():
+ $CmdPrompt.ui_ref = self
+
+func hide_init_fields():
+ for node in get_tree().get_nodes_in_group("init_fields"):
+ node.visible = false
+ $StopButton.visible = true
+
+func show_init_fields():
+ for node in get_tree().get_nodes_in_group("init_fields"):
+ node.visible = true
+ $StopButton.visible = false
+
+func start_server():
+ console.add_line("Server starting...")
+ is_running = true
+
+ server = preload("res://scenes/Server.tscn").instance()
+ $CmdPrompt.server_ref = server
+ server.start_server($ServerName.text, $MOTD.text, $PlayerCount.value, $MapPath.text, $IP.text, $Port.value, get_tree(), console, "add_line")
+
+ Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
+ hide_init_fields()
+
+func stop_server():
+ server.stop_server()
+ is_running = false
+ $CmdPrompt.server_ref = null
+
+ show_init_fields()
+
+func back_to_main():
+ var main_menu = load("res://ui/MainMenu.tscn").instance()
+ get_tree().get_root().add_child(main_menu)
+ queue_free()
diff --git a/godot/ui/servermenu/ServerUI.tscn b/godot/ui/servermenu/ServerUI.tscn
new file mode 100644
index 0000000..f7ed009
--- /dev/null
+++ b/godot/ui/servermenu/ServerUI.tscn
@@ -0,0 +1,108 @@
+[gd_scene load_steps=5 format=2]
+
+[ext_resource path="res://ui/servermenu/CmdPrompt.gd" type="Script" id=1]
+[ext_resource path="res://ui/servermenu/Console.gd" type="Script" id=2]
+[ext_resource path="res://ui/servermenu/ServerUI.gd" type="Script" id=4]
+
+[sub_resource type="StyleBoxFlat" id=1]
+bg_color = Color( 0.0705882, 0.0705882, 0.0705882, 1 )
+
+[node name="ServerUI" type="Node2D"]
+script = ExtResource( 4 )
+
+[node name="StartButton" type="Button" parent="." groups=["init_fields"]]
+margin_left = 24.0
+margin_top = 56.0
+margin_right = 109.0
+margin_bottom = 76.0
+text = "Start Server"
+
+[node name="BackButton" type="Button" parent="." groups=["init_fields"]]
+margin_left = 24.0
+margin_top = 24.0
+margin_right = 112.0
+margin_bottom = 44.0
+text = "Back"
+
+[node name="StopButton" type="Button" parent="."]
+visible = false
+margin_left = 24.0
+margin_top = 88.0
+margin_right = 108.0
+margin_bottom = 108.0
+text = "Stop Server"
+
+[node name="MapPath" type="LineEdit" parent="." groups=["init_fields"]]
+margin_left = 120.0
+margin_top = 24.0
+margin_right = 337.0
+margin_bottom = 48.0
+text = "res://maps/Main.tscn"
+
+[node name="Console" type="ScrollContainer" parent="."]
+margin_left = 588.0
+margin_top = 19.0
+margin_right = 1004.0
+margin_bottom = 383.0
+custom_styles/bg = SubResource( 1 )
+scroll_horizontal_enabled = false
+script = ExtResource( 2 )
+
+[node name="ConsoleLines" type="VBoxContainer" parent="Console"]
+margin_right = 406.0
+margin_bottom = 14.0
+
+[node name="Label" type="Label" parent="Console/ConsoleLines"]
+margin_right = 406.0
+margin_bottom = 14.0
+text = "----------------------------------CONSOLE-----------------------------------"
+
+[node name="CmdPrompt" type="LineEdit" parent="."]
+margin_left = 588.0
+margin_top = 402.0
+margin_right = 1004.0
+margin_bottom = 426.0
+script = ExtResource( 1 )
+console_path = NodePath("../Console")
+
+[node name="PlayerCount" type="SpinBox" parent="." groups=["init_fields"]]
+margin_left = 344.0
+margin_top = 24.0
+margin_right = 418.0
+margin_bottom = 48.0
+min_value = 1.0
+value = 4.0
+
+[node name="Port" type="SpinBox" parent="." groups=["init_fields"]]
+margin_left = 264.0
+margin_top = 56.0
+margin_right = 338.0
+margin_bottom = 80.0
+max_value = 65536.0
+value = 25565.0
+
+[node name="IP" type="LineEdit" parent="." groups=["init_fields"]]
+margin_left = 120.0
+margin_top = 56.0
+margin_right = 250.0
+margin_bottom = 80.0
+text = "127.0.0.1"
+
+[node name="MOTD" type="TextEdit" parent="." groups=["init_fields"]]
+margin_left = 120.0
+margin_top = 120.0
+margin_right = 337.0
+margin_bottom = 160.0
+text = "MOTD"
+
+[node name="ServerName" type="LineEdit" parent="." groups=["init_fields"]]
+margin_left = 120.0
+margin_top = 88.0
+margin_right = 337.0
+margin_bottom = 112.0
+text = "Server Name"
+
+[connection signal="pressed" from="StartButton" to="." method="start_server"]
+[connection signal="pressed" from="BackButton" to="." method="back_to_main"]
+[connection signal="pressed" from="StopButton" to="." method="stop_server"]
+[connection signal="text_entered" from="CmdPrompt" to="CmdPrompt" method="enter_cmd"]