Skip to content

Commit 0ca318e

Browse files
authored
Merge pull request #76 from Project-Funk-Engine/Remap_Menu
Remap menu
2 parents 9958590 + ba77149 commit 0ca318e

33 files changed

+737
-3
lines changed

Globals/FunkEngineNameSpace.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ public enum Stages
6060
Boss,
6161
Quit,
6262
Map,
63+
Controls,
6364
}
6465

6566
public class MapGrid

Globals/StageProducer.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ public void TransitionStage(Stages nextStage, int nextRoomIdx = -1)
5959
Config = MakeConfig(nextStage, nextRoomIdx);
6060
GetTree().ChangeSceneToFile("res://scenes/BattleDirector/test_battle_scene.tscn");
6161
break;
62+
case Stages.Controls:
63+
GetTree().ChangeSceneToFile("res://scenes/Remapping/Remap.tscn");
64+
break;
6265
case Stages.Chest:
6366
Config = MakeConfig(nextStage, nextRoomIdx);
6467
GetTree().ChangeSceneToFile("res://scenes/ChestScene/ChestScene.tscn");

project.godot

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ config_version=5
1010

1111
[application]
1212

13-
config/name="Funk Engine"
1413
run/main_scene="res://scenes/SceneTransitions/TitleScreen.tscn"
1514
config/features=PackedStringArray("4.3", "C#", "Forward Plus")
1615
config/icon="res://scenes/BattleDirector/assets/Character1.png"
@@ -32,34 +31,42 @@ window/stretch/scale_mode="integer"
3231

3332
project/assembly_name="Funk Engine"
3433

34+
[game]
35+
36+
input_scheme="ARROWS"
37+
3538
[input]
3639

