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.Configuration;
using BepInEx.Logging;
using DragonBallTV.Core;
using HarmonyLib;
using UnityEngine;
using UnityEngine.Video;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyTitle("DragonBallTV")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("DragonBallTV")]
[assembly: AssemblyCopyright("Copyright © 2023")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("84d804f7-defd-4a6c-86f9-a52e4d1b9d01")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace DragonBallTV.Patches
{
[HarmonyPatch]
public static class TVPatches
{
[HarmonyPatch(typeof(TVScript), "__initializeVariables")]
[HarmonyPostfix]
public static void ReplaceVideos(TVScript __instance)
{
List<VideoClip> list = new List<VideoClip>();
List<AudioClip> list2 = new List<AudioClip>();
list.Add(Assets.GetAsset<VideoClip>("MakafushigiAdventureVideo"));
list2.Add(Assets.GetAsset<AudioClip>("MakafushigiAdventureAudio"));
list.Add(Assets.GetAsset<VideoClip>("ChaLaHeadChaLaVideo"));
list2.Add(Assets.GetAsset<AudioClip>("ChaLaHeadChaLaAudio"));
list.Add(Assets.GetAsset<VideoClip>("SuperSaiyanVideo"));
list2.Add(Assets.GetAsset<AudioClip>("SuperSaiyanAudio"));
list.Add(Assets.GetAsset<VideoClip>("DragonSoulVideo"));
list2.Add(Assets.GetAsset<AudioClip>("DragonSoulAudio"));
list.Add(Assets.GetAsset<VideoClip>("BattleOfGodsVideo"));
list2.Add(Assets.GetAsset<AudioClip>("BattleOfGodsAudio"));
list.Add(Assets.GetAsset<VideoClip>("DanDanVideo"));
list2.Add(Assets.GetAsset<AudioClip>("DanDanAudio"));
__instance.tvClips = list.ToArray();
__instance.tvAudioClips = list2.ToArray();
__instance.tvSFX.volume = DragonBallTVBase.Instance.Volume.Value;
}
}
}
namespace DragonBallTV.Core
{
public static class Assets
{
public static AssetBundle AssetBundle { get; private set; }
private static Dictionary<string, Object> AssetList { get; set; }
private static string AssemblyName => Assembly.GetExecutingAssembly().FullName.Split(new char[1] { ',' })[0];
public static void PopulateAssets()
{
if ((Object)(object)AssetBundle != (Object)null)
{
Logging.LogWarning("Attempted to load the asset bundle but the bundle was not null!");
return;
}
string name = AssemblyName + ".dbtv";
using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(name))
{
AssetBundle = AssetBundle.LoadFromStream(stream);
}
AssetList = new Dictionary<string, Object>();
Object[] array = AssetBundle.LoadAllAssets();
foreach (Object val in array)
{
AssetList.Add(val.name, val);
}
}
public static T GetAsset<T>(string name) where T : Object
{
if (!AssetList.TryGetValue(name, out var value))
{
Logging.LogError("Attempted to load asset of name " + name + " but no asset of that name exists!");
return default(T);
}
T val = (T)(object)((value is T) ? value : null);
if ((Object)(object)val == (Object)null)
{
Logging.LogError("Attempted to load an asset of type " + typeof(T).Name + " but asset of name " + name + " does not match this type!");
return default(T);
}
return val;
}
}
public static class Logging
{
public static void LogInfo(object message)
{
DragonBallTVBase.Instance.PluginLogger.LogMessage(message);
}
public static void LogDebug(object message)
{
DragonBallTVBase.Instance.PluginLogger.LogDebug(message);
}
public static void LogWarning(object message)
{
DragonBallTVBase.Instance.PluginLogger.LogWarning(message);
}
public static void LogError(object message)
{
DragonBallTVBase.Instance.PluginLogger.LogError(message);
}
}
[BepInPlugin("Vulf.DragonBallTV", "Dragon Ball TV", "1.1.0")]
public class DragonBallTVBase : BaseUnityPlugin
{
private static DragonBallTVBase _instance;
public static DragonBallTVBase Instance
{
get
{
return _instance;
}
private set
{
if ((Object)(object)Instance != (Object)null && (Object)(object)value != (Object)(object)Instance)
{
((BaseUnityPlugin)Instance).Logger.LogWarning((object)"An instance of class of type DragonBallTVBase was created but one already exists! Destroying duplicate!");
Object.Destroy((Object)(object)value);
}
else
{
_instance = value;
}
}
}
private Harmony Harmony { get; set; }
public ManualLogSource PluginLogger => ((BaseUnityPlugin)this).Logger;
public ConfigEntry<float> Volume { get; private set; }
public void Awake()
{
//IL_000c: Unknown result type (might be due to invalid IL or missing references)
//IL_0016: Expected O, but got Unknown
Instance = this;
Harmony = new Harmony("Vulf.DragonBallTV");
((BaseUnityPlugin)this).Logger.LogInfo((object)"Loading mod...");
((BaseUnityPlugin)this).Logger.LogInfo((object)"Populating assets...");
Assets.PopulateAssets();
Volume = ((BaseUnityPlugin)this).Config.Bind<float>("Sound", "TV Volume", 0.75f, "How loud the TV is on a scale of 0 to 1 (clientside). Set this to 0 to mute the audio completely.");
((BaseUnityPlugin)this).Logger.LogInfo((object)"Patching...");
Harmony.PatchAll();
((BaseUnityPlugin)this).Logger.LogInfo((object)"Mod loaded successfully!");
}
}
public class PluginInfo
{
public const string GUID = "Vulf.DragonBallTV";
public const string NAME = "Dragon Ball TV";
public const string VERSION = "1.1.0";
public const string ASSET_BUNDLE_NAME = "dbtv";
}
}