Decompiled source of ExtraRundownCustomisation v0.1.1

ExtraRundownCustomization.dll

Decompiled a week ago
using System;
using System.CodeDom.Compiler;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using System.Text.Encodings.Web;
using System.Text.Json;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Core.Logging.Interpolation;
using BepInEx.Logging;
using BepInEx.Unity.IL2CPP;
using CellMenu;
using ExtraRundownCustomization.DataHolders;
using ExtraRundownCustomization.Handlers;
using ExtraRundownCustomization.Patches;
using ExtraRundownCustomization.Utils;
using GameData;
using HarmonyLib;
using Il2CppInterop.Runtime.InteropTypes.Arrays;
using Il2CppSystem;
using Il2CppSystem.Collections.Generic;
using LocalProgression;
using LocalProgression.Data;
using Localization;
using MTFO.API;
using Microsoft.CodeAnalysis;
using TMPro;
using UnityEngine;
using UnityEngine.UI;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")]
[assembly: AssemblyCompany("ExtraRundownCustomization")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+git5536475-dirty-master.5536475f3b8d1f2c33450c48e6dfc784bc201f53")]
[assembly: AssemblyProduct("ExtraRundownCustomization")]
[assembly: AssemblyTitle("ExtraRundownCustomization")]
[assembly: TargetPlatform("Windows7.0")]
[assembly: SupportedOSPlatform("Windows7.0")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace ExtraRundownCustomization
{
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInPlugin("RLC.ExtraRundownCustomization", "ExtraRundownCustomization", "1.0.0")]
	internal class EntryPoint : BasePlugin
	{
		public override void Load()
		{
			GUI_Patches.Setup();
			JsonHandler.SetupJson();
			string key = "Inas.LocalProgression";
			if (((BaseChainloader<BasePlugin>)(object)IL2CPPChainloader.Instance).Plugins.TryGetValue(key, out var _))
			{
				((BasePlugin)this).Log.LogInfo((object)"LocalProgression detected");
				RundownMenuHandlers.m_hasLocalProg = true;
			}
			((BasePlugin)this).Log.LogInfo((object)"ExtraRundownCustomisation Loaded");
		}
	}
	[GeneratedCode("VersionInfoGenerator", "2.1.3+git35c0c2a-master")]
	[CompilerGenerated]
	internal static class VersionInfo
	{
		public const string RootNamespace = "ExtraRundownCustomization";

		public const string Version = "1.0.0";

		public const string VersionPrerelease = null;

		public const string VersionMetadata = "git5536475-dirty-master";

		public const string SemVer = "1.0.0+git5536475-dirty-master";

		public const string GitRevShort = "5536475-dirty";

		public const string GitRevLong = "5536475f3b8d1f2c33450c48e6dfc784bc201f53-dirty";

		public const string GitBranch = "master";

		public const string GitTag = null;

		public const int GitCommitsSinceTag = 0;

		public const bool GitIsDirty = true;
	}
}
namespace ExtraRundownCustomization.Utils
{
	public class JsonHandler
	{
		private static string ERC_CustomPath;

		private static readonly JsonSerializerOptions _setting = new JsonSerializerOptions
		{
			ReadCommentHandling = JsonCommentHandling.Skip,
			IncludeFields = true,
			PropertyNameCaseInsensitive = true,
			WriteIndented = true,
			IgnoreReadOnlyProperties = true,
			Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping
		};

		public static void SetupJson()
		{
			if (!MTFOPathAPI.HasCustomPath)
			{
				Log.Error("MTFO Custom path does not exist please ensure one exists before continuing");
				return;
			}
			ERC_CustomPath = Path.Combine(MTFOPathAPI.CustomPath, "ExtraRundownCustomisation");
			if (!Directory.Exists(ERC_CustomPath))
			{
				Directory.CreateDirectory(ERC_CustomPath);
			}
			Log.Info("ERC Custom path loaded");
			MTFOHotReloadAPI.OnHotReload += OnHotReload;
			LoadJson();
		}

		private static void LoadJson(bool isHotReload = false)
		{
			Log.Info("Loading Json Data");
			RundownMenuHandlers.m_activeRundownSelectionData = DeserializeJsonAndCreateIfNotReal(Path.Combine(ERC_CustomPath + "/rundownSelectors.json"), new CustomRundownSelections());
			RundownMenuHandlers.m_activeGlobalRundownLayoutData = DeserializeJsonAndCreateIfNotReal(Path.Combine(ERC_CustomPath + "/rundownLayouts.json"), new RundownLayout());
			RundownMenuHandlers.m_activeMiscRundownData = DeserializeJsonAndCreateIfNotReal(Path.Combine(ERC_CustomPath + "/miscFeatures.json"), new MiscRundownData());
			RundownMenuHandlers.m_activeWatermarkData = DeserializeJsonAndCreateIfNotReal(Path.Combine(ERC_CustomPath + "/watermark.json"), new CustomWatermark());
			Log.Info("Json data Loaded");
			if (isHotReload)
			{
				RundownMenuHandlers.UpdateAll();
			}
		}

		private static T DeserializeJsonAndCreateIfNotReal<T>(string jsonPath, T data)
		{
			if (!File.Exists(jsonPath))
			{
				string contents = JsonSerializer.Serialize(data, _setting);
				File.WriteAllText(jsonPath, contents);
			}
			return JsonSerializer.Deserialize<T>(File.ReadAllText(jsonPath), _setting);
		}

		public static void OnHotReload()
		{
			Log.Info("Reloading json");
			LoadJson(isHotReload: true);
		}
	}
	internal static class Log
	{
		private static readonly ManualLogSource _Logger;

		static Log()
		{
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: Expected O, but got Unknown
			_Logger = new ManualLogSource("ExtraRundownCustomization");
			Logger.Sources.Add((ILogSource)(object)_Logger);
		}

		private static string Format(object msg)
		{
			return msg.ToString();
		}

		public static void Info(BepInExInfoLogInterpolatedStringHandler handler)
		{
			_Logger.LogInfo(handler);
		}

		public static void Info(string str)
		{
			_Logger.LogMessage((object)str);
		}

		public static void Info(object data)
		{
			_Logger.LogMessage((object)Format(data));
		}

		public static void Debug(BepInExDebugLogInterpolatedStringHandler handler)
		{
			_Logger.LogDebug(handler);
		}

		public static void Debug(string str)
		{
			_Logger.LogDebug((object)str);
		}

		public static void Debug(object data)
		{
			_Logger.LogDebug((object)Format(data));
		}

		public static void Error(BepInExErrorLogInterpolatedStringHandler handler)
		{
			_Logger.LogError(handler);
		}

		public static void Error(string str)
		{
			_Logger.LogError((object)str);
		}

		public static void Error(object data)
		{
			_Logger.LogError((object)Format(data));
		}

		public static void Fatal(BepInExFatalLogInterpolatedStringHandler handler)
		{
			_Logger.LogFatal(handler);
		}

		public static void Fatal(string str)
		{
			_Logger.LogFatal((object)str);
		}

		public static void Fatal(object data)
		{
			_Logger.LogFatal((object)Format(data));
		}

		public static void Warn(BepInExWarningLogInterpolatedStringHandler handler)
		{
			_Logger.LogWarning(handler);
		}

		public static void Warn(string str)
		{
			_Logger.LogWarning((object)str);
		}

		public static void Warn(object data)
		{
			_Logger.LogWarning((object)Format(data));
		}
	}
}
namespace ExtraRundownCustomization.Patches
{
	public class GUI_Patches
	{
		[HarmonyPatch(typeof(CM_PageRundown_New), "Update")]
		private class Patch_CM_PageRundown_New_Update
		{
			public static void Postfix(CM_PageRundown_New __instance)
			{
				if (__instance.m_currentRundownData == null)
				{
					((TMP_Text)__instance.m_textRundownHeaderTop).text = RundownMenuHandlers.m_activeRundownSelectionData.TextHeaderTop;
				}
			}
		}

		[HarmonyPatch(typeof(CM_PageRundown_New), "ResetRundownSelection")]
		private class Patch_CM_PageRundown_New_ResetRundownSelection
		{
			public static void Postfix()
			{
				RundownMenuHandlers.UpdateRundownSelections();
			}
		}

		[HarmonyPatch(typeof(CM_PageRundown_New), "UpdateHeaderText")]
		private class Patch_CM_PageRundown_New_UpdateHeaderText
		{
			public static void Postfix()
			{
				RundownMenuHandlers.UpdateRundownSelections();
			}
		}

		[HarmonyPatch(typeof(CM_PageRundown_New), "SetIconStatus")]
		private class Patch_CM_PageRundown_New_SetIconStatus
		{
			public static void Postfix()
			{
				RundownMenuHandlers.UpdateExpeditionIcons();
			}
		}

		[HarmonyPatch(typeof(CM_ExpeditionIcon_New), "UpdateBorderColor")]
		private class Patch_CM_ExpeditionIcon_New_UpdateBorderColor
		{
			public static void Postfix()
			{
				RundownMenuHandlers.UpdateExpeditionIcons();
			}
		}

		[HarmonyPatch(typeof(CM_PageRundown_New), "UpdateTierIconsWithProgression")]
		private class Patch_CM_PageRundown_New_UpdateTierIconsWithProgression
		{
			public static void Postfix()
			{
				RundownMenuHandlers.UpdateExpeditionIcons();
			}
		}

		[HarmonyPatch(typeof(CM_PageRundown_New), "RundownSelectionRevealed")]
		private class Patch_CM_PageRundown_New_RundownSelectionRevealed
		{
			public static void Postfix()
			{
				RundownMenuHandlers.UpdateRundownSelections();
			}
		}

		[HarmonyPatch(typeof(CM_PageRundown_New), "OnEnable")]
		private class Patch_CM_PageRundown_New_OnEnable
		{
			public static void Postfix()
			{
				RundownMenuHandlers.UpdateRundownSelections();
			}
		}

		[HarmonyPatch(typeof(CM_PageRundown_New), "ResetElements")]
		private class Patch_CM_PageRundown_New_ResetElements
		{
			public static void Postfix(CM_PageRundown_New __instance)
			{
				RundownMenuHandlers.UpdateRundownSelections();
			}
		}

		[HarmonyPatch(typeof(CM_PageRundown_New), "TryPlaceRundown")]
		private class Patch_CM_PageRundown_New_TryPlaceRundown
		{
			public static void Postfix(CM_PageRundown_New __instance)
			{
				RundownMenuHandlers.UpdateRundownSelections();
			}
		}

		[HarmonyPatch(typeof(CM_PageRundown_New), "PlaceRundown")]
		private class Patch_CM_PageRundown_New_PlaceRundown
		{
			public static void Postfix(CM_PageRundown_New __instance)
			{
				RundownMenuHandlers.UpdateRundownSelections();
			}
		}

		[HarmonyPatch(typeof(CM_PageRundown_New), "Setup")]
		private class Patch_CM_PageRundown_New_Setup
		{
			public static void Postfix(CM_PageRundown_New __instance)
			{
				CM_Item selectRundownButton = __instance.m_selectRundownButton;
				selectRundownButton.OnBtnPressCallback += Action<int>.op_Implicit((Action<int>)delegate
				{
					RundownMenuHandlers.UpdateRundownSelections();
				});
				RundownMenuHandlers.m_rundownInstance = __instance;
				RundownMenuHandlers.UpdateRundownSelections();
				RundownMenuHandlers.SetupRundownFeatures();
			}
		}

		[HarmonyPatch(typeof(PUI_Watermark), "UpdateWatermark")]
		private class Patch_PUI_Watermark_UpdateWatermark
		{
			public static void Postfix(PUI_Watermark __instance)
			{
				RundownMenuHandlers.UpdateWatermark(__instance);
				RundownMenuHandlers.m_watermarkInstance = __instance;
			}
		}

		public static void Setup()
		{
			Harmony.CreateAndPatchAll(typeof(Patch_CM_PageRundown_New_Update), (string)null);
			Harmony.CreateAndPatchAll(typeof(Patch_CM_PageRundown_New_ResetRundownSelection), (string)null);
			Harmony.CreateAndPatchAll(typeof(Patch_CM_PageRundown_New_UpdateHeaderText), (string)null);
			Harmony.CreateAndPatchAll(typeof(Patch_CM_PageRundown_New_SetIconStatus), (string)null);
			Harmony.CreateAndPatchAll(typeof(Patch_CM_ExpeditionIcon_New_UpdateBorderColor), (string)null);
			Harmony.CreateAndPatchAll(typeof(Patch_CM_PageRundown_New_UpdateTierIconsWithProgression), (string)null);
			Harmony.CreateAndPatchAll(typeof(Patch_CM_PageRundown_New_RundownSelectionRevealed), (string)null);
			Harmony.CreateAndPatchAll(typeof(Patch_CM_PageRundown_New_OnEnable), (string)null);
			Harmony.CreateAndPatchAll(typeof(Patch_CM_PageRundown_New_ResetElements), (string)null);
			Harmony.CreateAndPatchAll(typeof(Patch_CM_PageRundown_New_TryPlaceRundown), (string)null);
			Harmony.CreateAndPatchAll(typeof(Patch_CM_PageRundown_New_PlaceRundown), (string)null);
			Harmony.CreateAndPatchAll(typeof(Patch_CM_PageRundown_New_Setup), (string)null);
			Harmony.CreateAndPatchAll(typeof(Patch_PUI_Watermark_UpdateWatermark), (string)null);
			Log.Info("ERC GUI_Patches Setup");
		}
	}
}
namespace ExtraRundownCustomization.Handlers
{
	public class RundownMenuHandlers
	{
		public static CustomRundownSelections m_activeRundownSelectionData;

		public static RundownLayout m_activeGlobalRundownLayoutData;

		public static MiscRundownData m_activeMiscRundownData;

		public static CustomWatermark m_activeWatermarkData;

		public static CM_PageRundown_New m_rundownInstance;

		public static PUI_Watermark m_watermarkInstance;

		public static bool m_hasLocalProg = false;

		public static List<GameObject> rundownSelectors = new List<GameObject>();

		private static GameObject customTierMarker1;

		private static GameObject customTierMarker2;

		private static GameObject customTierMarker3;

		private static GameObject customTierMarker4;

		private static GameObject customTierMarker5;

		public static void UpdateAll()
		{
			UpdateRundownSelections();
			UpdateWatermark(m_watermarkInstance);
			UpdateMiscFeatures();
			if (m_rundownInstance.m_rundownIsRevealed)
			{
				UpdateExpeditionIcons();
			}
			if (m_activeMiscRundownData.EnableERCDataReload)
			{
				AddReloadButton();
			}
		}

		public static void AddReloadButton()
		{
			if (!((Object)(object)m_rundownInstance == (Object)null))
			{
				m_rundownInstance.m_matchmakeAllButton.SetText("RELOAD ERC DATA");
				m_rundownInstance.m_matchmakeAllButton.OnBtnPressCallback = Action<int>.op_Implicit((Action<int>)delegate
				{
					JsonHandler.OnHotReload();
				});
			}
		}

		public static void UpdateRundownSelections(bool isRepeat = false)
		{
			//IL_02fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0349: Unknown result type (might be due to invalid IL or missing references)
			//IL_034e: Unknown result type (might be due to invalid IL or missing references)
			//IL_039a: Unknown result type (might be due to invalid IL or missing references)
			//IL_043b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0487: Unknown result type (might be due to invalid IL or missing references)
			//IL_04e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_052f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0534: Unknown result type (might be due to invalid IL or missing references)
			//IL_0580: Unknown result type (might be due to invalid IL or missing references)
			//IL_05f0: Unknown result type (might be due to invalid IL or missing references)
			AddReloadButton();
			if (!m_activeRundownSelectionData.Enabled)
			{
				Log.Info("Rundown Selection data is not enabled");
				return;
			}
			CM_PageRundown_New rundownInstance = m_rundownInstance;
			if ((Object)(object)rundownInstance == (Object)null)
			{
				Log.Info("Instance is null");
				return;
			}
			UpdateMiscFeatures();
			rundownSelectors.Clear();
			for (int i = 0; i < 8; i++)
			{
				rundownSelectors.Add(((Component)rundownInstance.m_rundownHolder.GetChild(16).GetChild(i)).gameObject);
			}
			if (m_rundownInstance.m_currentRundownData != null)
			{
				((Component)m_rundownInstance.m_textRundownHeaderTop).gameObject.SetActive(true);
				((TMP_Text)rundownInstance.m_textRundownHeaderTop).text = "<color=white><size=300%>" + LocalizedText.op_Implicit(m_rundownInstance.m_currentRundownData.StorytellingData.Title);
				return;
			}
			((TMP_Text)rundownInstance.m_textRundownHeader).text = m_activeRundownSelectionData.TextHeader;
			((TMP_Text)rundownInstance.m_textRundownHeaderTop).text = m_activeRundownSelectionData.TextHeaderTop;
			if (rundownInstance.m_rundownIsRevealed)
			{
				((TMP_Text)rundownInstance.m_textRundownHeader).text = LocalizedText.op_Implicit(m_rundownInstance.m_currentRundownData.StorytellingData.Title);
			}
			foreach (GameObject rundownSelector in rundownSelectors)
			{
				switch (((Object)rundownSelector).name)
				{
				case "Rundown_Surface_SelectionALT_R1":
					UpdateRundownSelector(rundownSelector, m_activeRundownSelectionData.Selector_R1);
					break;
				case "Rundown_Surface_SelectionALT_R2":
					UpdateRundownSelector(rundownSelector, m_activeRundownSelectionData.Selector_R2);
					break;
				case "Rundown_Surface_SelectionALT_R3":
					UpdateRundownSelector(rundownSelector, m_activeRundownSelectionData.Selector_R3);
					break;
				case "Rundown_Surface_SelectionALT_R4":
					UpdateRundownSelector(rundownSelector, m_activeRundownSelectionData.Selector_R4);
					break;
				case "Rundown_Surface_SelectionALT_R5":
					UpdateRundownSelector(rundownSelector, m_activeRundownSelectionData.Selector_R5);
					break;
				case "Rundown_Surface_SelectionALT_R6":
					UpdateRundownSelector(rundownSelector, m_activeRundownSelectionData.Selector_R6);
					break;
				case "Rundown_Surface_SelectionALT_R7":
				{
					rundownSelector.transform.localPosition = new Vector3(m_activeRundownSelectionData.Selector_R7.pos.x, m_activeRundownSelectionData.Selector_R7.pos.y, m_activeRundownSelectionData.Selector_R7.pos.z);
					rundownSelector.transform.localRotation = Quaternion.Euler(new Vector3(m_activeRundownSelectionData.Selector_R7.rot.x, m_activeRundownSelectionData.Selector_R7.rot.y, m_activeRundownSelectionData.Selector_R7.rot.z));
					rundownSelector.transform.localScale = new Vector3(m_activeRundownSelectionData.Selector_R7.scale.x, m_activeRundownSelectionData.Selector_R7.scale.y, m_activeRundownSelectionData.Selector_R7.scale.z);
					CM_RundownSelection component2 = rundownSelector.GetComponent<CM_RundownSelection>();
					TextMeshPro component3 = ((Component)rundownSelector.transform.GetChild(0).GetChild(0)).GetComponent<TextMeshPro>();
					((TMP_Text)component2.m_rundownText).text = m_activeRundownSelectionData.Selector_R7.name;
					((TMP_Text)component3).text = m_activeRundownSelectionData.Selector_R7.altText;
					component2.m_rundownText.transform.localPosition = new Vector3(m_activeRundownSelectionData.Selector_R7.namePos.x, m_activeRundownSelectionData.Selector_R7.namePos.y, m_activeRundownSelectionData.Selector_R7.namePos.z);
					component3.transform.localPosition = new Vector3(m_activeRundownSelectionData.Selector_R7.altTextPos.x, m_activeRundownSelectionData.Selector_R7.altTextPos.y, m_activeRundownSelectionData.Selector_R7.altTextPos.z);
					((Component)component3).gameObject.SetActive(true);
					break;
				}
				case "Rundown_Surface_SelectionALT_R8":
				{
					rundownSelector.transform.localPosition = new Vector3(m_activeRundownSelectionData.Selector_R8.pos.x, m_activeRundownSelectionData.Selector_R8.pos.y, m_activeRundownSelectionData.Selector_R8.pos.z);
					rundownSelector.transform.localRotation = Quaternion.Euler(new Vector3(m_activeRundownSelectionData.Selector_R8.rot.x, m_activeRundownSelectionData.Selector_R8.rot.y, m_activeRundownSelectionData.Selector_R8.rot.z));
					rundownSelector.transform.localScale = new Vector3(m_activeRundownSelectionData.Selector_R8.scale.x, m_activeRundownSelectionData.Selector_R8.scale.y, m_activeRundownSelectionData.Selector_R8.scale.z);
					CM_RundownSelection component = rundownSelector.GetComponent<CM_RundownSelection>();
					((TMP_Text)component.m_rundownText).text = m_activeRundownSelectionData.Selector_R8.name;
					component.m_rundownText.transform.localPosition = new Vector3(m_activeRundownSelectionData.Selector_R8.namePos.x, m_activeRundownSelectionData.Selector_R8.namePos.y, m_activeRundownSelectionData.Selector_R8.namePos.z);
					break;
				}
				}
			}
		}

		private static void UpdateRundownSelector(GameObject obj, RundownSelector data)
		{
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			//IL_0058: Unknown result type (might be due to invalid IL or missing references)
			//IL_005d: Unknown result type (might be due to invalid IL or missing references)
			//IL_008e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_0121: Unknown result type (might be due to invalid IL or missing references)
			obj.transform.localPosition = new Vector3(data.pos.x, data.pos.y, data.pos.z);
			obj.transform.localRotation = Quaternion.Euler(new Vector3(data.rot.x, data.rot.y, data.rot.z));
			obj.transform.localScale = new Vector3(data.scale.x, data.scale.y, data.scale.z);
			CM_RundownSelection component = obj.GetComponent<CM_RundownSelection>();
			((TMP_Text)component.m_rundownText).text = data.name;
			((TMP_Text)component.m_altText).text = data.altText;
			component.m_rundownText.transform.localPosition = new Vector3(data.namePos.x, data.namePos.y, data.namePos.z);
			component.m_altText.transform.localPosition = new Vector3(data.altTextPos.x, data.altTextPos.y, data.altTextPos.z);
		}

		public static void UpdateExpeditionIcons()
		{
			UpdateMiscFeatures();
			if (!m_activeGlobalRundownLayoutData.Enabled)
			{
				return;
			}
			if ((Object)(object)m_rundownInstance == (Object)null)
			{
				Log.Error("m_rundownInstance is null");
				return;
			}
			((TMP_Text)m_rundownInstance.m_textRundownHeader).text = LocalizedText.op_Implicit(m_rundownInstance.m_currentRundownData.StorytellingData.Title);
			int index;
			if (((GameDataBlockBase<RundownDataBlock>)(object)m_rundownInstance.m_currentRundownData).persistentID == m_activeGlobalRundownLayoutData.R1.RundownDatablockID)
			{
				UpdateRundown(m_activeGlobalRundownLayoutData.R1);
			}
			if (((GameDataBlockBase<RundownDataBlock>)(object)m_rundownInstance.m_currentRundownData).persistentID == m_activeGlobalRundownLayoutData.R2.RundownDatablockID)
			{
				UpdateRundown(m_activeGlobalRundownLayoutData.R2);
			}
			if (((GameDataBlockBase<RundownDataBlock>)(object)m_rundownInstance.m_currentRundownData).persistentID == m_activeGlobalRundownLayoutData.R3.RundownDatablockID)
			{
				UpdateRundown(m_activeGlobalRundownLayoutData.R3);
			}
			if (((GameDataBlockBase<RundownDataBlock>)(object)m_rundownInstance.m_currentRundownData).persistentID == m_activeGlobalRundownLayoutData.R4.RundownDatablockID)
			{
				UpdateRundown(m_activeGlobalRundownLayoutData.R4);
			}
			if (((GameDataBlockBase<RundownDataBlock>)(object)m_rundownInstance.m_currentRundownData).persistentID == m_activeGlobalRundownLayoutData.R5.RundownDatablockID)
			{
				UpdateRundown(m_activeGlobalRundownLayoutData.R5);
			}
			if (((GameDataBlockBase<RundownDataBlock>)(object)m_rundownInstance.m_currentRundownData).persistentID == m_activeGlobalRundownLayoutData.R6.RundownDatablockID)
			{
				UpdateRundown(m_activeGlobalRundownLayoutData.R6);
			}
			if (((GameDataBlockBase<RundownDataBlock>)(object)m_rundownInstance.m_currentRundownData).persistentID == m_activeGlobalRundownLayoutData.R7.RundownDatablockID)
			{
				UpdateRundown(m_activeGlobalRundownLayoutData.R7);
			}
			if (((GameDataBlockBase<RundownDataBlock>)(object)m_rundownInstance.m_currentRundownData).persistentID == m_activeGlobalRundownLayoutData.R8.RundownDatablockID)
			{
				UpdateRundown(m_activeGlobalRundownLayoutData.R8);
			}
			void UpdateIcon(CM_ExpeditionIcon_New expIcon, ExpeditionButton data)
			{
				//IL_0051: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
				//IL_0135: Unknown result type (might be due to invalid IL or missing references)
				//IL_016c: Unknown result type (might be due to invalid IL or missing references)
				//IL_01c9: Unknown result type (might be due to invalid IL or missing references)
				//IL_008a: Unknown result type (might be due to invalid IL or missing references)
				//IL_01fe: Unknown result type (might be due to invalid IL or missing references)
				//IL_022e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0206: Unknown result type (might be due to invalid IL or missing references)
				//IL_020c: Invalid comparison between Unknown and I4
				//IL_0264: Unknown result type (might be due to invalid IL or missing references)
				//IL_0336: Unknown result type (might be due to invalid IL or missing references)
				//IL_0355: Unknown result type (might be due to invalid IL or missing references)
				//IL_03a2: Unknown result type (might be due to invalid IL or missing references)
				//IL_0394: Unknown result type (might be due to invalid IL or missing references)
				//IL_02ed: Unknown result type (might be due to invalid IL or missing references)
				//IL_02df: Unknown result type (might be due to invalid IL or missing references)
				if ((Object)(object)expIcon == (Object)null)
				{
					Log.Error("expIcon was null in UpdateIcon");
				}
				else
				{
					expIcon.SetShortName("<color=white>" + data.label);
					((Component)expIcon).transform.localPosition = new Vector3(data.buttonPos.x, data.buttonPos.y, data.buttonPos.z);
					if (data.changeScale)
					{
						((Component)expIcon).transform.localScale = new Vector3(data.buttonScale.x, data.buttonScale.y, data.buttonScale.z);
					}
					expIcon.m_colorUnlocked = new Color(data.buttonColor.r, data.buttonColor.g, data.buttonColor.b, data.buttonColor.a);
					expIcon.m_colorStory = new Color(data.buttonColor.r, data.buttonColor.g, data.buttonColor.b, data.buttonColor.a);
					expIcon.m_colorLocked = new Color(data.buttonColor.r, data.buttonColor.g, data.buttonColor.b, data.buttonColor.a * 0.66f);
					expIcon.SetBorderColor(new Color(data.buttonColor.r, data.buttonColor.g, data.buttonColor.b, data.buttonColor.a));
					((Component)expIcon.m_artifactHeatText).gameObject.SetActive(data.enableHeat);
					((TMP_Text)expIcon.m_artifactHeatText).text = data.heatText;
					expIcon.m_statusText.transform.localPosition = new Vector3(data.statusPos.x, data.statusPos.y, data.statusPos.z);
					if (data.overrideDecryptText)
					{
						((Component)expIcon.m_decryptErrorText).gameObject.SetActive(true);
						((TMP_Text)expIcon.m_decryptErrorText).text = data.decryptText;
					}
					if ((int)expIcon._Status_k__BackingField == 0 && (int)expIcon.Accessibility == 5)
					{
						expIcon.SetUnlockedByText();
					}
					((Graphic)expIcon.m_statusText).color = new Color(1f, 1f, 1f, 1f);
					index++;
					if (m_hasLocalProg)
					{
						uint num = LocalProgressionManager.Current.ActiveRundownID();
						ExpeditionProgressionData expeditionLP = LocalProgressionManager.Current.GetExpeditionLP(num, expIcon.Tier, expIcon.ExpIndex);
						Color color = default(Color);
						((Color)(ref color))..ctor(0f, 1f, 82f / 85f, 0.5f);
						if (((Component)expIcon).transform.childCount > 1)
						{
							SpriteRenderer[] array = Il2CppArrayBase<SpriteRenderer>.op_Implicit(((Component)((Component)expIcon).transform.GetChild(1)).GetComponentsInChildren<SpriteRenderer>());
							foreach (SpriteRenderer val in array)
							{
								if (expeditionLP.NoBoosterAllClearCount <= 0)
								{
									val.color = new Color(0f, 0f, 0f, 0f);
								}
								else
								{
									val.color = color;
								}
							}
						}
						else
						{
							GameObject obj = Object.Instantiate<GameObject>(((Component)((Component)expIcon).transform.GetChild(0).GetChild(1)).gameObject, ((Component)expIcon).transform);
							obj.transform.localPosition = new Vector3(-3f, 0f, 0f);
							obj.transform.localScale = new Vector3(0.97f, 0.97f, 0.97f);
							SpriteRenderer[] array = Il2CppArrayBase<SpriteRenderer>.op_Implicit(obj.GetComponentsInChildren<SpriteRenderer>());
							foreach (SpriteRenderer val2 in array)
							{
								if (expeditionLP.NoBoosterAllClearCount <= 0)
								{
									val2.color = new Color(0f, 0f, 0f, 0f);
								}
								else
								{
									val2.color = color;
								}
							}
						}
					}
				}
			}
			void UpdateRundown(IndividualRundownLayout data)
			{
				if (data == null)
				{
					Log.Error("Data was null aborting UpdateRundown");
				}
				else if (data.Enabled)
				{
					index = 0;
					if (data.Tier1 != null)
					{
						ExpeditionButton[] tier = data.Tier1;
						foreach (ExpeditionButton data2 in tier)
						{
							if (m_rundownInstance.m_expIconsTier1 == null || m_rundownInstance.m_expIconsTier1.Count <= index)
							{
								break;
							}
							UpdateIcon(m_rundownInstance.m_expIconsTier1[index], data2);
						}
					}
					index = 0;
					if (data.Tier2 != null)
					{
						ExpeditionButton[] tier = data.Tier2;
						foreach (ExpeditionButton data3 in tier)
						{
							if (m_rundownInstance.m_expIconsTier2 == null || m_rundownInstance.m_expIconsTier2.Count <= index)
							{
								break;
							}
							UpdateIcon(m_rundownInstance.m_expIconsTier2[index], data3);
						}
					}
					index = 0;
					if (data.Tier3 != null)
					{
						ExpeditionButton[] tier = data.Tier3;
						foreach (ExpeditionButton data4 in tier)
						{
							if (m_rundownInstance.m_expIconsTier3 == null || m_rundownInstance.m_expIconsTier3.Count <= index)
							{
								break;
							}
							UpdateIcon(m_rundownInstance.m_expIconsTier3[index], data4);
						}
					}
					index = 0;
					if (data.Tier4 != null)
					{
						ExpeditionButton[] tier = data.Tier4;
						foreach (ExpeditionButton data5 in tier)
						{
							if (m_rundownInstance.m_expIconsTier4 == null || m_rundownInstance.m_expIconsTier4.Count <= 0)
							{
								break;
							}
							UpdateIcon(m_rundownInstance.m_expIconsTier4[index], data5);
						}
					}
					index = 0;
					if (data.Tier5 != null)
					{
						ExpeditionButton[] tier = data.Tier5;
						foreach (ExpeditionButton data6 in tier)
						{
							if (m_rundownInstance.m_expIconsTier5 == null || m_rundownInstance.m_expIconsTier5.Count <= 0)
							{
								break;
							}
							UpdateIcon(m_rundownInstance.m_expIconsTier5[index], data6);
						}
					}
				}
			}
		}

		public static void UpdateMiscFeatures(bool isRepeat = false)
		{
			//IL_016a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0122: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0616: Unknown result type (might be due to invalid IL or missing references)
			//IL_0585: Unknown result type (might be due to invalid IL or missing references)
			//IL_0358: Unknown result type (might be due to invalid IL or missing references)
			//IL_037b: Unknown result type (might be due to invalid IL or missing references)
			//IL_039e: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_03e4: Unknown result type (might be due to invalid IL or missing references)
			if (m_activeMiscRundownData == null)
			{
				Log.Error("Misc feature data was null");
				return;
			}
			if ((Object)(object)m_rundownInstance == (Object)null)
			{
				Log.Error("rundown instance was null");
				return;
			}
			if (!m_activeMiscRundownData.Enabled)
			{
				Log.Debug("Misc rundown features not enabled");
				return;
			}
			((Component)((Component)m_rundownInstance.m_buttonVanityItemDrops).transform.GetChild(0)).gameObject.SetActive(m_activeMiscRundownData.EnableVanityPage);
			((Behaviour)((Component)m_rundownInstance.m_buttonVanityItemDrops).GetComponent<BoxCollider2D>()).enabled = m_activeMiscRundownData.EnableVanityPage;
			((Behaviour)((Component)m_rundownInstance.m_buttonVanityItemDrops).GetComponent<TextMeshPro>()).enabled = m_activeMiscRundownData.EnableVanityPage;
			((Component)((Component)m_rundownInstance.m_vanityItemDropsNext).transform.GetChild(0)).gameObject.SetActive(m_activeMiscRundownData.EnableVanityPage);
			((Component)((Component)m_rundownInstance.m_vanityItemDropsNext).transform.GetChild(1)).gameObject.SetActive(m_activeMiscRundownData.EnableVanityPage);
			if (!m_activeMiscRundownData.EnableSectorSummary)
			{
				((Component)m_rundownInstance.m_tierMarkerSectorSummary).transform.localPosition = new Vector3(90000f, 0f, 0f);
			}
			else
			{
				((Component)m_rundownInstance.m_tierMarkerSectorSummary).transform.localPosition = new Vector3(m_activeMiscRundownData.SectorSummaryPosition.x, m_activeMiscRundownData.SectorSummaryPosition.y, m_activeMiscRundownData.SectorSummaryPosition.z);
				((Component)((Component)m_rundownInstance.m_tierMarkerSectorSummary).transform.GetChild(0).GetChild(0)).gameObject.SetActive(false);
			}
			if (m_rundownInstance.m_rundownIsRevealed)
			{
				Enumerator<CM_RundownSelection> enumerator = m_rundownInstance.m_rundownSelections.GetEnumerator();
				while (enumerator.MoveNext())
				{
					((Component)enumerator.Current).gameObject.SetActive(false);
				}
				if (m_activeMiscRundownData.OverrideTierMarkerText && m_hasLocalProg)
				{
					if ((Object)(object)customTierMarker1 == (Object)null)
					{
						SetupRundownFeatures();
					}
					customTierMarker1.transform.SetSiblingIndex(m_rundownInstance.m_rundownHolder.childCount - 1);
					customTierMarker2.transform.SetSiblingIndex(m_rundownInstance.m_rundownHolder.childCount - 1);
					customTierMarker3.transform.SetSiblingIndex(m_rundownInstance.m_rundownHolder.childCount - 1);
					customTierMarker4.transform.SetSiblingIndex(m_rundownInstance.m_rundownHolder.childCount - 1);
					customTierMarker5.transform.SetSiblingIndex(m_rundownInstance.m_rundownHolder.childCount - 1);
					CM_RundownTierMarker component = customTierMarker1.GetComponent<CM_RundownTierMarker>();
					CM_RundownTierMarker component2 = customTierMarker2.GetComponent<CM_RundownTierMarker>();
					CM_RundownTierMarker component3 = customTierMarker3.GetComponent<CM_RundownTierMarker>();
					CM_RundownTierMarker component4 = customTierMarker4.GetComponent<CM_RundownTierMarker>();
					CM_RundownTierMarker component5 = customTierMarker5.GetComponent<CM_RundownTierMarker>();
					((TMP_Text)component.m_header).text = m_activeMiscRundownData.Tier1Text;
					((TMP_Text)component2.m_header).text = m_activeMiscRundownData.Tier2Text;
					((TMP_Text)component3.m_header).text = m_activeMiscRundownData.Tier3Text;
					((TMP_Text)component4.m_header).text = m_activeMiscRundownData.Tier4Text;
					((TMP_Text)component5.m_header).text = m_activeMiscRundownData.Tier5Text;
					customTierMarker1.transform.localPosition = new Vector3(0f, -205f, 0f);
					customTierMarker2.transform.localPosition = new Vector3(0f, -435f, 0f);
					customTierMarker3.transform.localPosition = new Vector3(0f, -665f, 0f);
					customTierMarker4.transform.localPosition = new Vector3(0f, -895f, 0f);
					customTierMarker5.transform.localPosition = new Vector3(0f, -1125f, 0f);
					customTierMarker1.SetActive(true);
					customTierMarker2.SetActive(true);
					customTierMarker3.SetActive(true);
					customTierMarker4.SetActive(true);
					customTierMarker5.SetActive(true);
					((Component)m_rundownInstance.m_tierMarker1).gameObject.SetActive(false);
					((Component)m_rundownInstance.m_tierMarker2).gameObject.SetActive(false);
					((Component)m_rundownInstance.m_tierMarker3).gameObject.SetActive(false);
					((Component)m_rundownInstance.m_tierMarker4).gameObject.SetActive(false);
					((Component)m_rundownInstance.m_tierMarker5).gameObject.SetActive(false);
				}
				else
				{
					((Component)m_rundownInstance.m_tierMarker1).gameObject.SetActive(m_activeMiscRundownData.EnableTierMarkers);
					((Graphic)m_rundownInstance.m_tierMarker1.m_header).color = new Color(0.5189f, 0.5189f, 0.5189f, 0.2745f);
					((Component)m_rundownInstance.m_tierMarker2).gameObject.SetActive(m_activeMiscRundownData.EnableTierMarkers);
					((Component)m_rundownInstance.m_tierMarker3).gameObject.SetActive(m_activeMiscRundownData.EnableTierMarkers);
					((Component)m_rundownInstance.m_tierMarker4).gameObject.SetActive(m_activeMiscRundownData.EnableTierMarkers);
					((Component)m_rundownInstance.m_tierMarker5).gameObject.SetActive(m_activeMiscRundownData.EnableTierMarkers);
				}
				if (m_activeMiscRundownData.EnableERCDataReload)
				{
					((Component)m_rundownInstance.m_matchmakeAllButton).gameObject.transform.localPosition = new Vector3(0f, 210f, 0f);
					AddReloadButton();
				}
				((Component)((Component)m_rundownInstance).transform.GetChild(2).GetChild(4).GetChild(18)).gameObject.SetActive(false);
				((Component)m_rundownInstance.m_rundownIntelButton).gameObject.SetActive(m_activeMiscRundownData.EnableIntelButton);
				((Component)m_rundownInstance.m_rundownIntelButton).transform.localPosition = new Vector3(m_activeMiscRundownData.IntelButtonPosition.x, m_activeMiscRundownData.IntelButtonPosition.y, m_activeMiscRundownData.IntelButtonPosition.z);
			}
			((Component)((Component)m_rundownInstance.m_matchmakeAllButton).transform.GetChild(0)).gameObject.SetActive(m_activeMiscRundownData.EnableMatchmakingButton);
			((Behaviour)((Component)m_rundownInstance.m_matchmakeAllButton).GetComponent<BoxCollider2D>()).enabled = m_activeMiscRundownData.EnableMatchmakingButton;
			if (m_activeMiscRundownData.EnableERCDataReload)
			{
				((Component)((Component)m_rundownInstance.m_matchmakeAllButton).transform.GetChild(0)).gameObject.SetActive(true);
				((Behaviour)((Component)m_rundownInstance.m_matchmakeAllButton).GetComponent<BoxCollider2D>()).enabled = true;
				AddReloadButton();
			}
			((Component)((Component)m_rundownInstance.m_aboutTheRundownButton).transform.GetChild(0)).gameObject.SetActive(m_activeMiscRundownData.EnableButtonAboutTheRundown);
			((Behaviour)((Component)m_rundownInstance.m_aboutTheRundownButton).GetComponent<BoxCollider2D>()).enabled = m_activeMiscRundownData.EnableButtonAboutTheRundown;
			((Behaviour)((Component)m_rundownInstance.m_aboutTheRundownButton).GetComponent<TextMeshPro>()).enabled = m_activeMiscRundownData.EnableButtonAboutTheRundown;
			((Component)((Component)m_rundownInstance.m_discordButton).transform.GetChild(0)).gameObject.SetActive(m_activeMiscRundownData.EnableButtonDiscord);
			((Behaviour)((Component)m_rundownInstance.m_discordButton).GetComponent<BoxCollider2D>()).enabled = m_activeMiscRundownData.EnableButtonDiscord;
			((Behaviour)((Component)m_rundownInstance.m_discordButton).GetComponent<TextMeshPro>()).enabled = m_activeMiscRundownData.EnableButtonDiscord;
			((Component)((Component)m_rundownInstance.m_creditsButton).transform.GetChild(0)).gameObject.SetActive(m_activeMiscRundownData.EnableButtonCredits);
			((Behaviour)((Component)m_rundownInstance.m_creditsButton).GetComponent<BoxCollider2D>()).enabled = m_activeMiscRundownData.EnableButtonCredits;
			((Behaviour)((Component)m_rundownInstance.m_creditsButton).GetComponent<TextMeshPro>()).enabled = m_activeMiscRundownData.EnableButtonCredits;
			((Component)((Component)m_rundownInstance.m_gifButton).transform.GetChild(0)).gameObject.SetActive(m_activeMiscRundownData.EnableDOWGif);
			((Component)((Component)m_rundownInstance.m_tutorialButton).transform.GetChild(0)).gameObject.SetActive(m_activeMiscRundownData.EnableTutorialButton);
			((Behaviour)((Component)m_rundownInstance.m_tutorialButton).GetComponent<BoxCollider2D>()).enabled = m_activeMiscRundownData.EnableTutorialButton;
		}

		public static void UpdateWatermark(PUI_Watermark __instance)
		{
			if (m_activeWatermarkData.Enabled)
			{
				((TMP_Text)__instance.m_watermarkText).text = m_activeWatermarkData.Text;
			}
		}

		public static void SetupRundownFeatures()
		{
			customTierMarker1 = Object.Instantiate<GameObject>(m_rundownInstance.m_tierMarkerPrefab, m_rundownInstance.m_rundownHolder);
			customTierMarker2 = Object.Instantiate<GameObject>(m_rundownInstance.m_tierMarkerPrefab, m_rundownInstance.m_rundownHolder);
			customTierMarker3 = Object.Instantiate<GameObject>(m_rundownInstance.m_tierMarkerPrefab, m_rundownInstance.m_rundownHolder);
			customTierMarker4 = Object.Instantiate<GameObject>(m_rundownInstance.m_tierMarkerPrefab, m_rundownInstance.m_rundownHolder);
			customTierMarker5 = Object.Instantiate<GameObject>(m_rundownInstance.m_tierMarkerPrefab, m_rundownInstance.m_rundownHolder);
			customTierMarker1.SetActive(false);
			customTierMarker2.SetActive(false);
			customTierMarker3.SetActive(false);
			customTierMarker4.SetActive(false);
			customTierMarker5.SetActive(false);
		}
	}
}
namespace ExtraRundownCustomization.DataHolders
{
	[Serializable]
	public class Color
	{
		public float r { get; set; }

		public float g { get; set; }

		public float b { get; set; }

		public float a { get; set; }
	}
	[Serializable]
	public class CustomRundownSelections
	{
		public bool Enabled { get; set; }

		public string TextHeader { get; set; } = "SELECT RUNDOWN";


		public string TextHeaderTop { get; set; } = "<color=red>CLCTR MULTITHREAD PROCESSOR ACTIVATED";


		public RundownSelector Selector_R1 { get; set; } = new RundownSelector
		{
			name = "R1",
			altText = "<color=orange>ALT://",
			pos = new Vector3
			{
				x = -476f,
				y = 45f,
				z = 0f
			},
			rot = new Vector3
			{
				x = 0f,
				y = 0f,
				z = 0f
			},
			scale = new Vector3
			{
				x = 0.6f,
				y = 0.6f,
				z = 0.6f
			},
			namePos = new Vector3
			{
				x = 0f,
				y = 39f,
				z = 0f
			},
			altTextPos = new Vector3
			{
				x = -46f,
				y = 34.8f,
				z = 0f
			}
		};


		public RundownSelector Selector_R2 { get; set; } = new RundownSelector
		{
			name = "R2",
			altText = "<color=orange>ALT://",
			pos = new Vector3
			{
				x = -241f,
				y = -78f,
				z = 0f
			},
			rot = new Vector3
			{
				x = 0f,
				y = 0f,
				z = 0f
			},
			scale = new Vector3
			{
				x = 0.8f,
				y = 0.8f,
				z = 0.8f
			},
			namePos = new Vector3
			{
				x = 0f,
				y = 39f,
				z = 0f
			},
			altTextPos = new Vector3
			{
				x = -46f,
				y = 34.8f,
				z = 0f
			}
		};


		public RundownSelector Selector_R3 { get; set; } = new RundownSelector
		{
			name = "R3",
			altText = "<color=orange>ALT://",
			pos = new Vector3
			{
				x = -346f,
				y = 179.6f,
				z = 13.956f
			},
			rot = new Vector3
			{
				x = 0f,
				y = 0f,
				z = 0f
			},
			scale = new Vector3
			{
				x = 0.8f,
				y = 0.8f,
				z = 0.8f
			},
			namePos = new Vector3
			{
				x = 0f,
				y = 39f,
				z = 0f
			},
			altTextPos = new Vector3
			{
				x = -46f,
				y = 34.8f,
				z = 0f
			}
		};


		public RundownSelector Selector_R4 { get; set; } = new RundownSelector
		{
			name = "R4",
			altText = "<color=orange>ALT://",
			pos = new Vector3
			{
				x = -109f,
				y = 226f,
				z = 0f
			},
			rot = new Vector3
			{
				x = 0f,
				y = 0f,
				z = 0f
			},
			scale = new Vector3
			{
				x = 1.2f,
				y = 1.2f,
				z = 1.2f
			},
			namePos = new Vector3
			{
				x = 0f,
				y = 39f,
				z = 0f
			},
			altTextPos = new Vector3
			{
				x = -46f,
				y = 34.8f,
				z = 0f
			}
		};


		public RundownSelector Selector_R5 { get; set; } = new RundownSelector
		{
			name = "R5",
			altText = "<color=orange>ALT://",
			pos = new Vector3
			{
				x = 55f,
				y = -16f,
				z = 0f
			},
			rot = new Vector3
			{
				x = 0f,
				y = 0f,
				z = 0f
			},
			scale = new Vector3
			{
				x = 1.1f,
				y = 1.1f,
				z = 1.1f
			},
			namePos = new Vector3
			{
				x = 0f,
				y = 39f,
				z = 0f
			},
			altTextPos = new Vector3
			{
				x = -46f,
				y = 34.8f,
				z = 0f
			}
		};


		public RundownSelector Selector_R6 { get; set; } = new RundownSelector
		{
			name = "R6",
			altText = "<color=orange>ALT://",
			pos = new Vector3
			{
				x = 240f,
				y = 235f,
				z = 0f
			},
			rot = new Vector3
			{
				x = 0f,
				y = 0f,
				z = 0f
			},
			scale = new Vector3
			{
				x = 1.09f,
				y = 1.09f,
				z = 1.09f
			},
			namePos = new Vector3
			{
				x = 0f,
				y = 39f,
				z = 0f
			},
			altTextPos = new Vector3
			{
				x = -46f,
				y = 34.8f,
				z = 0f
			}
		};


		public RundownSelector Selector_R7 { get; set; } = new RundownSelector
		{
			name = "R7",
			altText = "<color=orange>ALT://",
			pos = new Vector3
			{
				x = 317f,
				y = -104f,
				z = 0f
			},
			rot = new Vector3
			{
				x = 0f,
				y = 0f,
				z = 0f
			},
			scale = new Vector3
			{
				x = 1f,
				y = 1f,
				z = 1f
			},
			namePos = new Vector3
			{
				x = 0f,
				y = 39f,
				z = 0f
			},
			altTextPos = new Vector3
			{
				x = -46f,
				y = 34.8f,
				z = 0f
			}
		};


		public Selection_R8 Selector_R8 { get; set; } = new Selection_R8();

	}
	public class RundownSelector
	{
		public string name { get; set; }

		public string altText { get; set; }

		public Vector3 pos { get; set; }

		public Vector3 rot { get; set; }

		public Vector3 scale { get; set; }

		public Vector3 namePos { get; set; }

		public Vector3 altTextPos { get; set; }
	}
	public class Selection_R8
	{
		public string name { get; set; } = "R8";


		public Vector3 pos { get; set; } = new Vector3
		{
			x = 550f,
			y = 150f,
			z = 0f
		};


		public Vector3 rot { get; set; } = new Vector3
		{
			x = 0f,
			y = 0f,
			z = 0f
		};


		public Vector3 scale { get; set; } = new Vector3
		{
			x = 1.25f,
			y = 1.2f,
			z = 1.25f
		};


		public Vector3 namePos { get; set; } = new Vector3
		{
			x = 0f,
			y = 39f,
			z = 0f
		};

	}
	[Serializable]
	public class CustomWatermark
	{
		public bool Enabled { get; set; }

		public string Text { get; set; } = "<color=red>MODDED</color> <color=orange>4.6.2+git44e73d7-dirty-main</color>";

	}
	public class MiscRundownData
	{
		public bool Enabled { get; set; }

		public bool EnableERCDataReload { get; set; }

		public bool EnableTutorialButton { get; set; } = true;


		public bool EnableMatchmakingButton { get; set; } = true;


		public bool EnableButtonAboutTheRundown { get; set; } = true;


		public bool EnableButtonDiscord { get; set; } = true;


		public bool EnableButtonCredits { get; set; } = true;


		public bool EnableDOWGif { get; set; }

		public bool EnableVanityPage { get; set; } = true;


		public bool EnableIntelButton { get; set; } = true;


		public Vector3 IntelButtonPosition { get; set; } = new Vector3
		{
			x = 0f,
			y = 20f,
			z = -70f
		};


		public bool EnableSectorSummary { get; set; } = true;


		public Vector3 SectorSummaryPosition { get; set; } = new Vector3
		{
			x = 0f,
			y = 0f,
			z = 0f
		};


		public bool EnableTierMarkers { get; set; }

		public bool OverrideTierMarkerText { get; set; }

		public string Tier1Text { get; set; } = "Tier A";


		public string Tier2Text { get; set; } = "Tier B";


		public string Tier3Text { get; set; } = "Tier C";


		public string Tier4Text { get; set; } = "Tier D";


		public string Tier5Text { get; set; } = "Tier E";

	}
	[Serializable]
	public class RundownLayout
	{
		public bool Enabled { get; set; }

		public IndividualRundownLayout R1 { get; set; } = new IndividualRundownLayout
		{
			Enabled = false,
			RundownDatablockID = 32u,
			Tier1 = new ExpeditionButton[1]
			{
				new ExpeditionButton
				{
					label = "R1A1",
					buttonPos = new Vector3
					{
						x = -75f,
						y = 0f,
						z = 0f
					},
					buttonScale = new Vector3
					{
						x = 10f,
						y = 10f,
						z = 10f
					},
					buttonColor = new Color
					{
						r = 1f,
						g = 1f,
						b = 1f,
						a = 1f
					},
					enableHeat = true,
					heatText = "ARTIFACT HEAT: <color=orange>100%",
					statusPos = new Vector3
					{
						x = -156.378f,
						y = -67.81f,
						z = -1.36f
					},
					overrideDecryptText = false,
					decryptText = "://err: UNABLE TO DECRYPT; QP_%: 66,1\u202c"
				}
			},
			Tier2 = new ExpeditionButton[2]
			{
				new ExpeditionButton
				{
					label = "R1B1",
					buttonPos = new Vector3
					{
						x = -412.5f,
						y = 0f,
						z = 0f
					},
					buttonScale = new Vector3
					{
						x = 1.818f,
						y = 1.818f,
						z = 1.818f
					},
					buttonColor = new Color
					{
						r = 1f,
						g = 1f,
						b = 1f,
						a = 1f
					},
					enableHeat = true,
					heatText = "ARTIFACT HEAT: <color=orange>100%",
					statusPos = new Vector3
					{
						x = -156.378f,
						y = -67.81f,
						z = -1.36f
					},
					overrideDecryptText = false,
					decryptText = "://err: UNABLE TO DECRYPT; QP_%: 66,1\u202c"
				},
				new ExpeditionButton
				{
					label = "R1B2",
					buttonPos = new Vector3
					{
						x = 412.5f,
						y = 0f,
						z = 0f
					},
					buttonScale = new Vector3
					{
						x = 1.818f,
						y = 1.818f,
						z = 1.818f
					},
					buttonColor = new Color
					{
						r = 1f,
						g = 1f,
						b = 1f,
						a = 1f
					},
					enableHeat = true,
					heatText = "ARTIFACT HEAT: <color=orange>100%",
					statusPos = new Vector3
					{
						x = -156.378f,
						y = -67.81f,
						z = -1.36f
					},
					overrideDecryptText = false,
					decryptText = "://err: UNABLE TO DECRYPT; QP_%: 66,1\u202c"
				}
			},
			Tier3 = new ExpeditionButton[2]
			{
				new ExpeditionButton
				{
					label = "R1C1",
					buttonPos = new Vector3
					{
						x = -487.5f,
						y = 0f,
						z = 0f
					},
					buttonScale = new Vector3
					{
						x = 1.5385f,
						y = 1.5385f,
						z = 1.5385f
					},
					buttonColor = new Color
					{
						r = 1f,
						g = 1f,
						b = 1f,
						a = 1f
					},
					enableHeat = true,
					heatText = "ARTIFACT HEAT: <color=orange>100%",
					statusPos = new Vector3
					{
						x = -156.378f,
						y = -67.81f,
						z = -1.36f
					},
					overrideDecryptText = false,
					decryptText = "://err: UNABLE TO DECRYPT; QP_%: 66,1\u202c"
				},
				new ExpeditionButton
				{
					label = "R1C2",
					buttonPos = new Vector3
					{
						x = 487.5f,
						y = 0f,
						z = 0f
					},
					buttonScale = new Vector3
					{
						x = 1.5385f,
						y = 1.5385f,
						z = 1.5385f
					},
					buttonColor = new Color
					{
						r = 1f,
						g = 1f,
						b = 1f,
						a = 1f
					},
					enableHeat = true,
					heatText = "ARTIFACT HEAT: <color=orange>100%",
					statusPos = new Vector3
					{
						x = -156.378f,
						y = -67.81f,
						z = -1.36f
					},
					overrideDecryptText = false,
					decryptText = "://err: UNABLE TO DECRYPT; QP_%: 66,1\u202c"
				}
			},
			Tier4 = new ExpeditionButton[1]
			{
				new ExpeditionButton
				{
					label = "R1D1",
					buttonPos = new Vector3
					{
						x = -75f,
						y = 0f,
						z = 0f
					},
					buttonScale = new Vector3
					{
						x = 10f,
						y = 10f,
						z = 10f
					},
					buttonColor = new Color
					{
						r = 1f,
						g = 1f,
						b = 1f,
						a = 1f
					},
					enableHeat = true,
					heatText = "ARTIFACT HEAT: <color=orange>100%",
					statusPos = new Vector3
					{
						x = -156.378f,
						y = -67.81f,
						z = -1.36f
					},
					overrideDecryptText = false,
					decryptText = "://err: UNABLE TO DECRYPT; QP_%: 66,1\u202c"
				}
			},
			Tier5 = Array.Empty<ExpeditionButton>()
		};


		public IndividualRundownLayout R2 { get; set; } = new IndividualRundownLayout
		{
			Enabled = false,
			RundownDatablockID = 33u,
			Tier1 = Array.Empty<ExpeditionButton>(),
			Tier2 = Array.Empty<ExpeditionButton>(),
			Tier3 = Array.Empty<ExpeditionButton>(),
			Tier4 = Array.Empty<ExpeditionButton>(),
			Tier5 = Array.Empty<ExpeditionButton>()
		};


		public IndividualRundownLayout R3 { get; set; } = new IndividualRundownLayout
		{
			Enabled = false,
			RundownDatablockID = 34u,
			Tier1 = Array.Empty<ExpeditionButton>(),
			Tier2 = Array.Empty<ExpeditionButton>(),
			Tier3 = Array.Empty<ExpeditionButton>(),
			Tier4 = Array.Empty<ExpeditionButton>(),
			Tier5 = Array.Empty<ExpeditionButton>()
		};


		public IndividualRundownLayout R4 { get; set; } = new IndividualRundownLayout
		{
			Enabled = false,
			RundownDatablockID = 37u,
			Tier1 = Array.Empty<ExpeditionButton>(),
			Tier2 = Array.Empty<ExpeditionButton>(),
			Tier3 = Array.Empty<ExpeditionButton>(),
			Tier4 = Array.Empty<ExpeditionButton>(),
			Tier5 = Array.Empty<ExpeditionButton>()
		};


		public IndividualRundownLayout R5 { get; set; } = new IndividualRundownLayout
		{
			Enabled = false,
			RundownDatablockID = 38u,
			Tier1 = Array.Empty<ExpeditionButton>(),
			Tier2 = Array.Empty<ExpeditionButton>(),
			Tier3 = Array.Empty<ExpeditionButton>(),
			Tier4 = Array.Empty<ExpeditionButton>(),
			Tier5 = Array.Empty<ExpeditionButton>()
		};


		public IndividualRundownLayout R6 { get; set; } = new IndividualRundownLayout
		{
			Enabled = false,
			RundownDatablockID = 41u,
			Tier1 = Array.Empty<ExpeditionButton>(),
			Tier2 = Array.Empty<ExpeditionButton>(),
			Tier3 = Array.Empty<ExpeditionButton>(),
			Tier4 = Array.Empty<ExpeditionButton>(),
			Tier5 = Array.Empty<ExpeditionButton>()
		};


		public IndividualRundownLayout R7 { get; set; } = new IndividualRundownLayout
		{
			Enabled = false,
			RundownDatablockID = 31u,
			Tier1 = Array.Empty<ExpeditionButton>(),
			Tier2 = Array.Empty<ExpeditionButton>(),
			Tier3 = Array.Empty<ExpeditionButton>(),
			Tier4 = Array.Empty<ExpeditionButton>(),
			Tier5 = Array.Empty<ExpeditionButton>()
		};


		public IndividualRundownLayout R8 { get; set; } = new IndividualRundownLayout
		{
			Enabled = false,
			RundownDatablockID = 35u,
			Tier1 = Array.Empty<ExpeditionButton>(),
			Tier2 = Array.Empty<ExpeditionButton>(),
			Tier3 = Array.Empty<ExpeditionButton>(),
			Tier4 = Array.Empty<ExpeditionButton>(),
			Tier5 = Array.Empty<ExpeditionButton>()
		};

	}
	[Serializable]
	public class IndividualRundownLayout
	{
		public bool Enabled { get; set; }

		public uint RundownDatablockID { get; set; }

		public ExpeditionButton[] Tier1 { get; set; }

		public ExpeditionButton[] Tier2 { get; set; }

		public ExpeditionButton[] Tier3 { get; set; }

		public ExpeditionButton[] Tier4 { get; set; }

		public ExpeditionButton[] Tier5 { get; set; }
	}
	[Serializable]
	public class ExpeditionButton
	{
		public string label { get; set; }

		public Vector3 buttonPos { get; set; } = new Vector3();


		public bool changeScale { get; set; }

		public Vector3 buttonScale { get; set; } = new Vector3();


		public Color buttonColor { get; set; } = new Color
		{
			r = 1f,
			g = 1f,
			b = 1f,
			a = 1f
		};


		public bool enableHeat { get; set; } = true;


		public string heatText { get; set; } = "ARTIFACT HEAT <color=orange>100%";


		public Vector3 statusPos { get; set; } = new Vector3
		{
			x = -156.378f,
			y = -67.81f,
			z = -1.36f
		};


		public bool overrideDecryptText { get; set; }

		public string decryptText { get; set; }
	}
	[Serializable]
	public class Vector3
	{
		public float x { get; set; }

		public float y { get; set; }

		public float z { get; set; }
	}
}