From a04ad8877e7fcb53b67b852a12690287f3d65efb Mon Sep 17 00:00:00 2001 From: AleaJactaEst Date: Tue, 12 Dec 2023 18:28:34 +0100 Subject: [PATCH] improve debug windows --- client/player/Global.gd | 76 +++++++++++++++++++++++------- client/scenes/DebugWindow.gd | 51 +++++++++++++++++++- client/scenes/DebugWindow.tscn | 86 ++++++++++++++++++++++++++++++++++ 3 files changed, 196 insertions(+), 17 deletions(-) diff --git a/client/player/Global.gd b/client/player/Global.gd index 37a004e..2f14ea4 100644 --- a/client/player/Global.gd +++ b/client/player/Global.gd @@ -1,5 +1,38 @@ extends Node +signal update_message(message) + +@export var debug_console:bool = false: + get: return debug_console + set(value): + debug_console = value + +@export var debug_app:bool = false: + get: return debug_app + set(value): + debug_app = value + +@export var verbose_console:bool = false: + get: return verbose_console + set(value): + verbose_console = value + +@export var verbose_app:bool = false: + get: return verbose_app + set(value): + verbose_app = value + +@export var error_console:bool = false: + get: return error_console + set(value): + error_console = value + +@export var error_app:bool = false: + get: return error_app + set(value): + error_app = value + + #------------------ Player Enums ------------------# # Demarche (Attend, Marche, Cours, sprint enum GAIT {WAITING, WALKING , RUNNING , SPRINTING} @@ -41,23 +74,34 @@ func get_time_only_text() -> String: time['hour'], time['minute'], time['second'], ] -func msg_debug(format_string:String, array_text:Array) -> void: - var formattage = "%s DEBUG [%s:%d] " + format_string - var frame = get_stack()[1] - var param = [get_time_text(), frame.source, frame.line] - param.append_array(array_text) - print( formattage % param ) - -func msg_info(format_string:String, array_text:Array) -> void: - var formattage = "%s INFO [%s:%d] " + format_string - var frame = get_stack()[1] - var param = [get_time_text(), frame.source, frame.line] +func send_message_console(severity:String, format_string:String, array_text:Array) -> void: + var formattage = "%s %s [%s:%d] " + format_string + var frame = get_stack()[2] + var param = [get_time_text(), severity, frame.source, frame.line] param.append_array(array_text) print( formattage % param ) -func msg_error(format_string:String, array_text:Array) -> void: - var formattage = "%s ERROR [%s:%d] " + format_string - var frame = get_stack()[1] - var param = [get_time_text(), frame.source, frame.line] +func send_message_app(severity:String, format_string:String, array_text:Array) -> void: + var formattage = "%s %s [%s:%d] " + format_string + var frame = get_stack()[2] + var param = [get_time_text(), severity, frame.source, frame.line] param.append_array(array_text) - print( formattage % param ) + update_message.emit(formattage % param) + +func msg_debug(format_string:String, array_text:Array) -> void: + if debug_console: + send_message_console("DEBUG", format_string, array_text) + if debug_app: + send_message_app("DEBUG", format_string, array_text) + +func msg_info(format_string:String, array_text:Array) -> void: + if verbose_console: + send_message_console("INFO", format_string, array_text) + if verbose_app: + send_message_app("INFO", format_string, array_text) + +func msg_error(format_string:String, array_text:Array) -> void: + if error_console: + send_message_console("ERROR", format_string, array_text) + if error_app: + send_message_app("ERROR", format_string, array_text) diff --git a/client/scenes/DebugWindow.gd b/client/scenes/DebugWindow.gd index 68600ed..97e8faf 100644 --- a/client/scenes/DebugWindow.gd +++ b/client/scenes/DebugWindow.gd @@ -10,10 +10,17 @@ extends Window set(value): node_me = value +const MAX_MESSAGES_SHOW : int = 100 # Called when the node enters the scene tree for the first time. func _ready(): - pass # Replace with function body. + $TabContainer/Log/VBoxContainer/TabContainer/Config/VBox/DConsole.button_pressed = Global.debug_console + $TabContainer/Log/VBoxContainer/TabContainer/Config/VBox/VConsole.button_pressed = Global.verbose_console + $TabContainer/Log/VBoxContainer/TabContainer/Config/VBox/EConsole.button_pressed = Global.error_console + $TabContainer/Log/VBoxContainer/TabContainer/Config/VBox/DApplication.button_pressed = Global.debug_app + $TabContainer/Log/VBoxContainer/TabContainer/Config/VBox/VApplication.button_pressed = Global.verbose_app + $TabContainer/Log/VBoxContainer/TabContainer/Config/VBox/EApplication.button_pressed = Global.error_app + Global.update_message.connect(_update_messages) # Called every frame. 'delta' is the elapsed time since the previous frame. @@ -40,3 +47,45 @@ func _process(_delta): func _on_close_requested(): hide() + + +func _on_console_toggled(button_pressed): + Global.debug_console = button_pressed + + +func _on_application_toggled(button_pressed): + Global.debug_app = button_pressed + + +func _on_v_console_toggled(button_pressed): + Global.verbose_console = button_pressed + + +func _on_e_console_toggled(button_pressed): + Global.error_console = button_pressed + + +func _on_v_application_toggled(button_pressed): + Global.verbose_app = button_pressed + + +func _on_e_application_toggled(button_pressed): + Global.error_app = button_pressed + +func _update_messages(message): + while $TabContainer/Log/VBoxContainer/TabContainer/Messages/ItemList.item_count >= MAX_MESSAGES_SHOW: + $TabContainer/Log/VBoxContainer/TabContainer/Messages/ItemList.remove_item(0) + $TabContainer/Log/VBoxContainer/TabContainer/Messages/ItemList.add_item(message) + + +func _on_item_list_gui_input(event) -> void: + """ copy to clipboard your selection (log) """ + if event is InputEventKey: + if event.is_action_pressed("ui_copy"): + var tampon:String = "" + var next:String = "" + for item in $TabContainer/Log/VBoxContainer/TabContainer/Messages/ItemList.get_selected_items(): + tampon += next + $TabContainer/Log/VBoxContainer/TabContainer/Messages/ItemList.get_item_text(item) + next = "\n" + DisplayServer.clipboard_set(tampon) + diff --git a/client/scenes/DebugWindow.tscn b/client/scenes/DebugWindow.tscn index de8ed77..275820c 100644 --- a/client/scenes/DebugWindow.tscn +++ b/client/scenes/DebugWindow.tscn @@ -103,4 +103,90 @@ text = "anim" layout_mode = 2 size_flags_vertical = 3 +[node name="Log" type="TabBar" parent="TabContainer"] +visible = false +layout_mode = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="TabContainer/Log"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="TabContainer" type="TabContainer" parent="TabContainer/Log/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="Messages" type="TabBar" parent="TabContainer/Log/VBoxContainer/TabContainer"] +layout_mode = 2 + +[node name="ItemList" type="ItemList" parent="TabContainer/Log/VBoxContainer/TabContainer/Messages"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +select_mode = 1 +allow_rmb_select = true +same_column_width = true + +[node name="Config" type="TabBar" parent="TabContainer/Log/VBoxContainer/TabContainer"] +visible = false +layout_mode = 2 + +[node name="VBox" type="VBoxContainer" parent="TabContainer/Log/VBoxContainer/TabContainer/Config"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="DConsole" type="CheckButton" parent="TabContainer/Log/VBoxContainer/TabContainer/Config/VBox"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Envoie les messages de debug vers la console" +alignment = 2 + +[node name="VConsole" type="CheckButton" parent="TabContainer/Log/VBoxContainer/TabContainer/Config/VBox"] +layout_mode = 2 +text = "Envoie les messages d'information vers la console" +alignment = 2 + +[node name="EConsole" type="CheckButton" parent="TabContainer/Log/VBoxContainer/TabContainer/Config/VBox"] +layout_mode = 2 +text = "Envoie les messages d'erreur vers la console" +alignment = 2 + +[node name="HSeparator" type="HSeparator" parent="TabContainer/Log/VBoxContainer/TabContainer/Config/VBox"] +layout_mode = 2 + +[node name="DApplication" type="CheckButton" parent="TabContainer/Log/VBoxContainer/TabContainer/Config/VBox"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Envoie les messages de debug vers l'application" +alignment = 2 + +[node name="VApplication" type="CheckButton" parent="TabContainer/Log/VBoxContainer/TabContainer/Config/VBox"] +layout_mode = 2 +text = "Envoie les messages d'information vers l'application" +alignment = 2 + +[node name="EApplication" type="CheckButton" parent="TabContainer/Log/VBoxContainer/TabContainer/Config/VBox"] +layout_mode = 2 +text = "Envoie les messages d'erreur vers l'application" +alignment = 2 + [connection signal="close_requested" from="." to="." method="_on_close_requested"] +[connection signal="gui_input" from="TabContainer/Log/VBoxContainer/TabContainer/Messages/ItemList" to="." method="_on_item_list_gui_input"] +[connection signal="toggled" from="TabContainer/Log/VBoxContainer/TabContainer/Config/VBox/DConsole" to="." method="_on_console_toggled"] +[connection signal="toggled" from="TabContainer/Log/VBoxContainer/TabContainer/Config/VBox/VConsole" to="." method="_on_v_console_toggled"] +[connection signal="toggled" from="TabContainer/Log/VBoxContainer/TabContainer/Config/VBox/EConsole" to="." method="_on_e_console_toggled"] +[connection signal="toggled" from="TabContainer/Log/VBoxContainer/TabContainer/Config/VBox/DApplication" to="." method="_on_application_toggled"] +[connection signal="toggled" from="TabContainer/Log/VBoxContainer/TabContainer/Config/VBox/VApplication" to="." method="_on_v_application_toggled"] +[connection signal="toggled" from="TabContainer/Log/VBoxContainer/TabContainer/Config/VBox/EApplication" to="." method="_on_e_application_toggled"]