Decompiled source of Propaganda v1.0.0

Propaganda.dll

Decompiled 6 hours ago
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";
}