Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
243 changes: 237 additions & 6 deletions Globals/SaveSystem.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System;
using System.Linq;
using System.Text.Json;
using Godot;
Expand All @@ -13,14 +14,38 @@ public static class SaveSystem
private static ConfigFile _curConfigData;

private const float DefaultVolume = 1f;
private const string DefaultInput = "WASD";
private const string DefaultInputType = "WASD";
private const int DefaultInputKeyboardUp = 87; //W
private const int DefaultInputKeyboardLeft = 65; //A
private const int DefaultInputKeyboardDown = 83; //S
private const int DefaultInputKeyboardRight = 68; //D
private const int DefaultInputKeyboardSecondary = 4194325; //Shift
private const int DefaultInputKeyboardInventory = 73; //I
private const int DefaultInputControllerUp = 3; //Y
private const int DefaultInputControllerLeft = 2; //X
private const int DefaultInputControllerDown = 0; //A
private const int DefaultInputControllerRight = 1; //B
private const int DefaultInputControllerSecondary = 10; //right bumper
private const int DefaultInputControllerInventory = 4; //back button
private const string DefaultLanguage = "en";
private const bool DefaultHighCon = false;

public enum ConfigSettings
{
Volume,
InputKey,
InputType,
InputKeyboardUp,
InputKeyboardLeft,
InputKeyboardDown,
InputKeyboardRight,
InputKeyboardSecondary,
InputKeyboardInventory,
InputControllerUp,
InputControllerLeft,
InputControllerDown,
InputControllerRight,
InputControllerSecondary,
InputControllerInventory,
LanguageKey,
HighContrast,
}
Expand All @@ -32,7 +57,19 @@ private static void InitConfig()
{
_curConfigData = new ConfigFile();
UpdateConfig(ConfigSettings.Volume, DefaultVolume);
UpdateConfig(ConfigSettings.InputKey, DefaultInput);
UpdateConfig(ConfigSettings.InputType, DefaultInputType);
UpdateConfig(ConfigSettings.InputKeyboardUp, DefaultInputKeyboardUp);
UpdateConfig(ConfigSettings.InputKeyboardLeft, DefaultInputKeyboardLeft);
UpdateConfig(ConfigSettings.InputKeyboardDown, DefaultInputKeyboardDown);
UpdateConfig(ConfigSettings.InputKeyboardRight, DefaultInputKeyboardRight);
UpdateConfig(ConfigSettings.InputKeyboardSecondary, DefaultInputKeyboardSecondary);
UpdateConfig(ConfigSettings.InputKeyboardInventory, DefaultInputKeyboardInventory);
UpdateConfig(ConfigSettings.InputControllerUp, DefaultInputControllerUp);
UpdateConfig(ConfigSettings.InputControllerLeft, DefaultInputControllerLeft);
UpdateConfig(ConfigSettings.InputControllerDown, DefaultInputControllerDown);
UpdateConfig(ConfigSettings.InputControllerRight, DefaultInputControllerRight);
UpdateConfig(ConfigSettings.InputControllerSecondary, DefaultInputControllerSecondary);
UpdateConfig(ConfigSettings.InputControllerInventory, DefaultInputControllerInventory);
UpdateConfig(ConfigSettings.LanguageKey, DefaultLanguage);
UpdateConfig(ConfigSettings.HighContrast, DefaultHighCon);
}
Expand All @@ -51,9 +88,45 @@ public static void UpdateConfig(ConfigSettings setting, Variant value)
case ConfigSettings.Volume:
_curConfigData.SetValue("Options", "Volume", value);
break;
case ConfigSettings.InputKey:
case ConfigSettings.InputType:
_curConfigData.SetValue("Options", "InputKey", value);
break;
case ConfigSettings.InputKeyboardUp:
_curConfigData.SetValue("Options", "InputKeyboardUp", value);
break;
case ConfigSettings.InputKeyboardLeft:
_curConfigData.SetValue("Options", "InputKeyboardLeft", value);
break;
case ConfigSettings.InputKeyboardDown:
_curConfigData.SetValue("Options", "InputKeyboardDown", value);
break;
case ConfigSettings.InputKeyboardRight:
_curConfigData.SetValue("Options", "InputKeyboardRight", value);
break;
case ConfigSettings.InputKeyboardSecondary:
_curConfigData.SetValue("Options", "InputKeyboardSecondary", value);
break;
case ConfigSettings.InputKeyboardInventory:
_curConfigData.SetValue("Options", "InputKeyboardInventory", value);
break;
case ConfigSettings.InputControllerUp:
_curConfigData.SetValue("Options", "InputControllerUp", value);
break;
case ConfigSettings.InputControllerLeft:
_curConfigData.SetValue("Options", "InputControllerLeft", value);
break;
case ConfigSettings.InputControllerDown:
_curConfigData.SetValue("Options", "InputControllerDown", value);
break;
case ConfigSettings.InputControllerRight:
_curConfigData.SetValue("Options", "InputControllerRight", value);
break;
case ConfigSettings.InputControllerSecondary:
_curConfigData.SetValue("Options", "InputControllerSecondary", value);
break;
case ConfigSettings.InputControllerInventory:
_curConfigData.SetValue("Options", "InputControllerInventory", value);
break;
case ConfigSettings.LanguageKey:
_curConfigData.SetValue("Options", "LanguageKey", value);
break;
Expand All @@ -74,6 +147,7 @@ private static void AssertConfigFile()
if (_curConfigData == null)
{
LoadConfigData();
ApplySavedInputBindings();
}
}

