From f72dde76c5b14745a8e5d6813dffb388883488a9 Mon Sep 17 00:00:00 2001 From: osquallo Date: Fri, 3 Aug 2018 14:58:20 +0200 Subject: [PATCH] gestion d'une deuxieme touche raccorucit pour le clavier. --- .../input_map_button/input_map_button_node.gd | 60 +++++++------------ project.godot | 7 ++- scenes/GUI/HUD/HUD.tscn | 2 +- scenes/GUI/Help/Help.gd | 39 ++++++------ scenes/GUI/Help/Help.tscn | 42 +++++++++---- scenes/GUI/Settings/Settings.tscn | 6 +- 6 files changed, 81 insertions(+), 75 deletions(-) diff --git a/addons/input_map_button/input_map_button_node.gd b/addons/input_map_button/input_map_button_node.gd index 1701cd6..74ec288 100644 --- a/addons/input_map_button/input_map_button_node.gd +++ b/addons/input_map_button/input_map_button_node.gd @@ -106,20 +106,7 @@ func load_from_config(): var config = ConfigFile.new() var err = config.load( config_file ) if err:# Assuming that file is missing, generate default config -# -# for event in InputMap.get_action_list( action_name ): -# if event is InputEventKey: -# var scancode = OS.get_scancode_string( event.get_scancode_with_modifiers() ) -# config.set_value(current_keyboard.name, action_name, scancode) -## if current_keyboard.name == "keyboard_alt": -## break -# current_keyboard = $keyboard_alt -# -# elif event is InputEventJoypadButton: -# var joy_button_name = Input.get_joy_button_string( event.button_index ) -# config.set_value("joypad", action_name, joy_button_name) config.save( config_file ) - load_from_config() else: # on initialise l'entrée, si elle n'existe pas déjà, par la valeur par defaut du projet. @@ -137,12 +124,19 @@ func load_from_config(): var scancode = OS.get_scancode_string( event.get_scancode_with_modifiers() ) config.set_value("keyboard_alt", action_name, scancode) break - is_first = false - + if is_first and event is InputEventKey: + is_first = false + if not config.has_section_key("joypad", action_name): + for event in InputMap.get_action_list( action_name ): + if event is InputEventJoypadButton: + var scancode = Input.get_joy_button_string( event.button_index ) + config.set_value("joypad", action_name, scancode) + break + # On efface toutes les touches de clavier de l'InputMap correspondants à l'action en cours. for old_event in InputMap.get_action_list( action_name ): - if old_event is InputEventKey: + if old_event is InputEventKey or old_event is InputEventJoypadButton: InputMap.action_erase_event(action_name, old_event) # on recupere les touches du fichier de config et on les ajoutes à l'input map. @@ -154,11 +148,6 @@ func load_from_config(): var event = get_event_with_modifier_from_string( config.get_value("keyboard", action_name), "keyboard") InputMap.action_add_event(action_name, event) break -# if not action_found: -# for event in InputMap.get_action_list( action_name ): -# if event is InputEventKey: -# var scancode = OS.get_scancode_string( event.get_scancode_with_modifiers() ) -# config.set_value("keyboard", action_name, scancode) if config.has_section("keyboard_alt"): var action_found = false @@ -168,12 +157,6 @@ func load_from_config(): var event = get_event_with_modifier_from_string( config.get_value("keyboard_alt", action_name), "keyboard") InputMap.action_add_event(action_name, event) break -# if not action_found: -# for event in InputMap.get_action_list( action_name ): -# if event is InputEventKey: -# var scancode = OS.get_scancode_string( event.get_scancode_with_modifiers() ) -# config.set_value("keyboard_alt", action_name, scancode) - if config.has_section("joypad"): var action_found = false @@ -185,12 +168,6 @@ func load_from_config(): if old_event is InputEventJoypadButton: InputMap.action_erase_event(action_name, old_event) InputMap.action_add_event(action_name, event) - - if not action_found: - for event in InputMap.get_action_list( action_name ): - if event is InputEventJoypadButton: - var joy_button_name = Input.get_joy_button_string( event.button_index ) - config.set_value("joypad", action_name, joy_button_name) config.save( config_file ) @@ -241,15 +218,18 @@ func _input(event): current_keyboard.text += input_string - var key_to_change = 0 + var change_first_key = true if current_keyboard.name == "keyboard_alt": - key_to_change = 1 - var current_key = 0 - + change_first_key = false + var is_first_key = true for old_event in InputMap.get_action_list( action_name ): - if old_event is InputEventKey and key_to_change == current_key: - InputMap.action_erase_event(action_name, old_event) - current_key +=1 + if old_event is InputEventKey: + if is_first_key: + if change_first_key: + InputMap.action_erase_event(action_name, old_event) + is_first_key = false + elif not change_first_key: + InputMap.action_erase_event(action_name, old_event) InputMap.action_add_event(action_name, event) save_to_config(current_keyboard.name, action_name, current_keyboard.text) diff --git a/project.godot b/project.godot index dddcd2e..821d4f2 100644 --- a/project.godot +++ b/project.godot @@ -45,12 +45,15 @@ move_up=[ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":" ] move_down=[ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777234,"unicode":0,"echo":false,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":13,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":83,"unicode":0,"echo":false,"script":null) ] move_left=[ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777231,"unicode":0,"echo":false,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":81,"unicode":0,"echo":false,"script":null) ] -move_right=[ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777233,"unicode":0,"echo":false,"script":null) -, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":15,"pressure":0.0,"pressed":false,"script":null) +move_right=[ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":15,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777233,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":68,"unicode":0,"echo":false,"script":null) ] jump=[ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"unicode":0,"echo":false,"script":null) ] diff --git a/scenes/GUI/HUD/HUD.tscn b/scenes/GUI/HUD/HUD.tscn index e9851da..2b2a976 100644 --- a/scenes/GUI/HUD/HUD.tscn +++ b/scenes/GUI/HUD/HUD.tscn @@ -14,7 +14,7 @@ [ext_resource path="res://scenes/GUI/HUD/trauma.gd" type="Script" id=12] [ext_resource path="res://scenes/GUI/HUD/douleur.gd" type="Script" id=13] -[node name="HUD" type="MarginContainer" index="0"] +[node name="HUD" type="MarginContainer"] anchor_left = 0.0 anchor_top = 0.0 diff --git a/scenes/GUI/Help/Help.gd b/scenes/GUI/Help/Help.gd index 41be1e7..5ffa316 100644 --- a/scenes/GUI/Help/Help.gd +++ b/scenes/GUI/Help/Help.gd @@ -8,34 +8,35 @@ const ACTION_LIST = [ "ui_debug_window", "ui_music_controls", "hide_char", "ui_h const ACTION_TEXT = [ "show/hide debug", "show/hide music", "Hide/show character", "hide/show UI", "move up", "move down", "move left", "move right", "fly up", "fly down", "on/off flashlight", "pause/play", "reload the scene", "free/capture mouse cursor", "quit" ] func _ready(): - # Called every time the node is added to the scene. - # Initialization here - var index = 0 - for action_name in ACTION_LIST: - for event in InputMap.get_action_list( action_name ): - if event is InputEventKey: - var label = Label.new() - label.name = action_name - label.text = ACTION_TEXT[ index ] + ": " + OS.get_scancode_string( event.get_scancode_with_modifiers() ) - $MarginContainer/VBoxContainer.add_child( label ) - label.set_owner( $MarginContainer/VBoxContainer ) - index += 1 - - + _on_Refresh_pressed() + func _on_Refresh_pressed(): var index = 0 for action_name in ACTION_LIST: + var event_index = 0 for event in InputMap.get_action_list( action_name ): if event is InputEventKey: - if get_node( "MarginContainer/VBoxContainer" ).has_node( action_name ): - get_node( "MarginContainer/VBoxContainer" ).remove_child( get_node( "MarginContainer/VBoxContainer" ).get_node( action_name ) ) + print("key: "+str(action_name+str(event_index))) + if get_node( "ScrollContainer/MarginContainer/VBoxContainer" ).has_node( action_name+str(event_index) ): + get_node( "ScrollContainer/MarginContainer/VBoxContainer" ).remove_child( get_node( "ScrollContainer/MarginContainer/VBoxContainer" ).get_node( action_name+str(event_index) ) ) var label = Label.new() - label.name = action_name + label.name = action_name+str(event_index) label.text = ACTION_TEXT[ index ] + ": " + OS.get_scancode_string( event.get_scancode_with_modifiers() ) - $MarginContainer/VBoxContainer.add_child( label ) - label.set_owner( $MarginContainer/VBoxContainer ) + $ScrollContainer/MarginContainer/VBoxContainer.add_child( label ) + label.set_owner( $ScrollContainer/MarginContainer/VBoxContainer ) + elif event is InputEventJoypadButton: + print("joy: "+str(action_name+str(event_index))) + if get_node( "ScrollContainer/MarginContainer/VBoxContainer" ).has_node( action_name+str(event_index) ): + get_node( "ScrollContainer/MarginContainer/VBoxContainer" ).remove_child( get_node( "ScrollContainer/MarginContainer/VBoxContainer" ).get_node( action_name+str(event_index) ) ) + + var label = Label.new() + label.name = action_name+str(event_index) + label.text = ACTION_TEXT[ index ] + ": " + Input.get_joy_button_string( event.button_index ) + $ScrollContainer/MarginContainer/VBoxContainer.add_child( label ) + label.set_owner( $ScrollContainer/MarginContainer/VBoxContainer ) + event_index += 1 index += 1 func _input( event ): diff --git a/scenes/GUI/Help/Help.tscn b/scenes/GUI/Help/Help.tscn index 3d766bd..54e0795 100644 --- a/scenes/GUI/Help/Help.tscn +++ b/scenes/GUI/Help/Help.tscn @@ -14,7 +14,7 @@ flags = 4 gradient = SubResource( 1 ) width = 2048 -[node name="Help" type="MarginContainer"] +[node name="Help" type="MarginContainer" index="0"] anchor_left = 0.0 anchor_top = 0.0 @@ -41,8 +41,8 @@ anchor_left = 0.0 anchor_top = 0.0 anchor_right = 0.0 anchor_bottom = 0.0 -margin_right = 85.0 -margin_bottom = 82.0 +margin_right = 256.0 +margin_bottom = 256.0 rect_pivot_offset = Vector2( 0, 0 ) rect_clip_content = false mouse_filter = 2 @@ -52,7 +52,29 @@ size_flags_vertical = 1 texture = SubResource( 2 ) _sections_unfolded = [ "Anchor", "Margin", "Size Flags", "Theme" ] -[node name="MarginContainer" type="MarginContainer" parent="." index="1"] +[node name="ScrollContainer" type="ScrollContainer" parent="." index="1"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_right = 256.0 +margin_bottom = 256.0 +rect_min_size = Vector2( 256, 256 ) +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = true +mouse_filter = 0 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +scroll_horizontal_enabled = true +scroll_horizontal = 0 +scroll_vertical_enabled = true +scroll_vertical = 0 +scroll_deadzone = 0 +_sections_unfolded = [ "Rect", "Size Flags" ] + +[node name="MarginContainer" type="MarginContainer" parent="ScrollContainer" index="2"] anchor_left = 0.0 anchor_top = 0.0 @@ -72,7 +94,7 @@ custom_constants/margin_left = 4 custom_constants/margin_bottom = 4 _sections_unfolded = [ "Anchor", "Margin", "custom_constants" ] -[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer" index="0"] +[node name="VBoxContainer" type="VBoxContainer" parent="ScrollContainer/MarginContainer" index="0"] anchor_left = 0.0 anchor_top = 0.0 @@ -91,7 +113,7 @@ size_flags_vertical = 1 alignment = 0 _sections_unfolded = [ "Size Flags" ] -[node name="Title" type="Label" parent="MarginContainer/VBoxContainer" index="0"] +[node name="Title" type="Label" parent="ScrollContainer/MarginContainer/VBoxContainer" index="0"] anchor_left = 0.0 anchor_top = 0.0 @@ -110,7 +132,7 @@ percent_visible = 1.0 lines_skipped = 0 max_lines_visible = -1 -[node name="FPS" type="Label" parent="MarginContainer/VBoxContainer" index="1"] +[node name="FPS" type="Label" parent="ScrollContainer/MarginContainer/VBoxContainer" index="1"] anchor_left = 0.0 anchor_top = 0.0 @@ -131,7 +153,7 @@ lines_skipped = 0 max_lines_visible = -1 script = ExtResource( 2 ) -[node name="DefaultKey" type="Label" parent="MarginContainer/VBoxContainer" index="2"] +[node name="DefaultKey" type="Label" parent="ScrollContainer/MarginContainer/VBoxContainer" index="2"] anchor_left = 0.0 anchor_top = 0.0 @@ -151,7 +173,7 @@ percent_visible = 1.0 lines_skipped = 0 max_lines_visible = -1 -[node name="Refresh" type="Button" parent="MarginContainer/VBoxContainer" index="3"] +[node name="Refresh" type="Button" parent="ScrollContainer/MarginContainer/VBoxContainer" index="3"] anchor_left = 0.0 anchor_top = 0.0 @@ -175,6 +197,6 @@ text = "refresh" flat = false align = 1 -[connection signal="pressed" from="MarginContainer/VBoxContainer/Refresh" to="." method="_on_Refresh_pressed"] +[connection signal="pressed" from="ScrollContainer/MarginContainer/VBoxContainer/Refresh" to="." method="_on_Refresh_pressed"] diff --git a/scenes/GUI/Settings/Settings.tscn b/scenes/GUI/Settings/Settings.tscn index 0a33115..4a83e13 100644 --- a/scenes/GUI/Settings/Settings.tscn +++ b/scenes/GUI/Settings/Settings.tscn @@ -148,7 +148,7 @@ use_filter = false font_data = ExtResource( 2 ) _sections_unfolded = [ "Font", "Settings" ] -[node name="Settings" type="MarginContainer" index="0"] +[node name="Settings" type="MarginContainer"] anchor_left = 0.0 anchor_top = 0.0 @@ -233,7 +233,6 @@ _sections_unfolded = [ "Hint", "Rect", "Size Flags", "Theme", "Visibility", "cus [node name="Display" type="MarginContainer" parent="Menus/TabContainer" index="0"] editor/display_folded = true -visible = false anchor_left = 0.0 anchor_top = 0.0 anchor_right = 1.0 @@ -619,6 +618,7 @@ _sections_unfolded = [ "Size Flags" ] [node name="Controles" type="VBoxContainer" parent="Menus/TabContainer" index="1"] +visible = false anchor_left = 0.0 anchor_top = 0.0 anchor_right = 1.0 @@ -679,7 +679,6 @@ _sections_unfolded = [ "Hint", "Size Flags", "custom_colors", "custom_constants" [node name="Jeu" type="VBoxContainer" parent="Menus/TabContainer/Controles/ScrollContainer/TabContainer" index="0"] -visible = false anchor_left = 0.0 anchor_top = 0.0 anchor_right = 1.0 @@ -983,6 +982,7 @@ default_joypad = null [node name="Deplacement" type="VBoxContainer" parent="Menus/TabContainer/Controles/ScrollContainer/TabContainer" index="2"] +visible = false anchor_left = 0.0 anchor_top = 0.0 anchor_right = 1.0