Skip to content

Commit ae42dc9

Browse files
authored
Merge branch 'Sprint-3' into Note_Feedback
2 parents 988fd97 + 12f211c commit ae42dc9

34 files changed

+741
-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");

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,4 @@ Current team members include:
1515

1616
#### Attributions:
1717
First Song: <a href="https://freesound.org/people/Magntron/sounds/335571/" title="gameMusic">gameMusic by Magntron - freesound.org</a>
18+
Input buttons by <a href="https://thoseawesomeguys.com/prompts/" title="inputkeys">Nicolae (Xelu) Berbece</a>

project.godot

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

1111
[application]
1212

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

3333
project/assembly_name="Funk Engine"
3434

35+
[game]
36+
37+
input_scheme="QWERT"
38+
3539
[input]
3640

3741
arrowUp={
3842
"deadzone": 0.5,
3943
"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)
4044
, 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)
4145
, 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)
46+
, 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)
4247
]
4348
}
4449
arrowDown={
4550
"deadzone": 0.5,
4651
"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)
4752
, 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)
4853
, 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)
54+
, 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)
4955
]
5056
}
5157
arrowLeft={
5258
"deadzone": 0.5,
5359
"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)
5460
, 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)
5561
, 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)
62+
, 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)
5663
]
5764
}
5865
arrowRight={
5966
"deadzone": 0.5,
6067
"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)
6168
, 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)
6269
, 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)
70+
, 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)
6371
]
6472
}
6573
Pause={

scenes/NoteManager/scripts/InputHandler.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,33 @@ public void FeedbackEffect(ArrowType arrow, string text)
8181
public override void _Ready()
8282
{
8383
InitializeArrowCheckers();
84+
LoadControlScheme();
85+
}
86+
87+
private void LoadControlScheme()
88+
{
89+
string scheme = ProjectSettings.HasSetting("game/input_scheme")
90+
? (string)ProjectSettings.GetSetting("game/input_scheme")
91+
: "ARROWS";
92+
foreach (var arrow in Arrows)
93+
{
94+
var events = InputMap.ActionGetEvents(arrow.Key);
95+
foreach (var inputEvent in events)
96+
{
97+
InputMap.ActionEraseEvent(arrow.Key, inputEvent);
98+
}
99+
}
100+
101+
var selectedScheme = ControlSchemes.Schemes[scheme];
102+
foreach (var arrow in Arrows)
103+
{
104+
if (selectedScheme.ContainsKey(arrow.Key))
105+
{
106+
InputEventKey eventKey = new InputEventKey();
107+
eventKey.Keycode = (Key)Enum.Parse(typeof(Key), selectedScheme[arrow.Key]);
108+
InputMap.ActionAddEvent(arrow.Key, eventKey);
109+
}
110+
}
84111
}
85112

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

0 commit comments

Comments
 (0)