SHA256
56 lines
1.7 KiB
C#
56 lines
1.7 KiB
C#
using System;
|
|
using ADOFAIRenderer.Core;
|
|
using ADOFAIRenderer.Data;
|
|
|
|
namespace ADOFAIRenderer.API;
|
|
|
|
/// <summary>
|
|
/// Fluent builder for configuring and starting a render session.
|
|
/// </summary>
|
|
public class RenderSession
|
|
{
|
|
private bool _auto = true;
|
|
|
|
public enum PatchType { Time, Screen }
|
|
private bool _timePatch = true;
|
|
private bool _screenPatch = true;
|
|
|
|
/// <summary>
|
|
/// Sets whether automatic rendering is enabled.
|
|
/// </summary>
|
|
/// <param name="enabled"><c>true</c> to enable automatic rendering; otherwise, <c>false</c>. Default is <c>true</c>.</param>
|
|
/// <returns>The current <see cref="RenderSession"/> instance for method chaining.</returns>
|
|
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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Applies the configured flags and initiates the render session.
|
|
/// </summary>
|
|
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();
|
|
}
|
|
} |