using System.Collections.Generic; using ADOFAIRenderer.Core; using ADOFAIRenderer.Data; using ADOFAIRenderer.Data.Input; using ADOFAIRenderer.Util.FFmpeg; using MelonLoader; using UnityEngine; using UnityEngine.UIElements; namespace ADOFAIRenderer.UI { internal class RenderConfigUIManager : MonoBehaviour { [SerializeField] private UIDocument uiDocument = null!; private VisualElement _root = null!; private IntegerInputValidator _intValidator = null!; private DoubleInputValidator _doubleValidator = null!; private Button _goRenderButton = null!; private Button _videoEncodingConfigButton = null!; private VisualElement _videoEncodingConfigContainer = null!; private Button _audioEncodingConfigButton = null!; private VisualElement _audioEncodingConfigContainer = null!; private Button _advancedSettingsButton = null!; private VisualElement? _advancedConfigContainer; private void Awake() { _root = uiDocument.rootVisualElement; RenderManager.Instance.Configuration = new RenderConfig(); _intValidator = new IntegerInputValidator(_root); _doubleValidator = new DoubleInputValidator(_root); } private void Start() { // Init Validators _intValidator .AddLimits("RenderWidth", new PositiveOnlyIntegerLimit(), new RangeIntegerLimit(1, 7680)) .AddLimits("RenderHeight", new PositiveOnlyIntegerLimit(), new RangeIntegerLimit(1, 4320)); _doubleValidator .AddLimits("RenderFPS", new PositiveOnlyDoubleLimit(), new RangeDoubleLimit(0, 9600)) .AddLimits("VideoFPS", new PositiveOnlyDoubleLimit(), new RangeDoubleLimit(0, 4800)) .AddLimits("DelayAfterEnd", new PositiveOnlyDoubleLimit(), new RangeDoubleLimit(0, 86400)); _intValidator.SetupValidation(); _doubleValidator.SetupValidation(); // Attach Button Event Listener _goRenderButton = _root.Q