Decompiled source of ExtraRundownCustomisation v1.0.4

ExtraRundownCustomization.dll

Decompiled 2 weeks ago
using System;
using System.CodeDom.Compiler;
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.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using System.Text.Encodings.Web;
using System.Text.Json;
using System.Text.Json.Serialization;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Core.Logging.Interpolation;
using BepInEx.Logging;
using BepInEx.Unity.IL2CPP;
using BepInEx.Unity.IL2CPP.Utils.Collections;
using CellMenu;
using ExtraRundownCustomization.DataHolders;
using ExtraRundownCustomization.Handlers;
using ExtraRundownCustomization.Patches;
using ExtraRundownCustomization.Utils;
using GTFO.API;
using GTFO.API.Utilities;
using GameData;
using Globals;
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.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")]
[assembly: AssemblyCompany("ExtraRundownCustomization")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.1")]
[assembly: AssemblyInformationalVersion("1.0.1+git47ab1ba-dirty-master.47ab1ba44bdba48bb58f6f11c47ccfa06768fe00")]
[assembly: AssemblyProduct("ExtraRundownCustomization")]
[assembly: AssemblyTitle("ExtraRundownCustomization")]
[assembly: TargetPlatform("Windows7.0")]
[assembly: SupportedOSPlatform("Windows7.0")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.1.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[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.4")]
	internal class EntryPoint : BasePlugin
	{
		private static Harmony _Harmony;

		public override void Load()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_0010: Expected O, but got Unknown
			_Harmony = new Harmony("RLC.ExtraRundownCustomization");
			Configurations.LoadConfig(((BasePlugin)this).Config);
			GUI_Patches.Setup(_Harmony);
			JsonHandler.SetupJson();
			((BasePlugin)this).Log.LogInfo((object)"ExtraRundownCustomisation Loaded");
		}

		private static void OnAssetsLoaded()
		{
		}
	}
	[GeneratedCode("VersionInfoGenerator", "2.1.3+git35c0c2a-master")]
	[CompilerGenerated]
	internal static class VersionInfo
	{
		public const string RootNamespace = "ExtraRundownCustomization";

		public const string Version = "1.0.1";

		public const string VersionPrerelease = null;

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

		public const string SemVer = "1.0.1+git47ab1ba-dirty-master";

		public const string GitRevShort = "47ab1ba-dirty";

		public const string GitRevLong = "47ab1ba44bdba48bb58f6f11c47ccfa06768fe00-dirty";

		public const string GitBranch = "master";

		public const string GitTag = null;

		public const int GitCommitsSinceTag = 0;

		public const bool GitIsDirty = true;
	}
}
namespace ExtraRundownCustomization.Utils
{
	internal static class Configurations
	{
		internal static ConfigEntry<bool> _enableLiveEdit;

		public static void LoadConfig(ConfigFile configFile)
		{
			_enableLiveEdit = configFile.Bind<bool>("LiveEdit", "LiveEditEnable", true, "Enables or disabled LiveEdit");
		}
	}
	public class JsonHandler
	{
		[Serializable]
		[CompilerGenerated]
		private sealed class <>c
		{
			public static readonly <>c <>9 = new <>c();

			public static LiveEditEventHandler <>9__1_0;

			internal void <SetupJson>b__1_0(LiveEditEventArgs _)
			{
				LoadJson(isHotReload: true);
			}
		}

		private static string ERC_CustomPath;

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

		public static void SetupJson()
		{
			//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c3: Expected O, but got Unknown
			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();
			if (!Configurations._enableLiveEdit.Value)
			{
				return;
			}
			LiveEditListener val = LiveEdit.CreateListener(ERC_CustomPath, "*.json", true);
			object obj = <>c.<>9__1_0;
			if (obj == null)
			{
				LiveEditEventHandler val2 = delegate
				{
					LoadJson(isHotReload: true);
				};
				<>c.<>9__1_0 = val2;
				obj = (object)val2;
			}
			val.FileChanged += (LiveEditEventHandler)obj;
		}

		private static void LoadJson(bool isHotReload = false)
		{
			Log.Info("Loading Json Data");
			string jsonPath = Path.Combine(ERC_CustomPath + "/rundownSelectors.json");
			RundownMenuHandlers.m_activeRundownSelectionData = DeserializeJsonAndCreateIfNotReal(jsonPath, new CustomRundownSelections());
			string jsonPath2 = Path.Combine(ERC_CustomPath + "/rundownLayouts.json");
			RundownMenuHandlers.m_activeGlobalRundownLayoutData = DeserializeJsonAndCreateIfNotReal(jsonPath2, new RundownLayout());
			string jsonPath3 = Path.Combine(ERC_CustomPath + "/miscFeatures.json");
			RundownMenuHandlers.m_activeMiscRundownData = DeserializeJsonAndCreateIfNotReal(jsonPath3, new MiscRundownData());
			string jsonPath4 = Path.Combine(ERC_CustomPath + "/watermark.json");
			RundownMenuHandlers.m_activeWatermarkData = DeserializeJsonAndCreateIfNotReal(jsonPath4, 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);
			}
			string json = File.ReadAllText(jsonPath);
			return JsonSerializer.Deserialize<T>(json, _setting);
		}

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

		static Log()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_0010: 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 GlobalPatches
	{
		[HarmonyPatch(typeof(StartMainGame), "Start")]
		private class Patch_StartMainGame_Start
		{
			public static void prefix(StartMainGame __instance)
			{
				//IL_0009: Unknown result type (might be due to invalid IL or missing references)
				GameSetupDataBlock block = GameDataBlockBase<GameSetupDataBlock>.GetBlock(1u);
				Global.StartupScreenKeyToLoad = block.StartupScreenToLoad;
				if (block.RundownIdsToLoad.Count <= 8)
				{
				}
			}
		}

		public static void Setup(Harmony harmony)
		{
		}
	}
	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;
				}
				if (((Component)__instance.m_buttonConnect).gameObject.active)
				{
					((Component)__instance.m_textRundownHeaderTop).gameObject.SetActive(true);
				}
				if (((Component)((Component)__instance.m_popupMovement).transform.GetChild(0)).gameObject.active)
				{
					RundownMenuHandlers.m_popupMovementActive = true;
				}
				else
				{
					RundownMenuHandlers.m_popupMovementActive = false;
				}
				RundownMenuHandlers.LazyUpdate();
			}
		}

		[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(CM_PageRundown_New __instance)
			{
				RundownMenuHandlers.m_rundownInstance = __instance;
				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)
			{
				Log.Info("PageRundown is setup");
				RundownMenuHandlers.m_rundownInstance = __instance;
				CM_Item selectRundownButton = __instance.m_selectRundownButton;
				selectRundownButton.OnBtnPressCallback += Action<int>.op_Implicit((Action<int>)delegate
				{
					RundownMenuHandlers.UpdateRundownSelections();
				});
				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 harmony)
		{
			harmony.PatchAll(typeof(Patch_CM_PageRundown_New_Update));
			harmony.PatchAll(typeof(Patch_CM_PageRundown_New_ResetRundownSelection));
			harmony.PatchAll(typeof(Patch_CM_PageRundown_New_UpdateHeaderText));
			harmony.PatchAll(typeof(Patch_CM_PageRundown_New_SetIconStatus));
			harmony.PatchAll(typeof(Patch_CM_ExpeditionIcon_New_UpdateBorderColor));
			harmony.PatchAll(typeof(Patch_CM_PageRundown_New_UpdateTierIconsWithProgression));
			harmony.PatchAll(typeof(Patch_CM_PageRundown_New_RundownSelectionRevealed));
			harmony.PatchAll(typeof(Patch_CM_PageRundown_New_OnEnable));
			harmony.PatchAll(typeof(Patch_CM_PageRundown_New_ResetElements));
			harmony.PatchAll(typeof(Patch_CM_PageRundown_New_TryPlaceRundown));
			harmony.PatchAll(typeof(Patch_CM_PageRundown_New_PlaceRundown));
			harmony.PatchAll(typeof(Patch_CM_PageRundown_New_Setup));
			harmony.PatchAll(typeof(Patch_PUI_Watermark_UpdateWatermark));
			Log.Info("ERC GUI_Patches Setup");
		}
	}
}
namespace ExtraRundownCustomization.Handlers
{
	internal static 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_popupMovementActive = 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();
			}
		}

		private static IEnumerator FixRundownName(CM_PageRundown_New __instance)
		{
			((Component)__instance.m_textRundownHeader).gameObject.SetActive(false);
			yield return (object)new WaitForSeconds(5.6f);
			((Component)__instance.m_textRundownHeader).gameObject.SetActive(true);
			yield return null;
		}

		public static void UpdateRundownSelections(bool isRepeat = false)
		{
			if ((Object)(object)m_rundownInstance == (Object)null)
			{
				Log.Error("PageRundownInstance is null when updating rundown selections");
			}
			else if (m_rundownInstance.m_currentRundownData != null)
			{
				((TMP_Text)m_rundownInstance.m_textRundownHeaderTop).text = "";
				((TMP_Text)m_rundownInstance.m_textRundownHeader).text = "<size=300%><color=white>" + LocalizedText.op_Implicit(m_rundownInstance.m_currentRundownData.StorytellingData.Title);
				CoroutineManager.StartCoroutine(CollectionExtensions.WrapToIl2Cpp(FixRundownName(m_rundownInstance)), (Action)null);
			}
			else if (m_activeRundownSelectionData.Enabled)
			{
				CM_PageRundown_New rundownInstance = m_rundownInstance;
				UpdateMiscFeatures();
				((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);
				}
				RundownSelector[] array = new RundownSelector[8] { m_activeRundownSelectionData.Selector_R1, m_activeRundownSelectionData.Selector_R7, m_activeRundownSelectionData.Selector_R2, m_activeRundownSelectionData.Selector_R3, m_activeRundownSelectionData.Selector_R4, m_activeRundownSelectionData.Selector_R5, m_activeRundownSelectionData.Selector_R6, m_activeRundownSelectionData.Selector_R8 };
				for (int i = 0; i < rundownInstance.m_rundownSelections.Count; i++)
				{
					CM_RundownSelection comp = rundownInstance.m_rundownSelections[i];
					RundownSelector data = array[i];
					UpdateRundownSelector(comp, data);
				}
			}
			static void UpdateRundownSelector(CM_RundownSelection val, RundownSelector rundownSelector)
			{
				//IL_000d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0024: Unknown result type (might be due to invalid IL or missing references)
				//IL_0029: Unknown result type (might be due to invalid IL or missing references)
				//IL_0040: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f7: Unknown result type (might be due to invalid IL or missing references)
				//IL_0133: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
				//IL_017e: Unknown result type (might be due to invalid IL or missing references)
				//IL_019f: Unknown result type (might be due to invalid IL or missing references)
				//IL_01c0: Unknown result type (might be due to invalid IL or missing references)
				//IL_01c5: Unknown result type (might be due to invalid IL or missing references)
				//IL_01d7: Unknown result type (might be due to invalid IL or missing references)
				((Component)val).transform.localPosition = rundownSelector.pos;
				((Component)val).transform.localRotation = Quaternion.Euler((Vector3)rundownSelector.rot);
				((Component)val).transform.localScale = rundownSelector.scale;
				if (((Component)val).transform.GetChildCount() < 3)
				{
					if ((Object)(object)val.m_altText == (Object)null)
					{
						val.m_altText = ((Component)((Component)val).transform.GetChild(0).GetChild(0)).GetComponent<TextMeshPro>();
						((Component)val.m_altText).gameObject.SetActive(true);
					}
					((TMP_Text)val.m_altText).text = rundownSelector.altText;
					val.m_altText.transform.localPosition = rundownSelector.altTextPos;
				}
				else
				{
					Transform val2 = ((Component)val).transform.Find("FriendsHosting");
					if ((Object)(object)val2 != (Object)null)
					{
						Transform transform = new GameObject("TextHolder").transform;
						transform.SetParent(((Component)val).transform, false);
						val2.SetParent(transform, true);
						Transform val3 = ((Component)val).transform.Find("RundownText");
						Transform transform2 = new GameObject("TextHolder").transform;
						transform2.SetParent(((Component)val).transform, false);
						val3.SetParent(transform2, true);
					}
				}
				((TMP_Text)val.m_rundownText).text = rundownSelector.name;
				val.m_rundownText.transform.localPosition = rundownSelector.namePos;
				val.m_rundownText.transform.parent.localScale = rundownSelector.textScale;
				val.m_rundownText.transform.parent.localRotation = Quaternion.Inverse(((Component)val).transform.localRotation);
				val.m_originalColor = rundownSelector.color;
				if (((CM_Item)val).m_isHovering)
				{
					((CM_Item)val).OnHoverIn();
				}
				else
				{
					((CM_Item)val).OnHoverOut();
				}
				if (rundownSelector.useFlatVersion)
				{
					val.RotateGUIXFlat();
				}
				else
				{
					val.ResetGUIXRotation();
				}
				val.SetIsUsed(rundownSelector.enabled);
				for (int j = 0; j < ((Component)val).transform.GetChildCount(); j++)
				{
					GameObject gameObject = ((Component)((Component)val).transform.GetChild(j)).gameObject;
					gameObject.SetActive(rundownSelector.show);
				}
				((Behaviour)((CM_Item)val).m_collider).enabled = rundownSelector.show;
			}
		}

		public static void UpdateExpeditionIcons()
		{
			UpdateMiscFeatures();
			if (!m_activeGlobalRundownLayoutData.Enabled)
			{
				return;
			}
			if ((Object)(object)m_rundownInstance == (Object)null)
			{
				Log.Error("m_rundownInstance is null when updating expedition icons");
				return;
			}
			((TMP_Text)m_rundownInstance.m_textRundownHeader).text = LocalizedText.op_Implicit(m_rundownInstance.m_currentRundownData.StorytellingData.Title);
			int index = 0;
			IndividualRundownLayout[] source = new IndividualRundownLayout[8] { m_activeGlobalRundownLayoutData.R1, m_activeGlobalRundownLayoutData.R2, m_activeGlobalRundownLayoutData.R3, m_activeGlobalRundownLayoutData.R4, m_activeGlobalRundownLayoutData.R5, m_activeGlobalRundownLayoutData.R6, m_activeGlobalRundownLayoutData.R7, m_activeGlobalRundownLayoutData.R8 };
			IndividualRundownLayout individualRundownLayout = source.FirstOrDefault((IndividualRundownLayout rundownData) => rundownData.RundownDatablockID == ((GameDataBlockBase<RundownDataBlock>)(object)m_rundownInstance.m_currentRundownData).persistentID);
			if (individualRundownLayout != null)
			{
				UpdateRundown(individualRundownLayout);
			}
			static void DoLocalProgressionStuff(CM_ExpeditionIcon_New expIcon)
			{
				//IL_0013: Unknown result type (might be due to invalid IL or missing references)
				//IL_010f: Unknown result type (might be due to invalid IL or missing references)
				//IL_012f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0193: Unknown result type (might be due to invalid IL or missing references)
				//IL_0182: Unknown result type (might be due to invalid IL or missing references)
				//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
				//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
				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>());
					SpriteRenderer[] array2 = array;
					foreach (SpriteRenderer val in array2)
					{
						if (expeditionLP.NoBoosterAllClearCount <= 0)
						{
							val.color = new Color(0f, 0f, 0f, 0f);
						}
						else
						{
							val.color = color;
						}
					}
				}
				else
				{
					GameObject val2 = Object.Instantiate<GameObject>(((Component)((Component)expIcon).transform.GetChild(0).GetChild(1)).gameObject, ((Component)expIcon).transform);
					val2.transform.localPosition = new Vector3(-3f, 0f, 0f);
					val2.transform.localScale = new Vector3(0.97f, 0.97f, 0.97f);
					SpriteRenderer[] array3 = Il2CppArrayBase<SpriteRenderer>.op_Implicit(val2.GetComponentsInChildren<SpriteRenderer>());
					SpriteRenderer[] array4 = array3;
					foreach (SpriteRenderer val3 in array4)
					{
						if (expeditionLP.NoBoosterAllClearCount <= 0)
						{
							val3.color = new Color(0f, 0f, 0f, 0f);
						}
						else
						{
							val3.color = color;
						}
					}
				}
			}
			void UpdateIcon(CM_ExpeditionIcon_New expIcon, ExpeditionButton data)
			{
				//IL_0052: Unknown result type (might be due to invalid IL or missing references)
				//IL_0079: Unknown result type (might be due to invalid IL or missing references)
				//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e2: Invalid comparison between Unknown and I4
				//IL_01c7: Unknown result type (might be due to invalid IL or missing references)
				//IL_01d8: Unknown result type (might be due to invalid IL or missing references)
				//IL_012d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0144: Unknown result type (might be due to invalid IL or missing references)
				//IL_015b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0172: Unknown result type (might be due to invalid IL or missing references)
				//IL_01e5: Unknown result type (might be due to invalid IL or missing references)
				//IL_01eb: Invalid comparison between Unknown and I4
				//IL_0223: 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(data.label);
					((Component)expIcon).transform.localPosition = data.buttonPos;
					if (data.changeScale)
					{
						((Component)expIcon).transform.localScale = data.buttonScale;
					}
					if (data.overrideDecryptText)
					{
						((Component)expIcon.m_decryptErrorText).gameObject.SetActive(true);
						((TMP_Text)expIcon.m_decryptErrorText).text = data.decryptText;
					}
					((CM_Item)expIcon).m_spriteAlphaOut = ((CM_Item)expIcon).m_spriteAlphaOver;
					if ((int)expIcon.Status == 5)
					{
						index++;
					}
					else
					{
						expIcon.SetShortName(data.label);
						if (data.changeColor)
						{
							expIcon.m_colorUnlocked = data.buttonColor;
							expIcon.m_colorStory = data.buttonColor;
							expIcon.m_colorLocked = data.buttonColor;
							expIcon.SetBorderColor((Color)data.buttonColor);
						}
						((Component)expIcon.m_artifactHeatText).gameObject.SetActive(data.enableHeat);
						((TMP_Text)expIcon.m_artifactHeatText).text = data.heatText;
						expIcon.m_statusText.transform.localPosition = data.statusPos;
						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 (data.enableOmnipotent)
						{
							InteropAPI.ExecuteWhenPluginExists("Inas.LocalProgression", (Action<PluginInfo>)delegate
							{
								DoLocalProgressionStuff(expIcon);
							});
						}
					}
				}
			}
			void UpdateRundown(IndividualRundownLayout data)
			{
				//IL_0349: Unknown result type (might be due to invalid IL or missing references)
				//IL_036a: Unknown result type (might be due to invalid IL or missing references)
				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[] tier2 = data.Tier2;
						foreach (ExpeditionButton data3 in tier2)
						{
							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[] tier3 = data.Tier3;
						foreach (ExpeditionButton data4 in tier3)
						{
							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[] tier4 = data.Tier4;
						foreach (ExpeditionButton data5 in tier4)
						{
							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[] tier5 = data.Tier5;
						foreach (ExpeditionButton data6 in tier5)
						{
							if (m_rundownInstance.m_expIconsTier5 == null || m_rundownInstance.m_expIconsTier5.Count <= 0)
							{
								break;
							}
							UpdateIcon(m_rundownInstance.m_expIconsTier5[index], data6);
						}
					}
					if (((Component)m_rundownInstance.m_guix_Tier2).gameObject.active)
					{
						GameObject gameObject = ((Component)m_rundownInstance.m_guix_Ext).gameObject;
						gameObject.SetActive(data.EnableExtensionPage);
						gameObject.transform.localPosition = data.ExtensionPagePos;
						gameObject.transform.localScale = new Vector3(0.85f, 0.85f, 0.85f);
						((TMP_Text)m_rundownInstance.m_externalExpHeader).text = data.ExtensionPageText;
					}
				}
			}
		}

		public static void UpdateMiscFeatures(bool isRepeat = false)
		{
			//IL_0249: Unknown result type (might be due to invalid IL or missing references)
			//IL_0208: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_06d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0461: Unknown result type (might be due to invalid IL or missing references)
			//IL_0485: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_04cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_04f1: Unknown result type (might be due to invalid IL or missing references)
			if (m_activeMiscRundownData == null)
			{
				Log.Error("Misc feature data was null");
			}
			else if ((Object)(object)m_rundownInstance == (Object)null)
			{
				Log.Error("rundown instance was null");
			}
			else
			{
				if (!m_activeMiscRundownData.Enabled)
				{
					return;
				}
				if (MTFOHotReloadAPI.HotReloadEnabled)
				{
					Transform child = ((Component)m_rundownInstance).transform.GetChild(2).GetChild(3);
					for (int i = 0; i < child.childCount; i++)
					{
						if (((Object)child.GetChild(i)).name == "Button HotReload")
						{
							((Component)child.GetChild(i).GetChild(0)).gameObject.SetActive(true);
							((Behaviour)((Component)child.GetChild(i)).GetComponent<TextMeshPro>()).enabled = true;
							((Behaviour)((Component)child.GetChild(i)).GetComponent<BoxCollider2D>()).enabled = true;
						}
					}
				}
				((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)
				{
					if (!((Object)(object)m_rundownInstance.m_tierMarkerSectorSummary == (Object)null))
					{
						((Component)m_rundownInstance.m_tierMarkerSectorSummary).transform.localPosition = new Vector3(90000f, 0f, 0f);
					}
				}
				else if (!((Object)(object)m_rundownInstance.m_tierMarkerSectorSummary == (Object)null))
				{
					((Component)m_rundownInstance.m_tierMarkerSectorSummary).transform.localPosition = m_activeMiscRundownData.SectorSummaryPosition;
					((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())
					{
						CM_RundownSelection current = enumerator.Current;
						((Component)current).gameObject.SetActive(false);
					}
					if (m_activeMiscRundownData.OverrideTierMarkerText)
					{
						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);
					}
					((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 = m_activeMiscRundownData.IntelButtonPosition;
				}
				((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;
				((Behaviour)((Component)m_rundownInstance.m_matchmakeAllButton).GetComponent<TextMeshPro>()).enabled = m_activeMiscRundownData.EnableMatchmakingButton;
				((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);
		}

		public static void LazyUpdate()
		{
			if ((Object)(object)m_rundownInstance == (Object)null)
			{
				Log.Error("Rundown instance was null on lazy update");
			}
			else if (m_popupMovementActive)
			{
				Enumerator<CM_ExpeditionIcon_New> enumerator = m_rundownInstance.m_expIconsAll.GetEnumerator();
				while (enumerator.MoveNext())
				{
					CM_ExpeditionIcon_New current = enumerator.Current;
					((Behaviour)((CM_Item)current).m_collider).enabled = false;
				}
			}
			else
			{
				Enumerator<CM_ExpeditionIcon_New> enumerator2 = m_rundownInstance.m_expIconsAll.GetEnumerator();
				while (enumerator2.MoveNext())
				{
					CM_ExpeditionIcon_New current2 = enumerator2.Current;
					((Behaviour)((CM_Item)current2).m_collider).enabled = true;
				}
			}
		}
	}
}
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; }

		public static implicit operator Color(Color c)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			return new Color
			{
				r = c.r,
				g = c.g,
				b = c.b,
				a = c.a
			};
		}
	}
	[Serializable]
	public class CustomRundownSelections
	{
		public bool Enabled { get; set; } = false;

		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 = 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 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 = 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 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 = 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 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 = 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 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 = 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 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 = 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 RundownSelector Selector_R7 { get; set; } = new RundownSelector
		{
			name = "R7",
			altText = "",
			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 RundownSelector_R8 Selector_R8 { get; set; } = new RundownSelector_R8
		{
			name = "R8",
			pos = new Vector3
			{
				x = 550f,
				y = 150f,
				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 = 134f,
				z = 0f
			}
		};
	}
	public class RundownSelector
	{
		public bool show { get; set; } = true;

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

		public string name { get; set; }

		public virtual string altText { get; set; }

		public bool useFlatVersion { get; set; } = false;

		public Vector3 pos { get; set; }

		public Vector3 rot { get; set; }

		public Vector3 scale { get; set; }

		public Vector3 namePos { get; set; }

		public virtual Vector3 altTextPos { get; set; }

		public Vector3 textScale { get; set; } = new Vector3
		{
			x = 1f,
			y = 1f,
			z = 1f
		};

		public Color color { get; set; } = new Color
		{
			r = 1f,
			g = 1f,
			b = 1f,
			a = 0.7843f
		};
	}
	public class RundownSelector_R8 : RundownSelector
	{
		[JsonIgnore]
		public override string altText { get; set; }

		[JsonIgnore]
		public override Vector3 altTextPos { get; set; }
	}
	public class RundownSelector_Custom : RundownSelector
	{
		public enum eSelectorStyle
		{
			Rundown1,
			Rundown2,
			Rundown3,
			Rundown4,
			Rundown5,
			Rundown6,
			Rundown7,
			Rundown8
		}

		public uint LinkedRundownID { get; set; } = 0u;

		public eSelectorStyle SelectorStyle { get; set; } = eSelectorStyle.Rundown1;
	}
	[Serializable]
	public class CustomWatermark
	{
		public bool Enabled { get; set; } = false;

		public string Text { get; set; } = "<color=red>MODDED</color> <color=orange>4.6.3+git169eb91-main</color>";
	}
	public class MiscRundownData
	{
		public bool Enabled { get; set; } = false;

		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; } = false;

		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; } = false;

		public bool OverrideTierMarkerText { get; set; } = false;

		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; } = false;

		public IndividualRundownLayout R1 { 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 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; }

		public bool EnableExtensionPage { get; set; } = false;

		public Vector3 ExtensionPagePos { get; set; } = new Vector3
		{
			x = 0f,
			y = -459f,
			z = 0f
		};

		public string ExtensionPageText { get; set; } = "<color=orange>://EXT";
	}
	[Serializable]
	public class ExpeditionButton
	{
		public string label { get; set; }

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

		public bool changeScale { get; set; } = false;

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

		public bool dontChangeColorWhenLocked { get; set; } = false;

		public bool enableOmnipotent { get; set; } = false;

		public bool changeColor { get; set; } = false;

		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; } = false;

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

		public float y { get; set; }

		public float z { get; set; }

		public static implicit operator Vector3(Vector3 v)
		{
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			return new Vector3(v.x, v.y, v.z);
		}
	}
}