3740
arrowUp={
3841
"deadzone": 0.5,
3942
"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":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null)
4043
, 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":4194320,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
4144
, 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":88,"key_label":0,"unicode":120,"location":0,"echo":false,"script":null)
45+
, 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":69,"key_label":0,"unicode":101,"location":0,"echo":false,"script":null)
4246
]
4347
}
4448
arrowDown={
4549
"deadzone": 0.5,
4650
"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":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null)
4751
, 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":4194322,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
4852
, 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":67,"key_label":0,"unicode":99,"location":0,"echo":false,"script":null)
53+
, 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":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null)
4954
]
5055
}
5156
arrowLeft={
5257
"deadzone": 0.5,
5358
"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":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null)
5459
, 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":4194319,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
5560
, 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":90,"key_label":0,"unicode":122,"location":0,"echo":false,"script":null)
61+
, 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)
5662
]
5763
}
5864
arrowRight={
5965
"deadzone": 0.5,
6066
"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":4194321,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
6167
, 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":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null)
6268
, 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":86,"key_label":0,"unicode":118,"location":0,"echo":false,"script":null)
69+
, 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":82,"key_label":0,"unicode":114,"location":0,"echo":false,"script":null)
6370
]
6471
}
6572
Pause={

scenes/NoteManager/scripts/InputHandler.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,33 @@ private void InitializeArrowCheckers()
5656
public override void _Ready()
5757
{
5858
InitializeArrowCheckers();
59+
LoadControlScheme();
60+
}
61+
62+
private void LoadControlScheme()
63+
{
64+
string scheme = ProjectSettings.HasSetting("game/input_scheme")
65+
? (string)ProjectSettings.GetSetting("game/input_scheme")
66+
: "ARROWS";
67+
foreach (var arrow in Arrows)
68+
{
69+
var events = InputMap.ActionGetEvents(arrow.Key);
70+
foreach (var inputEvent in events)
71+
{
72+
InputMap.ActionEraseEvent(arrow.Key, inputEvent);
73+
}
74+
}
75+
76+
var selectedScheme = ControlSchemes.Schemes[scheme];
77+
foreach (var arrow in Arrows)
78+
{
79+
if (selectedScheme.ContainsKey(arrow.Key))
80+
{
81+
InputEventKey eventKey = new InputEventKey();
82+
eventKey.Keycode = (Key)Enum.Parse(typeof(Key), selectedScheme[arrow.Key]);
83+
InputMap.ActionAddEvent(arrow.Key, eventKey);
84+
}
85+
}
5986
}
6087

6188
public override void _Process(double delta)

scenes/Remapping/ControlSchemes.cs

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
using System.Collections.Generic;
2+
using Godot;
3+
4+
public static class ControlSchemes
5+
{
6+
public static Dictionary<string, Dictionary<string, string>> Schemes = new Dictionary<
7+
string,
8+
Dictionary<string, string>
9+
>()
10+
{
11+
{
12+
"WASD",
13+
new Dictionary<string, string>()
14+
{
15+
{ "arrowUp", "W" },
16+
{ "arrowDown", "S" },
17+
{ "arrowLeft", "A" },
18+
{ "arrowRight", "D" },
19+
}
20+
},
21+
{
22+
"ARROWS",
23+
new Dictionary<string, string>()
24+
{
25+
{ "arrowUp", "Up" },
26+
{ "arrowDown", "Down" },
27+
{ "arrowLeft", "Left" },
28+
{ "arrowRight", "Right" },
29+
}
30+
},
31+
{
32+
"QWERT",
33+
new Dictionary<string, string>()
34+
{
35+
{ "arrowUp", "E" },
36+
{ "arrowDown", "W" },
37+
{ "arrowLeft", "Q" },
38+
{ "arrowRight", "R" },
39+
}
40+
},
41+
};
42+
43+
public static Dictionary<string, Dictionary<string, string>> SpriteMappings = new Dictionary<
44+
string,
45+
Dictionary<string, string>
46+
>()
47+
{
48+
{
49+
"WASD",
50+
new Dictionary<string, string>()
51+
{
52+
{ "left", "res://scenes/Remapping/assets/A_Key_Light.png" },
53+
{ "right", "res://scenes/Remapping/assets/D_Key_Light.png" },
54+
{ "up", "res://scenes/Remapping/assets/W_Key_Light.png" },
55+
{ "down", "res://scenes/Remapping/assets/S_Key_Light.png" },
56+
}
57+
},
58+
{
59+
"ARROWS",
60+
new Dictionary<string, string>()
61+
{
62+
{ "left", "res://scenes/Remapping/assets/Arrow_Left_Key_Light.png" },
63+
{ "right", "res://scenes/Remapping/assets/Arrow_Right_Key_Light.png" },
64+
{ "up", "res://scenes/Remapping/assets/Arrow_Up_Key_Light.png" },
65+
{ "down", "res://scenes/Remapping/assets/Arrow_Down_Key_Light.png" },
66+
}
67+
},
68+
{
69+
"QWERT",
70+
new Dictionary<string, string>()
71+
{
72+
{ "left", "res://scenes/Remapping/assets/Q_Key_Light.png" },
73+
{ "right", "res://scenes/Remapping/assets/R_Key_Light.png" },
74+
{ "up", "res://scenes/Remapping/assets/E_Key_Light.png" },
75+
{ "down", "res://scenes/Remapping/assets/W_Key_Light.png" },
76+
}
77+
},
78+
};
79+
}
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
using System;
2+
using Godot;
3+
4+
public partial class ControlSettings : Node2D
5+
{
6+
[Export]
7+
public Sprite2D leftKey;
8+
9+
[Export]
10+
public Sprite2D rightKey;
11+
12+
[Export]
13+
public Sprite2D upKey;
14+
15+
[Export]
16+
public Sprite2D downKey;
17+
18+
public override void _Ready()
19+
{
20+
GetNode<Button>("Panel/WASDButton").Connect("pressed", Callable.From(OnWASDButtonPressed));
21+
GetNode<Button>("Panel/ArrowButton")
22+
.Connect("pressed", Callable.From(OnArrowButtonPressed));
23+
GetNode<Button>("Panel/QWERTButton")
24+
.Connect("pressed", Callable.From(OnQWERTButtonPressed));
25+
26+
string scheme = ProjectSettings.HasSetting("game/input_scheme")
27+
? (string)ProjectSettings.GetSetting("game/input_scheme")
28+
: "ARROWS";
29+
ChangeKeySprites(scheme);
30+
}
31+
32+
private void OnWASDButtonPressed()
33+
{
34+
GetNode<Label>("Panel/Label").Text = "WASD Selected";
35+
ProjectSettings.SetSetting("game/input_scheme", "WASD");
36+
ProjectSettings.Save();
37+
ChangeKeySprites("WASD");
38+
}
39+
40+
private void OnArrowButtonPressed()
41+
{
42+
GetNode<Label>("Panel/Label").Text = "Arrow Selected";
43+
ProjectSettings.SetSetting("game/input_scheme", "ARROWS");
44+
ProjectSettings.Save();
45+
ChangeKeySprites("ARROWS");
46+
}
47+
48+
private void OnQWERTButtonPressed()
49+
{
50+
GetNode<Label>("Panel/Label").Text = "QWERT Selected";
51+
ProjectSettings.SetSetting("game/input_scheme", "QWERT");
52+
ProjectSettings.Save();
53+
ChangeKeySprites("QWERT");
54+
}
55+
56+
private void ChangeKeySprites(string scheme)
57+
{
58+
var selectedScheme = ControlSchemes.SpriteMappings[scheme];
59+
GD.Print(scheme);
60+
leftKey.Texture = GD.Load<Texture2D>(selectedScheme["left"]);
61+
rightKey.Texture = GD.Load<Texture2D>(selectedScheme["right"]);
62+
upKey.Texture = GD.Load<Texture2D>(selectedScheme["up"]);
63+
downKey.Texture = GD.Load<Texture2D>(selectedScheme["down"]);
64+
}
65+
}

scenes/Remapping/Remap.tscn

Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
[gd_scene load_steps=9 format=3 uid="uid://bew23sumjs0fg"]
2+
3+
[ext_resource type="Script" path="res://scenes/Remapping/ControlSettings.cs" id="1_ir12b"]
4+
[ext_resource type="Script" path="res://scenes/Remapping/ControlSchemes.cs" id="1_n6sxo"]
5+
[ext_resource type="Script" path="res://scenes/SceneTransitions/scripts/SceneChange.cs" id="2_oippk"]
6+
[ext_resource type="Texture2D" uid="uid://xtygvpk7s8e4" path="res://scenes/NoteManager/assets/outline_white.png" id="4_se2m3"]
7+
[ext_resource type="Texture2D" uid="uid://cr6wtf6j6dcfg" path="res://scenes/Remapping/assets/Arrow_Left_Key_Light.png" id="5_xn13c"]
8+
[ext_resource type="Texture2D" uid="uid://q14p8ypgc43t" path="res://scenes/Remapping/assets/Arrow_Down_Key_Light.png" id="6_qrl0g"]
9+
[ext_resource type="Texture2D" uid="uid://p06451gq2ujc" path="res://scenes/Remapping/assets/Arrow_Up_Key_Light.png" id="7_1a2jy"]
10+
[ext_resource type="Texture2D" uid="uid://dvlekute37smy" path="res://scenes/Remapping/assets/Arrow_Right_Key_Light.png" id="8_o7swo"]
11+
12+
[node name="Remap" type="Node2D" node_paths=PackedStringArray("leftKey", "rightKey", "upKey", "downKey")]
13+
script = ExtResource("1_ir12b")
14+
leftKey = NodePath("Panel/Control/LeftRemap")
15+
rightKey = NodePath("Panel/Control/RightRemap")
16+
upKey = NodePath("Panel/Control/UpRemap")
17+
downKey = NodePath("Panel/Control/DownRemap")
18+
19+
[node name="Panel" type="Panel" parent="."]
20+
offset_left = 4.0
21+
offset_top = 4.0
22+
offset_right = 638.0
23+
offset_bottom = 346.0
24+
script = ExtResource("1_n6sxo")
25+
26+
[node name="Label" type="Label" parent="Panel"]
27+
layout_mode = 2
28+
offset_top = 9.0
29+
offset_right = 642.0
30+
offset_bottom = 32.0
31+
text = "Choose Control Scheme"
32+
horizontal_alignment = 1
33+
34+
[node name="WASDButton" type="Button" parent="Panel"]
35+
layout_mode = 2
36+
offset_left = 453.0
37+
offset_top = 66.0
38+
offset_right = 558.0
39+
offset_bottom = 97.0
40+
text = "WASD"
41+
42+
[node name="ArrowButton" type="Button" parent="Panel"]
43+
layout_mode = 0
44+
offset_left = 458.0
45+
offset_top = 111.0
46+
offset_right = 554.0
47+
offset_bottom = 142.0
48+
text = "Arrow Keys"
49+
50+
[node name="QWERTButton" type="Button" parent="Panel"]
51+
layout_mode = 0
52+
offset_left = 459.0
53+
offset_top = 152.0
54+
offset_right = 555.0
55+
offset_bottom = 183.0
56+
text = "QWER"
57+
58+
[node name="TitleButton" type="Button" parent="Panel"]
59+
layout_mode = 0
60+
offset_left = 431.0
61+
offset_top = 291.0
62+
offset_right = 607.0
63+
offset_bottom = 322.0
64+
text = "Return to Title Screen"
65+
script = ExtResource("2_oippk")
66+
67+
[node name="Control" type="Control" parent="Panel"]
68+
layout_mode = 3
69+
anchors_preset = 0
70+
offset_left = -4.0
71+
offset_top = -4.0
72+
offset_right = 36.0
73+
offset_bottom = 36.0
74+
75+
[node name="Right" type="Sprite2D" parent="Panel/Control"]
76+
position = Vector2(67, 85)
77+
rotation = -3.14159
78+
texture = ExtResource("4_se2m3")
79+
80+
[node name="Left" type="Sprite2D" parent="Panel/Control"]
81+
position = Vector2(67, 139)
82+
rotation = 1.5708
83+
texture = ExtResource("4_se2m3")
84+
85+
[node name="Up" type="Sprite2D" parent="Panel/Control"]
86+
position = Vector2(67, 196)
87+
rotation = -1.5708
88+
texture = ExtResource("4_se2m3")
89+
90+
[node name="Down" type="Sprite2D" parent="Panel/Control"]
91+
position = Vector2(68, 249)
92+
texture = ExtResource("4_se2m3")
93+
94+
[node name="Label" type="Label" parent="Panel/Control"]
95+
offset_left = 95.0
96+
offset_top = 74.0
97+
offset_right = 108.0
98+
offset_bottom = 97.0
99+
text = "="
100+
101+
[node name="Label2" type="Label" parent="Panel/Control"]
102+
offset_left = 94.0
103+
offset_top = 128.0
104+
offset_right = 107.0
105+
offset_bottom = 151.0
106+
text = "="
107+
108+
[node name="Label3" type="Label" parent="Panel/Control"]
109+
offset_left = 96.0
110+
offset_top = 187.0
111+
offset_right = 109.0
112+
offset_bottom = 210.0
113+
text = "="
114+
115+
[node name="Label4" type="Label" parent="Panel/Control"]
116+
offset_left = 96.0
117+
offset_top = 239.0
118+
offset_right = 109.0
119+
offset_bottom = 262.0
120+
text = "="
121+
122+
[node name="LeftRemap" type="Sprite2D" parent="Panel/Control"]
123+
position = Vector2(147, 87)
124+
scale = Vector2(0.62, 0.62)
125+
texture = ExtResource("5_xn13c")
126+
127+
[node name="DownRemap" type="Sprite2D" parent="Panel/Control"]
128+
position = Vector2(148, 139)
129+
scale = Vector2(0.62, 0.62)
130+
texture = ExtResource("6_qrl0g")
131+
132+
[node name="UpRemap" type="Sprite2D" parent="Panel/Control"]
133+
position = Vector2(148, 197)
134+
scale = Vector2(0.62, 0.62)
135+
texture = ExtResource("7_1a2jy")
136+
137+
[node name="RightRemap" type="Sprite2D" parent="Panel/Control"]
138+
position = Vector2(150, 255)
139+
scale = Vector2(0.62, 0.62)
140+
texture = ExtResource("8_o7swo")
1.66 KB
Loading

0 commit comments

Comments
 (0)