Expand Down Expand Up @@ -118,8 +192,80 @@ public static Variant GetConfigValue(ConfigSettings setting)
{
case ConfigSettings.Volume:
return _curConfigData.GetValue("Options", "Volume", DefaultVolume);
case ConfigSettings.InputKey:
return _curConfigData.GetValue("Options", "InputKey", DefaultInput);
case ConfigSettings.InputType:
return _curConfigData.GetValue("Options", "InputKey", DefaultInputType);
case ConfigSettings.InputKeyboardUp:
return _curConfigData.GetValue(
"Options",
"InputKeyboardUp",
DefaultInputKeyboardUp
);
case ConfigSettings.InputKeyboardLeft:
return _curConfigData.GetValue(
"Options",
"InputKeyboardLeft",
DefaultInputKeyboardLeft
);
case ConfigSettings.InputKeyboardDown:
return _curConfigData.GetValue(
"Options",
"InputKeyboardDown",
DefaultInputKeyboardDown
);
case ConfigSettings.InputKeyboardRight:
return _curConfigData.GetValue(
"Options",
"InputKeyboardRight",
DefaultInputKeyboardRight
);
case ConfigSettings.InputKeyboardSecondary:
return _curConfigData.GetValue(
"Options",
"InputKeyboardSecondary",
DefaultInputKeyboardSecondary
);
case ConfigSettings.InputKeyboardInventory:
return _curConfigData.GetValue(
"Options",
"InputKeyboardInventory",
DefaultInputKeyboardInventory
);
case ConfigSettings.InputControllerUp:
return _curConfigData.GetValue(
"Options",
"InputControllerUp",
DefaultInputControllerUp
);
case ConfigSettings.InputControllerLeft:
return _curConfigData.GetValue(
"Options",
"InputControllerLeft",
DefaultInputControllerLeft
);
case ConfigSettings.InputControllerDown:
return _curConfigData.GetValue(
"Options",
"InputControllerDown",
DefaultInputControllerDown
);
case ConfigSettings.InputControllerRight:
return _curConfigData.GetValue(
"Options",
"InputControllerRight",
DefaultInputControllerRight
);
case ConfigSettings.InputControllerSecondary:
return _curConfigData.GetValue(
"Options",
"InputControllerSecondary",
DefaultInputControllerSecondary
);
case ConfigSettings.InputControllerInventory:
return _curConfigData.GetValue(
"Options",
"InputControllerInventory",
DefaultInputControllerInventory
);
case ConfigSettings.LanguageKey:
return _curConfigData.GetValue("Options", "LanguageKey", DefaultLanguage);
case ConfigSettings.HighContrast:
Expand Down Expand Up @@ -212,5 +358,90 @@ public static void ClearSave()
DirAccess.RemoveAbsolute(UserSavePath);
}

