From ed417755431924883d6f24fb82ba7a064cc702b6 Mon Sep 17 00:00:00 2001 From: teatov Date: Sat, 15 Feb 2025 02:02:05 +1000 Subject: [PATCH] add server console input --- project.godot | 1 + scenes/ui/chat_message.tscn | 1 + scripts/globals/consoler.gd | 21 +++++++++++++++++++++ scripts/ui/chat.gd | 25 +++++++++++++++++-------- 4 files changed, 40 insertions(+), 8 deletions(-) create mode 100644 scripts/globals/consoler.gd diff --git a/project.godot b/project.godot index e0b497c..e9d2a86 100644 --- a/project.godot +++ b/project.godot @@ -28,6 +28,7 @@ Networker="*res://scripts/globals/networker.gd" Cursorer="*res://scripts/globals/cursorer.gd" Referencer="*res://scripts/globals/referencer.gd" Inputer="*res://scripts/globals/inputer.gd" +Consoler="*res://scripts/globals/consoler.gd" [debug] diff --git a/scenes/ui/chat_message.tscn b/scenes/ui/chat_message.tscn index c29e77f..f18c547 100644 --- a/scenes/ui/chat_message.tscn +++ b/scenes/ui/chat_message.tscn @@ -3,6 +3,7 @@ [sub_resource type="SystemFont" id="SystemFont_mq8v6"] font_names = PackedStringArray("Monospace") font_weight = 600 +subpixel_positioning = 0 [node name="RichTextLabel" type="RichTextLabel"] clip_contents = false diff --git a/scripts/globals/consoler.gd b/scripts/globals/consoler.gd new file mode 100644 index 0000000..7f28159 --- /dev/null +++ b/scripts/globals/consoler.gd @@ -0,0 +1,21 @@ +extends Node + +var input_thread: Thread + + +func _enter_tree() -> void: + input_thread = Thread.new() + input_thread.start(_process_input) + + +func _exit_tree() -> void: + input_thread.wait_to_finish() + + +func _process_input() -> void: + var text := "" + while text != "quit": + print("Insert some text: ") + text = OS.read_string_from_stdin().strip_edges() + Referencer.chat.send_server_message(text) + get_tree().quit() diff --git a/scripts/ui/chat.gd b/scripts/ui/chat.gd index 90d37d7..f9a9ac0 100644 --- a/scripts/ui/chat.gd +++ b/scripts/ui/chat.gd @@ -64,19 +64,28 @@ func close() -> void: _msg_scroll.vertical_scroll_mode = ScrollContainer.SCROLL_MODE_SHOW_NEVER +func send_server_message(message: String) -> void: + _send_message.rpc(message, true) + + @rpc("any_peer", "call_local", "reliable", 1) -func _send_message(message: String) -> void: - var player_name := ( - Networker.players[multiplayer.get_remote_sender_id()]["name"] as String - ) - var message_node := _make_message_node(player_name, message) +func _send_message(message: String, server: bool = false) -> void: + var player_name := "" + if not server: + player_name = ( + Networker.players[multiplayer.get_remote_sender_id()]["name"] as String + ) + var message_node := _make_message_node(message, player_name) _msg_container.add_child(message_node) print(player_name + ": " + message) -func _make_message_node(player_name: String, message: String) -> RichTextLabel: +func _make_message_node(message: String, player_name: String = "") -> RichTextLabel: var node := _chat_message_scene.instantiate() as RichTextLabel - node.text = "[b]" + player_name + ":[/b] " + _escape_bbcode_tags(message) + if player_name: + node.text = "[b]" + player_name + ":[/b] " + _escape_bbcode_tags(message) + else: + node.text = message return node @@ -105,7 +114,7 @@ func _on_message_edit_text_submitted(message: String) -> void: _message_history.append(message) _history_position = 0 close() - _send_message.rpc(message) + _send_message.rpc(message, false) func _on_message_margin_minimum_size_changed() -> void: