From 32083e1d8088cf950a1ee362361bda15f60a48e7 Mon Sep 17 00:00:00 2001 From: Ryan Reed Date: Sat, 22 Mar 2025 08:33:50 -0400 Subject: [PATCH 1/5] Fixing quickslot input mappings and adding support for 10 slots (only 6 in use) --- project.godot | 63 +++++++++++++++++++++++++++++++--------- scenes/ui/quick_slots.gd | 30 +++++++++++++------ 2 files changed, 70 insertions(+), 23 deletions(-) diff --git a/project.godot b/project.godot index 76e9f90..6ff7178 100644 --- a/project.godot +++ b/project.godot @@ -106,49 +106,84 @@ crouch={ "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194326,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) ] } -quickslot0={ +quickslot_next={ "deadzone": 0.2, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":49,"key_label":0,"unicode":49,"location":0,"echo":false,"script":null) +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":8,"position":Vector2(189, 22),"global_position":Vector2(198, 68),"factor":1.0,"button_index":4,"canceled":false,"pressed":true,"double_click":false,"script":null) +] +} +quickslot_previous={ +"deadzone": 0.2, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":16,"position":Vector2(173, 17),"global_position":Vector2(182, 63),"factor":1.0,"button_index":5,"canceled":false,"pressed":true,"double_click":false,"script":null) +] +} +open_inventory={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":73,"key_label":0,"unicode":105,"location":0,"echo":false,"script":null) +] +} +quick_load={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194337,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +quick_save={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194336,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +throw_item={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":81,"key_label":0,"unicode":113,"location":0,"echo":false,"script":null) ] } quickslot1={ "deadzone": 0.2, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":50,"key_label":0,"unicode":50,"location":0,"echo":false,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":49,"key_label":0,"unicode":49,"location":0,"echo":false,"script":null) ] } quickslot2={ "deadzone": 0.2, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":51,"key_label":0,"unicode":51,"location":0,"echo":false,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":50,"key_label":0,"unicode":50,"location":0,"echo":false,"script":null) ] } quickslot3={ "deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":51,"key_label":0,"unicode":51,"location":0,"echo":false,"script":null) +] +} +quickslot4={ +"deadzone": 0.2, "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":52,"key_label":0,"unicode":52,"location":0,"echo":false,"script":null) ] } -quickslot_next={ +quickslot5={ "deadzone": 0.2, -"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":8,"position":Vector2(189, 22),"global_position":Vector2(198, 68),"factor":1.0,"button_index":4,"canceled":false,"pressed":true,"double_click":false,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":53,"key_label":0,"unicode":53,"location":0,"echo":false,"script":null) ] } -quickslot_previous={ +quickslot6={ "deadzone": 0.2, -"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":16,"position":Vector2(173, 17),"global_position":Vector2(182, 63),"factor":1.0,"button_index":5,"canceled":false,"pressed":true,"double_click":false,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":54,"key_label":0,"unicode":54,"location":0,"echo":false,"script":null) ] } -open_inventory={ +quickslot7={ "deadzone": 0.2, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":73,"key_label":0,"unicode":105,"location":0,"echo":false,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":55,"key_label":0,"unicode":55,"location":0,"echo":false,"script":null) ] } -quick_load={ +quickslot8={ "deadzone": 0.2, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194337,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":56,"key_label":0,"unicode":56,"location":0,"echo":false,"script":null) ] } -quick_save={ +quickslot9={ "deadzone": 0.2, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194336,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":57,"key_label":0,"unicode":57,"location":0,"echo":false,"script":null) +] +} +quickslot0={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":48,"key_label":0,"unicode":48,"location":0,"echo":false,"script":null) ] } diff --git a/scenes/ui/quick_slots.gd b/scenes/ui/quick_slots.gd index 852aa69..607557c 100644 --- a/scenes/ui/quick_slots.gd +++ b/scenes/ui/quick_slots.gd @@ -23,17 +23,29 @@ func _ready() -> void: current_slot.set("theme_override_styles/panel", highlight_theme) func _unhandled_input(event: InputEvent) -> void: - if event.is_action_pressed("quickslot0"): - _selected_item = 0 if event.is_action_pressed("quickslot1"): - _selected_item = 1 - if event.is_action_pressed("quickslot2"): - _selected_item = 2 - if event.is_action_pressed("quickslot3"): - _selected_item = 3 - if event.is_action_pressed("quickslot_next"): + select_item_index(0) + elif event.is_action_pressed("quickslot2"): + select_item_index(1) + elif event.is_action_pressed("quickslot3"): + select_item_index(2) + elif event.is_action_pressed("quickslot4"): + select_item_index(3) + elif event.is_action_pressed("quickslot5"): + select_item_index(4) + elif event.is_action_pressed("quickslot6"): + select_item_index(5) + elif event.is_action_pressed("quickslot7"): + select_item_index(6) + elif event.is_action_pressed("quickslot8"): + select_item_index(7) + elif event.is_action_pressed("quickslot9"): + select_item_index(8) + elif event.is_action_pressed("quickslot0"): + select_item_index(9) + elif event.is_action_pressed("quickslot_next"): select_next_item() - if event.is_action_pressed("quickslot_previous"): + elif event.is_action_pressed("quickslot_previous"): select_previous_item() -- 2.30.1 From f499a4537170c77826ed3029220d94ee0af6f95c Mon Sep 17 00:00:00 2001 From: Ryan Reed Date: Sat, 22 Mar 2025 08:34:21 -0400 Subject: [PATCH 2/5] Ensuring nonexistent item can't be selected --- scenes/ui/quick_slots.gd | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scenes/ui/quick_slots.gd b/scenes/ui/quick_slots.gd index 607557c..74d3a01 100644 --- a/scenes/ui/quick_slots.gd +++ b/scenes/ui/quick_slots.gd @@ -56,6 +56,8 @@ func get_selected_item() -> String: return _items[_selected_item] func select_item_index(slot_index: int) -> void: + if slot_index >= _items.size(): return + _selected_item = slot_index update_highlighted_slot() InventoryManager.quick_slot_item_changed.emit(get_selected_item()) -- 2.30.1 From 23f45d54650102072149bdfbac18fe6de5cbb2ed Mon Sep 17 00:00:00 2001 From: Ryan Reed Date: Sat, 22 Mar 2025 08:44:07 -0400 Subject: [PATCH 3/5] Quickslot starts from beginning/end when rolling over --- scenes/ui/quick_slots.gd | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/scenes/ui/quick_slots.gd b/scenes/ui/quick_slots.gd index 74d3a01..dcbe106 100644 --- a/scenes/ui/quick_slots.gd +++ b/scenes/ui/quick_slots.gd @@ -10,6 +10,10 @@ var _items: Array[String] = ["001", "005", "002", "003", "004", "006"] var _previous_selected_item: int = 0 var _selected_item: int = 0 : set(new_item_index): + if new_item_index < 0: + new_item_index = _items.size() - 1 + elif new_item_index >= _items.size(): + new_item_index = 0 _previous_selected_item = _selected_item _selected_item = new_item_index @@ -63,12 +67,12 @@ func select_item_index(slot_index: int) -> void: InventoryManager.quick_slot_item_changed.emit(get_selected_item()) func select_previous_item() -> void: - _selected_item = clampi(_selected_item - 1, 0, _items.size() - 1) + _selected_item -= 1 update_highlighted_slot() InventoryManager.quick_slot_item_changed.emit(get_selected_item()) func select_next_item() -> void: - _selected_item = clampi(_selected_item + 1, 0, _items.size() - 1) + _selected_item += 1 update_highlighted_slot() InventoryManager.quick_slot_item_changed.emit(get_selected_item()) -- 2.30.1 From b5adb17b31c095ef8cd1a4a5d1c7a3fd3f6446fb Mon Sep 17 00:00:00 2001 From: Ryan Reed Date: Sat, 22 Mar 2025 08:45:04 -0400 Subject: [PATCH 4/5] Adding additional binding for previous/next selection --- project.godot | 2 ++ 1 file changed, 2 insertions(+) diff --git a/project.godot b/project.godot index 6ff7178..ad6ef23 100644 --- a/project.godot +++ b/project.godot @@ -109,11 +109,13 @@ crouch={ quickslot_next={ "deadzone": 0.2, "events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":8,"position":Vector2(189, 22),"global_position":Vector2(198, 68),"factor":1.0,"button_index":4,"canceled":false,"pressed":true,"double_click":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":46,"key_label":0,"unicode":46,"location":0,"echo":false,"script":null) ] } quickslot_previous={ "deadzone": 0.2, "events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":16,"position":Vector2(173, 17),"global_position":Vector2(182, 63),"factor":1.0,"button_index":5,"canceled":false,"pressed":true,"double_click":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":44,"key_label":0,"unicode":44,"location":0,"echo":false,"script":null) ] } open_inventory={ -- 2.30.1 From d5b6172a422e5597b775f9fda4903a6655e152f6 Mon Sep 17 00:00:00 2001 From: Ryan Reed Date: Sat, 22 Mar 2025 08:52:33 -0400 Subject: [PATCH 5/5] Updating keybindings --- README.md | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index ca70c17..3b9c8ca 100644 --- a/README.md +++ b/README.md @@ -9,12 +9,15 @@ This was initially based on Sable Spirit Studio's YT series but has evolved to b ## Key Bindings -| Input | Description | -| ----- | ----------- | -| `F5` | Quick Save | -| `F6` | Quick Load | -| `left-mouse-click` | Delete block | -| `right-mouse-click` | Create block | -| `scroll-wheel` | Change selected block (does not show the currently select item in the quickslots yet) | -| `Shift` | Sprint/Run | -| `Ctrl` | Crouch | +| Description | Binding | +| ----------- | ------- | +| Create block | `Right Click` | +| Delete/Remove block | `Left Click` | +| Change selected block (next) | `.` | +| Change selected block (previous) | `,` | +| Change selected block | `Scroll Wheel` | +| Crouch | `Ctrl` | +| Jump | `Space` | +| Quick Load | `F6` | +| Quick Save | `F5` | +| Sprint/Run | `Shift` | -- 2.30.1