implement control grabbing
This commit is contained in:
parent
85e21d8468
commit
4291cf92b8
11 changed files with 988 additions and 42 deletions
79
Ryujinx.UI/Configuration/DefaultSettings.cs
Normal file
79
Ryujinx.UI/Configuration/DefaultSettings.cs
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace Ryujinx.UI.Configuration
|
||||||
|
{
|
||||||
|
partial class Settings
|
||||||
|
{
|
||||||
|
public Dictionary<string, object> DefaultSettings
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
Dictionary<string, object> Defaults = new Dictionary<string, object>()
|
||||||
|
{
|
||||||
|
{ "Enable_Memory_Checks", false},
|
||||||
|
{ "Graphics_Shaders_Dump_Path", string.Empty },
|
||||||
|
{ "Logging_Enable_Debug" , false},
|
||||||
|
{ "Logging_Enable_Stub" , true},
|
||||||
|
{ "Logging_Enable_Info", true },
|
||||||
|
{ "Logging_Enable_Warn", true},
|
||||||
|
{ "Logging_Enable_Error", true },
|
||||||
|
{ "Logging_Filtered_Classes", string.Empty},
|
||||||
|
{ "Docked_Mode", false},
|
||||||
|
{ "Enable_Vsync", true},
|
||||||
|
{ "Enable_MultiCore_Scheduling", false},
|
||||||
|
{ "Enable_FS_Integrity_Checks", true},
|
||||||
|
{ "GamePad_Index", 0},
|
||||||
|
{ "GamePad_Deadzone", 0.05},
|
||||||
|
{ "GamePad_Trigger_Threshold", 0.5},
|
||||||
|
{ "GamePad_Enable", true},
|
||||||
|
{ "Controls_Left_JoyConKeyboard_Stick_Up", 105 },
|
||||||
|
{ "Controls_Left_JoyConKeyboard_Stick_Down", 101 },
|
||||||
|
{ "Controls_Left_JoyConKeyboard_Stick_Left", 83 },
|
||||||
|
{ "Controls_Left_JoyConKeyboard_Stick_Right", 86 },
|
||||||
|
{ "Controls_Left_JoyConKeyboard_Stick_Button", 88 },
|
||||||
|
{ "Controls_Left_JoyConKeyboard_DPad_Up", 45 },
|
||||||
|
{ "Controls_Left_JoyConKeyboard_DPad_Down", 46 },
|
||||||
|
{ "Controls_Left_JoyConKeyboard_DPad_Left", 47 },
|
||||||
|
{ "Controls_Left_JoyConKeyboard_DPad_Right", 48 },
|
||||||
|
{ "Controls_Left_JoyConKeyboard_Button_Minus", 120 },
|
||||||
|
{ "Controls_Left_JoyConKeyboard_Button_L", 87 },
|
||||||
|
{ "Controls_Left_JoyConKeyboard_Button_ZL", 99 },
|
||||||
|
{ "Controls_Right_JoyConKeyboard_Stick_Up", 91 },
|
||||||
|
{ "Controls_Right_JoyConKeyboard_Stick_Down", 93 },
|
||||||
|
{ "Controls_Right_JoyConKeyboard_Stick_Left", 92 },
|
||||||
|
{ "Controls_Right_JoyConKeyboard_Stick_Right", 94 },
|
||||||
|
{ "Controls_Right_JoyConKeyboard_Stick_Button", 90 },
|
||||||
|
{ "Controls_Right_JoyConKeyboard_Button_A", 108 },
|
||||||
|
{ "Controls_Right_JoyConKeyboard_Button_B", 106 },
|
||||||
|
{ "Controls_Right_JoyConKeyboard_Button_X", 85 },
|
||||||
|
{ "Controls_Right_JoyConKeyboard_Button_Y", 104 },
|
||||||
|
{ "Controls_Right_JoyConKeyboard_Button_Plus", 121 },
|
||||||
|
{ "Controls_Right_JoyConKeyboard_Button_R", 103 },
|
||||||
|
{ "Controls_Right_JoyConKeyboard_Button_ZR", 97 },
|
||||||
|
{ "Controls_Left_JoyConController_Stick_Button", "LStick"},
|
||||||
|
{ "Controls_Left_JoyConController_DPad_Up", "DPadUp" },
|
||||||
|
{ "Controls_Left_JoyConController_DPad_Down", "DPadDown" },
|
||||||
|
{ "Controls_Left_JoyConController_DPad_Left", "DPadLeft" },
|
||||||
|
{ "Controls_Left_JoyConController_DPad_Right", "DPadRight" },
|
||||||
|
{ "Controls_Left_JoyConController_Button_Minus", "Back" },
|
||||||
|
{ "Controls_Left_JoyConController_Button_L", "LShoulder" },
|
||||||
|
{ "Controls_Left_JoyConController_Button_ZL", "LTrigger" },
|
||||||
|
{ "Controls_Right_JoyConController_Stick_Button", "RStick" },
|
||||||
|
{ "Controls_Right_JoyConController_Button_A", "B" },
|
||||||
|
{ "Controls_Right_JoyConController_Button_B", "A" },
|
||||||
|
{ "Controls_Right_JoyConController_Button_X", "Y" },
|
||||||
|
{ "Controls_Right_JoyConController_Button_Y", "X" },
|
||||||
|
{ "Controls_Right_JoyConController_Button_Plus", "Start" },
|
||||||
|
{ "Controls_Right_JoyConController_Button_R", "RShoulder" },
|
||||||
|
{ "Controls_Right_JoyConController_Button_ZR", "RTrigger" },
|
||||||
|
{ "Controls_Left_JoyConController_Stick", "LJoystick" },
|
||||||
|
{ "Controls_Right_JoyConController_Stick", "RJoystick" }
|
||||||
|
};
|
||||||
|
|
||||||
|
return Defaults;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
202
Ryujinx.UI/Configuration/Settings.cs
Normal file
202
Ryujinx.UI/Configuration/Settings.cs
Normal file
|
@ -0,0 +1,202 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
using System.IO;
|
||||||
|
using Newtonsoft.Json.Serialization;
|
||||||
|
using Newtonsoft.Json.Converters;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using Ryujinx.HLE;
|
||||||
|
using Ryujinx.HLE;
|
||||||
|
using Ryujinx.HLE.Logging;
|
||||||
|
using Ryujinx.UI.Input;
|
||||||
|
using System;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
using static Ryujinx.Config;
|
||||||
|
|
||||||
|
namespace Ryujinx.UI.Configuration
|
||||||
|
{
|
||||||
|
public partial class Settings
|
||||||
|
{
|
||||||
|
private string Path;
|
||||||
|
|
||||||
|
private Dictionary<string, object> SettingsDictionary { get; set; }
|
||||||
|
|
||||||
|
public Settings(string Path)
|
||||||
|
{
|
||||||
|
if (!File.Exists(Path))
|
||||||
|
{
|
||||||
|
SettingsDictionary = DefaultSettings;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
string SettingsString = File.ReadAllText(Path);
|
||||||
|
|
||||||
|
SettingsDictionary = JsonConvert.DeserializeObject<Dictionary<string, object>>(SettingsString);
|
||||||
|
|
||||||
|
foreach((string Key, object Value) in DefaultSettings)
|
||||||
|
{
|
||||||
|
if (!SettingsDictionary.ContainsKey(Key))
|
||||||
|
{
|
||||||
|
SettingsDictionary.TryAdd(Key, Value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.Path = Path;
|
||||||
|
}
|
||||||
|
|
||||||
|
public T GetValue<T>(string Key)
|
||||||
|
{
|
||||||
|
object Value = null;
|
||||||
|
|
||||||
|
if (!SettingsDictionary.TryGetValue(Key, out Value))
|
||||||
|
{
|
||||||
|
if (DefaultSettings.TryGetValue(Key, out Value))
|
||||||
|
{
|
||||||
|
SettingsDictionary.TryAdd(Key, Value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return (T)Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Apply(Switch Device)
|
||||||
|
{
|
||||||
|
if (Device != null)
|
||||||
|
{
|
||||||
|
GraphicsConfig.ShadersDumpPath = GetValue<string>("Graphics_Shaders_Dump_Path");
|
||||||
|
|
||||||
|
Device.Log.SetEnable(LogLevel.Debug, GetValue<bool>("Logging_Enable_Debug"));
|
||||||
|
Device.Log.SetEnable(LogLevel.Stub, GetValue<bool>("Logging_Enable_Stub"));
|
||||||
|
Device.Log.SetEnable(LogLevel.Info, GetValue<bool>("Logging_Enable_Info"));
|
||||||
|
Device.Log.SetEnable(LogLevel.Warning, GetValue<bool>("Logging_Enable_Warn"));
|
||||||
|
Device.Log.SetEnable(LogLevel.Error, GetValue<bool>("Logging_Enable_Error"));
|
||||||
|
|
||||||
|
string[] FilteredLogClasses = GetValue<string>("Logging_Filtered_Classes").Split(',', StringSplitOptions.RemoveEmptyEntries);
|
||||||
|
|
||||||
|
//When the classes are specified on the list, we only
|
||||||
|
//enable the classes that are on the list.
|
||||||
|
//So, first disable everything, then enable
|
||||||
|
//the classes that the user added to the list.
|
||||||
|
if (FilteredLogClasses.Length > 0)
|
||||||
|
{
|
||||||
|
foreach (LogClass Class in Enum.GetValues(typeof(LogClass)))
|
||||||
|
{
|
||||||
|
Device.Log.SetEnable(Class, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (string LogClass in FilteredLogClasses)
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(LogClass.Trim()))
|
||||||
|
{
|
||||||
|
foreach (LogClass Class in Enum.GetValues(typeof(LogClass)))
|
||||||
|
{
|
||||||
|
if (Class.ToString().ToLower().Contains(LogClass.Trim().ToLower()))
|
||||||
|
{
|
||||||
|
Device.Log.SetEnable(Class, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Device.System.State.DockedMode = GetValue<bool>("Docked_Mode");
|
||||||
|
Device.EnableDeviceVsync = GetValue<bool>("Enable_Vsync");
|
||||||
|
|
||||||
|
if (GetValue<bool>("Enable_MultiCore_Scheduling"))
|
||||||
|
{
|
||||||
|
Device.System.EnableMultiCoreScheduling();
|
||||||
|
}
|
||||||
|
|
||||||
|
Device.System.EnableFsIntegrityChecks = GetValue<bool>("Enable_FS_Integrity_Checks");
|
||||||
|
|
||||||
|
Config.JoyConKeyboard = new JoyConKeyboard(
|
||||||
|
|
||||||
|
new JoyConKeyboardLeft
|
||||||
|
{
|
||||||
|
StickUp = GetValue<short>("Controls_Left_JoyConKeyboard_Stick_Up"),
|
||||||
|
StickDown = GetValue<short>("Controls_Left_JoyConKeyboard_Stick_Down"),
|
||||||
|
StickLeft = GetValue<short>("Controls_Left_JoyConKeyboard_Stick_Left"),
|
||||||
|
StickRight = GetValue<short>("Controls_Left_JoyConKeyboard_Stick_Right"),
|
||||||
|
StickButton = GetValue<short>("Controls_Left_JoyConKeyboard_Stick_Button"),
|
||||||
|
DPadUp = GetValue<short>("Controls_Left_JoyConKeyboard_DPad_Up"),
|
||||||
|
DPadDown = GetValue<short>("Controls_Left_JoyConKeyboard_DPad_Down"),
|
||||||
|
DPadLeft = GetValue<short>("Controls_Left_JoyConKeyboard_DPad_Left"),
|
||||||
|
DPadRight = GetValue<short>("Controls_Left_JoyConKeyboard_DPad_Right"),
|
||||||
|
ButtonMinus = GetValue<short>("Controls_Left_JoyConKeyboard_Button_Minus"),
|
||||||
|
ButtonL = GetValue<short>("Controls_Left_JoyConKeyboard_Button_L"),
|
||||||
|
ButtonZL = GetValue<short>("Controls_Left_JoyConKeyboard_Button_ZL")
|
||||||
|
},
|
||||||
|
|
||||||
|
new JoyConKeyboardRight
|
||||||
|
{
|
||||||
|
StickUp = GetValue<short>("Controls_Right_JoyConKeyboard_Stick_Up"),
|
||||||
|
StickDown = GetValue<short>("Controls_Right_JoyConKeyboard_Stick_Down"),
|
||||||
|
StickLeft = GetValue<short>("Controls_Right_JoyConKeyboard_Stick_Left"),
|
||||||
|
StickRight = GetValue<short>("Controls_Right_JoyConKeyboard_Stick_Right"),
|
||||||
|
StickButton = GetValue<short>("Controls_Right_JoyConKeyboard_Stick_Button"),
|
||||||
|
ButtonA = GetValue<short>("Controls_Right_JoyConKeyboard_Button_A"),
|
||||||
|
ButtonB = GetValue<short>("Controls_Right_JoyConKeyboard_Button_B"),
|
||||||
|
ButtonX = GetValue<short>("Controls_Right_JoyConKeyboard_Button_X"),
|
||||||
|
ButtonY = GetValue<short>("Controls_Right_JoyConKeyboard_Button_Y"),
|
||||||
|
ButtonPlus = GetValue<short>("Controls_Right_JoyConKeyboard_Button_Plus"),
|
||||||
|
ButtonR = GetValue<short>("Controls_Right_JoyConKeyboard_Button_R"),
|
||||||
|
ButtonZR = GetValue<short>("Controls_Right_JoyConKeyboard_Button_ZR")
|
||||||
|
});
|
||||||
|
|
||||||
|
Config.JoyConController = new JoyConController(
|
||||||
|
|
||||||
|
GetValue<bool>("GamePad_Enable"),
|
||||||
|
GetValue<int>("GamePad_Index"),
|
||||||
|
(float)Convert.ToDouble(GetValue<float>("GamePad_Deadzone"), CultureInfo.InvariantCulture),
|
||||||
|
(float)Convert.ToDouble(GetValue<float>("GamePad_Trigger_Threshold"), CultureInfo.InvariantCulture),
|
||||||
|
|
||||||
|
new JoyConControllerLeft
|
||||||
|
{
|
||||||
|
Stick = ToID(GetValue<string>("Controls_Left_JoyConController_Stick")),
|
||||||
|
StickButton = ToID(GetValue<string>("Controls_Left_JoyConController_Stick_Button")),
|
||||||
|
DPadUp = ToID(GetValue<string>("Controls_Left_JoyConController_DPad_Up")),
|
||||||
|
DPadDown = ToID(GetValue<string>("Controls_Left_JoyConController_DPad_Down")),
|
||||||
|
DPadLeft = ToID(GetValue<string>("Controls_Left_JoyConController_DPad_Left")),
|
||||||
|
DPadRight = ToID(GetValue<string>("Controls_Left_JoyConController_DPad_Right")),
|
||||||
|
ButtonMinus = ToID(GetValue<string>("Controls_Left_JoyConController_Button_Minus")),
|
||||||
|
ButtonL = ToID(GetValue<string>("Controls_Left_JoyConController_Button_L")),
|
||||||
|
ButtonZL = ToID(GetValue<string>("Controls_Left_JoyConController_Button_ZL"))
|
||||||
|
},
|
||||||
|
|
||||||
|
new JoyConControllerRight
|
||||||
|
{
|
||||||
|
Stick = ToID(GetValue<string>("Controls_Right_JoyConController_Stick")),
|
||||||
|
StickButton = ToID(GetValue<string>("Controls_Right_JoyConController_Stick_Button")),
|
||||||
|
ButtonA = ToID(GetValue<string>("Controls_Right_JoyConController_Button_A")),
|
||||||
|
ButtonB = ToID(GetValue<string>("Controls_Right_JoyConController_Button_B")),
|
||||||
|
ButtonX = ToID(GetValue<string>("Controls_Right_JoyConController_Button_X")),
|
||||||
|
ButtonY = ToID(GetValue<string>("Controls_Right_JoyConController_Button_Y")),
|
||||||
|
ButtonPlus = ToID(GetValue<string>("Controls_Right_JoyConController_Button_Plus")),
|
||||||
|
ButtonR = ToID(GetValue<string>("Controls_Right_JoyConController_Button_R")),
|
||||||
|
ButtonZR = ToID(GetValue<string>("Controls_Right_JoyConController_Button_ZR"))
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal void SetValue(string Key, object Value)
|
||||||
|
{
|
||||||
|
SettingsDictionary[Key] = Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Commit()
|
||||||
|
{
|
||||||
|
lock (Path)
|
||||||
|
{
|
||||||
|
string SettingsString = JsonConvert.SerializeObject(SettingsDictionary);
|
||||||
|
|
||||||
|
File.WriteAllText(Path, SettingsString);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -16,8 +16,9 @@ namespace Ryujinx.UI.Emulation
|
||||||
[Signal("unloaded")]
|
[Signal("unloaded")]
|
||||||
class EmulationController
|
class EmulationController
|
||||||
{
|
{
|
||||||
|
public static Switch Device;
|
||||||
|
|
||||||
private static GLScreen RenderScreen;
|
private static GLScreen RenderScreen;
|
||||||
private static Switch Device;
|
|
||||||
private static IAalOutput AudioOut;
|
private static IAalOutput AudioOut;
|
||||||
private static IGalRenderer Renderer;
|
private static IGalRenderer Renderer;
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
using Qml.Net;
|
using Qml.Net;
|
||||||
using Ryujinx.UI.Emulation;
|
using Ryujinx.UI.Emulation;
|
||||||
|
using Ryujinx.UI.UI.Models;
|
||||||
|
using OpenTK.Platform;
|
||||||
|
|
||||||
using static Qml.Net.Qml;
|
using static Qml.Net.Qml;
|
||||||
|
|
||||||
|
@ -16,9 +18,12 @@ namespace Ryujinx.UI
|
||||||
using (var QmlEngine = new QQmlApplicationEngine())
|
using (var QmlEngine = new QQmlApplicationEngine())
|
||||||
{
|
{
|
||||||
RegisterType<EmulationController>("Ryujinx");
|
RegisterType<EmulationController>("Ryujinx");
|
||||||
|
RegisterType<ConfigurationModel>("Ryujinx");
|
||||||
|
|
||||||
QmlEngine.Load("UI/MainWindow.qml");
|
QmlEngine.Load("UI/MainWindow.qml");
|
||||||
|
|
||||||
|
OpenTK.Toolkit.Init();
|
||||||
|
|
||||||
return Application.Exec();
|
return Application.Exec();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,15 +6,13 @@
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="OpenTK.NetStandard" Version="1.0.4" />
|
<PackageReference Include="Newtonsoft.Json" Version="11.0.2" />
|
||||||
|
<PackageReference Include="OpenTK.NetStandard" Version="1.0.7-prerelease" />
|
||||||
<PackageReference Include="Qml.Net" Version="0.6.2" />
|
<PackageReference Include="Qml.Net" Version="0.6.2" />
|
||||||
<PackageReference Include="Qml.Net.LinuxBinaries" Version="0.6.2" />
|
|
||||||
<PackageReference Include="Qml.Net.OSXBinaries" Version="0.6.2" />
|
|
||||||
<PackageReference Include="Qml.Net.WindowsBinaries" Version="0.6.2" />
|
<PackageReference Include="Qml.Net.WindowsBinaries" Version="0.6.2" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Folder Include="UI\Models\" />
|
|
||||||
<Folder Include="UI\Views\" />
|
<Folder Include="UI\Views\" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|
258
Ryujinx.UI/UI/Models/ConfigurationModel.cs
Normal file
258
Ryujinx.UI/UI/Models/ConfigurationModel.cs
Normal file
|
@ -0,0 +1,258 @@
|
||||||
|
using OpenTK.Graphics;
|
||||||
|
using OpenTK.Input;
|
||||||
|
using OpenTK;
|
||||||
|
using Qml.Net;
|
||||||
|
using Ryujinx.UI.Configuration;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Threading;
|
||||||
|
|
||||||
|
using static OpenTK.Input.Keyboard;
|
||||||
|
|
||||||
|
namespace Ryujinx.UI.UI.Models
|
||||||
|
{
|
||||||
|
[Signal("waitReleased")]
|
||||||
|
[Signal("showWaitDialog")]
|
||||||
|
public class ConfigurationModel
|
||||||
|
{
|
||||||
|
private static Settings CurrentSettings;
|
||||||
|
|
||||||
|
private static GamePadState[] GamePadStates;
|
||||||
|
|
||||||
|
private bool IsWaiting;
|
||||||
|
|
||||||
|
public ConfigurationModel()
|
||||||
|
{
|
||||||
|
if(CurrentSettings == null)
|
||||||
|
{
|
||||||
|
string Path = "./Ryujinx.json";
|
||||||
|
|
||||||
|
CurrentSettings = new Settings(Path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Save()
|
||||||
|
{
|
||||||
|
CurrentSettings.Apply(Emulation.EmulationController.Device);
|
||||||
|
|
||||||
|
CurrentSettings.Commit();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Discard()
|
||||||
|
{
|
||||||
|
CurrentSettings = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ReleaseWait()
|
||||||
|
{
|
||||||
|
IsWaiting = false;
|
||||||
|
|
||||||
|
this.ActivateSignal("waitReleased");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RefreshInputDevices()
|
||||||
|
{
|
||||||
|
int GamePadIndex = 0;
|
||||||
|
|
||||||
|
List<GamePadState> GamePads = new List<GamePadState>();
|
||||||
|
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
GamePadState State = GamePad.GetState(GamePadIndex);
|
||||||
|
|
||||||
|
if (State.IsConnected)
|
||||||
|
{
|
||||||
|
GamePads.Add(State);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
GamePadIndex++;
|
||||||
|
}
|
||||||
|
|
||||||
|
GamePadStates = GamePads.ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetValue(string Key,object Value)
|
||||||
|
{
|
||||||
|
CurrentSettings.SetValue(Key, Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public object GetValue(string Key)
|
||||||
|
{
|
||||||
|
return CurrentSettings.GetValue<object>(Key);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetKeyboardKey(string Key)
|
||||||
|
{
|
||||||
|
Key KeyCode = (Key)GetValue(Key);
|
||||||
|
|
||||||
|
return Enum.GetName(typeof(Key), KeyCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<string> GetKeyboardInput(string SettingKey)
|
||||||
|
{
|
||||||
|
if (IsWaiting)
|
||||||
|
{
|
||||||
|
return string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.ActivateSignal("showWaitDialog");
|
||||||
|
|
||||||
|
IsWaiting = true;
|
||||||
|
|
||||||
|
Key Key = default(Key);
|
||||||
|
|
||||||
|
bool GotKey = false;
|
||||||
|
|
||||||
|
while (IsWaiting)
|
||||||
|
{
|
||||||
|
await Task.Delay(16);
|
||||||
|
|
||||||
|
KeyboardState Keyboard = GetState();
|
||||||
|
|
||||||
|
if (Keyboard.IsAnyKeyDown)
|
||||||
|
{
|
||||||
|
foreach (Key KeyCode in Enum.GetValues(typeof(Key)))
|
||||||
|
{
|
||||||
|
if (Keyboard.IsKeyDown(KeyCode))
|
||||||
|
{
|
||||||
|
Key = KeyCode;
|
||||||
|
|
||||||
|
GotKey = true;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (GotKey)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!GotKey)
|
||||||
|
{
|
||||||
|
return string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
CurrentSettings.SetValue(SettingKey, (short)Key);
|
||||||
|
|
||||||
|
ReleaseWait();
|
||||||
|
|
||||||
|
return Enum.GetName(typeof(Key), Key);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<string> GetGamePadInput(string SettingKey, int GamePadIndex)
|
||||||
|
{
|
||||||
|
float TriggerThreshold = CurrentSettings.GetValue<float>("GamePad_Trigger_Threshold");
|
||||||
|
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
await Task.Delay(33);
|
||||||
|
|
||||||
|
RefreshInputDevices();
|
||||||
|
|
||||||
|
if (GamePadIndex >= GamePadStates.Length)
|
||||||
|
{
|
||||||
|
// TODO :throw error here
|
||||||
|
|
||||||
|
return string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(GamePadStates[GamePadIndex].Buttons.IsAnyButtonPressed)
|
||||||
|
{
|
||||||
|
if (GamePadStates[GamePadIndex].Buttons.A == ButtonState.Pressed)
|
||||||
|
{
|
||||||
|
CurrentSettings.SetValue(SettingKey, "A");
|
||||||
|
|
||||||
|
return "A";
|
||||||
|
}
|
||||||
|
if (GamePadStates[GamePadIndex].Buttons.B == ButtonState.Pressed)
|
||||||
|
{
|
||||||
|
CurrentSettings.SetValue(SettingKey, "B");
|
||||||
|
|
||||||
|
return "B";
|
||||||
|
}
|
||||||
|
if (GamePadStates[GamePadIndex].Buttons.X == ButtonState.Pressed)
|
||||||
|
{
|
||||||
|
CurrentSettings.SetValue(SettingKey, "X");
|
||||||
|
|
||||||
|
return "X";
|
||||||
|
}
|
||||||
|
if (GamePadStates[GamePadIndex].Buttons.Y == ButtonState.Pressed)
|
||||||
|
{
|
||||||
|
CurrentSettings.SetValue(SettingKey, "Y");
|
||||||
|
|
||||||
|
return "Y";
|
||||||
|
}
|
||||||
|
if (GamePadStates[GamePadIndex].Buttons.LeftShoulder == ButtonState.Pressed)
|
||||||
|
{
|
||||||
|
CurrentSettings.SetValue(SettingKey, "LShoulder");
|
||||||
|
|
||||||
|
return "LShoulder";
|
||||||
|
}
|
||||||
|
if (GamePadStates[GamePadIndex].Buttons.RightShoulder == ButtonState.Pressed)
|
||||||
|
{
|
||||||
|
CurrentSettings.SetValue(SettingKey, "RShoulder");
|
||||||
|
|
||||||
|
return "RShoulder";
|
||||||
|
}
|
||||||
|
if (GamePadStates[GamePadIndex].Buttons.LeftStick == ButtonState.Pressed)
|
||||||
|
{
|
||||||
|
CurrentSettings.SetValue(SettingKey, "LStick");
|
||||||
|
|
||||||
|
return "LStick";
|
||||||
|
}
|
||||||
|
if (GamePadStates[GamePadIndex].Buttons.RightStick == ButtonState.Pressed)
|
||||||
|
{
|
||||||
|
CurrentSettings.SetValue(SettingKey, "RStick");
|
||||||
|
|
||||||
|
return "RStick";
|
||||||
|
}
|
||||||
|
if (GamePadStates[GamePadIndex].Buttons.Start == ButtonState.Pressed)
|
||||||
|
{
|
||||||
|
CurrentSettings.SetValue(SettingKey, "Start");
|
||||||
|
|
||||||
|
return "Start";
|
||||||
|
}
|
||||||
|
if (GamePadStates[GamePadIndex].Buttons.Back == ButtonState.Pressed)
|
||||||
|
{
|
||||||
|
CurrentSettings.SetValue(SettingKey, "Back");
|
||||||
|
|
||||||
|
return "Back";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (GamePadStates[GamePadIndex].DPad.IsUp)
|
||||||
|
{
|
||||||
|
CurrentSettings.SetValue(SettingKey, "DPadUp");
|
||||||
|
|
||||||
|
return "A";
|
||||||
|
}
|
||||||
|
else if (GamePadStates[GamePadIndex].DPad.IsDown)
|
||||||
|
{
|
||||||
|
CurrentSettings.SetValue(SettingKey, "DPadDown");
|
||||||
|
|
||||||
|
return "DPadDown";
|
||||||
|
}
|
||||||
|
else if (GamePadStates[GamePadIndex].DPad.IsLeft)
|
||||||
|
{
|
||||||
|
CurrentSettings.SetValue(SettingKey, "DPadLeft");
|
||||||
|
|
||||||
|
return "DPadLeft";
|
||||||
|
}
|
||||||
|
else if (GamePadStates[GamePadIndex].DPad.IsRight)
|
||||||
|
{
|
||||||
|
CurrentSettings.SetValue(SettingKey, "DPadRight");
|
||||||
|
|
||||||
|
return "DPadRight";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -3,6 +3,7 @@ import QtQuick.Window 2.11
|
||||||
import QtQuick.Layouts 1.3
|
import QtQuick.Layouts 1.3
|
||||||
import QtQuick.Templates 2.4
|
import QtQuick.Templates 2.4
|
||||||
import QtQuick.Controls 2.3
|
import QtQuick.Controls 2.3
|
||||||
|
import Ryujinx 1.0
|
||||||
|
|
||||||
Window {
|
Window {
|
||||||
id: configWindow
|
id: configWindow
|
||||||
|
@ -12,6 +13,10 @@ Window {
|
||||||
title: "Configuration"
|
title: "Configuration"
|
||||||
modality: Qt.ApplicationModal
|
modality: Qt.ApplicationModal
|
||||||
|
|
||||||
|
onClosing: {
|
||||||
|
configModel.dispose()
|
||||||
|
}
|
||||||
|
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
spacing: 10
|
spacing: 10
|
||||||
id: contentColumn
|
id: contentColumn
|
||||||
|
@ -102,6 +107,7 @@ Window {
|
||||||
text: "OK"
|
text: "OK"
|
||||||
|
|
||||||
onClicked: {
|
onClicked: {
|
||||||
|
configModel.save()
|
||||||
|
|
||||||
configWindow.close()
|
configWindow.close()
|
||||||
}
|
}
|
||||||
|
@ -115,10 +121,15 @@ Window {
|
||||||
visible: true
|
visible: true
|
||||||
|
|
||||||
onClicked: {
|
onClicked: {
|
||||||
|
configModel.discard()
|
||||||
|
|
||||||
configWindow.close()
|
configWindow.close()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ConfigurationModel {
|
||||||
|
id: configModel
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
import QtQuick.Controls 2.3
|
import QtQuick.Controls 2.3
|
||||||
import QtQuick.Layouts 1.3
|
import QtQuick.Layouts 1.3
|
||||||
|
import Ryujinx 1.0
|
||||||
|
|
||||||
Frame {
|
Frame {
|
||||||
id: generalSetttingsFrame
|
id: generalSetttingsFrame
|
||||||
|
@ -16,12 +17,24 @@ Frame {
|
||||||
id: dockedCheckBox
|
id: dockedCheckBox
|
||||||
text: "Enable Docked Mode"
|
text: "Enable Docked Mode"
|
||||||
|
|
||||||
|
checked: configModel.getValue("Docked_Mode")
|
||||||
|
|
||||||
|
onCheckedChanged: {
|
||||||
|
configModel.setValue("Docked_Mode", checked)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CheckBox {
|
CheckBox {
|
||||||
id: vsyncCheckBox
|
id: vsyncCheckBox
|
||||||
text: "Enable Ingame VSync"
|
text: "Enable Ingame VSync"
|
||||||
|
|
||||||
|
checked: configModel.getValue("Enable_Vsync")
|
||||||
|
|
||||||
|
onCheckedChanged: {
|
||||||
|
configModel.setValue("Enable_Vsync", checked)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -32,17 +45,45 @@ Frame {
|
||||||
Column {
|
Column {
|
||||||
CheckBox {
|
CheckBox {
|
||||||
id: memoryCheckBox
|
id: memoryCheckBox
|
||||||
text: "Enable Memory Checks"
|
text: "Enable Memory Checks (slow)"
|
||||||
|
|
||||||
|
checked: configModel.getValue("Enable_Memory_Checks")
|
||||||
|
|
||||||
|
onCheckedChanged: {
|
||||||
|
configModel.setValue("Enable_Memory_Checks", checked)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CheckBox {
|
CheckBox {
|
||||||
id: multiCoreCheckBox
|
id: multiCoreCheckBox
|
||||||
text: "Enable Multi-Core Scheduling"
|
text: "Enable MultiCore Scheduling"
|
||||||
|
|
||||||
|
checked: configModel.getValue("Enable_MultiCore_Scheduling")
|
||||||
|
|
||||||
|
onCheckedChanged: {
|
||||||
|
configModel.setValue("Enable_MultiCore_Scheduling", checked)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
CheckBox {
|
||||||
|
id: fsIntegrityCheckBox
|
||||||
|
text: "Enable RomFS Integrity Checks"
|
||||||
|
|
||||||
|
checked: configModel.getValue("Enable_FS_Integrity_Checks")
|
||||||
|
|
||||||
|
onCheckedChanged: {
|
||||||
|
configModel.setValue("Enable_FS_Integrity_Checks", checked)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ConfigurationModel {
|
||||||
|
id:configModel
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
import QtQuick.Controls 2.3
|
import QtQuick.Controls 2.3
|
||||||
import QtQuick.Layouts 1.3
|
import QtQuick.Layouts 1.3
|
||||||
|
import QtQuick.Dialogs 1.3
|
||||||
|
import Ryujinx 1.0
|
||||||
|
|
||||||
Frame {
|
Frame {
|
||||||
id: keyboardSettingsFrame
|
id: keyboardSettingsFrame
|
||||||
|
@ -42,10 +44,22 @@ Frame {
|
||||||
}
|
}
|
||||||
|
|
||||||
Button {
|
Button {
|
||||||
text: "Up"
|
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
id: leftStickUpButton
|
id: leftStickUpButton
|
||||||
|
|
||||||
|
text: configModel.getKeyboardKey("Controls_Left_JoyConKeyboard_Stick_Up")
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
var task = configModel.getKeyboardInput
|
||||||
|
("Controls_Left_JoyConKeyboard_Stick_Up")
|
||||||
|
Net.await(task, function(result){
|
||||||
|
if(result !== "")
|
||||||
|
{
|
||||||
|
text = result
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -60,10 +74,22 @@ Frame {
|
||||||
}
|
}
|
||||||
|
|
||||||
Button {
|
Button {
|
||||||
text: "Down"
|
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
id: leftStickDownButton
|
id: leftStickDownButton
|
||||||
|
|
||||||
|
text: configModel.getKeyboardKey("Controls_Left_JoyConKeyboard_Stick_Down")
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
var task = configModel.getKeyboardInput
|
||||||
|
("Controls_Left_JoyConKeyboard_Stick_Down")
|
||||||
|
Net.await(task, function(result){
|
||||||
|
if(result !== "")
|
||||||
|
{
|
||||||
|
text = result
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -78,10 +104,22 @@ Frame {
|
||||||
}
|
}
|
||||||
|
|
||||||
Button {
|
Button {
|
||||||
text: "Left"
|
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
id: leftStickLeftButton
|
id: leftStickLeftButton
|
||||||
|
|
||||||
|
text: configModel.getKeyboardKey("Controls_Left_JoyConKeyboard_Stick_Left")
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
var task = configModel.getKeyboardInput
|
||||||
|
("Controls_Left_JoyConKeyboard_Stick_Left")
|
||||||
|
Net.await(task, function(result){
|
||||||
|
if(result !== "")
|
||||||
|
{
|
||||||
|
text = result
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -97,10 +135,22 @@ Frame {
|
||||||
}
|
}
|
||||||
|
|
||||||
Button {
|
Button {
|
||||||
text: "Right"
|
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
id: leftStickRightButton
|
id: leftStickRightButton
|
||||||
|
|
||||||
|
text: configModel.getKeyboardKey("Controls_Left_JoyConKeyboard_Stick_Right")
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
var task = configModel.getKeyboardInput
|
||||||
|
("Controls_Left_JoyConKeyboard_Stick_Right")
|
||||||
|
Net.await(task, function(result){
|
||||||
|
if(result !== "")
|
||||||
|
{
|
||||||
|
text = result
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -115,10 +165,22 @@ Frame {
|
||||||
}
|
}
|
||||||
|
|
||||||
Button {
|
Button {
|
||||||
text: "Button"
|
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
id: leftStickButton
|
id: leftStickButton
|
||||||
|
|
||||||
|
text: configModel.getKeyboardKey("Controls_Left_JoyConKeyboard_Stick_Button")
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
var task = configModel.getKeyboardInput
|
||||||
|
("Controls_Left_JoyConKeyboard_Stick_Button")
|
||||||
|
Net.await(task, function(result){
|
||||||
|
if(result !== "")
|
||||||
|
{
|
||||||
|
text = result
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -145,10 +207,22 @@ Frame {
|
||||||
}
|
}
|
||||||
|
|
||||||
Button {
|
Button {
|
||||||
text: "Up"
|
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
id: leftDPadUpButton
|
id: leftDPadUpButton
|
||||||
|
|
||||||
|
text: configModel.getKeyboardKey("Controls_Left_JoyConKeyboard_DPad_Up")
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
var task = configModel.getKeyboardInput
|
||||||
|
("Controls_Left_JoyConKeyboard_DPad_Up")
|
||||||
|
Net.await(task, function(result){
|
||||||
|
if(result !== "")
|
||||||
|
{
|
||||||
|
text = result
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -163,10 +237,22 @@ Frame {
|
||||||
}
|
}
|
||||||
|
|
||||||
Button {
|
Button {
|
||||||
text: "Down"
|
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
id: leftDPadDownButton
|
id: leftDPadDownButton
|
||||||
|
|
||||||
|
text: configModel.getKeyboardKey("Controls_Left_JoyConKeyboard_DPad_Down")
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
var task = configModel.getKeyboardInput
|
||||||
|
("Controls_Left_JoyConKeyboard_DPad_Down")
|
||||||
|
Net.await(task, function(result){
|
||||||
|
if(result !== "")
|
||||||
|
{
|
||||||
|
text = result
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -181,10 +267,22 @@ Frame {
|
||||||
}
|
}
|
||||||
|
|
||||||
Button {
|
Button {
|
||||||
text: "Left"
|
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
id: leftDPadLeftButton
|
id: leftDPadLeftButton
|
||||||
|
|
||||||
|
text: configModel.getKeyboardKey("Controls_Left_JoyConKeyboard_DPad_Left")
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
var task = configModel.getKeyboardInput
|
||||||
|
("Controls_Left_JoyConKeyboard_DPad_Left")
|
||||||
|
Net.await(task, function(result){
|
||||||
|
if(result !== "")
|
||||||
|
{
|
||||||
|
text = result
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -200,10 +298,22 @@ Frame {
|
||||||
}
|
}
|
||||||
|
|
||||||
Button {
|
Button {
|
||||||
text: "Right"
|
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
id: leftDPadRightButton
|
id: leftDPadRightButton
|
||||||
|
|
||||||
|
text: configModel.getKeyboardKey("Controls_Left_JoyConKeyboard_DPad_Right")
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
var task = configModel.getKeyboardInput
|
||||||
|
("Controls_Left_JoyConKeyboard_DPad_Right")
|
||||||
|
Net.await(task, function(result){
|
||||||
|
if(result !== "")
|
||||||
|
{
|
||||||
|
text = result
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -232,10 +342,22 @@ Frame {
|
||||||
}
|
}
|
||||||
|
|
||||||
Button {
|
Button {
|
||||||
text: "L"
|
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
id: lButton
|
id: lButton
|
||||||
|
|
||||||
|
text: configModel.getKeyboardKey("Controls_Left_JoyConKeyboard_Button_L")
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
var task = configModel.getKeyboardInput
|
||||||
|
("Controls_Left_JoyConKeyboard_Button_L")
|
||||||
|
Net.await(task, function(result){
|
||||||
|
if(result !== "")
|
||||||
|
{
|
||||||
|
text = result
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -250,10 +372,22 @@ Frame {
|
||||||
}
|
}
|
||||||
|
|
||||||
Button {
|
Button {
|
||||||
text: "ZL"
|
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
id: zLButton
|
id: zLButton
|
||||||
|
|
||||||
|
text: configModel.getKeyboardKey("Controls_Left_JoyConKeyboard_Button_ZL")
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
var task = configModel.getKeyboardInput
|
||||||
|
("Controls_Left_JoyConKeyboard_Button_ZL")
|
||||||
|
Net.await(task, function(result){
|
||||||
|
if(result !== "")
|
||||||
|
{
|
||||||
|
text = result
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -269,10 +403,22 @@ Frame {
|
||||||
}
|
}
|
||||||
|
|
||||||
Button {
|
Button {
|
||||||
text: "-"
|
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
id: minusButton
|
id: minusButton
|
||||||
|
|
||||||
|
text: configModel.getKeyboardKey("Controls_Left_JoyConKeyboard_Button_Minus")
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
var task = configModel.getKeyboardInput
|
||||||
|
("Controls_Left_JoyConKeyboard_Button_Minus")
|
||||||
|
Net.await(task, function(result){
|
||||||
|
if(result !== "")
|
||||||
|
{
|
||||||
|
text = result
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -311,10 +457,22 @@ Frame {
|
||||||
}
|
}
|
||||||
|
|
||||||
Button {
|
Button {
|
||||||
text: "Up"
|
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
id: rightStickUpButton
|
id: rightStickUpButton
|
||||||
|
|
||||||
|
text: configModel.getKeyboardKey("Controls_Right_JoyConKeyboard_Stick_Up")
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
var task = configModel.getKeyboardInput
|
||||||
|
("Controls_Right_JoyConKeyboard_Stick_Up")
|
||||||
|
Net.await(task, function(result){
|
||||||
|
if(result !== "")
|
||||||
|
{
|
||||||
|
text = result
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -329,10 +487,22 @@ Frame {
|
||||||
}
|
}
|
||||||
|
|
||||||
Button {
|
Button {
|
||||||
text: "Down"
|
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
id: rightStickDownButton
|
id: rightStickDownButton
|
||||||
|
|
||||||
|
text: configModel.getKeyboardKey("Controls_Right_JoyConKeyboard_Stick_Down")
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
var task = configModel.getKeyboardInput
|
||||||
|
("Controls_Right_JoyConKeyboard_Stick_Down")
|
||||||
|
Net.await(task, function(result){
|
||||||
|
if(result !== "")
|
||||||
|
{
|
||||||
|
text = result
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -347,10 +517,22 @@ Frame {
|
||||||
}
|
}
|
||||||
|
|
||||||
Button {
|
Button {
|
||||||
text: "Left"
|
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
id: rightStickLeftButton
|
id: rightStickLeftButton
|
||||||
|
|
||||||
|
text: configModel.getKeyboardKey("Controls_Right_JoyConKeyboard_Stick_Left")
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
var task = configModel.getKeyboardInput
|
||||||
|
("Controls_Right_JoyConKeyboard_Stick_Left")
|
||||||
|
Net.await(task, function(result){
|
||||||
|
if(result !== "")
|
||||||
|
{
|
||||||
|
text = result
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -366,10 +548,22 @@ Frame {
|
||||||
}
|
}
|
||||||
|
|
||||||
Button {
|
Button {
|
||||||
text: "Right"
|
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
id: rightStickRightButton
|
id: rightStickRightButton
|
||||||
|
|
||||||
|
text: configModel.getKeyboardKey("Controls_Right_JoyConKeyboard_Stick_Right")
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
var task = configModel.getKeyboardInput
|
||||||
|
("Controls_Right_JoyConKeyboard_Stick_Right")
|
||||||
|
Net.await(task, function(result){
|
||||||
|
if(result !== "")
|
||||||
|
{
|
||||||
|
text = result
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -384,10 +578,22 @@ Frame {
|
||||||
}
|
}
|
||||||
|
|
||||||
Button {
|
Button {
|
||||||
text: "Button"
|
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
id: rightStickButton
|
id: rightStickButton
|
||||||
|
|
||||||
|
text: configModel.getKeyboardKey("Controls_Right_JoyConKeyboard_Stick_Button")
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
var task = configModel.getKeyboardInput
|
||||||
|
("Controls_Right_JoyConKeyboard_Stick_Button")
|
||||||
|
Net.await(task, function(result){
|
||||||
|
if(result !== "")
|
||||||
|
{
|
||||||
|
text = result
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -414,10 +620,22 @@ Frame {
|
||||||
}
|
}
|
||||||
|
|
||||||
Button {
|
Button {
|
||||||
text: "X"
|
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
id: xButton
|
id: xButton
|
||||||
|
|
||||||
|
text: configModel.getKeyboardKey("Controls_Right_JoyConKeyboard_Button_X")
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
var task = configModel.getKeyboardInput
|
||||||
|
("Controls_Right_JoyConKeyboard_Button_X")
|
||||||
|
Net.await(task, function(result){
|
||||||
|
if(result !== "")
|
||||||
|
{
|
||||||
|
text = result
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -432,10 +650,22 @@ Frame {
|
||||||
}
|
}
|
||||||
|
|
||||||
Button {
|
Button {
|
||||||
text: "B"
|
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
id: bButton
|
id: bButton
|
||||||
|
|
||||||
|
text: configModel.getKeyboardKey("Controls_Right_JoyConKeyboard_Button_B")
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
var task = configModel.getKeyboardInput
|
||||||
|
("Controls_Right_JoyConKeyboard_Button_B")
|
||||||
|
Net.await(task, function(result){
|
||||||
|
if(result !== "")
|
||||||
|
{
|
||||||
|
text = result
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -450,10 +680,22 @@ Frame {
|
||||||
}
|
}
|
||||||
|
|
||||||
Button {
|
Button {
|
||||||
text: "Y"
|
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
id: yButton
|
id: yButton
|
||||||
|
|
||||||
|
text: configModel.getKeyboardKey("Controls_Right_JoyConKeyboard_Button_Y")
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
var task = configModel.getKeyboardInput
|
||||||
|
("Controls_Right_JoyConKeyboard_Button_Y")
|
||||||
|
Net.await(task, function(result){
|
||||||
|
if(result !== "")
|
||||||
|
{
|
||||||
|
text = result
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -469,10 +711,22 @@ Frame {
|
||||||
}
|
}
|
||||||
|
|
||||||
Button {
|
Button {
|
||||||
text: "A"
|
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
id: aButton
|
id: aButton
|
||||||
|
|
||||||
|
text: configModel.getKeyboardKey("Controls_Right_JoyConKeyboard_Button_A")
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
var task = configModel.getKeyboardInput
|
||||||
|
("Controls_Right_JoyConKeyboard_Button_A")
|
||||||
|
Net.await(task, function(result){
|
||||||
|
if(result !== "")
|
||||||
|
{
|
||||||
|
text = result
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -501,10 +755,22 @@ Frame {
|
||||||
}
|
}
|
||||||
|
|
||||||
Button {
|
Button {
|
||||||
text: "L"
|
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
id: rButton
|
id: rButton
|
||||||
|
|
||||||
|
text: configModel.getKeyboardKey("Controls_Right_JoyConKeyboard_Button_R")
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
var task = configModel.getKeyboardInput
|
||||||
|
("Controls_Right_JoyConKeyboard_Button_R")
|
||||||
|
Net.await(task, function(result){
|
||||||
|
if(result !== "")
|
||||||
|
{
|
||||||
|
text = result
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -519,10 +785,22 @@ Frame {
|
||||||
}
|
}
|
||||||
|
|
||||||
Button {
|
Button {
|
||||||
text: "ZL"
|
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
id: zRButton
|
id: zRButton
|
||||||
|
|
||||||
|
text: configModel.getKeyboardKey("Controls_Right_JoyConKeyboard_Button_ZR")
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
var task = configModel.getKeyboardInput
|
||||||
|
("Controls_Right_JoyConKeyboard_Button_ZR")
|
||||||
|
Net.await(task, function(result){
|
||||||
|
if(result !== "")
|
||||||
|
{
|
||||||
|
text = result
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -538,10 +816,22 @@ Frame {
|
||||||
}
|
}
|
||||||
|
|
||||||
Button {
|
Button {
|
||||||
text: "+"
|
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
id: plusButton
|
id: plusButton
|
||||||
|
|
||||||
|
text: configModel.getKeyboardKey("Controls_Right_JoyConKeyboard_Button_Plus")
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
var task = configModel.getKeyboardInput
|
||||||
|
("Controls_Right_JoyConKeyboard_Button_Plus")
|
||||||
|
Net.await(task, function(result){
|
||||||
|
if(result !== "")
|
||||||
|
{
|
||||||
|
text = result
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -550,4 +840,28 @@ Frame {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MessageDialog {
|
||||||
|
id: inputWaitMessageDialog
|
||||||
|
text: "Please press a key..."
|
||||||
|
standardButtons: StandardButton.Close
|
||||||
|
|
||||||
|
onRejected: {
|
||||||
|
configModel.releaseWait()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ConfigurationModel {
|
||||||
|
id: configModel
|
||||||
|
|
||||||
|
onWaitReleased: {
|
||||||
|
if(inputWaitMessageDialog.visible){
|
||||||
|
inputWaitMessageDialog.close()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onShowWaitDialog: {
|
||||||
|
inputWaitMessageDialog.open()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
import QtQuick.Controls 2.3
|
import QtQuick.Controls 2.3
|
||||||
import QtQuick.Layouts 1.3
|
import QtQuick.Layouts 1.3
|
||||||
|
import Ryujinx 1.0
|
||||||
|
|
||||||
Frame {
|
Frame {
|
||||||
id: miscSettingsFrame
|
id: miscSettingsFrame
|
||||||
|
@ -18,13 +19,6 @@ Frame {
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
id: column
|
id: column
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
CheckBox {
|
|
||||||
id: loggingCheckBox
|
|
||||||
text: "Enable Logging"
|
|
||||||
Layout.fillHeight: false
|
|
||||||
Layout.fillWidth: true
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
id: row
|
id: row
|
||||||
|
@ -43,26 +37,56 @@ Frame {
|
||||||
CheckBox {
|
CheckBox {
|
||||||
id: debugLogCheckBox
|
id: debugLogCheckBox
|
||||||
text: "Debug"
|
text: "Debug"
|
||||||
|
|
||||||
|
checked: configModel.getValue("Logging_Enable_Debug")
|
||||||
|
|
||||||
|
onCheckedChanged: {
|
||||||
|
configModel.setValue("Logging_Enable_Debug", checked)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CheckBox {
|
CheckBox {
|
||||||
id: stubLogCheckBox
|
id: stubLogCheckBox
|
||||||
text: "Stub"
|
text: "Stub"
|
||||||
|
|
||||||
|
checked: configModel.getValue("Logging_Enable_Stub")
|
||||||
|
|
||||||
|
onCheckedChanged: {
|
||||||
|
configModel.setValue("Logging_Enable_Stub", checked)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CheckBox {
|
CheckBox {
|
||||||
id: infoLogCheckBox
|
id: infoLogCheckBox
|
||||||
text: "Info"
|
text: "Info"
|
||||||
|
|
||||||
|
checked: configModel.getValue("Logging_Enable_Info")
|
||||||
|
|
||||||
|
onCheckedChanged: {
|
||||||
|
configModel.setValue("Logging_Enable_Info", checked)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CheckBox {
|
CheckBox {
|
||||||
id: warnLogCheckBox
|
id: warnLogCheckBox
|
||||||
text: "Warning"
|
text: "Warning"
|
||||||
|
|
||||||
|
checked: configModel.getValue("Logging_Enable_Warn")
|
||||||
|
|
||||||
|
onCheckedChanged: {
|
||||||
|
configModel.setValue("Logging_Enable_Warn", checked)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CheckBox {
|
CheckBox {
|
||||||
id: errorLogCheckBox
|
id: errorLogCheckBox
|
||||||
text: "Error"
|
text: "Error"
|
||||||
|
|
||||||
|
checked: configModel.getValue("Logging_Enable_Error")
|
||||||
|
|
||||||
|
onCheckedChanged: {
|
||||||
|
configModel.setValue("Logging_Enable_Error", checked)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -73,11 +97,20 @@ Frame {
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
TextEdit {
|
TextArea {
|
||||||
id: logClassesTextArea
|
id: logClassesTextArea
|
||||||
selectionColor: "#004a80"
|
selectionColor: "#004a80"
|
||||||
renderType: Text.NativeRendering
|
renderType: Text.NativeRendering
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
background: Rectangle {
|
||||||
|
color: "#ffffff"
|
||||||
|
}
|
||||||
|
|
||||||
|
text: configModel.getValue("Logging_Filtered_Classes")
|
||||||
|
|
||||||
|
onEditingFinished: {
|
||||||
|
configModel.setValue("Logging_Filtered_Classes", text)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -86,4 +119,8 @@ Frame {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ConfigurationModel {
|
||||||
|
id: configModel
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,8 +12,8 @@ namespace Ryujinx
|
||||||
{
|
{
|
||||||
public static class Config
|
public static class Config
|
||||||
{
|
{
|
||||||
public static JoyConKeyboard JoyConKeyboard { get; private set; }
|
public static JoyConKeyboard JoyConKeyboard { get; set; }
|
||||||
public static JoyConController JoyConController { get; private set; }
|
public static JoyConController JoyConController { get; set; }
|
||||||
|
|
||||||
public static void Read(Switch Device)
|
public static void Read(Switch Device)
|
||||||
{
|
{
|
||||||
|
@ -138,7 +138,7 @@ namespace Ryujinx
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ControllerInputID ToID(string Key)
|
public static ControllerInputID ToID(string Key)
|
||||||
{
|
{
|
||||||
switch (Key.ToUpper())
|
switch (Key.ToUpper())
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue