using System; using ADOFAIRenderer.Core; using ADOFAIRenderer.Data; namespace ADOFAIRenderer.API; /// /// Fluent builder for configuring and starting a render session. /// public class RenderSession { private bool _auto = true; public enum PatchType { Time, Screen } private bool _timePatch = true; private bool _screenPatch = true; /// /// Sets whether automatic rendering is enabled. /// /// true to enable automatic rendering; otherwise, false. Default is true. /// The current instance for method chaining. public RenderSession WithAuto(bool enabled = true) { _auto = enabled; return this; } public RenderSession WithPatch(PatchType patchType, bool enabled = true) { switch (patchType) { case PatchType.Time: _timePatch = enabled; break; case PatchType.Screen: _screenPatch = enabled; break; default: throw new ArgumentOutOfRangeException(nameof(patchType), patchType, null); } return this; } /// /// Applies the configured flags and initiates the render session. /// public void Start(RenderConfig renderConfig, string levelPath) { RenderContext.Auto = _auto; RenderContext.TimePatch = _timePatch; RenderContext.ScreenPatch = _screenPatch; RenderManager.Instance.levelPath = levelPath; RenderManager.Instance.Configuration = renderConfig; RenderManager.Instance.SetupCaptureDirectory(); RenderManager.Instance.SetupGameScene(); } }