diff --git a/locales/en.po b/locales/en.po index 5885d1f..936465b 100644 --- a/locales/en.po +++ b/locales/en.po @@ -29,3 +29,9 @@ msgstr "Select your language" msgid "Quit" msgstr "Exit" +msgid "Sort by input" +msgstr "Sort by input" + +msgid "Reload system config" +msgstr "Reload system config" + diff --git a/locales/fr.po b/locales/fr.po index de844ca..168e8d7 100644 --- a/locales/fr.po +++ b/locales/fr.po @@ -29,3 +29,9 @@ msgstr "Sélectionner votre langue" msgid "Quit" msgstr "Sortir" +msgid "Sort by input" +msgstr "Trié par contrôle" + +msgid "Reload system config" +msgstr "Recharger la configuration de base" + diff --git a/locales/messages.pot b/locales/messages.pot index 900dec7..267ead0 100644 --- a/locales/messages.pot +++ b/locales/messages.pot @@ -19,3 +19,12 @@ msgstr "" msgid "Quit" msgstr "" + +msgid "Edit control" +msgstr "" + +msgid "Sort by input" +msgstr "" + +msgid "Reload system config" +msgstr "" diff --git a/scenes/controls/add.png b/scenes/controls/add.png new file mode 100644 index 0000000..663605f Binary files /dev/null and b/scenes/controls/add.png differ diff --git a/scenes/controls/add.png.import b/scenes/controls/add.png.import new file mode 100644 index 0000000..11c6a04 --- /dev/null +++ b/scenes/controls/add.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture2D" +uid="uid://dhme55udo3chx" +path="res://.godot/imported/add.png-857c1c6e0729b01483785eee8bf67941.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/controls/add.png" +dest_files=["res://.godot/imported/add.png-857c1c6e0729b01483785eee8bf67941.stex"] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/bptc_ldr=0 +compress/normal_map=0 +compress/channel_pack=0 +compress/streamed=false +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/HDR_as_SRGB=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/controls/add.svg b/scenes/controls/add.svg new file mode 100644 index 0000000..ac59e02 --- /dev/null +++ b/scenes/controls/add.svg @@ -0,0 +1,46 @@ + + + + + + + + + + diff --git a/scenes/controls/add.svg.import b/scenes/controls/add.svg.import new file mode 100644 index 0000000..35605cf --- /dev/null +++ b/scenes/controls/add.svg.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture2D" +uid="uid://24bvysta5tma" +path="res://.godot/imported/add.svg-26b0305e6798499dcda78ea163b6ef1d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/controls/add.svg" +dest_files=["res://.godot/imported/add.svg-26b0305e6798499dcda78ea163b6ef1d.stex"] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/bptc_ldr=0 +compress/normal_map=0 +compress/channel_pack=0 +compress/streamed=false +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/HDR_as_SRGB=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 diff --git a/scenes/controls/control_function.gd b/scenes/controls/control_function.gd new file mode 100644 index 0000000..275116d --- /dev/null +++ b/scenes/controls/control_function.gd @@ -0,0 +1,25 @@ +extends HBoxContainer + + +signal add_pressed( command ) + +var action = null + +func set_label( command ): + $Label.text = command + +func set_action( _action ): + action = _action + +func set_param(_action, _command, position): + set_label(_command) + set_action(_action) + if position: + $Add_front.visible = true + $Add.visible = false + else: + $Add_front.visible = false + $Add.visible = true + +func _on_add_pressed(): + emit_signal( "add_pressed", action, $Label.text ) diff --git a/scenes/controls/control_function.tscn b/scenes/controls/control_function.tscn new file mode 100644 index 0000000..1ff21fa --- /dev/null +++ b/scenes/controls/control_function.tscn @@ -0,0 +1,32 @@ +[gd_scene load_steps=3 format=3 uid="uid://d2nu5ak74y4xk"] + +[ext_resource type="Script" path="res://scenes/controls/control_function.gd" id="1_2cvgr"] +[ext_resource type="Texture2D" uid="uid://dhme55udo3chx" path="res://scenes/controls/add.png" id="2_f4wes"] + +[node name="Control" type="HBoxContainer"] +anchor_right = 1.0 +anchor_bottom = 1.0 +script = ExtResource( "1_2cvgr" ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Add_front" type="TextureButton" parent="."] +offset_right = 23.0 +offset_bottom = 600.0 +texture_normal = ExtResource( "2_f4wes" ) +stretch_mode = 3 + +[node name="Label" type="Label" parent="."] +offset_left = 27.0 +offset_top = 288.0 +offset_right = 997.0 +offset_bottom = 311.0 +size_flags_horizontal = 3 + +[node name="Add" type="TextureButton" parent="."] +offset_left = 1001.0 +offset_right = 1024.0 +offset_bottom = 600.0 +texture_normal = ExtResource( "2_f4wes" ) +stretch_mode = 3 diff --git a/scenes/controls/control_input.gd b/scenes/controls/control_input.gd new file mode 100644 index 0000000..29a4d7d --- /dev/null +++ b/scenes/controls/control_input.gd @@ -0,0 +1,23 @@ +extends HBoxContainer + + +signal del_pressed( command, control, eventInput ) + +var command:String +var eventInput + +func set_param( command:String, control:String, param_comment:String, eventInput ): + self.command = command + $Label.text = control + self.eventInput = eventInput + if param_comment.length() > 0: + $Comment.text = param_comment + $Empty.visible = false + $Comment.visible = true + else: + $Comment.text = "" + $Empty.visible = true + $Comment.visible = false + +func _on_del_pressed(): + emit_signal( "del_pressed", self.command, $Label.text, self.eventInput ) diff --git a/scenes/controls/control_input.tscn b/scenes/controls/control_input.tscn new file mode 100644 index 0000000..a12cd0e --- /dev/null +++ b/scenes/controls/control_input.tscn @@ -0,0 +1,44 @@ +[gd_scene load_steps=3 format=3 uid="uid://mtftrelrm0uy"] + +[ext_resource type="Script" path="res://scenes/controls/control_input.gd" id="1_dp231"] +[ext_resource type="Texture2D" uid="uid://js4s65teoql3" path="res://scenes/controls/trash.png" id="2_r7srr"] + +[node name="Control" type="HBoxContainer"] +anchor_right = 1.0 +anchor_bottom = 1.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +script = ExtResource( "1_dp231" ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Empty" type="Label" parent="."] +offset_right = 329.0 +offset_bottom = 600.0 +size_flags_horizontal = 3 +size_flags_vertical = 5 + +[node name="Comment" type="Label" parent="."] +offset_left = 333.0 +offset_right = 662.0 +offset_bottom = 600.0 +size_flags_horizontal = 3 +size_flags_vertical = 5 + +[node name="Del" type="TextureButton" parent="."] +offset_left = 666.0 +offset_right = 690.0 +offset_bottom = 600.0 +hint_tooltip = "Delete" +size_flags_horizontal = 5 +size_flags_vertical = 5 +texture_normal = ExtResource( "2_r7srr" ) +stretch_mode = 0 + +[node name="Label" type="Label" parent="."] +offset_left = 694.0 +offset_right = 1024.0 +offset_bottom = 600.0 +size_flags_horizontal = 3 +size_flags_vertical = 5 diff --git a/scenes/controls/controls.gd b/scenes/controls/controls.gd new file mode 100644 index 0000000..f5977b6 --- /dev/null +++ b/scenes/controls/controls.gd @@ -0,0 +1,272 @@ +extends Control + + +var control_system_conf = {} + + +func _init(): + load_control_system() + + +func _ready(): + pass + + +func reload_control_system(): + # Adding new Action + for key in control_system_conf: + if not InputMap.has_action(key): + InputMap.add_action(key) + # Adding new event + for newevent in control_system_conf[key]: + var ele = generate_inputevent(newevent) + if not InputMap.action_has_event(key, ele): + InputMap.action_add_event(key, ele) + # Remove action/event not used + for keyInput in InputMap.get_actions(): + var foundAction:bool = false + for key in control_system_conf: + if key == keyInput: + foundAction = true + break + if not foundAction: + InputMap.erase_action(keyInput) + continue + var listInput = InputMap.get_action_list(keyInput) + for eventInput in listInput: + var foundEvent:bool = false + var vis = get_dict_inputevent(eventInput) + for v in control_system_conf[keyInput]: + if compare_dict_inputevent(v, vis): + foundEvent = true + break + if not foundEvent: + InputMap.action_erase_event(keyInput, eventInput) + + +func compare_dict_inputevent(ref, cmp): + if ref.size() != cmp.size(): + return false + for key in ref: + if ref[key] != cmp[key]: + return false + return true + + +func get_dict_inputevent(event): + if event is InputEventKey: + return { + 'type' : 'InputEventKey', + 'keycode' : event.get_keycode(), + 'physical_keycode' : event.get_physical_keycode(), + 'unicode' :event.get_unicode(), + 'echo' : event.is_echo(), + 'alt' : event.is_alt_pressed(), + 'command' : event.is_command_pressed(), + 'control' : event.is_ctrl_pressed(), + 'meta' : event.is_meta_pressed(), + 'shift' : event.is_shift_pressed(), + 'storing_command': event.is_storing_command() + } + elif event is InputEventMouseButton: + return { 'type' : 'InputEventMouseButton', 'value' : event.get_button_index() } + elif event is InputEventJoypadButton: + return { 'type' : 'InputEventJoypadButton', 'value' : event.get_button_index() } + return { 'type' : 'Unknown'} + + + +func generate_inputevent(param): + if param['type'] == 'InputEventKey': + var ele:InputEventKey = InputEventKey.new() + ele.set_physical_scancode(param['physical_scancode']) + ele.set_scancode(param['scancode']) + ele.set_echo(param['echo']) + if OS.get_ime_selection(): + ele.set_unicode(param['unicode']) + ele.set_alt(param['alt']) + ele.set_command(param['command']) + ele.set_control(param['control']) + ele.set_metakey(param['meta']) + ele.set_shift(param['shift']) + return ele + elif param['type'] == 'InputEventMouseButton': + var ele:InputEventMouseButton = InputEventMouseButton.new() + ele.set_button_index(param['value']) + return ele + elif param['type'] == 'InputEventJoypadButton': + var ele:InputEventJoypadButton = InputEventJoypadButton.new() + ele.set_button_index(param['value']) + return ele + return null + + +func get_hash_inputevent(event): + var head:String + if event is InputEventKey: + head = 'a' + elif event is InputEventMouseButton: + head = 'm' + elif event is InputEventJoypadButton: + head = 'j' + else: + head ='z' + return head + str(get_string_input(event)) + + +func get_string_input_mousse_button(event:InputEventMouseButton): + match event.get_button_index(): + 1: + return "BUTTON_LEFT" + 3: + return "BUTTON_MIDDLE" + 2: + return "BUTTON_RIGHT" + 4: + return "BUTTON_WHEEL_UP" + 5: + return "BUTTON_WHEEL_DOWN" + 6: + return "BUTTON_WHEEL_LEFT" + 7: + return "BUTTON_WHEEL_RIGHT" + 8: + return "BUTTON_XBUTTON1" + 9: + return "BUTTON_XBUTTON2" + _: + return "MOUSSE BUTTON: " + str(event.get_button_index()) + + +func get_string_input_joypad_button(event:InputEventJoypadButton): + match event.get_button_index(): + 0: + return "JOY_BUTTON_A" + 1: + return "JOY_BUTTON_B" + 2: + return "JOY_BUTTON_X" + 3: + return "JOY_BUTTON_Y" + 4: + return "JOY_BUTTON_BACK" + 5: + return "JOY_BUTTON_GUIDE" + 6: + return "JOY_BUTTON_START" + 7: + return "JOY_BUTTON_LEFT_STICK" + 8: + return "JOY_BUTTON_RIGHT_STICK" + 9: + return "JOY_BUTTON_LEFT_SHOULDER" + 10: + return "JOY_BUTTON_RIGHT_SHOULDER" + 11: + return "JOY_BUTTON_DPAD_UP" + 12: + return "JOY_BUTTON_DPAD_DOWN" + 13: + return "JOY_BUTTON_DPAD_LEFT" + 14: + return "JOY_BUTTON_DPAD_RIGHT" + _: + return "JOYPAD BUTTON: " + str(event.get_button_index()) + + +func get_string_input_keyboard(event:InputEventKey): + return OS.get_keycode_string(event.keycode) + + +func get_string_input(event): + if event is InputEventKey: + return get_string_input_keyboard(event) # OS.get_scancode_string(event.get_scancode_with_modifiers()) + elif event is InputEventMouseButton: + return get_string_input_mousse_button(event) + elif event is InputEventJoypadButton: + return get_string_input_joypad_button(event) + else: + return str(event) + + +func load_current_control(): + var conf = {} + for key in InputMap.get_actions(): + var a = InputMap.action_get_events(key) + var beta = [] + for z in a: + beta.append( get_dict_inputevent(z) ) + conf[key] = beta + return conf + + +func configure_control(): + if $Window/VBox/Menu/SortByInput.is_pressed(): + configure_control_sort_by_input() + else: + configure_control_sort_by_categories() + + +func configure_control_sort_by_input(): + #$Window/VBox/Input/Control + var def = {} + for action in InputMap.get_actions(): + for z in InputMap.action_get_events(action): + var id = str(get_hash_inputevent(z)) + "_" + str(action) + def[id] = { 'event': z, 'action': action } + var defsorted = def.keys() + defsorted.sort() + var lastevent = null + for id in defsorted: + var z = def[id]['event'] + var action = def[id]['action'] + var zhash = get_dict_inputevent(z).hash() + if zhash != lastevent: + var separator = HSeparator.new() + $Window/VBox/Input/Control.add_child( separator ) + lastevent = zhash + if z is InputEventKey: + var item = preload( "res://scenes/controls/control_input.tscn" ).instantiate(1) #.instance() + item.set_param(action, get_string_input_keyboard(z), action, z) + #item.connect( "del_pressed", self, "_on_input_box_del_pressed" ) + #print(action,':', z, z.get_scancode_with_modifiers(),' - ', z.get_scancode(), ' - ', z.unicode , ' - ', OS.get_scancode_string(z.get_scancode_with_modifiers())) + $Window/VBox/Input/Control.add_child( item ) + #$Window/VBox/Test.add_child( item ) + elif z is InputEventMouseButton: + var item = preload( "res://scenes/controls/control_input.tscn" ).instantiate() + #item.set_label(action, "Mouse Button: " + str(z.get_button_index())) + item.set_param(action, "Mouse Button: " + get_string_input_mousse_button(z), action, z) + #item.connect( "del_pressed", self, "_on_input_box_del_pressed" ) + $Window/VBox/Input/Control.add_child( item ) + #print(action,':', z, z.get_button_mask(), ' - ', z.get_factor(), ' - ' , z.get_button_index() ) + elif z is InputEventJoypadButton: + #print(action,':', z, z.get_button_index() ) + var item = preload( "res://scenes/controls/control_input.tscn" ).instantiate() + #item.set_label(action, "Joypad Button: " + str(z.get_button_index())) + item.set_param(action, "Joypad Button: " + get_string_input_joypad_button(z), action, z) + #item.connect( "del_pressed", self, "_on_input_box_del_pressed" ) + $Window/VBox/Input/Control.add_child( item ) + for action in InputMap.get_actions(): + var separator = HSeparator.new() + $Window/VBox/Input/Control.add_child( separator ) + var control_box = preload( "res://scenes/controls/control_function.tscn" ).instantiate() + #control_box.set_label(key) + control_box.set_param(action, action, true) + #control_box.connect( "add_pressed", self, "_on_control_box_add_pressed" ) + $Window/VBox/Input/Control.add_child( control_box ) + + +func configure_control_sort_by_categories(): + print("configure_control_sort_by_categories") + + +func load_control_system(): + control_system_conf = load_current_control() + + +func _on_quit_pressed(): + $Window.visible = false + + +func _on_sort_by_input_pressed(): + configure_control() diff --git a/scenes/controls/controls.tscn b/scenes/controls/controls.tscn new file mode 100644 index 0000000..800a758 --- /dev/null +++ b/scenes/controls/controls.tscn @@ -0,0 +1,106 @@ +[gd_scene load_steps=2 format=3 uid="uid://cl8xk8w3jmta0"] + +[ext_resource type="Script" path="res://scenes/controls/controls.gd" id="1_2c8s6"] + +[node name="Control" type="Control"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +script = ExtResource( "1_2c8s6" ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Window" type="Window" parent="."] +title = "Edit control" +size = Vector2i(400, 500) +visible = false +content_scale_mode = 1 +content_scale_aspect = 4 + +[node name="VBox" type="VBoxContainer" parent="Window"] +offset_right = 40.0 +offset_bottom = 40.0 +size_flags_horizontal = 6 +size_flags_vertical = 6 + +[node name="Menu" type="HBoxContainer" parent="Window/VBox"] +offset_right = 301.0 +offset_bottom = 31.0 +size_flags_horizontal = 3 + +[node name="SortByInput" type="CheckBox" parent="Window/VBox/Menu"] +offset_right = 127.0 +offset_bottom = 31.0 +size_flags_horizontal = 7 +text = "Sort by input" + +[node name="Reload" type="Button" parent="Window/VBox/Menu"] +offset_left = 131.0 +offset_right = 301.0 +offset_bottom = 31.0 +size_flags_horizontal = 7 +text = "Reload system config" + +[node name="Input" type="ScrollContainer" parent="Window/VBox"] +offset_top = 35.0 +offset_right = 301.0 +offset_bottom = 35.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Control" type="VBoxContainer" parent="Window/VBox/Input"] +offset_right = 301.0 +offset_bottom = 56.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Label" type="Label" parent="Window/VBox/Input/Control"] +offset_right = 293.0 +offset_bottom = 26.0 +size_flags_horizontal = 3 +size_flags_vertical = 7 +text = "Test" + +[node name="Label2" type="Label" parent="Window/VBox/Input/Control"] +offset_top = 30.0 +offset_right = 293.0 +offset_bottom = 56.0 +size_flags_horizontal = 3 +size_flags_vertical = 7 +text = "Test" + +[node name="Test" type="VBoxContainer" parent="Window/VBox"] +offset_top = 39.0 +offset_right = 301.0 +offset_bottom = 95.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Label3" type="Label" parent="Window/VBox/Test"] +offset_right = 301.0 +offset_bottom = 26.0 +size_flags_horizontal = 3 +size_flags_vertical = 7 +text = "Test" + +[node name="Label4" type="Label" parent="Window/VBox/Test"] +offset_top = 30.0 +offset_right = 301.0 +offset_bottom = 56.0 +size_flags_horizontal = 3 +size_flags_vertical = 7 +text = "Test" + +[node name="Quit" type="Button" parent="Window/VBox"] +offset_top = 99.0 +offset_right = 301.0 +offset_bottom = 130.0 +size_flags_horizontal = 6 +size_flags_vertical = 10 +text = "Quit" + +[connection signal="close_requested" from="Window" to="." method="_on_quit_pressed"] +[connection signal="pressed" from="Window/VBox/Menu/SortByInput" to="." method="_on_sort_by_input_pressed"] +[connection signal="pressed" from="Window/VBox/Menu/Reload" to="." method="reload_system_config"] +[connection signal="pressed" from="Window/VBox/Quit" to="." method="_on_quit_pressed"] diff --git a/scenes/controls/trash.png b/scenes/controls/trash.png new file mode 100644 index 0000000..7b43c84 Binary files /dev/null and b/scenes/controls/trash.png differ diff --git a/scenes/controls/trash.png.import b/scenes/controls/trash.png.import new file mode 100644 index 0000000..a89babb --- /dev/null +++ b/scenes/controls/trash.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture2D" +uid="uid://js4s65teoql3" +path="res://.godot/imported/trash.png-da4a5f49ff87a6019cdc4d92eedfccfb.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/controls/trash.png" +dest_files=["res://.godot/imported/trash.png-da4a5f49ff87a6019cdc4d92eedfccfb.stex"] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/bptc_ldr=0 +compress/normal_map=0 +compress/channel_pack=0 +compress/streamed=false +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/HDR_as_SRGB=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/controls/trash.svg b/scenes/controls/trash.svg new file mode 100644 index 0000000..f736131 --- /dev/null +++ b/scenes/controls/trash.svg @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scenes/controls/trash.svg.import b/scenes/controls/trash.svg.import new file mode 100644 index 0000000..883c4ef --- /dev/null +++ b/scenes/controls/trash.svg.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture2D" +uid="uid://c7xor1oxx72h4" +path="res://.godot/imported/trash.svg-f0ab7922f4cdf12c78a96422c95706d8.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/controls/trash.svg" +dest_files=["res://.godot/imported/trash.svg-f0ab7922f4cdf12c78a96422c95706d8.stex"] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/bptc_ldr=0 +compress/normal_map=0 +compress/channel_pack=0 +compress/streamed=false +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/HDR_as_SRGB=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 diff --git a/scenes/hud/hud.gd b/scenes/hud/hud.gd index 57f61e2..dc00d2f 100644 --- a/scenes/hud/hud.gd +++ b/scenes/hud/hud.gd @@ -1,18 +1,16 @@ extends Control -func _input(event): - if Input.is_action_pressed("ui_menu"): +func _input(_event): + if Input.is_action_just_pressed("ui_menu"): $Menu.visible = ! $Menu.visible func _on_timer_timeout(): - print("fin") $Message/Label.visible = false func _on_quit_pressed(): - #get_tree().quit() $ConfirmQuit.popup_centered() $ConfirmQuit.visible = true pass @@ -25,3 +23,9 @@ func _on_confirmation_dialog_confirmed(): func _on_languages_pressed(): $MenuOption/Window.popup_centered() $MenuOption/Window.visible = true + + +func _on_keys_pressed(): + #$MenuControl/Window.popup_centered() + #$MenuControl/Window.visible = true + pass diff --git a/scenes/hud/hud.tscn b/scenes/hud/hud.tscn index be587e2..5f6a801 100644 --- a/scenes/hud/hud.tscn +++ b/scenes/hud/hud.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=3 format=3 uid="uid://cdyi1a858p7em"] +[gd_scene load_steps=4 format=3 uid="uid://cdyi1a858p7em"] [ext_resource type="Script" path="res://scenes/hud/hud.gd" id="1_s6f6d"] [ext_resource type="PackedScene" uid="uid://dpvequp5fv27k" path="res://scenes/languages/languages.tscn" id="2_um8fw"] +[ext_resource type="PackedScene" uid="uid://cl8xk8w3jmta0" path="res://scenes/controls/controls.tscn" id="3_08xl7"] [node name="Control" type="Control"] anchor_right = 1.0 @@ -41,8 +42,8 @@ __meta__ = { } [node name="Keys" type="Button" parent="Menu"] -offset_left = 444.0 -offset_right = 488.0 +offset_left = 510.0 +offset_right = 554.0 offset_bottom = 40.0 text = "Keys" @@ -69,6 +70,9 @@ dialog_text = "Do you want quit?" [node name="MenuOption" parent="." instance=ExtResource( "2_um8fw" )] visible = false +[node name="MenuControl" parent="." instance=ExtResource( "3_08xl7" )] + +[connection signal="pressed" from="Menu/Keys" to="." method="_on_keys_pressed"] [connection signal="pressed" from="Menu/Languages" to="." method="_on_languages_pressed"] [connection signal="pressed" from="Menu/Quit" to="." method="_on_quit_pressed"] [connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"] diff --git a/scenes/languages/languages.gd b/scenes/languages/languages.gd index 6eff9ee..a63210a 100644 --- a/scenes/languages/languages.gd +++ b/scenes/languages/languages.gd @@ -31,7 +31,7 @@ func _ready(): $Window/VBoxContainer/Select.select(selected) -func _on_select_item_selected(index): +func _on_select_item_selected(_index): var pos = 0 for key in TranslationServer.get_loaded_locales(): if pos == $Window/VBoxContainer/Select.get_selected(): diff --git a/scenes/languages/languages.tscn b/scenes/languages/languages.tscn index 9b143b3..dfb1c4a 100644 --- a/scenes/languages/languages.tscn +++ b/scenes/languages/languages.tscn @@ -33,5 +33,6 @@ offset_right = 43.0 offset_bottom = 66.0 text = "Quit" +[connection signal="close_requested" from="Window" to="." method="_on_quit_pressed"] [connection signal="item_selected" from="Window/VBoxContainer/Select" to="." method="_on_select_item_selected"] [connection signal="pressed" from="Window/VBoxContainer/Quit" to="." method="_on_quit_pressed"]