SHA256
Refactor Every namespace Keyword Usage
This commit is contained in:
1 parent
4e67cb9b09
commit
27be2141f7
44 files changed
+208
-134
No files matched your search
@@ -110,4 +110,68 @@
|
||||
<ItemGroup>
|
||||
<PackageReference Include="FFmpeg.AutoGen" Version="8.1.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<!-- Build 후 XML 문서에서 ADOFAIRenderer.API 네임스페이스만 남기고 나머지 제거 -->
|
||||
<UsingTask TaskName="FilterXmlDoc" TaskFactory="RoslynCodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll">
|
||||
<ParameterGroup>
|
||||
<XmlFilePath ParameterType="System.String" Required="true" />
|
||||
<TargetNamespace ParameterType="System.String" Required="true" />
|
||||
</ParameterGroup>
|
||||
<Task>
|
||||
<Using Namespace="System" />
|
||||
<Using Namespace="System.IO" />
|
||||
<Using Namespace="System.Collections.Generic" />
|
||||
<Using Namespace="System.Xml.Linq" />
|
||||
<Code Type="Fragment" Language="cs">
|
||||
<![CDATA[
|
||||
if (!File.Exists(XmlFilePath)) return true;
|
||||
try
|
||||
{
|
||||
var doc = XDocument.Load(XmlFilePath);
|
||||
var members = doc.Root?.Element("members");
|
||||
if (members != null)
|
||||
{
|
||||
var prefix = TargetNamespace + ".";
|
||||
var toRemove = new List<XElement>();
|
||||
|
||||
foreach (var member in members.Elements("member"))
|
||||
{
|
||||
var nameAttr = member.Attribute("name")?.Value;
|
||||
if (string.IsNullOrEmpty(nameAttr)) continue;
|
||||
|
||||
// XML 주석 형식: T:네임스페이스.타입, M:메서드, P:프로퍼티, F:필드/열거형, E:이벤트 등
|
||||
int colonIndex = nameAttr.IndexOf(':');
|
||||
string fullName = colonIndex >= 0 ? nameAttr.Substring(colonIndex + 1) : nameAttr;
|
||||
|
||||
if (!fullName.StartsWith(prefix, StringComparison.Ordinal) && !fullName.Equals(TargetNamespace, StringComparison.Ordinal))
|
||||
{
|
||||
toRemove.Add(member);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var elem in toRemove)
|
||||
{
|
||||
elem.Remove();
|
||||
}
|
||||
|
||||
doc.Save(XmlFilePath);
|
||||
Log.LogMessage(Microsoft.Build.Framework.MessageImportance.High, $"[FilterXmlDoc] Kept '{TargetNamespace}' namespace docs. Removed {toRemove.Count} other members.");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.LogWarning($"[FilterXmlDoc] XML filtering failed: {ex.Message}");
|
||||
}
|
||||
]]>
|
||||
</Code>
|
||||
</Task>
|
||||
</UsingTask>
|
||||
|
||||
<Target Name="FilterDocumentationFile" AfterTargets="Build" Condition="'$(GenerateDocumentationFile)' == 'true'">
|
||||
<PropertyGroup>
|
||||
<_XmlDocPath Condition="'$(_XmlDocPath)' == '' and Exists('$(TargetDir)$(TargetName).xml')">$(TargetDir)$(TargetName).xml</_XmlDocPath>
|
||||
<_XmlDocPath Condition="'$(_XmlDocPath)' == '' and Exists('$(DocumentationFile)')">$(DocumentationFile)</_XmlDocPath>
|
||||
</PropertyGroup>
|
||||
<FilterXmlDoc Condition="'$(_XmlDocPath)' != ''" XmlFilePath="$(_XmlDocPath)" TargetNamespace="ADOFAIRenderer.API" />
|
||||
</Target>
|
||||
</Project>
|
||||
+35
-4
@@ -5,9 +5,10 @@ using System.IO;
|
||||
namespace ADOFAIRenderer.API;
|
||||
|
||||
/// <summary>
|
||||
/// Represents the result and metadata of a completed or cancelled render session.
|
||||
/// Represents the result and metadata of a completed or canceled render session.
|
||||
/// </summary>
|
||||
[SuppressMessage("ReSharper", "UnusedType.Global")]
|
||||
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
|
||||
public class RenderResult
|
||||
{
|
||||
/// <summary>
|
||||
@@ -41,10 +42,20 @@ public class RenderResult
|
||||
public long FileSizeBytes { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Error message or reason if rendering failed or was cancelled; <c>null</c> on success.
|
||||
/// Error message or reason if rendering failed or was canceled; <c>null</c> on success.
|
||||
/// </summary>
|
||||
public string? ErrorMessage { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="RenderResult"/> class.
|
||||
/// </summary>
|
||||
/// <param name="success">Whether the render session completed successfully.</param>
|
||||
/// <param name="outputPath">The absolute output path of the rendered video file.</param>
|
||||
/// <param name="totalFrames">Total number of video frames sent to the encoder.</param>
|
||||
/// <param name="videoDuration">Calculated video duration in seconds.</param>
|
||||
/// <param name="renderDuration">Total wall-clock time spent rendering.</param>
|
||||
/// <param name="fileSizeBytes">File size of the output video in bytes.</param>
|
||||
/// <param name="errorMessage">Error message or reason if failed or canceled; otherwise, <c>null</c>.</param>
|
||||
public RenderResult(
|
||||
bool success,
|
||||
string outputPath,
|
||||
@@ -63,7 +74,15 @@ public class RenderResult
|
||||
ErrorMessage = errorMessage;
|
||||
}
|
||||
|
||||
public static RenderResult CreateSuccess(string outputPath, long totalFrames, double fps, TimeSpan renderDuration)
|
||||
/// <summary>
|
||||
/// Creates a successful <see cref="RenderResult"/> instance from the specified render metrics.
|
||||
/// </summary>
|
||||
/// <param name="outputPath">The path to the rendered video file.</param>
|
||||
/// <param name="totalFrames">Total number of video frames sent to the encoder.</param>
|
||||
/// <param name="fps">The effective frames per second used to compute video duration.</param>
|
||||
/// <param name="renderDuration">Total wall-clock time spent rendering.</param>
|
||||
/// <returns>A new <see cref="RenderResult"/> representing a successful render session.</returns>
|
||||
internal static RenderResult CreateSuccess(string outputPath, long totalFrames, double fps, TimeSpan renderDuration)
|
||||
{
|
||||
var fileSizeBytes = 0L;
|
||||
if (!string.IsNullOrEmpty(outputPath) && File.Exists(outputPath))
|
||||
@@ -76,12 +95,24 @@ public class RenderResult
|
||||
return new RenderResult(true, outputPath, totalFrames, videoDuration, renderDuration, fileSizeBytes);
|
||||
}
|
||||
|
||||
public static RenderResult CreateFailure(string? errorMessage, long totalFrames, double fps, TimeSpan renderDuration)
|
||||
/// <summary>
|
||||
/// Creates a failed or cancelled <see cref="RenderResult"/> instance.
|
||||
/// </summary>
|
||||
/// <param name="errorMessage">Error message or reason for failure/cancellation.</param>
|
||||
/// <param name="totalFrames">Total number of video frames sent to the encoder prior to termination.</param>
|
||||
/// <param name="fps">The effective frames per second used to compute video duration.</param>
|
||||
/// <param name="renderDuration">Total wall-clock time spent rendering prior to termination.</param>
|
||||
/// <returns>A new <see cref="RenderResult"/> representing a failed or canceled render session.</returns>
|
||||
internal static RenderResult CreateFailure(string? errorMessage, long totalFrames, double fps, TimeSpan renderDuration)
|
||||
{
|
||||
var videoDuration = fps > 0 ? totalFrames / fps : 0.0;
|
||||
return new RenderResult(false, string.Empty, totalFrames, videoDuration, renderDuration, 0, errorMessage ?? "Rendering failed or was cancelled.");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns a string summarizing the render result metrics or failure reason.
|
||||
/// </summary>
|
||||
/// <returns>A string representation of the <see cref="RenderResult"/>.</returns>
|
||||
public override string ToString()
|
||||
{
|
||||
return Success
|
||||
|
||||
@@ -92,12 +92,22 @@ public class RenderSession
|
||||
return this;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sets whether desktop notifications should be displayed when rendering completes.
|
||||
/// </summary>
|
||||
/// <param name="enabled"><c>true</c> to enable desktop notifications; otherwise, <c>false</c>.</param>
|
||||
/// <returns>The current <see cref="RenderSession"/> instance for method chaining.</returns>
|
||||
public RenderSession WithNotification(bool enabled)
|
||||
{
|
||||
_notification = enabled;
|
||||
return this;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds a callback action to be invoked when the render session completes or fails.
|
||||
/// </summary>
|
||||
/// <param name="callback">The callback action that receives the resulting <see cref="RenderResult"/>.</param>
|
||||
/// <returns>The current <see cref="RenderSession"/> instance for method chaining.</returns>
|
||||
public RenderSession OnComplete(Action<RenderResult> callback)
|
||||
{
|
||||
_onComplete += callback;
|
||||
@@ -109,6 +119,7 @@ public class RenderSession
|
||||
/// </summary>
|
||||
/// <param name="renderConfig">The configuration settings for the render session.</param>
|
||||
/// <param name="levelPath">The file path of the level to render.</param>
|
||||
/// <exception cref="InvalidOperationException">Thrown when the output directory cannot be determined from the output path.</exception>
|
||||
public void Start(RenderConfig renderConfig, string levelPath)
|
||||
{
|
||||
RenderContext.Auto = _auto;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
using ADOFAIRenderer.UI;
|
||||
using UnityEngine;
|
||||
|
||||
namespace ADOFAIRenderer.Core
|
||||
{
|
||||
namespace ADOFAIRenderer.Core;
|
||||
|
||||
[DefaultExecutionOrder(int.MinValue)]
|
||||
internal class FirstUpdateHook : MonoBehaviour
|
||||
{
|
||||
@@ -63,4 +63,3 @@ namespace ADOFAIRenderer.Core
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,8 +3,8 @@ using System.Reflection;
|
||||
using HarmonyLib;
|
||||
using UnityEngine;
|
||||
|
||||
namespace ADOFAIRenderer.Core
|
||||
{
|
||||
namespace ADOFAIRenderer.Core;
|
||||
|
||||
[DefaultExecutionOrder(int.MaxValue)]
|
||||
internal class PostRenderHook : MonoBehaviour
|
||||
{
|
||||
@@ -32,4 +32,3 @@ namespace ADOFAIRenderer.Core
|
||||
RenderManager.Instance.OnPostFrame(val.sharedMaterial.mainTexture as RenderTexture);
|
||||
}
|
||||
}
|
||||
}
|
||||
+6
-5
@@ -1,5 +1,5 @@
|
||||
namespace ADOFAIRenderer.Data
|
||||
{
|
||||
namespace ADOFAIRenderer.Data;
|
||||
|
||||
/// <summary>
|
||||
/// Base class for double input validation limits.
|
||||
/// Multiple limits can be composed on a single input field — all are checked in order.
|
||||
@@ -42,8 +42,10 @@ namespace ADOFAIRenderer.Data
|
||||
/// </summary>
|
||||
internal class RangeDoubleLimit : DoubleLimit
|
||||
{
|
||||
// ReSharper disable MemberCanBePrivate.Global
|
||||
public double? Min { get; }
|
||||
public double? Max { get; }
|
||||
// ReSharper restore MemberCanBePrivate.Global
|
||||
|
||||
/// <param name="min">Inclusive lower bound, or null for no lower bound.</param>
|
||||
/// <param name="max">Inclusive upper bound, or null for no upper bound.</param>
|
||||
@@ -55,7 +57,7 @@ namespace ADOFAIRenderer.Data
|
||||
|
||||
public override bool Validate(double value, out string errorMessage)
|
||||
{
|
||||
if (Min.HasValue && value < Min.Value)
|
||||
if (value < Min)
|
||||
{
|
||||
errorMessage = Max.HasValue
|
||||
? $"값은 {Min.Value}에서 {Max.Value} 사이의 숫자여야 합니다."
|
||||
@@ -63,7 +65,7 @@ namespace ADOFAIRenderer.Data
|
||||
return false;
|
||||
}
|
||||
|
||||
if (Max.HasValue && value > Max.Value)
|
||||
if (value > Max)
|
||||
{
|
||||
errorMessage = Min.HasValue
|
||||
? $"값은 {Min.Value}에서 {Max.Value} 사이의 숫자여야 합니다."
|
||||
@@ -75,4 +77,3 @@ namespace ADOFAIRenderer.Data
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,8 +3,8 @@ using System.Linq;
|
||||
using MelonLoader;
|
||||
using UnityEngine.UIElements;
|
||||
|
||||
namespace ADOFAIRenderer.Data.Input
|
||||
{
|
||||
namespace ADOFAIRenderer.Data.Input;
|
||||
|
||||
internal class DoubleInputValidator
|
||||
{
|
||||
private struct FieldEntry
|
||||
@@ -74,4 +74,3 @@ namespace ADOFAIRenderer.Data.Input
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,16 +1,18 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Linq;
|
||||
using MelonLoader;
|
||||
using UnityEngine.UIElements;
|
||||
|
||||
namespace ADOFAIRenderer.Data.Input
|
||||
{
|
||||
namespace ADOFAIRenderer.Data.Input;
|
||||
|
||||
/// <summary>
|
||||
/// Binds a UI Toolkit <see cref="DropdownField"/> to an enum type.
|
||||
/// Populates choices from enum names and provides typed access to the selected value.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">The enum type to bind.</typeparam>
|
||||
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
|
||||
internal class EnumDropdownBinder<T> where T : struct, Enum
|
||||
{
|
||||
private readonly DropdownField? _dropdown;
|
||||
@@ -83,4 +85,3 @@ namespace ADOFAIRenderer.Data.Input
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,8 +3,8 @@ using System.Linq;
|
||||
using MelonLoader;
|
||||
using UnityEngine.UIElements;
|
||||
|
||||
namespace ADOFAIRenderer.Data.Input
|
||||
{
|
||||
namespace ADOFAIRenderer.Data.Input;
|
||||
|
||||
internal class IntegerInputValidator
|
||||
{
|
||||
private struct FieldEntry
|
||||
@@ -74,4 +74,3 @@ namespace ADOFAIRenderer.Data.Input
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
namespace ADOFAIRenderer.Data
|
||||
{
|
||||
namespace ADOFAIRenderer.Data;
|
||||
|
||||
/// <summary>
|
||||
/// Base class for integer input validation limits.
|
||||
/// Multiple limits can be composed on a single input field — all are checked in order.
|
||||
@@ -42,8 +42,10 @@ namespace ADOFAIRenderer.Data
|
||||
/// </summary>
|
||||
internal class RangeIntegerLimit : IntegerLimit
|
||||
{
|
||||
// ReSharper disable MemberCanBePrivate.Global
|
||||
public int? Min { get; }
|
||||
public int? Max { get; }
|
||||
// ReSharper restore MemberCanBePrivate.Global
|
||||
|
||||
/// <param name="min">Inclusive lower bound, or null for no lower bound.</param>
|
||||
/// <param name="max">Inclusive upper bound, or null for no upper bound.</param>
|
||||
@@ -55,7 +57,7 @@ namespace ADOFAIRenderer.Data
|
||||
|
||||
public override bool Validate(int value, out string errorMessage)
|
||||
{
|
||||
if (Min.HasValue && value < Min.Value)
|
||||
if (value < Min)
|
||||
{
|
||||
errorMessage = Max.HasValue
|
||||
? $"값은 {Min.Value}에서 {Max.Value} 사이의 정수여야 합니다."
|
||||
@@ -63,7 +65,7 @@ namespace ADOFAIRenderer.Data
|
||||
return false;
|
||||
}
|
||||
|
||||
if (Max.HasValue && value > Max.Value)
|
||||
if (value > Max)
|
||||
{
|
||||
errorMessage = Min.HasValue
|
||||
? $"값은 {Min.Value}에서 {Max.Value} 사이의 정수여야 합니다."
|
||||
@@ -75,4 +77,3 @@ namespace ADOFAIRenderer.Data
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -7,8 +7,8 @@ using MelonLoader.Utils;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
|
||||
namespace ADOFAIRenderer.Data
|
||||
{
|
||||
namespace ADOFAIRenderer.Data;
|
||||
|
||||
internal class RenderPreset
|
||||
{
|
||||
public string Name { get; set; } = string.Empty;
|
||||
@@ -187,4 +187,3 @@ namespace ADOFAIRenderer.Data
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using ADOFAIRenderer.Util.FFmpeg;
|
||||
|
||||
namespace ADOFAIRenderer.Data
|
||||
{
|
||||
namespace ADOFAIRenderer.Data;
|
||||
|
||||
[SuppressMessage("ReSharper", "RedundantDefaultMemberInitializer")]
|
||||
public class RenderConfig
|
||||
{
|
||||
@@ -68,4 +68,3 @@ namespace ADOFAIRenderer.Data
|
||||
set => _audioBitrate = value <= 0 ? 256000 : value;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
using ADOFAIRenderer.Core;
|
||||
using HarmonyLib;
|
||||
|
||||
namespace ADOFAIRenderer.Patch.Engine
|
||||
{
|
||||
namespace ADOFAIRenderer.Patch.Engine;
|
||||
|
||||
[HarmonyPatch(typeof(AsyncInputUtils), "UpdateOffsetTime")]
|
||||
// ReSharper disable once InconsistentNaming
|
||||
public static class AsyncInputPatches
|
||||
@@ -18,4 +18,3 @@ namespace ADOFAIRenderer.Patch.Engine
|
||||
return false; // Skip the original damped offset calculation
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,8 +4,8 @@ using HarmonyLib;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Audio;
|
||||
|
||||
namespace ADOFAIRenderer.Patch.Engine
|
||||
{
|
||||
namespace ADOFAIRenderer.Patch.Engine;
|
||||
|
||||
[HarmonyPatch(typeof(AudioManager), "_Play")]
|
||||
public static class AudioManagerPlayPatch
|
||||
{
|
||||
@@ -110,4 +110,3 @@ namespace ADOFAIRenderer.Patch.Engine
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,15 +1,13 @@
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using ADOFAIRenderer.Core;
|
||||
using ADOFAIRenderer.Util;
|
||||
using ADOFAIRenderer.Util.Audio;
|
||||
using HarmonyLib;
|
||||
using UnityEngine;
|
||||
|
||||
namespace ADOFAIRenderer.Patch.Engine
|
||||
{
|
||||
namespace ADOFAIRenderer.Patch.Engine;
|
||||
|
||||
public static class RenderEnvironmentPatches
|
||||
{
|
||||
private const bool RenderPatch = true;
|
||||
private static double TimeSpent => RenderManager.Instance.frameCount / RenderManager.Instance.Configuration.RenderFPS;
|
||||
|
||||
[HarmonyPatch(typeof(Time), "time", MethodType.Getter)]
|
||||
@@ -165,4 +163,3 @@ namespace ADOFAIRenderer.Patch.Engine
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,8 +2,8 @@ using System.Diagnostics.CodeAnalysis;
|
||||
using ADOFAIRenderer.Core;
|
||||
using HarmonyLib;
|
||||
|
||||
namespace ADOFAIRenderer.Patch.Game
|
||||
{
|
||||
namespace ADOFAIRenderer.Patch.Game;
|
||||
|
||||
[HarmonyPatch(typeof(EndscreenLanterns))]
|
||||
// ReSharper disable once InconsistentNaming
|
||||
public static class EndscreenLanternsPatch
|
||||
@@ -71,4 +71,3 @@ namespace ADOFAIRenderer.Patch.Game
|
||||
chainSequenceField.SetValue(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
using ADOFAIRenderer.Core;
|
||||
using HarmonyLib;
|
||||
|
||||
namespace ADOFAIRenderer.Patch.Game
|
||||
{
|
||||
namespace ADOFAIRenderer.Patch.Game;
|
||||
|
||||
[HarmonyPatch(typeof(Persistence))]
|
||||
public static class PersistencePatch
|
||||
{
|
||||
@@ -19,4 +19,3 @@ namespace ADOFAIRenderer.Patch.Game
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,8 +4,8 @@ using MelonLoader;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace ADOFAIRenderer.Patch.Game
|
||||
{
|
||||
namespace ADOFAIRenderer.Patch.Game;
|
||||
|
||||
[HarmonyPatch(typeof(scnEditor))]
|
||||
// ReSharper disable once InconsistentNaming
|
||||
public static class scnEditorPatch
|
||||
@@ -48,4 +48,3 @@ namespace ADOFAIRenderer.Patch.Game
|
||||
iconImage.rectTransform.sizeDelta = new Vector2(24, 24);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,8 +4,8 @@ using ADOFAIRenderer.Util;
|
||||
using HarmonyLib;
|
||||
using UnityEngine;
|
||||
|
||||
namespace ADOFAIRenderer.Patch.Game
|
||||
{
|
||||
namespace ADOFAIRenderer.Patch.Game;
|
||||
|
||||
[HarmonyPatch(typeof(scnGame))]
|
||||
// ReSharper disable once InconsistentNaming
|
||||
public static class scnGamePatch
|
||||
@@ -139,4 +139,3 @@ namespace ADOFAIRenderer.Patch.Game
|
||||
return false; // Skip original UpdateVideo
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using HarmonyLib;
|
||||
|
||||
namespace ADOFAIRenderer.Patch.Game
|
||||
{
|
||||
namespace ADOFAIRenderer.Patch.Game;
|
||||
|
||||
[HarmonyPatch(typeof(scrCamera))]
|
||||
// ReSharper disable once InconsistentNaming
|
||||
public class scrCameraPatch
|
||||
@@ -20,4 +20,3 @@ namespace ADOFAIRenderer.Patch.Game
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
using ADOFAIRenderer.Core;
|
||||
using HarmonyLib;
|
||||
|
||||
namespace ADOFAIRenderer.Patch.Game
|
||||
{
|
||||
namespace ADOFAIRenderer.Patch.Game;
|
||||
|
||||
[HarmonyPatch(typeof(scrController))]
|
||||
// ReSharper disable once InconsistentNaming
|
||||
public static class scrControllerPatch
|
||||
@@ -42,4 +42,3 @@ namespace ADOFAIRenderer.Patch.Game
|
||||
return !RenderManager.IsActive;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
using HarmonyLib;
|
||||
|
||||
namespace ADOFAIRenderer.Patch.Game
|
||||
{
|
||||
namespace ADOFAIRenderer.Patch.Game;
|
||||
|
||||
[HarmonyPatch(typeof(scrDecoration))]
|
||||
// ReSharper disable once InconsistentNaming
|
||||
public static class scrDecorationPatch
|
||||
@@ -38,4 +38,3 @@ namespace ADOFAIRenderer.Patch.Game
|
||||
return __instance != null && __instance && __instance.pivotTrans != null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
using ADOFAIRenderer.Core;
|
||||
using HarmonyLib;
|
||||
|
||||
namespace ADOFAIRenderer.Patch.Game
|
||||
{
|
||||
namespace ADOFAIRenderer.Patch.Game;
|
||||
|
||||
[HarmonyPatch(typeof(scrFloor))]
|
||||
// ReSharper disable once InconsistentNaming
|
||||
public class scrFloorPatch
|
||||
@@ -19,4 +19,3 @@ namespace ADOFAIRenderer.Patch.Game
|
||||
return !nonTile;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
using ADOFAIRenderer.Core;
|
||||
using HarmonyLib;
|
||||
|
||||
namespace ADOFAIRenderer.Patch.Game
|
||||
{
|
||||
namespace ADOFAIRenderer.Patch.Game;
|
||||
|
||||
[HarmonyPatch(typeof(scrHitTextManager), "ShowHitText")]
|
||||
// ReSharper disable once InconsistentNaming
|
||||
public class scrHitTextManagerPatch
|
||||
@@ -12,4 +12,3 @@ namespace ADOFAIRenderer.Patch.Game
|
||||
return !RenderManager.IsActive || RenderManager.Instance is { Configuration: { ShowJudgementText: true } };
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
using ADOFAIRenderer.Core;
|
||||
using HarmonyLib;
|
||||
|
||||
namespace ADOFAIRenderer.Patch.Game
|
||||
{
|
||||
namespace ADOFAIRenderer.Patch.Game;
|
||||
|
||||
[HarmonyPatch(typeof(scrMistakesManager))]
|
||||
// ReSharper disable once InconsistentNaming
|
||||
public static class scrMistakesManagerPatch
|
||||
@@ -14,4 +14,3 @@ namespace ADOFAIRenderer.Patch.Game
|
||||
return !RenderManager.IsActive;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
using ADOFAIRenderer.Core;
|
||||
using HarmonyLib;
|
||||
|
||||
namespace ADOFAIRenderer.Patch.Game
|
||||
{
|
||||
namespace ADOFAIRenderer.Patch.Game;
|
||||
|
||||
[HarmonyPatch(typeof(scrPlayerManager))]
|
||||
// ReSharper disable once InconsistentNaming
|
||||
public static class scrPlayerManagerPatch
|
||||
@@ -18,4 +18,3 @@ namespace ADOFAIRenderer.Patch.Game
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,8 +2,8 @@ using ADOFAIRenderer.Core;
|
||||
using HarmonyLib;
|
||||
using UnityEngine;
|
||||
|
||||
namespace ADOFAIRenderer.Patch.Game
|
||||
{
|
||||
namespace ADOFAIRenderer.Patch.Game;
|
||||
|
||||
[HarmonyPatch(typeof(scrPortalParticles))]
|
||||
// ReSharper disable once InconsistentNaming
|
||||
public static class scrPortalParticlesPatch
|
||||
@@ -26,4 +26,3 @@ namespace ADOFAIRenderer.Patch.Game
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
using ADOFAIRenderer.Core;
|
||||
using HarmonyLib;
|
||||
|
||||
namespace ADOFAIRenderer.Patch.Game
|
||||
{
|
||||
namespace ADOFAIRenderer.Patch.Game;
|
||||
|
||||
[HarmonyPatch(typeof(scrPressToStart))]
|
||||
// ReSharper disable once InconsistentNaming
|
||||
public class scrPressToStartPatch
|
||||
@@ -17,4 +17,3 @@ namespace ADOFAIRenderer.Patch.Game
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,8 +4,8 @@ using HarmonyLib;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace ADOFAIRenderer.Patch.Game
|
||||
{
|
||||
namespace ADOFAIRenderer.Patch.Game;
|
||||
|
||||
[HarmonyPatch(typeof(scrShowIfDebug))]
|
||||
// ReSharper disable once InconsistentNaming
|
||||
public static class scrShowIfDebugPatch
|
||||
@@ -34,4 +34,3 @@ namespace ADOFAIRenderer.Patch.Game
|
||||
___txt.color = ___defaultColor;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
using ADOFAIRenderer.Core;
|
||||
using HarmonyLib;
|
||||
|
||||
namespace ADOFAIRenderer.Patch.Game
|
||||
{
|
||||
namespace ADOFAIRenderer.Patch.Game;
|
||||
|
||||
[HarmonyPatch(typeof(scrUIController))]
|
||||
// ReSharper disable once InconsistentNaming
|
||||
public class scrUIControllerPatch
|
||||
@@ -18,4 +18,3 @@ namespace ADOFAIRenderer.Patch.Game
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -7,7 +7,7 @@ using MelonLoader.Utils;
|
||||
using UnityEngine;
|
||||
using UnityEngine.EventSystems;
|
||||
|
||||
[assembly: MelonInfo(typeof(RenderMod), "ADOFAI Renderer", "0.1.1-INDEV", "ADOFAI Editor Forum")]
|
||||
[assembly: MelonInfo(typeof(RenderMod), "ADOFAI Renderer", "0.1.2-INDEV", "ADOFAI Editor Forum")]
|
||||
[assembly: MelonGame("7th Beat Games", "A Dance of Fire and Ice")]
|
||||
|
||||
namespace ADOFAIRenderer
|
||||
|
||||
@@ -7,13 +7,15 @@ using UnityEngine.UIElements;
|
||||
using Button = UnityEngine.UI.Button;
|
||||
using Image = UnityEngine.UI.Image;
|
||||
|
||||
namespace ADOFAIRenderer.UI
|
||||
{
|
||||
namespace ADOFAIRenderer.UI;
|
||||
|
||||
internal class DialogButton
|
||||
{
|
||||
// ReSharper disable FieldCanBeMadeReadOnly.Global
|
||||
public string Text;
|
||||
public Action OnClick;
|
||||
public Color? BackgroundColor;
|
||||
// ReSharper restore FieldCanBeMadeReadOnly.Global
|
||||
|
||||
public DialogButton(string text, Action onClick, Color? backgroundColor = null)
|
||||
{
|
||||
@@ -112,7 +114,7 @@ namespace ADOFAIRenderer.UI
|
||||
|
||||
foreach (var doc in FindObjectsByType<UIDocument>(FindObjectsSortMode.None))
|
||||
{
|
||||
if (doc && doc.rootVisualElement != null && doc.rootVisualElement.enabledSelf)
|
||||
if (doc && doc.rootVisualElement is { enabledSelf: true })
|
||||
{
|
||||
doc.rootVisualElement.SetEnabled(false);
|
||||
_disabledElements.Add(doc.rootVisualElement);
|
||||
@@ -320,4 +322,3 @@ namespace ADOFAIRenderer.UI
|
||||
return new Color(r, g, b, color.a);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -6,8 +6,8 @@ using TMPro;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace ADOFAIRenderer.UI
|
||||
{
|
||||
namespace ADOFAIRenderer.UI;
|
||||
|
||||
internal class DebugMonitorUI : MonoBehaviour
|
||||
{
|
||||
// --- Progress Bar UI Configuration Constants ---
|
||||
@@ -231,4 +231,3 @@ namespace ADOFAIRenderer.UI
|
||||
if (_progressText) _progressText.text = $"{progress * 100f:F1}% ({currentFloor}/{totalFloors})";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,8 +4,8 @@ using TMPro;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace ADOFAIRenderer.UI
|
||||
{
|
||||
namespace ADOFAIRenderer.UI;
|
||||
|
||||
internal class EscapeHandlerUI : MonoBehaviour
|
||||
{
|
||||
private GameObject _containerObj = null!;
|
||||
@@ -128,4 +128,3 @@ namespace ADOFAIRenderer.UI
|
||||
_escapeStopwatch = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -10,8 +10,8 @@ using UnityEngine.UI;
|
||||
using MelonLoader;
|
||||
using MelonLoader.Utils;
|
||||
|
||||
namespace ADOFAIRenderer.UI
|
||||
{
|
||||
namespace ADOFAIRenderer.UI;
|
||||
|
||||
internal class FFmpegDownloadUI : MonoBehaviour
|
||||
{
|
||||
private GameObject _buttonContainerObj = null!;
|
||||
@@ -690,4 +690,3 @@ namespace ADOFAIRenderer.UI
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -7,8 +7,8 @@ using MelonLoader;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UIElements;
|
||||
|
||||
namespace ADOFAIRenderer.UI
|
||||
{
|
||||
namespace ADOFAIRenderer.UI;
|
||||
|
||||
internal class RenderConfigUIManager : MonoBehaviour
|
||||
{
|
||||
[SerializeField]
|
||||
@@ -1148,4 +1148,3 @@ namespace ADOFAIRenderer.UI
|
||||
return label;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
using System;
|
||||
|
||||
namespace ADOFAIRenderer.Util.Audio
|
||||
{
|
||||
namespace ADOFAIRenderer.Util.Audio;
|
||||
|
||||
internal static class AudioResampler
|
||||
{
|
||||
public static float[] Resample(float[] inputSamples, int inputChannels, int inputFrequency, int targetChannels, int targetFrequency)
|
||||
@@ -98,4 +98,3 @@ namespace ADOFAIRenderer.Util.Audio
|
||||
return outputSamples;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,14 +3,16 @@ using System.Collections.Generic;
|
||||
using ADOFAIRenderer.Core;
|
||||
using UnityEngine;
|
||||
|
||||
namespace ADOFAIRenderer.Util.Audio
|
||||
{
|
||||
namespace ADOFAIRenderer.Util.Audio;
|
||||
|
||||
internal static class AudioSpectrumGenerator
|
||||
{
|
||||
// ReSharper disable MemberCanBePrivate.Global
|
||||
public static float[]? AudioClipData { get; private set; }
|
||||
public static int Channels { get; private set; }
|
||||
public static int Frequency { get; private set; }
|
||||
public static int TotalSamples { get; private set; }
|
||||
// ReSharper restore MemberCanBePrivate.Global
|
||||
|
||||
private static long _cachedFrame = -1;
|
||||
private static readonly Dictionary<int, float[]> CachedSpectrums = new();
|
||||
@@ -237,4 +239,3 @@ namespace ADOFAIRenderer.Util.Audio
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
using System;
|
||||
|
||||
namespace ADOFAIRenderer.Util.Audio
|
||||
{
|
||||
namespace ADOFAIRenderer.Util.Audio;
|
||||
|
||||
internal class AudioSyncCalculator
|
||||
{
|
||||
private readonly long _sampleRate;
|
||||
@@ -38,4 +38,3 @@ namespace ADOFAIRenderer.Util.Audio
|
||||
return (int)samplesNeeded;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
using System;
|
||||
|
||||
namespace ADOFAIRenderer.Util.Audio.Filter
|
||||
{
|
||||
namespace ADOFAIRenderer.Util.Audio.Filter;
|
||||
|
||||
internal class Gain : IAudioFilter
|
||||
{
|
||||
public float Level = 0f;
|
||||
@@ -21,4 +21,3 @@ namespace ADOFAIRenderer.Util.Audio.Filter
|
||||
|
||||
public double Latency => 0.0;
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
using System;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
namespace ADOFAIRenderer.Util.Audio.Filter
|
||||
{
|
||||
namespace ADOFAIRenderer.Util.Audio.Filter;
|
||||
|
||||
internal class HardClip : IAudioFilter
|
||||
{
|
||||
// ReSharper disable once MemberCanBePrivate.Global
|
||||
@@ -30,4 +30,3 @@ namespace ADOFAIRenderer.Util.Audio.Filter
|
||||
|
||||
public double Latency => 0.0;
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
using System;
|
||||
|
||||
namespace ADOFAIRenderer.Util.Audio.Filter
|
||||
{
|
||||
namespace ADOFAIRenderer.Util.Audio.Filter;
|
||||
|
||||
internal interface IAudioFilter
|
||||
{
|
||||
void Initialize(int sampleRate, int channels);
|
||||
@@ -13,4 +13,3 @@ namespace ADOFAIRenderer.Util.Audio.Filter
|
||||
|
||||
double Latency { get; }
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
using System;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
namespace ADOFAIRenderer.Util.Audio.Filter
|
||||
{
|
||||
namespace ADOFAIRenderer.Util.Audio.Filter;
|
||||
|
||||
// ReSharper disable once InconsistentNaming
|
||||
internal class RMSCompressor : IAudioFilter
|
||||
{
|
||||
@@ -219,11 +219,10 @@ namespace ADOFAIRenderer.Util.Audio.Filter
|
||||
Array.Clear(_rmsState, 0, _rmsState.Length);
|
||||
Array.Clear(_gainState, 0, _gainState.Length);
|
||||
|
||||
for (int i = 0; i < _delayBuffers.Length; i++)
|
||||
foreach (var delayBuffer in _delayBuffers)
|
||||
{
|
||||
Array.Clear(_delayBuffers[i], 0, _delayBuffers[i].Length);
|
||||
Array.Clear(delayBuffer, 0, delayBuffer.Length);
|
||||
}
|
||||
Array.Clear(_delayWriteIndices, 0, _delayWriteIndices.Length);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,8 +5,8 @@ using ADOFAIRenderer.Util.Audio.Filter;
|
||||
using MelonLoader;
|
||||
using UnityEngine;
|
||||
|
||||
namespace ADOFAIRenderer.Util.Audio
|
||||
{
|
||||
namespace ADOFAIRenderer.Util.Audio;
|
||||
|
||||
internal class AudioClipCache
|
||||
{
|
||||
private readonly Dictionary<string, CachedClipData> _cache = new();
|
||||
@@ -414,4 +414,3 @@ namespace ADOFAIRenderer.Util.Audio
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user