Headless in Avalonia v2 (#448)

Launch the Ryujinx.exe, first argument --no-gui or nogui, and the rest of the arguments should be your normal headless script. You can include the new option --use-main-config which will provide any arguments that you don't, filled in from your main config made by the UI.

Input config is not inherited at this time.
This commit is contained in:
Evan Husted
2024-12-28 03:49:06 -06:00
committed by GitHub
parent 0c21b07f19
commit 12b264af44
25 changed files with 647 additions and 505 deletions

View File

@@ -0,0 +1,48 @@
using Ryujinx.HLE.UI;
using System.Threading;
using System.Threading.Tasks;
namespace Ryujinx.Headless
{
/// <summary>
/// Headless text processing class, right now there is no way to forward the input to it.
/// </summary>
internal class HeadlessDynamicTextInputHandler : IDynamicTextInputHandler
{
private bool _canProcessInput;
public event DynamicTextChangedHandler TextChangedEvent;
public event KeyPressedHandler KeyPressedEvent { add { } remove { } }
public event KeyReleasedHandler KeyReleasedEvent { add { } remove { } }
public bool TextProcessingEnabled
{
get => Volatile.Read(ref _canProcessInput);
set
{
Volatile.Write(ref _canProcessInput, value);
// Launch a task to update the text.
Task.Run(() =>
{
Thread.Sleep(100);
TextChangedEvent?.Invoke("Ryujinx", 7, 7, false);
});
}
}
public HeadlessDynamicTextInputHandler()
{
// Start with input processing turned off so the text box won't accumulate text
// if the user is playing on the keyboard.
_canProcessInput = false;
}
public void SetText(string text, int cursorBegin) { }
public void SetText(string text, int cursorBegin, int cursorEnd) { }
public void Dispose() { }
}
}