From e210da9bb086f8106b2d3a22f562f8d814328b82c8d6ce6680c4eca7980680eb Mon Sep 17 00:00:00 2001 From: copecone Date: Mon, 17 Aug 2026 21:15:54 +0900 Subject: [PATCH] Add RenderContext --- Core/RenderManager.cs | 16 ++++++++++++---- Patch/Engine/RenderEnvironmentPatches.cs | 20 ++++++++++---------- 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/Core/RenderManager.cs b/Core/RenderManager.cs index 8f9bda1..d3b9014 100644 --- a/Core/RenderManager.cs +++ b/Core/RenderManager.cs @@ -21,11 +21,19 @@ using ThreadPriority = System.Threading.ThreadPriority; namespace ADOFAIRenderer.Core { - internal static class RenderFlags + internal static class RenderContext { public static bool Auto = true; public static bool TimePatch = true; public static bool ScreenPatch = true; + public static Func EndCondition = () => scrController.instance.state == States.Won; + + public static void Reset() + { + Auto = true; + TimePatch = true; ScreenPatch = true; + EndCondition = () => scrController.instance.state == States.Won; + } } internal class RenderManager : MonoBehaviour @@ -201,7 +209,7 @@ namespace ADOFAIRenderer.Core _originalInputOffset = scrConductor.currentPreset.inputOffset; scrConductor.currentPreset.inputOffset = 0; - RDC.auto = RenderFlags.Auto; + RDC.auto = RenderContext.Auto; AccessTools.Field(typeof(scrController), "disableCongratsMessage") .SetValue(scrController.instance, true); @@ -233,14 +241,14 @@ namespace ADOFAIRenderer.Core StopFFmpeg(false); EndRender(); } - else if (scrController.instance.state == States.Won) + else if (RenderContext.EndCondition()) { if (wonFrame == -1) { wonFrame = frameCount; } - var extraFrames = (long)Math.Ceiling(Configuration.DelayAfterLevelEnd * Configuration.RenderFPS); + var extraFrames = (long)Math.Ceiling(Configuration.DelayAfterEnd * Configuration.RenderFPS); if (frameCount - wonFrame < extraFrames) return; ResetRenderState(success: true); diff --git a/Patch/Engine/RenderEnvironmentPatches.cs b/Patch/Engine/RenderEnvironmentPatches.cs index e8bce57..5f26017 100644 --- a/Patch/Engine/RenderEnvironmentPatches.cs +++ b/Patch/Engine/RenderEnvironmentPatches.cs @@ -18,7 +18,7 @@ namespace ADOFAIRenderer.Patch.Engine [SuppressMessage("ReSharper", "InconsistentNaming")] public static bool Prefix(ref float __result) { - if (!RenderManager.IsCapturingActive || !RenderFlags.TimePatch) return true; + if (!RenderManager.IsCapturingActive || !RenderContext.TimePatch) return true; __result = (float)(TimeSpent + RenderManager.Instance.timeBase); return false; } @@ -30,7 +30,7 @@ namespace ADOFAIRenderer.Patch.Engine [SuppressMessage("ReSharper", "InconsistentNaming")] public static bool Prefix(ref double __result) { - if (!RenderManager.IsCapturingActive || !RenderFlags.TimePatch) return true; + if (!RenderManager.IsCapturingActive || !RenderContext.TimePatch) return true; __result = TimeSpent + RenderManager.Instance.timeBase; return false; } @@ -42,7 +42,7 @@ namespace ADOFAIRenderer.Patch.Engine [SuppressMessage("ReSharper", "InconsistentNaming")] public static bool Prefix(ref float __result) { - if (!RenderManager.IsCapturingActive || !RenderFlags.TimePatch) return true; + if (!RenderManager.IsCapturingActive || !RenderContext.TimePatch) return true; __result = (float)(TimeSpent + RenderManager.Instance.unscaledTimeBase); return false; } @@ -54,7 +54,7 @@ namespace ADOFAIRenderer.Patch.Engine [SuppressMessage("ReSharper", "InconsistentNaming")] public static bool Prefix(ref double __result) { - if (!RenderManager.IsCapturingActive || !RenderFlags.TimePatch) return true; + if (!RenderManager.IsCapturingActive || !RenderContext.TimePatch) return true; __result = TimeSpent + RenderManager.Instance.unscaledTimeBase; return false; } @@ -66,7 +66,7 @@ namespace ADOFAIRenderer.Patch.Engine [SuppressMessage("ReSharper", "InconsistentNaming")] public static bool Prefix(ref double __result) { - if (!RenderManager.IsCapturingActive || !RenderFlags.TimePatch) return true; + if (!RenderManager.IsCapturingActive || !RenderContext.TimePatch) return true; __result = TimeSpent + RenderManager.Instance.dspTimeBase; return false; } @@ -88,7 +88,7 @@ namespace ADOFAIRenderer.Patch.Engine [SuppressMessage("ReSharper", "InconsistentNaming")] public static bool Prefix(ref int __result) { - if (!RenderManager.IsCapturingActive || !RenderFlags.TimePatch) return true; + if (!RenderManager.IsCapturingActive || !RenderContext.TimePatch) return true; __result = (int)(RenderManager.Instance.frameCount + RenderManager.Instance.frameCountBase); return false; } @@ -100,7 +100,7 @@ namespace ADOFAIRenderer.Patch.Engine [SuppressMessage("ReSharper", "InconsistentNaming")] public static bool Prefix(ref float __result) { - if (!RenderManager.IsCapturingActive || !RenderFlags.TimePatch) return true; + if (!RenderManager.IsCapturingActive || !RenderContext.TimePatch) return true; __result = (float)(1 / RenderManager.Instance.Configuration.RenderFPS); return false; } @@ -112,7 +112,7 @@ namespace ADOFAIRenderer.Patch.Engine [SuppressMessage("ReSharper", "InconsistentNaming")] public static bool Prefix(ref float __result) { - if (!RenderManager.IsCapturingActive || !RenderFlags.TimePatch) return true; + if (!RenderManager.IsCapturingActive || !RenderContext.TimePatch) return true; __result = (float)(1 / RenderManager.Instance.Configuration.RenderFPS); return false; } @@ -124,7 +124,7 @@ namespace ADOFAIRenderer.Patch.Engine [SuppressMessage("ReSharper", "InconsistentNaming")] public static bool Prefix(ref int __result) { - if (!RenderManager.IsActive || !RenderFlags.ScreenPatch || !RenderManager.Instance) return true; + if (!RenderManager.IsActive || !RenderContext.ScreenPatch || !RenderManager.Instance) return true; __result = RenderManager.Instance.Configuration.RenderWidth; return false; } @@ -136,7 +136,7 @@ namespace ADOFAIRenderer.Patch.Engine [SuppressMessage("ReSharper", "InconsistentNaming")] public static bool Prefix(ref int __result) { - if (!RenderManager.IsActive || !RenderFlags.ScreenPatch || !RenderManager.Instance) return true; + if (!RenderManager.IsActive || !RenderContext.ScreenPatch || !RenderManager.Instance) return true; __result = RenderManager.Instance.Configuration.RenderHeight; return false; }