using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Security.Permissions; using BepInEx; using HG.Reflection; using On.RoR2; using R2API; using RoR2; using RoR2.ContentManagement; using ShaderSwapper; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: OptIn] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.0.0")] public class ReplaceShaders : MonoBehaviour { } namespace WS_SpaceStage1; public class WS_SpaceStage1Content : IContentPackProvider { internal const string ScenesAssetBundleFileName = "ws_spacestage1scene"; internal const string AssetsAssetBundleFileName = "ws_spacestage1assets"; internal const string MusicSoundBankFileName = "FrozenWreckageMusic.bnk"; internal const string InitSoundBankFileName = "FrozenWreckageInit.bnk"; internal const string SoundsSoundBankFileName = "FrozenWreckageSounds.bnk"; private static AssetBundle scenesAssetBundle; private static AssetBundle contentAssetBundle; public static SceneDef FrozenWreckageSceneDef; public string identifier => "com.Winslow.WS_SpaceStage1"; public static ReadOnlyContentPack readOnlyContentPack => new ReadOnlyContentPack(WS_SpaceStage1ContentPack); internal static ContentPack WS_SpaceStage1ContentPack { get; } = new ContentPack(); public IEnumerator LoadStaticContentAsync(LoadStaticContentAsyncArgs args) { LoadSoundBanks(Path.Combine(Path.GetDirectoryName(typeof(WS_SpaceStage1Content).Assembly.Location), "soundbanks")); yield return LoadAssetBundle(Path.Combine(WS_SpaceStage1Main.assetBundleDir, "ws_spacestage1scene"), args.progressReceiver, delegate(AssetBundle assetBundle) { scenesAssetBundle = assetBundle; }); yield return LoadAssetBundle(Path.Combine(WS_SpaceStage1Main.assetBundleDir, "ws_spacestage1assets"), args.progressReceiver, delegate(AssetBundle assetBundle) { contentAssetBundle = assetBundle; }); yield return LoadAllAssetsAsync(contentAssetBundle, args.progressReceiver, (Action)delegate(SceneDef[] assets) { FrozenWreckageSceneDef = assets.First((SceneDef sceneDef) => sceneDef.cachedName == "forgottenwreckage_ws"); WS_SpaceStage1ContentPack.sceneDefs.Add(assets); }); IEnumerator upgradeStubbedShaders = ShaderSwapper.UpgradeStubbedShadersAsync(contentAssetBundle); while (upgradeStubbedShaders.MoveNext()) { yield return upgradeStubbedShaders.Current; } yield return LoadAllAssetsAsync(contentAssetBundle, args.progressReceiver, (Action)delegate(UnlockableDef[] assets) { WS_SpaceStage1ContentPack.unlockableDefs.Add(assets); }); StageRegistration.RegisterSceneDefToNormalProgression(FrozenWreckageSceneDef, 1f, true, true); } private IEnumerator LoadAssetBundle(string assetBundleFullPath, IProgress progress, Action onAssetBundleLoaded) { AssetBundleCreateRequest assetBundleCreateRequest = AssetBundle.LoadFromFileAsync(assetBundleFullPath); while (!((AsyncOperation)assetBundleCreateRequest).isDone) { progress.Report(((AsyncOperation)assetBundleCreateRequest).progress); yield return null; } onAssetBundleLoaded(assetBundleCreateRequest.assetBundle); } public IEnumerator GenerateContentPackAsync(GetContentPackAsyncArgs args) { ContentPack.Copy(WS_SpaceStage1ContentPack, args.output); args.ReportProgress(1f); yield break; } public IEnumerator FinalizeAsync(FinalizeAsyncArgs args) { args.ReportProgress(1f); yield break; } private void AddSelf(AddContentPackProviderDelegate addContentPackProvider) { addContentPackProvider.Invoke((IContentPackProvider)(object)this); } internal WS_SpaceStage1Content() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Expected O, but got Unknown ContentManager.collectContentPackProviders += new CollectContentPackProvidersDelegate(AddSelf); } private static IEnumerator LoadAllAssetsAsync(AssetBundle assetBundle, IProgress progress, Action onAssetsLoaded) where T : Object { AssetBundleRequest sceneDefsRequest = assetBundle.LoadAllAssetsAsync(); while (!((AsyncOperation)sceneDefsRequest).isDone) { progress.Report(((AsyncOperation)sceneDefsRequest).progress); yield return null; } onAssetsLoaded(sceneDefsRequest.allAssets.Cast().ToArray()); } internal static void LoadSoundBanks(string soundbanksFolderPath) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) AkSoundEngine.AddBasePath(soundbanksFolderPath); uint num = default(uint); AkSoundEngine.LoadBank("FrozenWreckageInit.bnk", ref num); AkSoundEngine.LoadBank("FrozenWreckageMusic.bnk", ref num); AkSoundEngine.LoadBank("FrozenWreckageSounds.bnk", ref num); } } [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.Winslow.WS_SpaceStage1", "Forlorn Wreckage", "1.0.0")] public class WS_SpaceStage1Main : BaseUnityPlugin { public const string GUID = "com.Winslow.WS_SpaceStage1"; public const string MODNAME = "Forlorn Wreckage"; public const string VERSION = "1.0.0"; public static PluginInfo pluginInfo { get; private set; } public static WS_SpaceStage1Main instance { get; private set; } internal static AssetBundle assetBundle { get; private set; } internal static string assetBundleDir => Path.Combine(Path.GetDirectoryName(pluginInfo.Location)); private void Awake() { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Expected O, but got Unknown instance = this; pluginInfo = ((BaseUnityPlugin)this).Info; new WS_SpaceStage1Content(); MusicController.StartIntroMusic += new hook_StartIntroMusic(MusicController_StartIntroMusic); Language.collectLanguageRootFolders += CollectLanguageRootFolders; } private void MusicController_StartIntroMusic(orig_StartIntroMusic orig, MusicController self) { orig.Invoke(self); AkSoundEngine.PostEvent("FWreckage_Play_Music_System", ((Component)self).gameObject); } private void Destroy() { Language.collectLanguageRootFolders -= CollectLanguageRootFolders; } public void CollectLanguageRootFolders(List folders) { folders.Add(Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location), "Language")); folders.Add(Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location), "Plugins/Language")); } internal static void LogFatal(object data) { ((BaseUnityPlugin)instance).Logger.LogFatal(data); } internal static void LogError(object data) { ((BaseUnityPlugin)instance).Logger.LogError(data); } internal static void LogWarning(object data) { ((BaseUnityPlugin)instance).Logger.LogWarning(data); } internal static void LogMessage(object data) { ((BaseUnityPlugin)instance).Logger.LogMessage(data); } internal static void LogInfo(object data) { ((BaseUnityPlugin)instance).Logger.LogInfo(data); } internal static void LogDebug(object data) { ((BaseUnityPlugin)instance).Logger.LogDebug(data); } }