using System;
using ADOFAIRenderer.Core;
namespace ADOFAIRenderer.API;
///
/// Fluent builder for configuring and starting a render session.
///
public class RenderSessionBuilder
{
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 RenderSessionBuilder WithAuto(bool enabled = true)
{
_auto = enabled;
return this;
}
public RenderSessionBuilder 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()
{
RenderFlags.Auto = _auto;
RenderFlags.TimePatch = _timePatch;
RenderFlags.ScreenPatch = _screenPatch;
}
}