using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Logging;
using HarmonyLib;
using LC_DressGirlExtendAudio.Patches;
using UnityEngine;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("LC_DressGirlExtendAudio")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("LC_DressGirlExtendAudio")]
[assembly: AssemblyCopyright("Copyright © 2024")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("672b4602-a3a5-4572-9785-a007665cf49e")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace LC_DressGirlExtendAudio
{
[BepInPlugin("Elia.LC_DressGirlExtendAudio", "LC_DressGirlExtendAudio", "1.0.0")]
public class DressGirlExtendAudioBase : BaseUnityPlugin
{
private const string modGUID = "Elia.LC_DressGirlExtendAudio";
private const string modName = "LC_DressGirlExtendAudio";
private const string modVersion = "1.0.0";
private readonly Harmony harmony = new Harmony("Elia.LC_DressGirlExtendAudio");
private static DressGirlExtendAudioBase Instance;
internal static ManualLogSource mls;
internal static Dictionary<string, List<AudioClip>> SoundSFX;
internal static Dictionary<string, List<AssetBundle>> Bundle;
private void Awake()
{
if ((Object)(object)Instance == (Object)null)
{
Instance = this;
}
SoundSFX = new Dictionary<string, List<AudioClip>>();
Bundle = new Dictionary<string, List<AssetBundle>>();
string text = ((BaseUnityPlugin)Instance).Info.Location.TrimEnd("LC_DressGirlExtendAudio.dll".ToCharArray());
mls = Logger.CreateLogSource("Elia.LC_DressGirlExtendAudio");
mls.LogInfo((object)"DressGirlExtendAudio mod is awaken.");
harmony.PatchAll(typeof(DressGirlAIPatch));
mls.LogInfo((object)"Patching start...");
mls.LogInfo((object)("Audio Path: " + text));
SoundSFX.Add("DressGirlAI", new List<AudioClip>());
Bundle.Add("DressGirlAI", new List<AssetBundle>());
try
{
if (Directory.Exists(text))
{
string[] files = Directory.GetFiles(text, "*_song");
string[] array = files;
foreach (string text2 in array)
{
Bundle["DressGirlAI"].Add(AssetBundle.LoadFromFile(text2));
}
}
}
catch
{
Debug.Log((object)"Error loading Bundle...");
}
mls.LogInfo((object)Bundle["DressGirlAI"].ToString());
mls.LogInfo((object)"DressGirlExtendAudio loading asset...");
mls.LogInfo((object)("Asset target: " + text));
if (Bundle.Count > 0)
{
try
{
foreach (AssetBundle item in Bundle["DressGirlAI"])
{
SoundSFX["DressGirlAI"].AddRange(item.LoadAllAssets<AudioClip>());
}
}
catch
{
Debug.Log((object)"Error loading SoundSFX DressGirlAI...");
}
mls.LogInfo((object)string.Format("Successfully loaded asset bundle: \n - Count: {0}", SoundSFX["DressGirlAI"].Count));
}
else
{
mls.LogError((object)"Failed to load asset bundle...");
}
}
}
}
namespace LC_DressGirlExtendAudio.Patches
{
[HarmonyPatch(typeof(DressGirlAI))]
internal class DressGirlAIPatch
{
public static AudioClip[] audioList;
internal static float currentTimeInSeconds;
internal static ManualLogSource mls = DressGirlExtendAudioBase.mls;
[HarmonyPatch("Start")]
[HarmonyPostfix]
private static void OverrideAudio(ref DressGirlAI __instance)
{
AudioClip[] dressGirlAudioList = getDressGirlAudioList(__instance);
audioList = dressGirlAudioList;
__instance.appearStaringSFX = audioList;
Debug.Log((object)$"Start ok - Audio: ${audioList}");
}
[HarmonyPatch("Update")]
[HarmonyPostfix]
private static void appearStaringSFXPatch(ref DressGirlAI __instance)
{
if (audioList == null)
{
audioList = getDressGirlAudioList(__instance);
__instance.appearStaringSFX = audioList;
}
else if (Time.time - currentTimeInSeconds > 60f)
{
__instance.skipWalkSFX = getRandomAudioClip(audioList);
currentTimeInSeconds = Time.time;
}
}
public static AudioClip getRandomAudioClip(AudioClip[] audioList)
{
Random random = new Random((int)Time.time);
int num = random.Next(0, audioList.Length);
return audioList[num];
}
public static AudioClip[] getDressGirlAudioList(DressGirlAI __instance)
{
AudioClip[] array = (AudioClip[])(object)new AudioClip[DressGirlExtendAudioBase.SoundSFX["DressGirlAI"].Count];
Debug.Log((object)"Loading sondSFX");
for (int i = 0; i < DressGirlExtendAudioBase.SoundSFX["DressGirlAI"].Count; i++)
{
Debug.Log((object)string.Format("Current i: {0} \n {1}", i, DressGirlExtendAudioBase.SoundSFX["DressGirlAI"][i]));
array[i] = DressGirlExtendAudioBase.SoundSFX["DressGirlAI"][i];
}
audioList = array;
return array;
}
}
}