From b76427e3cac5a0e5d7ad4e1bb271f799bd390df5 Mon Sep 17 00:00:00 2001 From: Marco Date: Wed, 26 Mar 2025 18:47:17 +0100 Subject: [PATCH] Keymapping menu --- Resources/BossPhases/Marisa/marisa_ns1.tres | 5 ++- Resources/BossPhases/Rumia_Lasers.tres | 4 +- Resources/BossPhases/Rumia_NS2.tres | 23 +++++----- Resources/BossPhases/Rumia_SP1.tres | 7 +-- Resources/Enemies/Thermathron.tres | 6 ++- Resources/Enemies/Turret360.tres | 6 ++- Resources/Patterns/rumia_ns_1_spiralized.tres | 5 ++- Resources/Patterns/rumia_ns_2.tres | 9 ++-- Scenes/HUD/OptionsMenu.tscn | 14 ++++-- Scenes/HUD/UiElements/KeyRemappingItem.tscn | 27 ++++++++++++ Scenes/test.tscn | 4 +- Scripts/UI/KeyRemapping.cs | 17 +++++++- Scripts/UI/KeyRemappingItem.cs | 43 +++++++++++++++++++ Scripts/UI/KeyRemappingItem.cs.uid | 1 + 14 files changed, 137 insertions(+), 34 deletions(-) create mode 100644 Scenes/HUD/UiElements/KeyRemappingItem.tscn create mode 100644 Scripts/UI/KeyRemappingItem.cs create mode 100644 Scripts/UI/KeyRemappingItem.cs.uid diff --git a/Resources/BossPhases/Marisa/marisa_ns1.tres b/Resources/BossPhases/Marisa/marisa_ns1.tres index 252cf77b..60b92618 100644 --- a/Resources/BossPhases/Marisa/marisa_ns1.tres +++ b/Resources/BossPhases/Marisa/marisa_ns1.tres @@ -1,6 +1,7 @@ -[gd_resource type="Resource" script_class="BossPhase" load_steps=4 format=3 uid="uid://da1vjfavqs7u2"] +[gd_resource type="Resource" script_class="BossPhase" load_steps=5 format=3 uid="uid://da1vjfavqs7u2"] [ext_resource type="Script" uid="uid://cdd6q2h0t1hhq" path="res://Scripts/Resources/BossPhase.cs" id="1_7asq8"] +[ext_resource type="Script" uid="uid://b5s5mjuk1rng5" path="res://Scripts/Resources/TimeModifier.cs" id="1_ykywc"] [ext_resource type="Script" uid="uid://c0ndqalsc4jve" path="res://Scripts/AttackPatterns/SpiralPattern.cs" id="1_ys2v3"] [sub_resource type="Resource" id="Resource_q4pcc"] @@ -21,7 +22,7 @@ DamageType = 0 OverrideControllable = false Controllable = false OverrideCreationModifier = false -TimeModifiers = [] +TimeModifiers = Array[ExtResource("1_ykywc")]([]) WaitForCompletion = true [resource] diff --git a/Resources/BossPhases/Rumia_Lasers.tres b/Resources/BossPhases/Rumia_Lasers.tres index 42e2b1ae..51ad4c1a 100644 --- a/Resources/BossPhases/Rumia_Lasers.tres +++ b/Resources/BossPhases/Rumia_Lasers.tres @@ -75,7 +75,7 @@ DamageType = 0 OverrideControllable = false Controllable = false OverrideCreationModifier = false -TimeModifiers = [] +TimeModifiers = Array[ExtResource("2_rhq2s")]([]) WaitForCompletion = true [sub_resource type="Resource" id="Resource_1yaaf"] @@ -117,7 +117,7 @@ DamageType = 0 OverrideControllable = false Controllable = false OverrideCreationModifier = false -TimeModifiers = [] +TimeModifiers = Array[ExtResource("2_rhq2s")]([]) WaitForCompletion = false [resource] diff --git a/Resources/BossPhases/Rumia_NS2.tres b/Resources/BossPhases/Rumia_NS2.tres index 6f464be8..8c68ec97 100644 --- a/Resources/BossPhases/Rumia_NS2.tres +++ b/Resources/BossPhases/Rumia_NS2.tres @@ -1,10 +1,11 @@ -[gd_resource type="Resource" script_class="BossPhase" load_steps=41 format=3 uid="uid://ddb5dqocmk6x7"] +[gd_resource type="Resource" script_class="BossPhase" load_steps=42 format=3 uid="uid://ddb5dqocmk6x7"] [ext_resource type="PackedScene" uid="uid://dh81snen2f6bf" path="res://Scenes/Weapons/Bullets/enemyBullet_rice_blue_small.tscn" id="1_as8n2"] [ext_resource type="Script" uid="uid://cdd6q2h0t1hhq" path="res://Scripts/Resources/BossPhase.cs" id="1_fdlxv"] [ext_resource type="Script" uid="uid://dka43xos84kbw" path="res://Scripts/Resources/Modifiers/DelayedRotationModifier.cs" id="2_onj13"] [ext_resource type="Script" uid="uid://c0ndqalsc4jve" path="res://Scripts/AttackPatterns/SpiralPattern.cs" id="2_wkmhk"] [ext_resource type="Script" uid="uid://dslyrfcej3g2n" path="res://Scripts/Resources/BulletResource.cs" id="3_ow5fu"] +[ext_resource type="Script" uid="uid://b5s5mjuk1rng5" path="res://Scripts/Resources/TimeModifier.cs" id="4_3qh6s"] [ext_resource type="PackedScene" uid="uid://ctrk5qrb7n3fm" path="res://Scenes/Weapons/Bullets/enemyBullet_rice_green_small.tscn" id="4_tek7n"] [ext_resource type="PackedScene" uid="uid://chowj81jsdvcx" path="res://Scenes/Weapons/Bullets/enemyBullet_rice_red_small.tscn" id="5_n4xqo"] [ext_resource type="Script" uid="uid://bhc7rbcico4kp" path="res://Scripts/Resources/SimpleMovementPattern.cs" id="6_bw7cj"] @@ -51,7 +52,7 @@ DamageType = 0 OverrideControllable = false Controllable = false OverrideCreationModifier = false -TimeModifiers = [] +TimeModifiers = Array[ExtResource("4_3qh6s")]([]) WaitForCompletion = false [sub_resource type="Resource" id="Resource_pbgtt"] @@ -93,7 +94,7 @@ DamageType = 0 OverrideControllable = false Controllable = false OverrideCreationModifier = false -TimeModifiers = [] +TimeModifiers = Array[ExtResource("4_3qh6s")]([]) WaitForCompletion = true [sub_resource type="Resource" id="Resource_w7b0n"] @@ -128,7 +129,7 @@ DamageType = 0 OverrideControllable = false Controllable = false OverrideCreationModifier = false -TimeModifiers = [] +TimeModifiers = Array[ExtResource("4_3qh6s")]([]) WaitForCompletion = false [sub_resource type="Resource" id="Resource_3iv0j"] @@ -163,7 +164,7 @@ DamageType = 0 OverrideControllable = false Controllable = false OverrideCreationModifier = false -TimeModifiers = [] +TimeModifiers = Array[ExtResource("4_3qh6s")]([]) WaitForCompletion = true [sub_resource type="Resource" id="Resource_5jr31"] @@ -198,7 +199,7 @@ DamageType = 0 OverrideControllable = false Controllable = false OverrideCreationModifier = false -TimeModifiers = [] +TimeModifiers = Array[ExtResource("4_3qh6s")]([]) WaitForCompletion = false [sub_resource type="Resource" id="Resource_mg2qy"] @@ -233,7 +234,7 @@ DamageType = 0 OverrideControllable = false Controllable = false OverrideCreationModifier = false -TimeModifiers = [] +TimeModifiers = Array[ExtResource("4_3qh6s")]([]) WaitForCompletion = true [sub_resource type="Resource" id="Resource_erexw"] @@ -290,7 +291,7 @@ DamageType = 0 OverrideControllable = false Controllable = false OverrideCreationModifier = false -TimeModifiers = [] +TimeModifiers = Array[ExtResource("4_3qh6s")]([]) WaitForCompletion = true [sub_resource type="Resource" id="Resource_l05f2"] @@ -333,7 +334,7 @@ DamageType = 0 OverrideControllable = false Controllable = false OverrideCreationModifier = false -TimeModifiers = [] +TimeModifiers = Array[ExtResource("4_3qh6s")]([]) WaitForCompletion = true [sub_resource type="Resource" id="Resource_q7cr0"] @@ -376,7 +377,7 @@ DamageType = 0 OverrideControllable = false Controllable = false OverrideCreationModifier = false -TimeModifiers = [] +TimeModifiers = Array[ExtResource("4_3qh6s")]([]) WaitForCompletion = true [sub_resource type="Resource" id="Resource_8kl6r"] @@ -419,7 +420,7 @@ DamageType = 0 OverrideControllable = false Controllable = false OverrideCreationModifier = false -TimeModifiers = [] +TimeModifiers = Array[ExtResource("4_3qh6s")]([]) WaitForCompletion = true [sub_resource type="Resource" id="Resource_ha2b6"] diff --git a/Resources/BossPhases/Rumia_SP1.tres b/Resources/BossPhases/Rumia_SP1.tres index 80c03222..1003fed2 100644 --- a/Resources/BossPhases/Rumia_SP1.tres +++ b/Resources/BossPhases/Rumia_SP1.tres @@ -1,4 +1,4 @@ -[gd_resource type="Resource" script_class="BossPhase" load_steps=23 format=3 uid="uid://ccj0cqbveey8c"] +[gd_resource type="Resource" script_class="BossPhase" load_steps=24 format=3 uid="uid://ccj0cqbveey8c"] [ext_resource type="Script" uid="uid://bhc7rbcico4kp" path="res://Scripts/Resources/SimpleMovementPattern.cs" id="1_lw82i"] [ext_resource type="PackedScene" uid="uid://dohakkayqj4w2" path="res://Scenes/Weapons/Bullets/enemyBullet_green.tscn" id="1_o4um1"] @@ -7,6 +7,7 @@ [ext_resource type="Script" uid="uid://cdd6q2h0t1hhq" path="res://Scripts/Resources/BossPhase.cs" id="3_o6234"] [ext_resource type="Script" uid="uid://dslyrfcej3g2n" path="res://Scripts/Resources/BulletResource.cs" id="4_juoir"] [ext_resource type="PackedScene" uid="uid://by2rk6gx67f7e" path="res://Scenes/Weapons/Bullets/enemyBullet_yellow.tscn" id="4_ruawj"] +[ext_resource type="Script" uid="uid://b5s5mjuk1rng5" path="res://Scripts/Resources/TimeModifier.cs" id="5_763gk"] [ext_resource type="Script" uid="uid://cbafxkmgns6ry" path="res://Scripts/Resources/PatternGroup.cs" id="6_6mg1u"] [sub_resource type="Resource" id="Resource_upj22"] @@ -67,7 +68,7 @@ DamageType = 0 OverrideControllable = false Controllable = false OverrideCreationModifier = false -TimeModifiers = [] +TimeModifiers = Array[ExtResource("5_763gk")]([]) WaitForCompletion = true [sub_resource type="Resource" id="Resource_e6jj0"] @@ -111,7 +112,7 @@ DamageType = 0 OverrideControllable = false Controllable = false OverrideCreationModifier = false -TimeModifiers = [] +TimeModifiers = Array[ExtResource("5_763gk")]([]) WaitForCompletion = true [sub_resource type="Resource" id="Resource_gm1rv"] diff --git a/Resources/Enemies/Thermathron.tres b/Resources/Enemies/Thermathron.tres index eb34b4f3..d3132ec4 100644 --- a/Resources/Enemies/Thermathron.tres +++ b/Resources/Enemies/Thermathron.tres @@ -1,5 +1,6 @@ -[gd_resource type="Resource" script_class="EnemyResource" load_steps=3 format=3 uid="uid://cfdvg162u65sr"] +[gd_resource type="Resource" script_class="EnemyResource" load_steps=4 format=3 uid="uid://cfdvg162u65sr"] +[ext_resource type="Script" uid="uid://cq65aed620ijo" path="res://Scripts/Resources/Loot/LootDrop.cs" id="1_f3huq"] [ext_resource type="Resource" uid="uid://cdfmedtgp2rcn" path="res://Resources/Weapons/EnemyWeapon.tres" id="7_filx8"] [ext_resource type="Script" uid="uid://cd5o0ceb50jki" path="res://Scripts/Resources/EnemyResource.cs" id="8_x8scf"] @@ -11,7 +12,7 @@ PrefabPath = &"res://Scenes/Actors/Thermathron.tscn" MaxHealth = 8.0 MovementSpeed = 38.0 Weapon = ExtResource("7_filx8") -LootDrops = [] +LootDrops = Array[ExtResource("1_f3huq")]([]) PlayerDetectionRange = 90.0 ViewRange = 120.0 AlarmReactRange = 200.0 @@ -19,4 +20,5 @@ PlayerDisengageRange = 500.0 StrafeSpeed = 25.0 MaxStrafeDistance = 0.0 MinStrafeDistance = 0.0 +ResponseTime = 0.5 metadata/_custom_type_script = "uid://cd5o0ceb50jki" diff --git a/Resources/Enemies/Turret360.tres b/Resources/Enemies/Turret360.tres index 416848bf..6b10ec00 100644 --- a/Resources/Enemies/Turret360.tres +++ b/Resources/Enemies/Turret360.tres @@ -1,5 +1,6 @@ -[gd_resource type="Resource" script_class="EnemyResource" load_steps=3 format=3 uid="uid://ysd6wl2gmdhn"] +[gd_resource type="Resource" script_class="EnemyResource" load_steps=4 format=3 uid="uid://ysd6wl2gmdhn"] +[ext_resource type="Script" uid="uid://cq65aed620ijo" path="res://Scripts/Resources/Loot/LootDrop.cs" id="1_sma76"] [ext_resource type="Resource" uid="uid://dyaxm3st70sh6" path="res://Resources/Weapons/Enemy/TurretWeapon.tres" id="1_yap8t"] [ext_resource type="Script" uid="uid://cd5o0ceb50jki" path="res://Scripts/Resources/EnemyResource.cs" id="2_sma76"] @@ -11,7 +12,7 @@ PrefabPath = &"res://Scenes/Actors/Turret360.tscn" MaxHealth = 14.0 MovementSpeed = 0.0 Weapon = ExtResource("1_yap8t") -LootDrops = [] +LootDrops = Array[ExtResource("1_sma76")]([]) PlayerDetectionRange = 90.0 ViewRange = 120.0 AlarmReactRange = 200.0 @@ -19,4 +20,5 @@ PlayerDisengageRange = 500.0 StrafeSpeed = 0.0 MaxStrafeDistance = 0.0 MinStrafeDistance = 0.0 +ResponseTime = 0.5 metadata/_custom_type_script = "uid://cd5o0ceb50jki" diff --git a/Resources/Patterns/rumia_ns_1_spiralized.tres b/Resources/Patterns/rumia_ns_1_spiralized.tres index 192afb99..2c0142de 100644 --- a/Resources/Patterns/rumia_ns_1_spiralized.tres +++ b/Resources/Patterns/rumia_ns_1_spiralized.tres @@ -1,6 +1,7 @@ -[gd_resource type="Resource" script_class="SpiralPattern" load_steps=3 format=3 uid="uid://jjky5fqn74qk"] +[gd_resource type="Resource" script_class="SpiralPattern" load_steps=4 format=3 uid="uid://jjky5fqn74qk"] [ext_resource type="Resource" uid="uid://bifeoxb6nfykq" path="res://Resources/Bullets/Boss/Rumia/Rumia_Red_Chase_Bullet.tres" id="1_lasr5"] +[ext_resource type="Script" uid="uid://b5s5mjuk1rng5" path="res://Scripts/Resources/TimeModifier.cs" id="2_ho5ah"] [ext_resource type="Script" uid="uid://c0ndqalsc4jve" path="res://Scripts/AttackPatterns/SpiralPattern.cs" id="3_ryait"] [resource] @@ -22,5 +23,5 @@ DamageType = 0 OverrideControllable = false Controllable = false OverrideCreationModifier = false -TimeModifiers = [] +TimeModifiers = Array[ExtResource("2_ho5ah")]([]) WaitForCompletion = true diff --git a/Resources/Patterns/rumia_ns_2.tres b/Resources/Patterns/rumia_ns_2.tres index 8ffded6b..3e05f165 100644 --- a/Resources/Patterns/rumia_ns_2.tres +++ b/Resources/Patterns/rumia_ns_2.tres @@ -1,8 +1,9 @@ -[gd_resource type="Resource" script_class="PatternGroup" load_steps=12 format=3 uid="uid://du2kuv125vbrx"] +[gd_resource type="Resource" script_class="PatternGroup" load_steps=13 format=3 uid="uid://du2kuv125vbrx"] [ext_resource type="PackedScene" uid="uid://dre2wvw4pa3hc" path="res://Scenes/Weapons/Bullets/enemyBullet_mid_blue.tscn" id="1_4xpdn"] [ext_resource type="Script" uid="uid://c0ndqalsc4jve" path="res://Scripts/AttackPatterns/SpiralPattern.cs" id="2_ee42k"] [ext_resource type="Script" uid="uid://dslyrfcej3g2n" path="res://Scripts/Resources/BulletResource.cs" id="2_gfvud"] +[ext_resource type="Script" uid="uid://b5s5mjuk1rng5" path="res://Scripts/Resources/TimeModifier.cs" id="3_fgjeq"] [ext_resource type="PackedScene" uid="uid://dohakkayqj4w2" path="res://Scenes/Weapons/Bullets/enemyBullet_green.tscn" id="3_gr7a3"] [ext_resource type="Script" uid="uid://cbafxkmgns6ry" path="res://Scripts/Resources/PatternGroup.cs" id="3_jvysx"] @@ -38,7 +39,7 @@ DamageType = 0 OverrideControllable = false Controllable = false OverrideCreationModifier = false -TimeModifiers = [] +TimeModifiers = Array[ExtResource("3_fgjeq")]([]) WaitForCompletion = true [sub_resource type="Resource" id="Resource_wtj61"] @@ -73,7 +74,7 @@ DamageType = 0 OverrideControllable = false Controllable = false OverrideCreationModifier = false -TimeModifiers = [] +TimeModifiers = Array[ExtResource("3_fgjeq")]([]) WaitForCompletion = true [sub_resource type="Resource" id="Resource_qbq0m"] @@ -108,7 +109,7 @@ DamageType = 0 OverrideControllable = false Controllable = false OverrideCreationModifier = false -TimeModifiers = [] +TimeModifiers = Array[ExtResource("3_fgjeq")]([]) WaitForCompletion = true [resource] diff --git a/Scenes/HUD/OptionsMenu.tscn b/Scenes/HUD/OptionsMenu.tscn index c946bde1..913fac37 100644 --- a/Scenes/HUD/OptionsMenu.tscn +++ b/Scenes/HUD/OptionsMenu.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=10 format=3 uid="uid://bnhcgsyh6wfo3"] +[gd_scene load_steps=11 format=3 uid="uid://bnhcgsyh6wfo3"] [ext_resource type="Theme" uid="uid://dnsadvmunm76k" path="res://Resources/Styles/MainMenuButtons.tres" id="1_il8fq"] [ext_resource type="Script" uid="uid://c1874e6ryvd1g" path="res://Scripts/UI/OptionsMenu.cs" id="1_mpohc"] @@ -8,6 +8,7 @@ [ext_resource type="PackedScene" uid="uid://cwhm3802fhdax" path="res://Scenes/HUD/Volume_Slider.tscn" id="6_x23el"] [ext_resource type="LabelSettings" uid="uid://buk3e7bbwmnv1" path="res://Resources/Styles/Hud_Text_Style.tres" id="7_1neg2"] [ext_resource type="Script" uid="uid://nqkbxr8s5oqn" path="res://Scripts/UI/KeyRemapping.cs" id="7_mx1xt"] +[ext_resource type="PackedScene" uid="uid://j5g536m85lr8" path="res://Scenes/HUD/UiElements/KeyRemappingItem.tscn" id="8_ijs0n"] [sub_resource type="LabelSettings" id="LabelSettings_4kao5"] font = ExtResource("2_l5i2j") @@ -132,12 +133,19 @@ text = "Sound Effects Volume" layout_mode = 2 AudioBusName = &"Effects" -[node name="KeyRemapping" type="VBoxContainer" parent="ScrollContainer/VBoxContainer"] +[node name="KeyRemapping" type="VBoxContainer" parent="ScrollContainer/VBoxContainer" node_paths=PackedStringArray("KeysContainer")] layout_mode = 2 script = ExtResource("7_mx1xt") KeysDict = Dictionary[StringName, StringName]({ -&"ghg": &"hgdf" +&"Use": &"Interact", +&"inventory": &"Inventory", +&"pause": &"Pause", +&"scan": &"Scan", +&"shoot": &"Shoot", +&"strafe": &"Strafe" }) +KeysContainer = NodePath("VBoxContainer") +ItemPrefab = ExtResource("8_ijs0n") [node name="Label" type="Label" parent="ScrollContainer/VBoxContainer/KeyRemapping"] layout_mode = 2 diff --git a/Scenes/HUD/UiElements/KeyRemappingItem.tscn b/Scenes/HUD/UiElements/KeyRemappingItem.tscn new file mode 100644 index 00000000..a0c4c3ee --- /dev/null +++ b/Scenes/HUD/UiElements/KeyRemappingItem.tscn @@ -0,0 +1,27 @@ +[gd_scene load_steps=4 format=3 uid="uid://j5g536m85lr8"] + +[ext_resource type="Script" uid="uid://dn52llyqx84e0" path="res://Scripts/UI/KeyRemappingItem.cs" id="1_88k7i"] +[ext_resource type="LabelSettings" uid="uid://buk3e7bbwmnv1" path="res://Resources/Styles/Hud_Text_Style.tres" id="2_b0qgl"] +[ext_resource type="Theme" uid="uid://dnsadvmunm76k" path="res://Resources/Styles/MainMenuButtons.tres" id="3_b0qgl"] + +[node name="HBoxContainer" type="HBoxContainer" node_paths=PackedStringArray("NameLabel", "InputLabel")] +script = ExtResource("1_88k7i") +NameLabel = NodePath("ActionName") +InputLabel = NodePath("Key") + +[node name="ActionName" type="Label" parent="."] +layout_mode = 2 +text = "Asdf" +label_settings = ExtResource("2_b0qgl") + +[node name="Key" type="Label" parent="."] +layout_mode = 2 +text = "A" +label_settings = ExtResource("2_b0qgl") + +[node name="Button" type="Button" parent="."] +layout_mode = 2 +theme = ExtResource("3_b0qgl") +text = "Remap" + +[connection signal="pressed" from="Button" to="." method="StartRemap"] diff --git a/Scenes/test.tscn b/Scenes/test.tscn index 7f18be39..d2c7d073 100644 --- a/Scenes/test.tscn +++ b/Scenes/test.tscn @@ -116,7 +116,7 @@ [sub_resource type="Resource" id="Resource_6sau4"] script = ExtResource("7_l32kg") EggIndex = 0 -StartingEquipment = [ExtResource("6_khabp")] +StartingEquipment = Array[ExtResource("6_8tdlb")]([ExtResource("6_khabp")]) [sub_resource type="RectangleShape2D" id="RectangleShape2D_ksslq"] size = Vector2(184, 46.5) @@ -1082,7 +1082,7 @@ position = Vector2(-2000, -736) [node name="ControlPad8" parent="Parallax2D/Factory Tilemaps/LevelProps" node_paths=PackedStringArray("Targets") instance=ExtResource("12_hfkf1")] position = Vector2(-2027, -735) Targets = [NodePath("../HorizontalForceField")] -Requirements = [ExtResource("84_ma1ta")] +Requirements = Array[ExtResource("6_8tdlb")]([ExtResource("84_ma1ta")]) [node name="Ammo6" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("34_17pjh")] position = Vector2(-872, -220) diff --git a/Scripts/UI/KeyRemapping.cs b/Scripts/UI/KeyRemapping.cs index 66022938..3aa7dd1c 100644 --- a/Scripts/UI/KeyRemapping.cs +++ b/Scripts/UI/KeyRemapping.cs @@ -1,15 +1,30 @@ using Godot; using System; +using Cirno.Scripts.UI; using Godot.Collections; public partial class KeyRemapping : Container { [Export] public Dictionary KeysDict { get; private set; } = new(); + [Export] public Container KeysContainer { get; private set; } + + [Export] public PackedScene ItemPrefab { get; private set; } + public override void _Ready() { - var remap = GetNode("/root/Remap"); + //var remap = GetNode("/root/Remap"); //InputEvent. + + foreach (var element in KeysDict) + { + var item = ItemPrefab.Instantiate(); + + item.KeyId = element.Key; + item.KeyName = element.Value; + + KeysContainer.AddChild(item); + } } } diff --git a/Scripts/UI/KeyRemappingItem.cs b/Scripts/UI/KeyRemappingItem.cs new file mode 100644 index 00000000..4d0fc068 --- /dev/null +++ b/Scripts/UI/KeyRemappingItem.cs @@ -0,0 +1,43 @@ +using System.Linq; +using Godot; + +namespace Cirno.Scripts.UI; + +public partial class KeyRemappingItem : HBoxContainer +{ + public StringName KeyId { get; set; } + public StringName KeyName { get; set; } + + [Export] public Label NameLabel { get; private set; } + [Export] public Label InputLabel { get; private set; } + + private bool _active = false; + + public override void _Ready() + { + NameLabel.Text = KeyName; + var actions = InputMap.GetActions(); + + var action = actions.FirstOrDefault(x => x == KeyId); + var events = InputMap.ActionGetEvents(action); + + InputLabel.Text = string.Join(",", events.Select(x => x.AsText())); + } + + public void StartRemap() + { + _active = true; + } + + public override void _Input(InputEvent e) + { + if (!_active) return; + + if (e is InputEventKey keyEvent && keyEvent.Pressed) + { + GD.Print(keyEvent.Keycode); + InputLabel.Text = keyEvent.Keycode.ToString(); + _active = false; + } + } +} \ No newline at end of file diff --git a/Scripts/UI/KeyRemappingItem.cs.uid b/Scripts/UI/KeyRemappingItem.cs.uid new file mode 100644 index 00000000..64637f04 --- /dev/null +++ b/Scripts/UI/KeyRemappingItem.cs.uid @@ -0,0 +1 @@ +uid://dn52llyqx84e0