Change naming convention for Ryujinx project
This commit is contained in:
parent
5a87e58183
commit
bd6e346b88
6 changed files with 375 additions and 375 deletions
|
@ -15,29 +15,29 @@ namespace Ryujinx
|
|||
public static JoyConKeyboard JoyConKeyboard { get; private set; }
|
||||
public static JoyConController JoyConController { get; private set; }
|
||||
|
||||
public static void Read(Switch Device)
|
||||
public static void Read(Switch device)
|
||||
{
|
||||
string IniFolder = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
|
||||
string iniFolder = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
|
||||
|
||||
string IniPath = Path.Combine(IniFolder, "Ryujinx.conf");
|
||||
string iniPath = Path.Combine(iniFolder, "Ryujinx.conf");
|
||||
|
||||
IniParser Parser = new IniParser(IniPath);
|
||||
IniParser parser = new IniParser(iniPath);
|
||||
|
||||
GraphicsConfig.ShadersDumpPath = Parser.Value("Graphics_Shaders_Dump_Path");
|
||||
GraphicsConfig.ShadersDumpPath = parser.Value("Graphics_Shaders_Dump_Path");
|
||||
|
||||
Logger.SetEnable(LogLevel.Debug, Convert.ToBoolean(Parser.Value("Logging_Enable_Debug")));
|
||||
Logger.SetEnable(LogLevel.Stub, Convert.ToBoolean(Parser.Value("Logging_Enable_Stub")));
|
||||
Logger.SetEnable(LogLevel.Info, Convert.ToBoolean(Parser.Value("Logging_Enable_Info")));
|
||||
Logger.SetEnable(LogLevel.Warning, Convert.ToBoolean(Parser.Value("Logging_Enable_Warn")));
|
||||
Logger.SetEnable(LogLevel.Error, Convert.ToBoolean(Parser.Value("Logging_Enable_Error")));
|
||||
Logger.SetEnable(LogLevel.Debug, Convert.ToBoolean(parser.Value("Logging_Enable_Debug")));
|
||||
Logger.SetEnable(LogLevel.Stub, Convert.ToBoolean(parser.Value("Logging_Enable_Stub")));
|
||||
Logger.SetEnable(LogLevel.Info, Convert.ToBoolean(parser.Value("Logging_Enable_Info")));
|
||||
Logger.SetEnable(LogLevel.Warning, Convert.ToBoolean(parser.Value("Logging_Enable_Warn")));
|
||||
Logger.SetEnable(LogLevel.Error, Convert.ToBoolean(parser.Value("Logging_Enable_Error")));
|
||||
|
||||
string[] FilteredLogClasses = Parser.Value("Logging_Filtered_Classes").Split(',', StringSplitOptions.RemoveEmptyEntries);
|
||||
string[] filteredLogClasses = parser.Value("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)
|
||||
if (filteredLogClasses.Length > 0)
|
||||
{
|
||||
foreach (LogClass Class in Enum.GetValues(typeof(LogClass)))
|
||||
{
|
||||
|
@ -45,13 +45,13 @@ namespace Ryujinx
|
|||
}
|
||||
}
|
||||
|
||||
foreach (string LogClass in FilteredLogClasses)
|
||||
foreach (string logClass in filteredLogClasses)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(LogClass.Trim()))
|
||||
if (!string.IsNullOrEmpty(logClass.Trim()))
|
||||
{
|
||||
foreach (LogClass Class in Enum.GetValues(typeof(LogClass)))
|
||||
{
|
||||
if (Class.ToString().ToLower().Contains(LogClass.Trim().ToLower()))
|
||||
if (Class.ToString().ToLower().Contains(logClass.Trim().ToLower()))
|
||||
{
|
||||
Logger.SetEnable(Class, true);
|
||||
}
|
||||
|
@ -59,111 +59,111 @@ namespace Ryujinx
|
|||
}
|
||||
}
|
||||
|
||||
Device.System.State.DockedMode = Convert.ToBoolean(Parser.Value("Docked_Mode"));
|
||||
device.System.State.DockedMode = Convert.ToBoolean(parser.Value("Docked_Mode"));
|
||||
|
||||
Device.EnableDeviceVsync = Convert.ToBoolean(Parser.Value("Enable_Vsync"));
|
||||
device.EnableDeviceVsync = Convert.ToBoolean(parser.Value("Enable_Vsync"));
|
||||
|
||||
if (Convert.ToBoolean(Parser.Value("Enable_MultiCore_Scheduling")))
|
||||
if (Convert.ToBoolean(parser.Value("Enable_MultiCore_Scheduling")))
|
||||
{
|
||||
Device.System.EnableMultiCoreScheduling();
|
||||
device.System.EnableMultiCoreScheduling();
|
||||
}
|
||||
|
||||
Device.System.EnableFsIntegrityChecks = Convert.ToBoolean(Parser.Value("Enable_FS_Integrity_Checks"));
|
||||
device.System.EnableFsIntegrityChecks = Convert.ToBoolean(parser.Value("Enable_FS_Integrity_Checks"));
|
||||
|
||||
JoyConKeyboard = new JoyConKeyboard(
|
||||
|
||||
new JoyConKeyboardLeft
|
||||
{
|
||||
StickUp = Convert.ToInt16(Parser.Value("Controls_Left_JoyConKeyboard_Stick_Up")),
|
||||
StickDown = Convert.ToInt16(Parser.Value("Controls_Left_JoyConKeyboard_Stick_Down")),
|
||||
StickLeft = Convert.ToInt16(Parser.Value("Controls_Left_JoyConKeyboard_Stick_Left")),
|
||||
StickRight = Convert.ToInt16(Parser.Value("Controls_Left_JoyConKeyboard_Stick_Right")),
|
||||
StickButton = Convert.ToInt16(Parser.Value("Controls_Left_JoyConKeyboard_Stick_Button")),
|
||||
DPadUp = Convert.ToInt16(Parser.Value("Controls_Left_JoyConKeyboard_DPad_Up")),
|
||||
DPadDown = Convert.ToInt16(Parser.Value("Controls_Left_JoyConKeyboard_DPad_Down")),
|
||||
DPadLeft = Convert.ToInt16(Parser.Value("Controls_Left_JoyConKeyboard_DPad_Left")),
|
||||
DPadRight = Convert.ToInt16(Parser.Value("Controls_Left_JoyConKeyboard_DPad_Right")),
|
||||
ButtonMinus = Convert.ToInt16(Parser.Value("Controls_Left_JoyConKeyboard_Button_Minus")),
|
||||
ButtonL = Convert.ToInt16(Parser.Value("Controls_Left_JoyConKeyboard_Button_L")),
|
||||
ButtonZL = Convert.ToInt16(Parser.Value("Controls_Left_JoyConKeyboard_Button_ZL"))
|
||||
StickUp = Convert.ToInt16(parser.Value("Controls_Left_JoyConKeyboard_Stick_Up")),
|
||||
StickDown = Convert.ToInt16(parser.Value("Controls_Left_JoyConKeyboard_Stick_Down")),
|
||||
StickLeft = Convert.ToInt16(parser.Value("Controls_Left_JoyConKeyboard_Stick_Left")),
|
||||
StickRight = Convert.ToInt16(parser.Value("Controls_Left_JoyConKeyboard_Stick_Right")),
|
||||
StickButton = Convert.ToInt16(parser.Value("Controls_Left_JoyConKeyboard_Stick_Button")),
|
||||
DPadUp = Convert.ToInt16(parser.Value("Controls_Left_JoyConKeyboard_DPad_Up")),
|
||||
DPadDown = Convert.ToInt16(parser.Value("Controls_Left_JoyConKeyboard_DPad_Down")),
|
||||
DPadLeft = Convert.ToInt16(parser.Value("Controls_Left_JoyConKeyboard_DPad_Left")),
|
||||
DPadRight = Convert.ToInt16(parser.Value("Controls_Left_JoyConKeyboard_DPad_Right")),
|
||||
ButtonMinus = Convert.ToInt16(parser.Value("Controls_Left_JoyConKeyboard_Button_Minus")),
|
||||
ButtonL = Convert.ToInt16(parser.Value("Controls_Left_JoyConKeyboard_Button_L")),
|
||||
ButtonZl = Convert.ToInt16(parser.Value("Controls_Left_JoyConKeyboard_Button_ZL"))
|
||||
},
|
||||
|
||||
new JoyConKeyboardRight
|
||||
{
|
||||
StickUp = Convert.ToInt16(Parser.Value("Controls_Right_JoyConKeyboard_Stick_Up")),
|
||||
StickDown = Convert.ToInt16(Parser.Value("Controls_Right_JoyConKeyboard_Stick_Down")),
|
||||
StickLeft = Convert.ToInt16(Parser.Value("Controls_Right_JoyConKeyboard_Stick_Left")),
|
||||
StickRight = Convert.ToInt16(Parser.Value("Controls_Right_JoyConKeyboard_Stick_Right")),
|
||||
StickButton = Convert.ToInt16(Parser.Value("Controls_Right_JoyConKeyboard_Stick_Button")),
|
||||
ButtonA = Convert.ToInt16(Parser.Value("Controls_Right_JoyConKeyboard_Button_A")),
|
||||
ButtonB = Convert.ToInt16(Parser.Value("Controls_Right_JoyConKeyboard_Button_B")),
|
||||
ButtonX = Convert.ToInt16(Parser.Value("Controls_Right_JoyConKeyboard_Button_X")),
|
||||
ButtonY = Convert.ToInt16(Parser.Value("Controls_Right_JoyConKeyboard_Button_Y")),
|
||||
ButtonPlus = Convert.ToInt16(Parser.Value("Controls_Right_JoyConKeyboard_Button_Plus")),
|
||||
ButtonR = Convert.ToInt16(Parser.Value("Controls_Right_JoyConKeyboard_Button_R")),
|
||||
ButtonZR = Convert.ToInt16(Parser.Value("Controls_Right_JoyConKeyboard_Button_ZR"))
|
||||
StickUp = Convert.ToInt16(parser.Value("Controls_Right_JoyConKeyboard_Stick_Up")),
|
||||
StickDown = Convert.ToInt16(parser.Value("Controls_Right_JoyConKeyboard_Stick_Down")),
|
||||
StickLeft = Convert.ToInt16(parser.Value("Controls_Right_JoyConKeyboard_Stick_Left")),
|
||||
StickRight = Convert.ToInt16(parser.Value("Controls_Right_JoyConKeyboard_Stick_Right")),
|
||||
StickButton = Convert.ToInt16(parser.Value("Controls_Right_JoyConKeyboard_Stick_Button")),
|
||||
ButtonA = Convert.ToInt16(parser.Value("Controls_Right_JoyConKeyboard_Button_A")),
|
||||
ButtonB = Convert.ToInt16(parser.Value("Controls_Right_JoyConKeyboard_Button_B")),
|
||||
ButtonX = Convert.ToInt16(parser.Value("Controls_Right_JoyConKeyboard_Button_X")),
|
||||
ButtonY = Convert.ToInt16(parser.Value("Controls_Right_JoyConKeyboard_Button_Y")),
|
||||
ButtonPlus = Convert.ToInt16(parser.Value("Controls_Right_JoyConKeyboard_Button_Plus")),
|
||||
ButtonR = Convert.ToInt16(parser.Value("Controls_Right_JoyConKeyboard_Button_R")),
|
||||
ButtonZr = Convert.ToInt16(parser.Value("Controls_Right_JoyConKeyboard_Button_ZR"))
|
||||
});
|
||||
|
||||
JoyConController = new JoyConController(
|
||||
|
||||
Convert.ToBoolean(Parser.Value("GamePad_Enable")),
|
||||
Convert.ToInt32 (Parser.Value("GamePad_Index")),
|
||||
(float)Convert.ToDouble (Parser.Value("GamePad_Deadzone"), CultureInfo.InvariantCulture),
|
||||
(float)Convert.ToDouble (Parser.Value("GamePad_Trigger_Threshold"), CultureInfo.InvariantCulture),
|
||||
Convert.ToBoolean(parser.Value("GamePad_Enable")),
|
||||
Convert.ToInt32 (parser.Value("GamePad_Index")),
|
||||
(float)Convert.ToDouble (parser.Value("GamePad_Deadzone"), CultureInfo.InvariantCulture),
|
||||
(float)Convert.ToDouble (parser.Value("GamePad_Trigger_Threshold"), CultureInfo.InvariantCulture),
|
||||
|
||||
new JoyConControllerLeft
|
||||
{
|
||||
Stick = ToID(Parser.Value("Controls_Left_JoyConController_Stick")),
|
||||
StickButton = ToID(Parser.Value("Controls_Left_JoyConController_Stick_Button")),
|
||||
DPadUp = ToID(Parser.Value("Controls_Left_JoyConController_DPad_Up")),
|
||||
DPadDown = ToID(Parser.Value("Controls_Left_JoyConController_DPad_Down")),
|
||||
DPadLeft = ToID(Parser.Value("Controls_Left_JoyConController_DPad_Left")),
|
||||
DPadRight = ToID(Parser.Value("Controls_Left_JoyConController_DPad_Right")),
|
||||
ButtonMinus = ToID(Parser.Value("Controls_Left_JoyConController_Button_Minus")),
|
||||
ButtonL = ToID(Parser.Value("Controls_Left_JoyConController_Button_L")),
|
||||
ButtonZL = ToID(Parser.Value("Controls_Left_JoyConController_Button_ZL"))
|
||||
Stick = ToId(parser.Value("Controls_Left_JoyConController_Stick")),
|
||||
StickButton = ToId(parser.Value("Controls_Left_JoyConController_Stick_Button")),
|
||||
DPadUp = ToId(parser.Value("Controls_Left_JoyConController_DPad_Up")),
|
||||
DPadDown = ToId(parser.Value("Controls_Left_JoyConController_DPad_Down")),
|
||||
DPadLeft = ToId(parser.Value("Controls_Left_JoyConController_DPad_Left")),
|
||||
DPadRight = ToId(parser.Value("Controls_Left_JoyConController_DPad_Right")),
|
||||
ButtonMinus = ToId(parser.Value("Controls_Left_JoyConController_Button_Minus")),
|
||||
ButtonL = ToId(parser.Value("Controls_Left_JoyConController_Button_L")),
|
||||
ButtonZl = ToId(parser.Value("Controls_Left_JoyConController_Button_ZL"))
|
||||
},
|
||||
|
||||
new JoyConControllerRight
|
||||
{
|
||||
Stick = ToID(Parser.Value("Controls_Right_JoyConController_Stick")),
|
||||
StickButton = ToID(Parser.Value("Controls_Right_JoyConController_Stick_Button")),
|
||||
ButtonA = ToID(Parser.Value("Controls_Right_JoyConController_Button_A")),
|
||||
ButtonB = ToID(Parser.Value("Controls_Right_JoyConController_Button_B")),
|
||||
ButtonX = ToID(Parser.Value("Controls_Right_JoyConController_Button_X")),
|
||||
ButtonY = ToID(Parser.Value("Controls_Right_JoyConController_Button_Y")),
|
||||
ButtonPlus = ToID(Parser.Value("Controls_Right_JoyConController_Button_Plus")),
|
||||
ButtonR = ToID(Parser.Value("Controls_Right_JoyConController_Button_R")),
|
||||
ButtonZR = ToID(Parser.Value("Controls_Right_JoyConController_Button_ZR"))
|
||||
Stick = ToId(parser.Value("Controls_Right_JoyConController_Stick")),
|
||||
StickButton = ToId(parser.Value("Controls_Right_JoyConController_Stick_Button")),
|
||||
ButtonA = ToId(parser.Value("Controls_Right_JoyConController_Button_A")),
|
||||
ButtonB = ToId(parser.Value("Controls_Right_JoyConController_Button_B")),
|
||||
ButtonX = ToId(parser.Value("Controls_Right_JoyConController_Button_X")),
|
||||
ButtonY = ToId(parser.Value("Controls_Right_JoyConController_Button_Y")),
|
||||
ButtonPlus = ToId(parser.Value("Controls_Right_JoyConController_Button_Plus")),
|
||||
ButtonR = ToId(parser.Value("Controls_Right_JoyConController_Button_R")),
|
||||
ButtonZr = ToId(parser.Value("Controls_Right_JoyConController_Button_ZR"))
|
||||
});
|
||||
}
|
||||
|
||||
private static ControllerInputID ToID(string Key)
|
||||
private static ControllerInputId ToId(string key)
|
||||
{
|
||||
switch (Key.ToUpper())
|
||||
switch (key.ToUpper())
|
||||
{
|
||||
case "LSTICK": return ControllerInputID.LStick;
|
||||
case "DPADUP": return ControllerInputID.DPadUp;
|
||||
case "DPADDOWN": return ControllerInputID.DPadDown;
|
||||
case "DPADLEFT": return ControllerInputID.DPadLeft;
|
||||
case "DPADRIGHT": return ControllerInputID.DPadRight;
|
||||
case "BACK": return ControllerInputID.Back;
|
||||
case "LSHOULDER": return ControllerInputID.LShoulder;
|
||||
case "LTRIGGER": return ControllerInputID.LTrigger;
|
||||
case "LSTICK": return ControllerInputId.LStick;
|
||||
case "DPADUP": return ControllerInputId.DPadUp;
|
||||
case "DPADDOWN": return ControllerInputId.DPadDown;
|
||||
case "DPADLEFT": return ControllerInputId.DPadLeft;
|
||||
case "DPADRIGHT": return ControllerInputId.DPadRight;
|
||||
case "BACK": return ControllerInputId.Back;
|
||||
case "LSHOULDER": return ControllerInputId.LShoulder;
|
||||
case "LTRIGGER": return ControllerInputId.LTrigger;
|
||||
|
||||
case "RSTICK": return ControllerInputID.RStick;
|
||||
case "A": return ControllerInputID.A;
|
||||
case "B": return ControllerInputID.B;
|
||||
case "X": return ControllerInputID.X;
|
||||
case "Y": return ControllerInputID.Y;
|
||||
case "START": return ControllerInputID.Start;
|
||||
case "RSHOULDER": return ControllerInputID.RShoulder;
|
||||
case "RTRIGGER": return ControllerInputID.RTrigger;
|
||||
case "RSTICK": return ControllerInputId.RStick;
|
||||
case "A": return ControllerInputId.A;
|
||||
case "B": return ControllerInputId.B;
|
||||
case "X": return ControllerInputId.X;
|
||||
case "Y": return ControllerInputId.Y;
|
||||
case "START": return ControllerInputId.Start;
|
||||
case "RSHOULDER": return ControllerInputId.RShoulder;
|
||||
case "RTRIGGER": return ControllerInputId.RTrigger;
|
||||
|
||||
case "LJOYSTICK": return ControllerInputID.LJoystick;
|
||||
case "RJOYSTICK": return ControllerInputID.RJoystick;
|
||||
case "LJOYSTICK": return ControllerInputId.LJoystick;
|
||||
case "RJOYSTICK": return ControllerInputId.RJoystick;
|
||||
|
||||
default: return ControllerInputID.Invalid;
|
||||
default: return ControllerInputId.Invalid;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -171,19 +171,19 @@ namespace Ryujinx
|
|||
//https://stackoverflow.com/a/37772571
|
||||
public class IniParser
|
||||
{
|
||||
private readonly Dictionary<string, string> Values;
|
||||
private readonly Dictionary<string, string> _values;
|
||||
|
||||
public IniParser(string Path)
|
||||
public IniParser(string path)
|
||||
{
|
||||
Values = File.ReadLines(Path)
|
||||
.Where(Line => !string.IsNullOrWhiteSpace(Line) && !Line.StartsWith('#'))
|
||||
.Select(Line => Line.Split('=', 2))
|
||||
.ToDictionary(Parts => Parts[0].Trim(), Parts => Parts.Length > 1 ? Parts[1].Trim() : null);
|
||||
_values = File.ReadLines(path)
|
||||
.Where(line => !string.IsNullOrWhiteSpace(line) && !line.StartsWith('#'))
|
||||
.Select(line => line.Split('=', 2))
|
||||
.ToDictionary(parts => parts[0].Trim(), parts => parts.Length > 1 ? parts[1].Trim() : null);
|
||||
}
|
||||
|
||||
public string Value(string Name)
|
||||
public string Value(string name)
|
||||
{
|
||||
return Values.TryGetValue(Name, out string Value) ? Value : null;
|
||||
return _values.TryGetValue(name, out string value) ? value : null;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -8,17 +8,17 @@ namespace Ryujinx
|
|||
{
|
||||
static class ConsoleLog
|
||||
{
|
||||
private static Thread MessageThread;
|
||||
private static Thread _messageThread;
|
||||
|
||||
private static BlockingCollection<LogEventArgs> MessageQueue;
|
||||
private static BlockingCollection<LogEventArgs> _messageQueue;
|
||||
|
||||
private static Dictionary<LogLevel, ConsoleColor> LogColors;
|
||||
private static Dictionary<LogLevel, ConsoleColor> _logColors;
|
||||
|
||||
private static object ConsoleLock;
|
||||
private static object _consoleLock;
|
||||
|
||||
static ConsoleLog()
|
||||
{
|
||||
LogColors = new Dictionary<LogLevel, ConsoleColor>()
|
||||
_logColors = new Dictionary<LogLevel, ConsoleColor>()
|
||||
{
|
||||
{ LogLevel.Stub, ConsoleColor.DarkGray },
|
||||
{ LogLevel.Info, ConsoleColor.White },
|
||||
|
@ -26,17 +26,17 @@ namespace Ryujinx
|
|||
{ LogLevel.Error, ConsoleColor.Red }
|
||||
};
|
||||
|
||||
MessageQueue = new BlockingCollection<LogEventArgs>();
|
||||
_messageQueue = new BlockingCollection<LogEventArgs>();
|
||||
|
||||
ConsoleLock = new object();
|
||||
_consoleLock = new object();
|
||||
|
||||
MessageThread = new Thread(() =>
|
||||
_messageThread = new Thread(() =>
|
||||
{
|
||||
while (!MessageQueue.IsCompleted)
|
||||
while (!_messageQueue.IsCompleted)
|
||||
{
|
||||
try
|
||||
{
|
||||
PrintLog(MessageQueue.Take());
|
||||
PrintLog(_messageQueue.Take());
|
||||
}
|
||||
catch (InvalidOperationException)
|
||||
{
|
||||
|
@ -49,39 +49,39 @@ namespace Ryujinx
|
|||
}
|
||||
});
|
||||
|
||||
MessageThread.IsBackground = true;
|
||||
MessageThread.Start();
|
||||
_messageThread.IsBackground = true;
|
||||
_messageThread.Start();
|
||||
}
|
||||
|
||||
private static void PrintLog(LogEventArgs e)
|
||||
{
|
||||
string FormattedTime = e.Time.ToString(@"hh\:mm\:ss\.fff");
|
||||
string formattedTime = e.Time.ToString(@"hh\:mm\:ss\.fff");
|
||||
|
||||
string CurrentThread = Thread.CurrentThread.ManagedThreadId.ToString("d4");
|
||||
string currentThread = Thread.CurrentThread.ManagedThreadId.ToString("d4");
|
||||
|
||||
string Message = FormattedTime + " | " + CurrentThread + " " + e.Message;
|
||||
string message = formattedTime + " | " + currentThread + " " + e.Message;
|
||||
|
||||
if (LogColors.TryGetValue(e.Level, out ConsoleColor Color))
|
||||
if (_logColors.TryGetValue(e.Level, out ConsoleColor color))
|
||||
{
|
||||
lock (ConsoleLock)
|
||||
lock (_consoleLock)
|
||||
{
|
||||
Console.ForegroundColor = Color;
|
||||
Console.ForegroundColor = color;
|
||||
|
||||
Console.WriteLine(Message);
|
||||
Console.WriteLine(message);
|
||||
Console.ResetColor();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine(Message);
|
||||
Console.WriteLine(message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void Log(object sender, LogEventArgs e)
|
||||
{
|
||||
if (!MessageQueue.IsAddingCompleted)
|
||||
if (!_messageQueue.IsAddingCompleted)
|
||||
{
|
||||
MessageQueue.Add(e);
|
||||
_messageQueue.Add(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,37 +11,37 @@ using Stopwatch = System.Diagnostics.Stopwatch;
|
|||
|
||||
namespace Ryujinx
|
||||
{
|
||||
public class GLScreen : GameWindow
|
||||
public class GlScreen : GameWindow
|
||||
{
|
||||
private const int TouchScreenWidth = 1280;
|
||||
private const int TouchScreenHeight = 720;
|
||||
|
||||
private const int TargetFPS = 60;
|
||||
private const int TargetFps = 60;
|
||||
|
||||
private Switch Device;
|
||||
private Switch _device;
|
||||
|
||||
private IGalRenderer Renderer;
|
||||
private IGalRenderer _renderer;
|
||||
|
||||
private KeyboardState? Keyboard = null;
|
||||
private KeyboardState? _keyboard = null;
|
||||
|
||||
private MouseState? Mouse = null;
|
||||
private MouseState? _mouse = null;
|
||||
|
||||
private Thread RenderThread;
|
||||
private Thread _renderThread;
|
||||
|
||||
private bool ResizeEvent;
|
||||
private bool _resizeEvent;
|
||||
|
||||
private bool TitleEvent;
|
||||
private bool _titleEvent;
|
||||
|
||||
private string NewTitle;
|
||||
private string _newTitle;
|
||||
|
||||
public GLScreen(Switch Device, IGalRenderer Renderer)
|
||||
public GlScreen(Switch device, IGalRenderer renderer)
|
||||
: base(1280, 720,
|
||||
new GraphicsMode(), "Ryujinx", 0,
|
||||
DisplayDevice.Default, 3, 3,
|
||||
GraphicsContextFlags.ForwardCompatible)
|
||||
{
|
||||
this.Device = Device;
|
||||
this.Renderer = Renderer;
|
||||
this._device = device;
|
||||
this._renderer = renderer;
|
||||
|
||||
Location = new Point(
|
||||
(DisplayDevice.Default.Width / 2) - (Width / 2),
|
||||
|
@ -52,40 +52,40 @@ namespace Ryujinx
|
|||
{
|
||||
MakeCurrent();
|
||||
|
||||
Stopwatch Chrono = new Stopwatch();
|
||||
Stopwatch chrono = new Stopwatch();
|
||||
|
||||
Chrono.Start();
|
||||
chrono.Start();
|
||||
|
||||
long TicksPerFrame = Stopwatch.Frequency / TargetFPS;
|
||||
long ticksPerFrame = Stopwatch.Frequency / TargetFps;
|
||||
|
||||
long Ticks = 0;
|
||||
long ticks = 0;
|
||||
|
||||
while (Exists && !IsExiting)
|
||||
{
|
||||
if (Device.WaitFifo())
|
||||
if (_device.WaitFifo())
|
||||
{
|
||||
Device.ProcessFrame();
|
||||
_device.ProcessFrame();
|
||||
}
|
||||
|
||||
Renderer.RunActions();
|
||||
_renderer.RunActions();
|
||||
|
||||
if (ResizeEvent)
|
||||
if (_resizeEvent)
|
||||
{
|
||||
ResizeEvent = false;
|
||||
_resizeEvent = false;
|
||||
|
||||
Renderer.RenderTarget.SetWindowSize(Width, Height);
|
||||
_renderer.RenderTarget.SetWindowSize(Width, Height);
|
||||
}
|
||||
|
||||
Ticks += Chrono.ElapsedTicks;
|
||||
ticks += chrono.ElapsedTicks;
|
||||
|
||||
Chrono.Restart();
|
||||
chrono.Restart();
|
||||
|
||||
if (Ticks >= TicksPerFrame)
|
||||
if (ticks >= ticksPerFrame)
|
||||
{
|
||||
RenderFrame();
|
||||
|
||||
//Queue max. 1 vsync
|
||||
Ticks = Math.Min(Ticks - TicksPerFrame, TicksPerFrame);
|
||||
ticks = Math.Min(ticks - ticksPerFrame, ticksPerFrame);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -96,14 +96,14 @@ namespace Ryujinx
|
|||
|
||||
Visible = true;
|
||||
|
||||
Renderer.RenderTarget.SetWindowSize(Width, Height);
|
||||
_renderer.RenderTarget.SetWindowSize(Width, Height);
|
||||
|
||||
Context.MakeCurrent(null);
|
||||
|
||||
//OpenTK doesn't like sleeps in its thread, to avoid this a renderer thread is created
|
||||
RenderThread = new Thread(RenderLoop);
|
||||
_renderThread = new Thread(RenderLoop);
|
||||
|
||||
RenderThread.Start();
|
||||
_renderThread.Start();
|
||||
|
||||
while (Exists && !IsExiting)
|
||||
{
|
||||
|
@ -113,11 +113,11 @@ namespace Ryujinx
|
|||
{
|
||||
UpdateFrame();
|
||||
|
||||
if (TitleEvent)
|
||||
if (_titleEvent)
|
||||
{
|
||||
TitleEvent = false;
|
||||
_titleEvent = false;
|
||||
|
||||
Title = NewTitle;
|
||||
Title = _newTitle;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -128,94 +128,94 @@ namespace Ryujinx
|
|||
|
||||
private new void UpdateFrame()
|
||||
{
|
||||
HidControllerButtons CurrentButton = 0;
|
||||
HidJoystickPosition LeftJoystick;
|
||||
HidJoystickPosition RightJoystick;
|
||||
HidControllerButtons currentButton = 0;
|
||||
HidJoystickPosition leftJoystick;
|
||||
HidJoystickPosition rightJoystick;
|
||||
|
||||
int LeftJoystickDX = 0;
|
||||
int LeftJoystickDY = 0;
|
||||
int RightJoystickDX = 0;
|
||||
int RightJoystickDY = 0;
|
||||
int leftJoystickDx = 0;
|
||||
int leftJoystickDy = 0;
|
||||
int rightJoystickDx = 0;
|
||||
int rightJoystickDy = 0;
|
||||
|
||||
//Keyboard Input
|
||||
if (Keyboard.HasValue)
|
||||
if (_keyboard.HasValue)
|
||||
{
|
||||
KeyboardState Keyboard = this.Keyboard.Value;
|
||||
KeyboardState keyboard = this._keyboard.Value;
|
||||
|
||||
CurrentButton = Config.JoyConKeyboard.GetButtons(Keyboard);
|
||||
currentButton = Config.JoyConKeyboard.GetButtons(keyboard);
|
||||
|
||||
(LeftJoystickDX, LeftJoystickDY) = Config.JoyConKeyboard.GetLeftStick(Keyboard);
|
||||
(leftJoystickDx, leftJoystickDy) = Config.JoyConKeyboard.GetLeftStick(keyboard);
|
||||
|
||||
(RightJoystickDX, RightJoystickDY) = Config.JoyConKeyboard.GetRightStick(Keyboard);
|
||||
(rightJoystickDx, rightJoystickDy) = Config.JoyConKeyboard.GetRightStick(keyboard);
|
||||
}
|
||||
|
||||
//Controller Input
|
||||
CurrentButton |= Config.JoyConController.GetButtons();
|
||||
currentButton |= Config.JoyConController.GetButtons();
|
||||
|
||||
//Keyboard has priority stick-wise
|
||||
if (LeftJoystickDX == 0 && LeftJoystickDY == 0)
|
||||
if (leftJoystickDx == 0 && leftJoystickDy == 0)
|
||||
{
|
||||
(LeftJoystickDX, LeftJoystickDY) = Config.JoyConController.GetLeftStick();
|
||||
(leftJoystickDx, leftJoystickDy) = Config.JoyConController.GetLeftStick();
|
||||
}
|
||||
|
||||
if (RightJoystickDX == 0 && RightJoystickDY == 0)
|
||||
if (rightJoystickDx == 0 && rightJoystickDy == 0)
|
||||
{
|
||||
(RightJoystickDX, RightJoystickDY) = Config.JoyConController.GetRightStick();
|
||||
(rightJoystickDx, rightJoystickDy) = Config.JoyConController.GetRightStick();
|
||||
}
|
||||
|
||||
LeftJoystick = new HidJoystickPosition
|
||||
leftJoystick = new HidJoystickPosition
|
||||
{
|
||||
DX = LeftJoystickDX,
|
||||
DY = LeftJoystickDY
|
||||
DX = leftJoystickDx,
|
||||
DY = leftJoystickDy
|
||||
};
|
||||
|
||||
RightJoystick = new HidJoystickPosition
|
||||
rightJoystick = new HidJoystickPosition
|
||||
{
|
||||
DX = RightJoystickDX,
|
||||
DY = RightJoystickDY
|
||||
DX = rightJoystickDx,
|
||||
DY = rightJoystickDy
|
||||
};
|
||||
|
||||
bool HasTouch = false;
|
||||
bool hasTouch = false;
|
||||
|
||||
//Get screen touch position from left mouse click
|
||||
//OpenTK always captures mouse events, even if out of focus, so check if window is focused.
|
||||
if (Focused && Mouse?.LeftButton == ButtonState.Pressed)
|
||||
if (Focused && _mouse?.LeftButton == ButtonState.Pressed)
|
||||
{
|
||||
MouseState Mouse = this.Mouse.Value;
|
||||
MouseState mouse = this._mouse.Value;
|
||||
|
||||
int ScrnWidth = Width;
|
||||
int ScrnHeight = Height;
|
||||
int scrnWidth = Width;
|
||||
int scrnHeight = Height;
|
||||
|
||||
if (Width > (Height * TouchScreenWidth) / TouchScreenHeight)
|
||||
{
|
||||
ScrnWidth = (Height * TouchScreenWidth) / TouchScreenHeight;
|
||||
scrnWidth = (Height * TouchScreenWidth) / TouchScreenHeight;
|
||||
}
|
||||
else
|
||||
{
|
||||
ScrnHeight = (Width * TouchScreenHeight) / TouchScreenWidth;
|
||||
scrnHeight = (Width * TouchScreenHeight) / TouchScreenWidth;
|
||||
}
|
||||
|
||||
int StartX = (Width - ScrnWidth) >> 1;
|
||||
int StartY = (Height - ScrnHeight) >> 1;
|
||||
int startX = (Width - scrnWidth) >> 1;
|
||||
int startY = (Height - scrnHeight) >> 1;
|
||||
|
||||
int EndX = StartX + ScrnWidth;
|
||||
int EndY = StartY + ScrnHeight;
|
||||
int endX = startX + scrnWidth;
|
||||
int endY = startY + scrnHeight;
|
||||
|
||||
if (Mouse.X >= StartX &&
|
||||
Mouse.Y >= StartY &&
|
||||
Mouse.X < EndX &&
|
||||
Mouse.Y < EndY)
|
||||
if (mouse.X >= startX &&
|
||||
mouse.Y >= startY &&
|
||||
mouse.X < endX &&
|
||||
mouse.Y < endY)
|
||||
{
|
||||
int ScrnMouseX = Mouse.X - StartX;
|
||||
int ScrnMouseY = Mouse.Y - StartY;
|
||||
int scrnMouseX = mouse.X - startX;
|
||||
int scrnMouseY = mouse.Y - startY;
|
||||
|
||||
int MX = (ScrnMouseX * TouchScreenWidth) / ScrnWidth;
|
||||
int MY = (ScrnMouseY * TouchScreenHeight) / ScrnHeight;
|
||||
int mx = (scrnMouseX * TouchScreenWidth) / scrnWidth;
|
||||
int my = (scrnMouseY * TouchScreenHeight) / scrnHeight;
|
||||
|
||||
HidTouchPoint CurrentPoint = new HidTouchPoint
|
||||
HidTouchPoint currentPoint = new HidTouchPoint
|
||||
{
|
||||
X = MX,
|
||||
Y = MY,
|
||||
X = mx,
|
||||
Y = my,
|
||||
|
||||
//Placeholder values till more data is acquired
|
||||
DiameterX = 10,
|
||||
|
@ -223,76 +223,76 @@ namespace Ryujinx
|
|||
Angle = 90
|
||||
};
|
||||
|
||||
HasTouch = true;
|
||||
hasTouch = true;
|
||||
|
||||
Device.Hid.SetTouchPoints(CurrentPoint);
|
||||
_device.Hid.SetTouchPoints(currentPoint);
|
||||
}
|
||||
}
|
||||
|
||||
if (!HasTouch)
|
||||
if (!hasTouch)
|
||||
{
|
||||
Device.Hid.SetTouchPoints();
|
||||
_device.Hid.SetTouchPoints();
|
||||
}
|
||||
|
||||
Device.Hid.SetJoyconButton(
|
||||
_device.Hid.SetJoyconButton(
|
||||
HidControllerId.CONTROLLER_HANDHELD,
|
||||
HidControllerLayouts.Handheld_Joined,
|
||||
CurrentButton,
|
||||
LeftJoystick,
|
||||
RightJoystick);
|
||||
currentButton,
|
||||
leftJoystick,
|
||||
rightJoystick);
|
||||
|
||||
Device.Hid.SetJoyconButton(
|
||||
_device.Hid.SetJoyconButton(
|
||||
HidControllerId.CONTROLLER_HANDHELD,
|
||||
HidControllerLayouts.Main,
|
||||
CurrentButton,
|
||||
LeftJoystick,
|
||||
RightJoystick);
|
||||
currentButton,
|
||||
leftJoystick,
|
||||
rightJoystick);
|
||||
}
|
||||
|
||||
private new void RenderFrame()
|
||||
{
|
||||
Renderer.RenderTarget.Render();
|
||||
_renderer.RenderTarget.Render();
|
||||
|
||||
Device.Statistics.RecordSystemFrameTime();
|
||||
_device.Statistics.RecordSystemFrameTime();
|
||||
|
||||
double HostFps = Device.Statistics.GetSystemFrameRate();
|
||||
double GameFps = Device.Statistics.GetGameFrameRate();
|
||||
double hostFps = _device.Statistics.GetSystemFrameRate();
|
||||
double gameFps = _device.Statistics.GetGameFrameRate();
|
||||
|
||||
string TitleSection = string.IsNullOrWhiteSpace(Device.System.CurrentTitle) ? string.Empty
|
||||
: " | " + Device.System.CurrentTitle;
|
||||
string titleSection = string.IsNullOrWhiteSpace(_device.System.CurrentTitle) ? string.Empty
|
||||
: " | " + _device.System.CurrentTitle;
|
||||
|
||||
NewTitle = $"Ryujinx{TitleSection} | Host FPS: {HostFps:0.0} | Game FPS: {GameFps:0.0} | " +
|
||||
$"Game Vsync: {(Device.EnableDeviceVsync ? "On" : "Off")}";
|
||||
_newTitle = $"Ryujinx{titleSection} | Host FPS: {hostFps:0.0} | Game FPS: {gameFps:0.0} | " +
|
||||
$"Game Vsync: {(_device.EnableDeviceVsync ? "On" : "Off")}";
|
||||
|
||||
TitleEvent = true;
|
||||
_titleEvent = true;
|
||||
|
||||
SwapBuffers();
|
||||
|
||||
Device.System.SignalVsync();
|
||||
_device.System.SignalVsync();
|
||||
|
||||
Device.VsyncEvent.Set();
|
||||
_device.VsyncEvent.Set();
|
||||
}
|
||||
|
||||
protected override void OnUnload(EventArgs e)
|
||||
{
|
||||
RenderThread.Join();
|
||||
_renderThread.Join();
|
||||
|
||||
base.OnUnload(e);
|
||||
}
|
||||
|
||||
protected override void OnResize(EventArgs e)
|
||||
{
|
||||
ResizeEvent = true;
|
||||
_resizeEvent = true;
|
||||
}
|
||||
|
||||
protected override void OnKeyDown(KeyboardKeyEventArgs e)
|
||||
{
|
||||
bool ToggleFullscreen = e.Key == Key.F11 ||
|
||||
bool toggleFullscreen = e.Key == Key.F11 ||
|
||||
(e.Modifiers.HasFlag(KeyModifiers.Alt) && e.Key == Key.Enter);
|
||||
|
||||
if (WindowState == WindowState.Fullscreen)
|
||||
{
|
||||
if (e.Key == Key.Escape || ToggleFullscreen)
|
||||
if (e.Key == Key.Escape || toggleFullscreen)
|
||||
{
|
||||
WindowState = WindowState.Normal;
|
||||
}
|
||||
|
@ -304,33 +304,33 @@ namespace Ryujinx
|
|||
Exit();
|
||||
}
|
||||
|
||||
if (ToggleFullscreen)
|
||||
if (toggleFullscreen)
|
||||
{
|
||||
WindowState = WindowState.Fullscreen;
|
||||
}
|
||||
}
|
||||
|
||||
Keyboard = e.Keyboard;
|
||||
_keyboard = e.Keyboard;
|
||||
}
|
||||
|
||||
protected override void OnKeyUp(KeyboardKeyEventArgs e)
|
||||
{
|
||||
Keyboard = e.Keyboard;
|
||||
_keyboard = e.Keyboard;
|
||||
}
|
||||
|
||||
protected override void OnMouseDown(MouseButtonEventArgs e)
|
||||
{
|
||||
Mouse = e.Mouse;
|
||||
_mouse = e.Mouse;
|
||||
}
|
||||
|
||||
protected override void OnMouseUp(MouseButtonEventArgs e)
|
||||
{
|
||||
Mouse = e.Mouse;
|
||||
_mouse = e.Mouse;
|
||||
}
|
||||
|
||||
protected override void OnMouseMove(MouseMoveEventArgs e)
|
||||
{
|
||||
Mouse = e.Mouse;
|
||||
_mouse = e.Mouse;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -5,7 +5,7 @@ using System;
|
|||
|
||||
namespace Ryujinx.UI.Input
|
||||
{
|
||||
public enum ControllerInputID
|
||||
public enum ControllerInputId
|
||||
{
|
||||
Invalid,
|
||||
|
||||
|
@ -34,28 +34,28 @@ namespace Ryujinx.UI.Input
|
|||
|
||||
public struct JoyConControllerLeft
|
||||
{
|
||||
public ControllerInputID Stick;
|
||||
public ControllerInputID StickButton;
|
||||
public ControllerInputID DPadUp;
|
||||
public ControllerInputID DPadDown;
|
||||
public ControllerInputID DPadLeft;
|
||||
public ControllerInputID DPadRight;
|
||||
public ControllerInputID ButtonMinus;
|
||||
public ControllerInputID ButtonL;
|
||||
public ControllerInputID ButtonZL;
|
||||
public ControllerInputId Stick;
|
||||
public ControllerInputId StickButton;
|
||||
public ControllerInputId DPadUp;
|
||||
public ControllerInputId DPadDown;
|
||||
public ControllerInputId DPadLeft;
|
||||
public ControllerInputId DPadRight;
|
||||
public ControllerInputId ButtonMinus;
|
||||
public ControllerInputId ButtonL;
|
||||
public ControllerInputId ButtonZl;
|
||||
}
|
||||
|
||||
public struct JoyConControllerRight
|
||||
{
|
||||
public ControllerInputID Stick;
|
||||
public ControllerInputID StickButton;
|
||||
public ControllerInputID ButtonA;
|
||||
public ControllerInputID ButtonB;
|
||||
public ControllerInputID ButtonX;
|
||||
public ControllerInputID ButtonY;
|
||||
public ControllerInputID ButtonPlus;
|
||||
public ControllerInputID ButtonR;
|
||||
public ControllerInputID ButtonZR;
|
||||
public ControllerInputId Stick;
|
||||
public ControllerInputId StickButton;
|
||||
public ControllerInputId ButtonA;
|
||||
public ControllerInputId ButtonB;
|
||||
public ControllerInputId ButtonX;
|
||||
public ControllerInputId ButtonY;
|
||||
public ControllerInputId ButtonPlus;
|
||||
public ControllerInputId ButtonR;
|
||||
public ControllerInputId ButtonZr;
|
||||
}
|
||||
|
||||
public class JoyConController
|
||||
|
@ -69,22 +69,22 @@ namespace Ryujinx.UI.Input
|
|||
public JoyConControllerRight Right { private set; get; }
|
||||
|
||||
public JoyConController(
|
||||
bool Enabled,
|
||||
int Index,
|
||||
float Deadzone,
|
||||
float TriggerThreshold,
|
||||
JoyConControllerLeft Left,
|
||||
JoyConControllerRight Right)
|
||||
bool enabled,
|
||||
int index,
|
||||
float deadzone,
|
||||
float triggerThreshold,
|
||||
JoyConControllerLeft left,
|
||||
JoyConControllerRight right)
|
||||
{
|
||||
this.Enabled = Enabled;
|
||||
this.Index = Index;
|
||||
this.Deadzone = Deadzone;
|
||||
this.TriggerThreshold = TriggerThreshold;
|
||||
this.Left = Left;
|
||||
this.Right = Right;
|
||||
this.Enabled = enabled;
|
||||
this.Index = index;
|
||||
this.Deadzone = deadzone;
|
||||
this.TriggerThreshold = triggerThreshold;
|
||||
this.Left = left;
|
||||
this.Right = right;
|
||||
|
||||
//Unmapped controllers are problematic, skip them
|
||||
if (GamePad.GetName(Index) == "Unmapped Controller")
|
||||
if (GamePad.GetName(index) == "Unmapped Controller")
|
||||
{
|
||||
this.Enabled = false;
|
||||
}
|
||||
|
@ -97,29 +97,29 @@ namespace Ryujinx.UI.Input
|
|||
return 0;
|
||||
}
|
||||
|
||||
GamePadState GpState = GamePad.GetState(Index);
|
||||
GamePadState gpState = GamePad.GetState(Index);
|
||||
|
||||
HidControllerButtons Buttons = 0;
|
||||
HidControllerButtons buttons = 0;
|
||||
|
||||
if (IsPressed(GpState, Left.DPadUp)) Buttons |= HidControllerButtons.KEY_DUP;
|
||||
if (IsPressed(GpState, Left.DPadDown)) Buttons |= HidControllerButtons.KEY_DDOWN;
|
||||
if (IsPressed(GpState, Left.DPadLeft)) Buttons |= HidControllerButtons.KEY_DLEFT;
|
||||
if (IsPressed(GpState, Left.DPadRight)) Buttons |= HidControllerButtons.KEY_DRIGHT;
|
||||
if (IsPressed(GpState, Left.StickButton)) Buttons |= HidControllerButtons.KEY_LSTICK;
|
||||
if (IsPressed(GpState, Left.ButtonMinus)) Buttons |= HidControllerButtons.KEY_MINUS;
|
||||
if (IsPressed(GpState, Left.ButtonL)) Buttons |= HidControllerButtons.KEY_L;
|
||||
if (IsPressed(GpState, Left.ButtonZL)) Buttons |= HidControllerButtons.KEY_ZL;
|
||||
if (IsPressed(gpState, Left.DPadUp)) buttons |= HidControllerButtons.KEY_DUP;
|
||||
if (IsPressed(gpState, Left.DPadDown)) buttons |= HidControllerButtons.KEY_DDOWN;
|
||||
if (IsPressed(gpState, Left.DPadLeft)) buttons |= HidControllerButtons.KEY_DLEFT;
|
||||
if (IsPressed(gpState, Left.DPadRight)) buttons |= HidControllerButtons.KEY_DRIGHT;
|
||||
if (IsPressed(gpState, Left.StickButton)) buttons |= HidControllerButtons.KEY_LSTICK;
|
||||
if (IsPressed(gpState, Left.ButtonMinus)) buttons |= HidControllerButtons.KEY_MINUS;
|
||||
if (IsPressed(gpState, Left.ButtonL)) buttons |= HidControllerButtons.KEY_L;
|
||||
if (IsPressed(gpState, Left.ButtonZl)) buttons |= HidControllerButtons.KEY_ZL;
|
||||
|
||||
if (IsPressed(GpState, Right.ButtonA)) Buttons |= HidControllerButtons.KEY_A;
|
||||
if (IsPressed(GpState, Right.ButtonB)) Buttons |= HidControllerButtons.KEY_B;
|
||||
if (IsPressed(GpState, Right.ButtonX)) Buttons |= HidControllerButtons.KEY_X;
|
||||
if (IsPressed(GpState, Right.ButtonY)) Buttons |= HidControllerButtons.KEY_Y;
|
||||
if (IsPressed(GpState, Right.StickButton)) Buttons |= HidControllerButtons.KEY_RSTICK;
|
||||
if (IsPressed(GpState, Right.ButtonPlus)) Buttons |= HidControllerButtons.KEY_PLUS;
|
||||
if (IsPressed(GpState, Right.ButtonR)) Buttons |= HidControllerButtons.KEY_R;
|
||||
if (IsPressed(GpState, Right.ButtonZR)) Buttons |= HidControllerButtons.KEY_ZR;
|
||||
if (IsPressed(gpState, Right.ButtonA)) buttons |= HidControllerButtons.KEY_A;
|
||||
if (IsPressed(gpState, Right.ButtonB)) buttons |= HidControllerButtons.KEY_B;
|
||||
if (IsPressed(gpState, Right.ButtonX)) buttons |= HidControllerButtons.KEY_X;
|
||||
if (IsPressed(gpState, Right.ButtonY)) buttons |= HidControllerButtons.KEY_Y;
|
||||
if (IsPressed(gpState, Right.StickButton)) buttons |= HidControllerButtons.KEY_RSTICK;
|
||||
if (IsPressed(gpState, Right.ButtonPlus)) buttons |= HidControllerButtons.KEY_PLUS;
|
||||
if (IsPressed(gpState, Right.ButtonR)) buttons |= HidControllerButtons.KEY_R;
|
||||
if (IsPressed(gpState, Right.ButtonZr)) buttons |= HidControllerButtons.KEY_ZR;
|
||||
|
||||
return Buttons;
|
||||
return buttons;
|
||||
}
|
||||
|
||||
public (short, short) GetLeftStick()
|
||||
|
@ -142,71 +142,71 @@ namespace Ryujinx.UI.Input
|
|||
return GetStick(Right.Stick);
|
||||
}
|
||||
|
||||
private (short, short) GetStick(ControllerInputID Joystick)
|
||||
private (short, short) GetStick(ControllerInputId joystick)
|
||||
{
|
||||
GamePadState GpState = GamePad.GetState(Index);
|
||||
GamePadState gpState = GamePad.GetState(Index);
|
||||
|
||||
switch (Joystick)
|
||||
switch (joystick)
|
||||
{
|
||||
case ControllerInputID.LJoystick:
|
||||
return ApplyDeadzone(GpState.ThumbSticks.Left);
|
||||
case ControllerInputId.LJoystick:
|
||||
return ApplyDeadzone(gpState.ThumbSticks.Left);
|
||||
|
||||
case ControllerInputID.RJoystick:
|
||||
return ApplyDeadzone(GpState.ThumbSticks.Right);
|
||||
case ControllerInputId.RJoystick:
|
||||
return ApplyDeadzone(gpState.ThumbSticks.Right);
|
||||
|
||||
default:
|
||||
return (0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
private (short, short) ApplyDeadzone(Vector2 Axis)
|
||||
private (short, short) ApplyDeadzone(Vector2 axis)
|
||||
{
|
||||
return (ClampAxis(MathF.Abs(Axis.X) > Deadzone ? Axis.X : 0f),
|
||||
ClampAxis(MathF.Abs(Axis.Y) > Deadzone ? Axis.Y : 0f));
|
||||
return (ClampAxis(MathF.Abs(axis.X) > Deadzone ? axis.X : 0f),
|
||||
ClampAxis(MathF.Abs(axis.Y) > Deadzone ? axis.Y : 0f));
|
||||
}
|
||||
|
||||
private static short ClampAxis(float Value)
|
||||
private static short ClampAxis(float value)
|
||||
{
|
||||
if (Value <= -short.MaxValue)
|
||||
if (value <= -short.MaxValue)
|
||||
{
|
||||
return -short.MaxValue;
|
||||
}
|
||||
else
|
||||
{
|
||||
return (short)(Value * short.MaxValue);
|
||||
return (short)(value * short.MaxValue);
|
||||
}
|
||||
}
|
||||
|
||||
private bool IsPressed(GamePadState GpState, ControllerInputID Button)
|
||||
private bool IsPressed(GamePadState gpState, ControllerInputId button)
|
||||
{
|
||||
switch (Button)
|
||||
switch (button)
|
||||
{
|
||||
case ControllerInputID.A: return GpState.Buttons.A == ButtonState.Pressed;
|
||||
case ControllerInputID.B: return GpState.Buttons.B == ButtonState.Pressed;
|
||||
case ControllerInputID.X: return GpState.Buttons.X == ButtonState.Pressed;
|
||||
case ControllerInputID.Y: return GpState.Buttons.Y == ButtonState.Pressed;
|
||||
case ControllerInputID.LStick: return GpState.Buttons.LeftStick == ButtonState.Pressed;
|
||||
case ControllerInputID.RStick: return GpState.Buttons.RightStick == ButtonState.Pressed;
|
||||
case ControllerInputID.LShoulder: return GpState.Buttons.LeftShoulder == ButtonState.Pressed;
|
||||
case ControllerInputID.RShoulder: return GpState.Buttons.RightShoulder == ButtonState.Pressed;
|
||||
case ControllerInputID.DPadUp: return GpState.DPad.Up == ButtonState.Pressed;
|
||||
case ControllerInputID.DPadDown: return GpState.DPad.Down == ButtonState.Pressed;
|
||||
case ControllerInputID.DPadLeft: return GpState.DPad.Left == ButtonState.Pressed;
|
||||
case ControllerInputID.DPadRight: return GpState.DPad.Right == ButtonState.Pressed;
|
||||
case ControllerInputID.Start: return GpState.Buttons.Start == ButtonState.Pressed;
|
||||
case ControllerInputID.Back: return GpState.Buttons.Back == ButtonState.Pressed;
|
||||
case ControllerInputId.A: return gpState.Buttons.A == ButtonState.Pressed;
|
||||
case ControllerInputId.B: return gpState.Buttons.B == ButtonState.Pressed;
|
||||
case ControllerInputId.X: return gpState.Buttons.X == ButtonState.Pressed;
|
||||
case ControllerInputId.Y: return gpState.Buttons.Y == ButtonState.Pressed;
|
||||
case ControllerInputId.LStick: return gpState.Buttons.LeftStick == ButtonState.Pressed;
|
||||
case ControllerInputId.RStick: return gpState.Buttons.RightStick == ButtonState.Pressed;
|
||||
case ControllerInputId.LShoulder: return gpState.Buttons.LeftShoulder == ButtonState.Pressed;
|
||||
case ControllerInputId.RShoulder: return gpState.Buttons.RightShoulder == ButtonState.Pressed;
|
||||
case ControllerInputId.DPadUp: return gpState.DPad.Up == ButtonState.Pressed;
|
||||
case ControllerInputId.DPadDown: return gpState.DPad.Down == ButtonState.Pressed;
|
||||
case ControllerInputId.DPadLeft: return gpState.DPad.Left == ButtonState.Pressed;
|
||||
case ControllerInputId.DPadRight: return gpState.DPad.Right == ButtonState.Pressed;
|
||||
case ControllerInputId.Start: return gpState.Buttons.Start == ButtonState.Pressed;
|
||||
case ControllerInputId.Back: return gpState.Buttons.Back == ButtonState.Pressed;
|
||||
|
||||
case ControllerInputID.LTrigger: return GpState.Triggers.Left >= TriggerThreshold;
|
||||
case ControllerInputID.RTrigger: return GpState.Triggers.Right >= TriggerThreshold;
|
||||
case ControllerInputId.LTrigger: return gpState.Triggers.Left >= TriggerThreshold;
|
||||
case ControllerInputId.RTrigger: return gpState.Triggers.Right >= TriggerThreshold;
|
||||
|
||||
//Using thumbsticks as buttons is not common, but it would be nice not to ignore them
|
||||
case ControllerInputID.LJoystick:
|
||||
return GpState.ThumbSticks.Left.X >= Deadzone ||
|
||||
GpState.ThumbSticks.Left.Y >= Deadzone;
|
||||
case ControllerInputId.LJoystick:
|
||||
return gpState.ThumbSticks.Left.X >= Deadzone ||
|
||||
gpState.ThumbSticks.Left.Y >= Deadzone;
|
||||
|
||||
case ControllerInputID.RJoystick:
|
||||
return GpState.ThumbSticks.Right.X >= Deadzone ||
|
||||
GpState.ThumbSticks.Right.Y >= Deadzone;
|
||||
case ControllerInputId.RJoystick:
|
||||
return gpState.ThumbSticks.Right.X >= Deadzone ||
|
||||
gpState.ThumbSticks.Right.Y >= Deadzone;
|
||||
|
||||
default:
|
||||
return false;
|
||||
|
|
|
@ -16,7 +16,7 @@ namespace Ryujinx.UI.Input
|
|||
public int DPadRight;
|
||||
public int ButtonMinus;
|
||||
public int ButtonL;
|
||||
public int ButtonZL;
|
||||
public int ButtonZl;
|
||||
}
|
||||
|
||||
public struct JoyConKeyboardRight
|
||||
|
@ -32,7 +32,7 @@ namespace Ryujinx.UI.Input
|
|||
public int ButtonY;
|
||||
public int ButtonPlus;
|
||||
public int ButtonR;
|
||||
public int ButtonZR;
|
||||
public int ButtonZr;
|
||||
}
|
||||
|
||||
public class JoyConKeyboard
|
||||
|
@ -41,62 +41,62 @@ namespace Ryujinx.UI.Input
|
|||
public JoyConKeyboardRight Right;
|
||||
|
||||
public JoyConKeyboard(
|
||||
JoyConKeyboardLeft Left,
|
||||
JoyConKeyboardRight Right)
|
||||
JoyConKeyboardLeft left,
|
||||
JoyConKeyboardRight right)
|
||||
{
|
||||
this.Left = Left;
|
||||
this.Right = Right;
|
||||
this.Left = left;
|
||||
this.Right = right;
|
||||
}
|
||||
|
||||
public HidControllerButtons GetButtons(KeyboardState Keyboard)
|
||||
public HidControllerButtons GetButtons(KeyboardState keyboard)
|
||||
{
|
||||
HidControllerButtons Buttons = 0;
|
||||
HidControllerButtons buttons = 0;
|
||||
|
||||
if (Keyboard[(Key)Left.StickButton]) Buttons |= HidControllerButtons.KEY_LSTICK;
|
||||
if (Keyboard[(Key)Left.DPadUp]) Buttons |= HidControllerButtons.KEY_DUP;
|
||||
if (Keyboard[(Key)Left.DPadDown]) Buttons |= HidControllerButtons.KEY_DDOWN;
|
||||
if (Keyboard[(Key)Left.DPadLeft]) Buttons |= HidControllerButtons.KEY_DLEFT;
|
||||
if (Keyboard[(Key)Left.DPadRight]) Buttons |= HidControllerButtons.KEY_DRIGHT;
|
||||
if (Keyboard[(Key)Left.ButtonMinus]) Buttons |= HidControllerButtons.KEY_MINUS;
|
||||
if (Keyboard[(Key)Left.ButtonL]) Buttons |= HidControllerButtons.KEY_L;
|
||||
if (Keyboard[(Key)Left.ButtonZL]) Buttons |= HidControllerButtons.KEY_ZL;
|
||||
if (keyboard[(Key)Left.StickButton]) buttons |= HidControllerButtons.KEY_LSTICK;
|
||||
if (keyboard[(Key)Left.DPadUp]) buttons |= HidControllerButtons.KEY_DUP;
|
||||
if (keyboard[(Key)Left.DPadDown]) buttons |= HidControllerButtons.KEY_DDOWN;
|
||||
if (keyboard[(Key)Left.DPadLeft]) buttons |= HidControllerButtons.KEY_DLEFT;
|
||||
if (keyboard[(Key)Left.DPadRight]) buttons |= HidControllerButtons.KEY_DRIGHT;
|
||||
if (keyboard[(Key)Left.ButtonMinus]) buttons |= HidControllerButtons.KEY_MINUS;
|
||||
if (keyboard[(Key)Left.ButtonL]) buttons |= HidControllerButtons.KEY_L;
|
||||
if (keyboard[(Key)Left.ButtonZl]) buttons |= HidControllerButtons.KEY_ZL;
|
||||
|
||||
if (Keyboard[(Key)Right.StickButton]) Buttons |= HidControllerButtons.KEY_RSTICK;
|
||||
if (Keyboard[(Key)Right.ButtonA]) Buttons |= HidControllerButtons.KEY_A;
|
||||
if (Keyboard[(Key)Right.ButtonB]) Buttons |= HidControllerButtons.KEY_B;
|
||||
if (Keyboard[(Key)Right.ButtonX]) Buttons |= HidControllerButtons.KEY_X;
|
||||
if (Keyboard[(Key)Right.ButtonY]) Buttons |= HidControllerButtons.KEY_Y;
|
||||
if (Keyboard[(Key)Right.ButtonPlus]) Buttons |= HidControllerButtons.KEY_PLUS;
|
||||
if (Keyboard[(Key)Right.ButtonR]) Buttons |= HidControllerButtons.KEY_R;
|
||||
if (Keyboard[(Key)Right.ButtonZR]) Buttons |= HidControllerButtons.KEY_ZR;
|
||||
if (keyboard[(Key)Right.StickButton]) buttons |= HidControllerButtons.KEY_RSTICK;
|
||||
if (keyboard[(Key)Right.ButtonA]) buttons |= HidControllerButtons.KEY_A;
|
||||
if (keyboard[(Key)Right.ButtonB]) buttons |= HidControllerButtons.KEY_B;
|
||||
if (keyboard[(Key)Right.ButtonX]) buttons |= HidControllerButtons.KEY_X;
|
||||
if (keyboard[(Key)Right.ButtonY]) buttons |= HidControllerButtons.KEY_Y;
|
||||
if (keyboard[(Key)Right.ButtonPlus]) buttons |= HidControllerButtons.KEY_PLUS;
|
||||
if (keyboard[(Key)Right.ButtonR]) buttons |= HidControllerButtons.KEY_R;
|
||||
if (keyboard[(Key)Right.ButtonZr]) buttons |= HidControllerButtons.KEY_ZR;
|
||||
|
||||
return Buttons;
|
||||
return buttons;
|
||||
}
|
||||
|
||||
public (short, short) GetLeftStick(KeyboardState Keyboard)
|
||||
public (short, short) GetLeftStick(KeyboardState keyboard)
|
||||
{
|
||||
short DX = 0;
|
||||
short DY = 0;
|
||||
short dx = 0;
|
||||
short dy = 0;
|
||||
|
||||
if (Keyboard[(Key)Left.StickUp]) DY = short.MaxValue;
|
||||
if (Keyboard[(Key)Left.StickDown]) DY = -short.MaxValue;
|
||||
if (Keyboard[(Key)Left.StickLeft]) DX = -short.MaxValue;
|
||||
if (Keyboard[(Key)Left.StickRight]) DX = short.MaxValue;
|
||||
if (keyboard[(Key)Left.StickUp]) dy = short.MaxValue;
|
||||
if (keyboard[(Key)Left.StickDown]) dy = -short.MaxValue;
|
||||
if (keyboard[(Key)Left.StickLeft]) dx = -short.MaxValue;
|
||||
if (keyboard[(Key)Left.StickRight]) dx = short.MaxValue;
|
||||
|
||||
return (DX, DY);
|
||||
return (dx, dy);
|
||||
}
|
||||
|
||||
public (short, short) GetRightStick(KeyboardState Keyboard)
|
||||
public (short, short) GetRightStick(KeyboardState keyboard)
|
||||
{
|
||||
short DX = 0;
|
||||
short DY = 0;
|
||||
short dx = 0;
|
||||
short dy = 0;
|
||||
|
||||
if (Keyboard[(Key)Right.StickUp]) DY = short.MaxValue;
|
||||
if (Keyboard[(Key)Right.StickDown]) DY = -short.MaxValue;
|
||||
if (Keyboard[(Key)Right.StickLeft]) DX = -short.MaxValue;
|
||||
if (Keyboard[(Key)Right.StickRight]) DX = short.MaxValue;
|
||||
if (keyboard[(Key)Right.StickUp]) dy = short.MaxValue;
|
||||
if (keyboard[(Key)Right.StickDown]) dy = -short.MaxValue;
|
||||
if (keyboard[(Key)Right.StickLeft]) dx = -short.MaxValue;
|
||||
if (keyboard[(Key)Right.StickRight]) dx = short.MaxValue;
|
||||
|
||||
return (DX, DY);
|
||||
return (dx, dy);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,13 +15,13 @@ namespace Ryujinx
|
|||
{
|
||||
Console.Title = "Ryujinx Console";
|
||||
|
||||
IGalRenderer Renderer = new OGLRenderer();
|
||||
IGalRenderer renderer = new OGLRenderer();
|
||||
|
||||
IAalOutput AudioOut = new OpenALAudioOut();
|
||||
IAalOutput audioOut = new OpenALAudioOut();
|
||||
|
||||
Switch Device = new Switch(Renderer, AudioOut);
|
||||
Switch device = new Switch(renderer, audioOut);
|
||||
|
||||
Config.Read(Device);
|
||||
Config.Read(device);
|
||||
|
||||
Logger.Updated += ConsoleLog.Log;
|
||||
|
||||
|
@ -29,24 +29,24 @@ namespace Ryujinx
|
|||
{
|
||||
if (Directory.Exists(args[0]))
|
||||
{
|
||||
string[] RomFsFiles = Directory.GetFiles(args[0], "*.istorage");
|
||||
string[] romFsFiles = Directory.GetFiles(args[0], "*.istorage");
|
||||
|
||||
if (RomFsFiles.Length == 0)
|
||||
if (romFsFiles.Length == 0)
|
||||
{
|
||||
RomFsFiles = Directory.GetFiles(args[0], "*.romfs");
|
||||
romFsFiles = Directory.GetFiles(args[0], "*.romfs");
|
||||
}
|
||||
|
||||
if (RomFsFiles.Length > 0)
|
||||
if (romFsFiles.Length > 0)
|
||||
{
|
||||
Console.WriteLine("Loading as cart with RomFS.");
|
||||
|
||||
Device.LoadCart(args[0], RomFsFiles[0]);
|
||||
device.LoadCart(args[0], romFsFiles[0]);
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("Loading as cart WITHOUT RomFS.");
|
||||
|
||||
Device.LoadCart(args[0]);
|
||||
device.LoadCart(args[0]);
|
||||
}
|
||||
}
|
||||
else if (File.Exists(args[0]))
|
||||
|
@ -55,19 +55,19 @@ namespace Ryujinx
|
|||
{
|
||||
case ".xci":
|
||||
Console.WriteLine("Loading as XCI.");
|
||||
Device.LoadXci(args[0]);
|
||||
device.LoadXci(args[0]);
|
||||
break;
|
||||
case ".nca":
|
||||
Console.WriteLine("Loading as NCA.");
|
||||
Device.LoadNca(args[0]);
|
||||
device.LoadNca(args[0]);
|
||||
break;
|
||||
case ".nsp":
|
||||
Console.WriteLine("Loading as NSP.");
|
||||
Device.LoadNsp(args[0]);
|
||||
device.LoadNsp(args[0]);
|
||||
break;
|
||||
default:
|
||||
Console.WriteLine("Loading as homebrew.");
|
||||
Device.LoadProgram(args[0]);
|
||||
device.LoadProgram(args[0]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -77,14 +77,14 @@ namespace Ryujinx
|
|||
Console.WriteLine("Please specify the folder with the NSOs/IStorage or a NSO/NRO.");
|
||||
}
|
||||
|
||||
using (GLScreen Screen = new GLScreen(Device, Renderer))
|
||||
using (GlScreen screen = new GlScreen(device, renderer))
|
||||
{
|
||||
Screen.MainLoop();
|
||||
screen.MainLoop();
|
||||
|
||||
Device.Dispose();
|
||||
device.Dispose();
|
||||
}
|
||||
|
||||
AudioOut.Dispose();
|
||||
audioOut.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue