using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Logging;
using HarmonyLib;
using UnityEngine;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = "")]
[assembly: AssemblyCompany("Propaganda")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyDescription("Adds propaganda to the game")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("Propaganda")]
[assembly: AssemblyTitle("Propaganda")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
internal class Posters
{
private static Random Random = new Random();
private static ManualLogSource Logger;
private static List<string> PropagandaFiles;
public static void Init(ManualLogSource logger, List<string> propagandaFiles)
{
Logger = logger;
PropagandaFiles = propagandaFiles;
}
[HarmonyPatch(typeof(StartOfRound), "Start")]
[HarmonyPostfix]
private static void StartPatch()
{
Logger.LogInfo((object)"Patching Start in StartOfRound");
UpdateMaterials();
}
[HarmonyPatch(typeof(RoundManager), "GenerateNewLevelClientRpc")]
[HarmonyPostfix]
private static void GenerateNewLevelClientRpcPatch(int randomSeed)
{
Logger.LogInfo((object)"Patching GenerateNewLevelClientRpc in RoundManager");
UpdateMaterials();
}
private static void UpdateMaterials()
{
Logger.LogInfo((object)"Patching the textures");
Material[] materials = ((Renderer)GameObject.Find("HangarShip/Plane.001").GetComponent<MeshRenderer>()).materials;
UpdateTexture(materials[0]);
}
private static void UpdateTexture(Material material)
{
//IL_002a: Unknown result type (might be due to invalid IL or missing references)
//IL_0030: Expected O, but got Unknown
if (PropagandaFiles.Count != 0)
{
int index = Random.Next(PropagandaFiles.Count);
Texture2D val = new Texture2D(2, 2);
Logger.LogInfo((object)("Patching " + ((Object)material).name + " with " + PropagandaFiles[index]));
ImageConversion.LoadImage(val, File.ReadAllBytes(PropagandaFiles[index]));
material.mainTexture = (Texture)(object)val;
}
}
}
namespace Propaganda;
[BepInPlugin("me.santio.propaganda", "Propaganda", "1.0.0")]
public class Plugin : BaseUnityPlugin
{
public const string PLUGIN_GUID = "me.santio.propaganda";
public const string PLUGIN_NAME = "Propaganda";
public const string PLUGIN_VERSION = "1.0.0";
public static readonly Harmony Harmony = new Harmony("me.santio.propaganda");
public static readonly List<string> PropagandaFiles = new List<string>();
public static string PropagandaDir = GetPluginPath();
private static string GetPluginPath()
{
DirectoryInfo directoryInfo = new DirectoryInfo(Paths.PluginPath);
DirectoryInfo[] directories = directoryInfo.GetDirectories("*-Propaganda");
if (directories.Length == 0)
{
return null;
}
return directories[0].FullName;
}
private void Awake()
{
if (PropagandaDir == null)
{
((BaseUnityPlugin)this).Logger.LogError((object)"Plugin Propaganda is not installed correctly, failed to find propaganda folder!");
return;
}
List<string> list = Directory.GetFiles(Path.Combine(PropagandaDir, "propaganda")).ToList();
foreach (string item in list)
{
PropagandaFiles.Add(item);
}
Posters.Init(((BaseUnityPlugin)this).Logger, PropagandaFiles);
Harmony.PatchAll(typeof(Posters));
((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin Propaganda is loaded!");
}
}
public static class PluginInfo
{
public const string PLUGIN_GUID = "Propaganda";
public const string PLUGIN_NAME = "Propaganda";
public const string PLUGIN_VERSION = "1.0.0";
}