From 6ca0e5f6e10b20b5ba15d3d607609b0a9e8347dd9b86f58076764cfa09d0c459 Mon Sep 17 00:00:00 2001 From: copecone Date: Sat, 30 May 2026 23:35:56 +0900 Subject: [PATCH] Fix Random Seed Parsing and Assignment to `RenderSettings` in `RenderButton` --- Core/RenderManager.cs | 7 ++++++- UI/RenderButton.cs | 20 +++++++++++++++++--- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/Core/RenderManager.cs b/Core/RenderManager.cs index d25c6c1..d44bdd3 100644 --- a/Core/RenderManager.cs +++ b/Core/RenderManager.cs @@ -10,6 +10,7 @@ using ADOFAIRenderer.Util.FFmpeg; using MelonLoader; using MelonLoader.Utils; using UnityEngine; +using Random = UnityEngine.Random; using ThreadPriority = System.Threading.ThreadPriority; namespace ADOFAIRenderer.Core @@ -63,8 +64,9 @@ namespace ADOFAIRenderer.Core public string Codec; public double EndWaitTime; public bool ShowHitText; + public int? RandomSeed; - public RenderSettings(double targetFPS, double videoFPS, int renderWidth, int renderHeight, int bitrate, string codec, double endWaitTime, bool showHitText) + public RenderSettings(double targetFPS, double videoFPS, int renderWidth, int renderHeight, int bitrate, string codec, double endWaitTime, bool showHitText, int? randomSeed) { TargetFPS = targetFPS; VideoFPS = videoFPS; @@ -76,6 +78,8 @@ namespace ADOFAIRenderer.Core Codec = codec; EndWaitTime = endWaitTime; ShowHitText = showHitText; + + RandomSeed = randomSeed; } } @@ -348,6 +352,7 @@ namespace ADOFAIRenderer.Core GCS.nextSpeedRun = 1; GCS.customLevelIndex = 0; + if (Configuration.RandomSeed.HasValue) Random.InitState(Configuration.RandomSeed.Value); ADOBase.loader.LoadSceneWithTransition(WipeDirection.StartsFromRight, "scnGame"); skipPressToStart = true; _renderSetup = true; diff --git a/UI/RenderButton.cs b/UI/RenderButton.cs index a386210..77100f9 100644 --- a/UI/RenderButton.cs +++ b/UI/RenderButton.cs @@ -17,6 +17,7 @@ namespace ADOFAIRenderer.UI [SerializeField] private TMP_InputField renderHeightInput = null!; [SerializeField] private TMP_InputField bitrateInput = null!; [SerializeField] private TMP_InputField waitAfterEndInput = null!; + [SerializeField] private TMP_InputField randomSeedInput = null!; [Header("Dropdown")] [SerializeField] private TMP_Dropdown codecDropdown = null!; @@ -78,11 +79,23 @@ namespace ADOFAIRenderer.UI Melon.Logger.Error("올바르지 않은 Bitrate 값입니다. 0보다 큰 정수여야 합니다."); return; } - if (!double.TryParse(waitAfterEndInput.text, out var waitAfterEnd) || waitAfterEnd <= 0) + if (!double.TryParse(waitAfterEndInput.text, out var waitAfterEnd) || waitAfterEnd < 0) { - Melon.Logger.Error("올바르지 않은 Wait After End 값입니다. 0보다 큰 숫자여야 합니다."); + Melon.Logger.Error("올바르지 않은 Wait After End 값입니다. 0 이상의 숫자여야 합니다."); return; } + + int? parsedRandomSeed = null; + var randomSeedText = randomSeedInput.text.Truncate(int.MaxValue); + if (!randomSeedText.IsNullOrEmpty()) + { + if (!int.TryParse(randomSeedText, out var seedVal)) + { + Melon.Logger.Error("올바르지 않은 Random Seed 값입니다. 비어 있거나 정수여야 합니다."); + return; + } + parsedRandomSeed = seedVal; + } if (RenderManager.Instance) { @@ -105,7 +118,8 @@ namespace ADOFAIRenderer.UI Bitrate = bitrate, Codec = selectedCodecName, EndWaitTime = waitAfterEnd, - ShowHitText = showHitText + ShowHitText = showHitText, + RandomSeed = parsedRandomSeed }; }