public static void ApplySavedInputBindings()
{
InputMap.ActionEraseEvents("WASD_arrowUp");
InputMap.ActionEraseEvents("WASD_arrowDown");
InputMap.ActionEraseEvents("WASD_arrowRight");
InputMap.ActionEraseEvents("WASD_arrowLeft");
InputMap.ActionEraseEvents("WASD_secondaryPlacement");
InputMap.ActionEraseEvents("WASD_inventory");
InputMap.ActionEraseEvents("CONTROLLER_arrowUp");
InputMap.ActionEraseEvents("CONTROLLER_arrowDown");
InputMap.ActionEraseEvents("CONTROLLER_arrowLeft");
InputMap.ActionEraseEvents("CONTROLLER_arrowRight");
InputMap.ActionEraseEvents("CONTROLLER_secondaryPlacement");
InputMap.ActionEraseEvents("CONTROLLER_inventory");

// Keyboard bindings
AddKeyBinding("WASD_arrowUp", GetConfigValue(ConfigSettings.InputKeyboardUp).ToString());
AddKeyBinding(
"WASD_arrowDown",
GetConfigValue(ConfigSettings.InputKeyboardDown).ToString()
);
AddKeyBinding(
"WASD_arrowLeft",
GetConfigValue(ConfigSettings.InputKeyboardLeft).ToString()
);
AddKeyBinding(
"WASD_arrowRight",
GetConfigValue(ConfigSettings.InputKeyboardRight).ToString()
);
AddKeyBinding(
"WASD_secondaryPlacement",
GetConfigValue(ConfigSettings.InputKeyboardSecondary).ToString()
);
AddKeyBinding(
"WASD_inventory",
GetConfigValue(ConfigSettings.InputKeyboardInventory).ToString()
);

// Controller bindings
AddJoypadBinding(
"CONTROLLER_arrowUp",
GetConfigValue(ConfigSettings.InputControllerUp).ToString()
);
AddJoypadBinding(
"CONTROLLER_arrowDown",
GetConfigValue(ConfigSettings.InputControllerDown).ToString()
);
AddJoypadBinding(
"CONTROLLER_arrowLeft",
GetConfigValue(ConfigSettings.InputControllerLeft).ToString()
);
AddJoypadBinding(
"CONTROLLER_arrowRight",
GetConfigValue(ConfigSettings.InputControllerRight).ToString()
);
AddJoypadBinding(
"CONTROLLER_secondaryPlacement",
GetConfigValue(ConfigSettings.InputControllerSecondary).ToString()
);
AddJoypadBinding(
"CONTROLLER_inventory",
GetConfigValue(ConfigSettings.InputControllerInventory).ToString()
);
}

private static void AddKeyBinding(string action, string keyString)
{
Key key = (Key)Enum.Parse(typeof(Key), keyString, ignoreCase: true);
InputEventKey inputEvent = new InputEventKey { PhysicalKeycode = key };
InputMap.ActionAddEvent(action, inputEvent);
}

private static void AddJoypadBinding(string action, string buttonString)
{
if (Enum.TryParse<JoyButton>(buttonString, true, out JoyButton button))
{
InputEventJoypadButton inputEvent = new InputEventJoypadButton { ButtonIndex = button };
InputMap.ActionAddEvent(action, inputEvent);
}
else
{
GD.PushWarning($"Could not parse joypad button: {buttonString}");
}
}

#endregion
}
5 changes: 4 additions & 1 deletion Globals/Translations/Translations.csv
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,13 @@ CONTROLS_TITLE_TYPE_QWER,QWERT,QWERT
CONTROLS_TITLE_TYPE_ARROW,Arrow,箭头键
CONTROLS_TITLE_SELECTED,Selected,已选择
CONTROLS_WASD_BUTTON,WASD,WASD
CONTROLS_CONTROLLER_BUTTON,Controller,控制杆
CONTROLS_CONTROLLER,Controller,控制杆
CONTROLS_KEYBOARD,Keyboard,键盘
CONTROLS_QWER_BUTTON,QWER,QWER
CONTROLS_ARROW_BUTTON,Arrow Keys,箭头键
CONTROLS_RETURN_BUTTON,Return,返回
CONTROLS_CHOOSE_SCHEME,Choose Control Scheme,选择控制方式
CONTROLS_CHOOSE_BUTTON,Choose new button,选择输入按钮
ESCAPE_MENU_RESUME,Resume,继续
ESCAPE_MENU_QUIT,Quit,退出
ESCAPE_MENU_TITLE,Quit to Title,返回标题
Expand Down
5 changes: 4 additions & 1 deletion Scenes/BattleDirector/Scripts/NotePlacementBar.cs
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,10 @@ public Note NotePlaced()
{
if (!CanPlaceNote())
GD.PushWarning("Note is attempting placement without a full bar!");
Note placedNote = GetNote(Input.IsActionPressed("Secondary"));
string inputType = SaveSystem
.GetConfigValue(SaveSystem.ConfigSettings.InputType)
.ToString();
Note placedNote = GetNote(Input.IsActionPressed(inputType + "_secondaryPlacement"));
CurrentBarValue -= placedNote.CostModifier * MaxValue;
ClearColors();
return placedNote;
Expand Down
6 changes: 3 additions & 3 deletions Scenes/NoteManager/Scripts/InputHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,10 @@ public override void _Ready()
public override void _Process(double delta)
{
//TODO: Add change control scheme signal, so we don't query each frame.
string scheme = SaveSystem.GetConfigValue(SaveSystem.ConfigSettings.InputKey).As<string>();
string scheme = SaveSystem.GetConfigValue(SaveSystem.ConfigSettings.InputType).As<string>();
if (Input.GetConnectedJoypads().Count <= 0 && scheme == "CONTROLLER")
{
SaveSystem.UpdateConfig(SaveSystem.ConfigSettings.InputKey, "ARROWS");
SaveSystem.UpdateConfig(SaveSystem.ConfigSettings.InputType, "WASD");
}

foreach (var arrow in Arrows)
Expand All @@ -83,7 +83,7 @@ public override void _UnhandledInput(InputEvent @event)
{
if (@event is InputEventJoypadButton)
{ //Force Controller if controller was pressed
SaveSystem.UpdateConfig(SaveSystem.ConfigSettings.InputKey, "CONTROLLER");
SaveSystem.UpdateConfig(SaveSystem.ConfigSettings.InputType, "CONTROLLER");
}
}

Expand Down
Binary file added Scenes/UI/Remapping/Assets/0.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
34 changes: 34 additions & 0 deletions Scenes/UI/Remapping/Assets/0.png.import
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
[remap]

importer="texture"
type="CompressedTexture2D"
uid="uid://du6l1dklrpnoc"
path="res://.godot/imported/0.png-540ce6679faede97a0ff081ab0106872.ctex"
metadata={
"vram_texture": false
}

[deps]

source_file="res://Scenes/UI/Remapping/Assets/0.png"
dest_files=["res://.godot/imported/0.png-540ce6679faede97a0ff081ab0106872.ctex"]

[params]

compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file added Scenes/UI/Remapping/Assets/1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading