Decompiled source of BiggerMinimapDiscoveryRadius v3.6.17

BiggerMinimapDiscoveryRadius.dll

Decompiled a year ago
using System;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Configuration;
using HarmonyLib;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.UI;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyTitle("BiggerMinimapDiscoveryRadius")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("BiggerMinimapDiscoveryRadius")]
[assembly: AssemblyCopyright("Copyright ©  2021")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("b347f62d-b22e-48ac-b439-d690130f2e47")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace BiggerMinimapDiscoveryRadius;

[HarmonyPatch(typeof(Minimap), "Explore", new Type[]
{
	typeof(Vector3),
	typeof(float)
})]
public class MinimapDiscoveryRadiusMod
{
	public const string Old_OnFootSaveNameKey = "MinimapDiscoveryRadiusMod";

	public const string OnFootSaveNameKey = "MinimapDiscoveryRadiusOnFootMod";

	public const string OnBoatSaveNameKey = "MinimapDiscoveryRadiusOnBoatMod";

	public const string WeatherEnabledSaveNameKey = "MinimapDiscoveryRadiusWeatherEnabled";

	public const string TimeEnabledSaveNameKey = "MinimapDiscoveryRadiusTimeEnabled";

	public static void Prefix(ref Vector3 p, ref float radius)
	{
		radius = radius * GetLocomotionModifier() * GetWeatherModifier() * GetTimeOfDayModifier();
	}

	public static float GetLocomotionModifier()
	{
		if (PlayerIsOnControlledBoat())
		{
			return GetLocomotionOnBoatModifier();
		}
		return GetLocomotionOnFootModifier();
	}

	public static float GetLocomotionOnFootModifier()
	{
		int @int = PlayerPrefs.GetInt("MinimapDiscoveryRadiusMod", 0);
		if (@int != 0)
		{
			PlayerPrefs.SetInt("MinimapDiscoveryRadiusOnFootMod", @int);
			PlayerPrefs.SetInt("MinimapDiscoveryRadiusMod", 0);
		}
		return PlayerPrefs.GetInt("MinimapDiscoveryRadiusOnFootMod", 0) switch
		{
			1 => 2f, 
			2 => 3f, 
			3 => 5f, 
			_ => 1f, 
		};
	}

	public static float GetLocomotionOnBoatModifier()
	{
		return PlayerPrefs.GetInt("MinimapDiscoveryRadiusOnBoatMod", 3) switch
		{
			0 => GetLocomotionOnFootModifier(), 
			1 => 2f, 
			2 => 3f, 
			3 => 5f, 
			4 => 7f, 
			5 => 10f, 
			_ => 1f, 
		};
	}

	public static bool PlayerIsOnControlledBoat()
	{
		//IL_0037: 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)
		//IL_007a: Unknown result type (might be due to invalid IL or missing references)
		//IL_007f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0080: Unknown result type (might be due to invalid IL or missing references)
		//IL_0085: Unknown result type (might be due to invalid IL or missing references)
		if (!Object.op_Implicit((Object)(object)Player.m_localPlayer))
		{
			return false;
		}
		if (((Character)Player.m_localPlayer).IsAttachedToShip() || Object.op_Implicit((Object)(object)Player.m_localPlayer.GetControlledShip()))
		{
			return true;
		}
		Vector3 position = ((Component)Player.m_localPlayer).transform.position;
		foreach (Player allPlayer in Player.GetAllPlayers())
		{
			if (!((Object)(object)allPlayer == (Object)(object)Player.m_localPlayer) && (((Character)allPlayer).IsAttachedToShip() || Object.op_Implicit((Object)(object)allPlayer.GetControlledShip())))
			{
				Vector3 val = ((Component)allPlayer).transform.position - position;
				if (!(((Vector3)(ref val)).sqrMagnitude > 20f))
				{
					return true;
				}
			}
		}
		return false;
	}

	public static float GetWeatherModifier()
	{
		if (PlayerPrefs.GetInt("MinimapDiscoveryRadiusWeatherEnabled", 0) == 0)
		{
			return 1f;
		}
		switch (EnvMan.instance.GetCurrentEnvironment().m_name)
		{
		case "Rain":
		case "LightRain":
		case "SwampRain":
		case "Ashrain":
			return PluginEntryPoint.GetConfigWeatherModifierInRain();
		case "Misty":
		case "DeepForest Mist":
			return PluginEntryPoint.GetConfigWeatherModifierInMist();
		case "Snow":
		case "Twilight_Snow":
			return PluginEntryPoint.GetConfigWeatherModifierInSnow();
		case "ThunderStorm":
		case "SnowStorm":
		case "Twilight_SnowStorm":
			return PluginEntryPoint.GetConfigWeatherModifierInStorm();
		case "Darklands_dark":
			return PluginEntryPoint.GetConfigWeatherModifierInDarklands();
		default:
			return 1f;
		}
	}

	public static float GetTimeOfDayModifier()
	{
		if (PlayerPrefs.GetInt("MinimapDiscoveryRadiusTimeEnabled", 0) == 0)
		{
			return 1f;
		}
		float num = 1f;
		float configTimeModifierDuringNight = PluginEntryPoint.GetConfigTimeModifierDuringNight();
		float dayFraction = EnvMan.instance.GetDayFraction();
		if (dayFraction >= 0.2f && dayFraction <= 0.3f)
		{
			return Mathf.Lerp(configTimeModifierDuringNight, num, (dayFraction - 0.2f) / 0.1f);
		}
		if (dayFraction >= 0.7f && dayFraction <= 0.8f)
		{
			return Mathf.Lerp(num, configTimeModifierDuringNight, (dayFraction - 0.7f) / 0.1f);
		}
		if (dayFraction >= 0.25f && dayFraction <= 0.75f)
		{
			return num;
		}
		return configTimeModifierDuringNight;
	}
}
[BepInPlugin("org.bepinex.plugins.tenson.biggerminimapdiscoveryradius", "Bigger Minimap Discovery Radius", "3.6.17.0")]
public class PluginEntryPoint : BaseUnityPlugin
{
	public const string ModVersion = "3.6.17.0";

	private static ConfigEntry<float> s_ConfigWeatherModifierRain;

	private static ConfigEntry<float> s_ConfigWeatherModifierMist;

	private static ConfigEntry<float> s_ConfigWeatherModifierSnow;

	private static ConfigEntry<float> s_ConfigWeatherModifierStorm;

	private static ConfigEntry<float> s_ConfigWeatherModifierDarklands;

	private static ConfigEntry<float> s_ConfigTimeModifierNight;

	public static float GetConfigWeatherModifierInRain()
	{
		return Mathf.Clamp01(s_ConfigWeatherModifierRain.Value);
	}

	public static float GetConfigWeatherModifierInMist()
	{
		return Mathf.Clamp01(s_ConfigWeatherModifierMist.Value);
	}

	public static float GetConfigWeatherModifierInSnow()
	{
		return Mathf.Clamp01(s_ConfigWeatherModifierSnow.Value);
	}

	public static float GetConfigWeatherModifierInStorm()
	{
		return Mathf.Clamp01(s_ConfigWeatherModifierStorm.Value);
	}

	public static float GetConfigWeatherModifierInDarklands()
	{
		return Mathf.Clamp01(s_ConfigWeatherModifierDarklands.Value);
	}

	public static float GetConfigTimeModifierDuringNight()
	{
		return Mathf.Clamp01(s_ConfigTimeModifierNight.Value);
	}

	private void Start()
	{
		//IL_0022: Unknown result type (might be due to invalid IL or missing references)
		if (Harmony.HasAnyPatches("plugins.tenson.modpack"))
		{
			((BaseUnityPlugin)this).Logger.LogInfo((object)"Ten'son's Mod Pack present, no need for this mod to initialize.");
			return;
		}
		new Harmony("plugins.tenson.biggerminimapdiscoveryradius").PatchAll();
		s_ConfigWeatherModifierRain = ((BaseUnityPlugin)this).Config.Bind<float>("Weather Modifiers", "rain", 0.8f, "Discovery radius modifier in rain.");
		s_ConfigWeatherModifierMist = ((BaseUnityPlugin)this).Config.Bind<float>("Weather Modifiers", "mist", 0.8f, "Discovery radius modifier in mist.");
		s_ConfigWeatherModifierSnow = ((BaseUnityPlugin)this).Config.Bind<float>("Weather Modifiers", "snow", 0.8f, "Discovery radius modifier in snow.");
		s_ConfigWeatherModifierStorm = ((BaseUnityPlugin)this).Config.Bind<float>("Weather Modifiers", "storm", 0.7f, "Discovery radius modifier in storm.");
		s_ConfigWeatherModifierDarklands = ((BaseUnityPlugin)this).Config.Bind<float>("Weather Modifiers", "darklands", 0.8f, "Discovery radius modifier in darklands.");
		s_ConfigTimeModifierNight = ((BaseUnityPlugin)this).Config.Bind<float>("Time Modifiers", "night", 0.8f, "Discovery radius modifier during the night.");
	}
}
[HarmonyPatch(typeof(Settings), "Awake")]
public class SettingsMenuUIPatch
{
	public static void Postfix(Settings __instance)
	{
		Debug.Log((object)"Injecting Bigger Minimap Discovery Radius Mod UI...");
		CreateModsButton(((Component)__instance).transform.parent);
	}

	private static void CreateModsButton(Transform transform)
	{
		//IL_000b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0010: Unknown result type (might be due to invalid IL or missing references)
		//IL_001f: Unknown result type (might be due to invalid IL or missing references)
		//IL_002b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0035: Expected O, but got Unknown
		CreateTopRightButton(transform, "ModsButton", "MOD", Color.white, Color.black, new Vector2(500f, 100f), new UnityAction(OnModsButtonClicked));
	}

	public static void DestroyModsButton()
	{
		GameObject val = GameObject.Find("ModsButton");
		if (Object.op_Implicit((Object)(object)val))
		{
			Object.Destroy((Object)(object)val);
		}
	}

	private static Button CreateTopRightButton(Transform _parent, string _buttonName, string _text, Color _imageColor, Color _textColor, Vector2 _buttonSize, UnityAction _actionOnClick)
	{
		//IL_002e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0034: Expected O, but got Unknown
		//IL_0051: Unknown result type (might be due to invalid IL or missing references)
		//IL_0066: Unknown result type (might be due to invalid IL or missing references)
		//IL_007b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0090: Unknown result type (might be due to invalid IL or missing references)
		//IL_009a: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c6: 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_00fc: Unknown result type (might be due to invalid IL or missing references)
		//IL_010d: Unknown result type (might be due to invalid IL or missing references)
		//IL_011e: 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_0148: Unknown result type (might be due to invalid IL or missing references)
		//IL_015d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0171: Unknown result type (might be due to invalid IL or missing references)
		//IL_0181: Unknown result type (might be due to invalid IL or missing references)
		//IL_01b9: Unknown result type (might be due to invalid IL or missing references)
		//IL_01bf: Expected O, but got Unknown
		GameObject val = new GameObject(_buttonName, new Type[3]
		{
			typeof(RectTransform),
			typeof(Image),
			typeof(Button)
		});
		val.transform.SetParent(_parent);
		RectTransform component = val.GetComponent<RectTransform>();
		component.anchorMin = new Vector2(1f, 1f);
		component.anchorMax = new Vector2(1f, 1f);
		component.pivot = new Vector2(1f, 1f);
		component.anchoredPosition = new Vector2(0f, 0f);
		component.sizeDelta = _buttonSize;
		Button component2 = val.GetComponent<Button>();
		((Selectable)component2).interactable = true;
		if (_actionOnClick != null)
		{
			((UnityEvent)component2.onClick).AddListener(_actionOnClick);
		}
		((Graphic)val.GetComponent<Image>()).color = _imageColor;
		GameObject val2 = new GameObject(_buttonName + "Text", new Type[2]
		{
			typeof(RectTransform),
			typeof(Text)
		});
		val2.transform.SetParent(val.transform);
		RectTransform component3 = val2.GetComponent<RectTransform>();
		component3.anchorMin = new Vector2(0f, 0f);
		component3.anchorMax = new Vector2(1f, 1f);
		component3.pivot = new Vector2(0.5f, 0.5f);
		component3.anchoredPosition = new Vector2(0f, 0f);
		component3.sizeDelta = new Vector2(0f, 0f);
		Text component4 = val2.GetComponent<Text>();
		((Graphic)component4).color = _textColor;
		component4.resizeTextForBestFit = true;
		component4.resizeTextMaxSize = 72;
		component4.alignment = (TextAnchor)4;
		component4.text = _text;
		Font val4 = (component4.font = (Font)Resources.GetBuiltinResource(typeof(Font), "Arial.ttf"));
		((Graphic)component4).material = val4.material;
		return component2;
	}

	private static Text CreateTextComponent(Transform _parent, string _textName, string _text, TextAnchor _textAnchor, Color _textColor)
	{
		//IL_0021: Unknown result type (might be due to invalid IL or missing references)
		//IL_0026: Unknown result type (might be due to invalid IL or missing references)
		//IL_0032: Unknown result type (might be due to invalid IL or missing references)
		//IL_0043: 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_006d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0082: Unknown result type (might be due to invalid IL or missing references)
		//IL_0096: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a6: 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_00de: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e4: Expected O, but got Unknown
		GameObject val = new GameObject(_textName, new Type[2]
		{
			typeof(RectTransform),
			typeof(Text)
		});
		val.transform.SetParent(_parent);
		RectTransform component = val.GetComponent<RectTransform>();
		component.anchorMin = new Vector2(0f, 1f);
		component.anchorMax = new Vector2(1f, 1f);
		component.pivot = new Vector2(0.5f, 1f);
		component.anchoredPosition = new Vector2(0f, 0f);
		component.sizeDelta = new Vector2(0f, 60f);
		Text component2 = val.GetComponent<Text>();
		((Graphic)component2).color = _textColor;
		component2.resizeTextForBestFit = true;
		component2.resizeTextMaxSize = 72;
		component2.alignment = _textAnchor;
		component2.text = _text;
		Font val3 = (component2.font = (Font)Resources.GetBuiltinResource(typeof(Font), "Arial.ttf"));
		((Graphic)component2).material = val3.material;
		return component2;
	}

	private static void OnModsButtonClicked()
	{
		//IL_0079: Unknown result type (might be due to invalid IL or missing references)
		//IL_007f: Expected O, but got Unknown
		//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
		//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
		//IL_0118: Unknown result type (might be due to invalid IL or missing references)
		//IL_0147: Unknown result type (might be due to invalid IL or missing references)
		//IL_014d: Expected O, but got Unknown
		//IL_016f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0184: Unknown result type (might be due to invalid IL or missing references)
		//IL_0199: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ae: Unknown result type (might be due to invalid IL or missing references)
		//IL_01c2: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e6: Unknown result type (might be due to invalid IL or missing references)
		//IL_0201: Unknown result type (might be due to invalid IL or missing references)
		//IL_021c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0221: Unknown result type (might be due to invalid IL or missing references)
		//IL_0230: Unknown result type (might be due to invalid IL or missing references)
		//IL_023c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0246: Expected O, but got Unknown
		//IL_025f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0265: Expected O, but got Unknown
		//IL_0287: Unknown result type (might be due to invalid IL or missing references)
		//IL_029c: Unknown result type (might be due to invalid IL or missing references)
		//IL_02b1: Unknown result type (might be due to invalid IL or missing references)
		//IL_02c6: Unknown result type (might be due to invalid IL or missing references)
		//IL_02da: Unknown result type (might be due to invalid IL or missing references)
		//IL_03e6: Unknown result type (might be due to invalid IL or missing references)
		//IL_03eb: Unknown result type (might be due to invalid IL or missing references)
		//IL_03fa: Unknown result type (might be due to invalid IL or missing references)
		//IL_0406: Unknown result type (might be due to invalid IL or missing references)
		//IL_0410: Expected O, but got Unknown
		//IL_0515: Unknown result type (might be due to invalid IL or missing references)
		//IL_051a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0529: Unknown result type (might be due to invalid IL or missing references)
		//IL_0535: Unknown result type (might be due to invalid IL or missing references)
		//IL_053f: Expected O, but got Unknown
		//IL_0593: Unknown result type (might be due to invalid IL or missing references)
		//IL_0598: Unknown result type (might be due to invalid IL or missing references)
		//IL_05a7: Unknown result type (might be due to invalid IL or missing references)
		//IL_05b4: Unknown result type (might be due to invalid IL or missing references)
		//IL_05be: Expected O, but got Unknown
		//IL_0612: Unknown result type (might be due to invalid IL or missing references)
		//IL_0617: Unknown result type (might be due to invalid IL or missing references)
		//IL_0626: Unknown result type (might be due to invalid IL or missing references)
		//IL_0633: Unknown result type (might be due to invalid IL or missing references)
		//IL_063d: Expected O, but got Unknown
		Canvas val = Object.FindObjectsOfType<Canvas>()[0];
		Canvas[] array = Object.FindObjectsOfType<Canvas>();
		foreach (Canvas val2 in array)
		{
			if (((Object)val2).name == "GUI" || ((Object)val2).name.Contains("GUI"))
			{
				val = val2;
				break;
			}
		}
		GameObject val3 = new GameObject("ModsFrame", new Type[2]
		{
			typeof(RectTransform),
			typeof(Image)
		});
		val3.transform.SetParent(((Component)val).transform);
		RectTransform component = val3.GetComponent<RectTransform>();
		component.anchorMin = new Vector2(0f, 0f);
		component.anchorMax = new Vector2(1f, 1f);
		component.pivot = new Vector2(0.5f, 0.5f);
		component.anchoredPosition = new Vector2(0f, 0f);
		component.sizeDelta = new Vector2(0f, 0f);
		((Graphic)val3.GetComponent<Image>()).color = new Color(0f, 0f, 0f, 0.5f);
		GameObject val4 = new GameObject("ModsDialog", new Type[2]
		{
			typeof(RectTransform),
			typeof(Image)
		});
		val4.transform.SetParent(val3.transform);
		RectTransform component2 = val4.GetComponent<RectTransform>();
		component2.anchorMin = new Vector2(0f, 0f);
		component2.anchorMax = new Vector2(1f, 1f);
		component2.pivot = new Vector2(0.5f, 0.5f);
		component2.anchoredPosition = new Vector2(0f, 0f);
		component2.sizeDelta = new Vector2(-400f, -400f);
		((Graphic)val4.GetComponent<Image>()).color = new Color(0.5283019f, 0.2804001f, 0.1320755f, 1f);
		CreateTextComponent(val4.transform, "ModVersionText", "Minimap Discovery Radius v3.6.17.0", (TextAnchor)4, Color.black);
		CreateTopRightButton(val4.transform, "CloseModsDialogButton", "CLOSE", Color.red, Color.white, new Vector2(300f, 60f), new UnityAction(OnCloseModsFrameClicked));
		GameObject val5 = new GameObject("ModsList", new Type[1] { typeof(RectTransform) });
		val5.transform.SetParent(val4.transform);
		RectTransform component3 = val5.GetComponent<RectTransform>();
		component3.anchorMin = new Vector2(0f, 0f);
		component3.anchorMax = new Vector2(1f, 1f);
		component3.pivot = new Vector2(0.5f, 0.5f);
		component3.anchoredPosition = new Vector2(0f, -30f);
		component3.sizeDelta = new Vector2(-40f, -80f);
		int @int = PlayerPrefs.GetInt("MinimapDiscoveryRadiusMod", 0);
		if (@int != 0)
		{
			PlayerPrefs.SetInt("MinimapDiscoveryRadiusOnFootMod", @int);
			PlayerPrefs.SetInt("MinimapDiscoveryRadiusMod", 0);
		}
		string buttonName = "MinimapDiscoveryRadiusOnFootButton";
		int int2 = PlayerPrefs.GetInt("MinimapDiscoveryRadiusOnFootMod", 0);
		string text = "";
		for (int j = 0; j < 4; j++)
		{
			if (j == int2)
			{
				text += "<color=green>";
			}
			switch (j)
			{
			case 0:
				text += "Default";
				break;
			case 1:
				text += "2x";
				break;
			case 2:
				text += "3x";
				break;
			case 3:
				text += "5x";
				break;
			}
			if (j != 3)
			{
				text += ", ";
			}
			if (j == int2)
			{
				text += "</color>";
			}
		}
		string text2 = "Minimap Discovery Radius On Foot (" + text + ")";
		CreateTopRightButton(val5.transform, buttonName, text2, Color.white, Color.black, new Vector2(800f, 60f), new UnityAction(OnMinimapDiscoveryRadiusOnFootButtonClicked));
		string buttonName2 = "MinimapDiscoveryRadiusOnBoatButton";
		int int3 = PlayerPrefs.GetInt("MinimapDiscoveryRadiusOnBoatMod", 3);
		string text3 = "";
		for (int k = 0; k < 6; k++)
		{
			if (k == int3)
			{
				text3 += "<color=green>";
			}
			switch (k)
			{
			case 0:
				text3 += "Same As On Foot";
				break;
			case 1:
				text3 += "2x";
				break;
			case 2:
				text3 += "3x";
				break;
			case 3:
				text3 += "5x";
				break;
			case 4:
				text3 += "7x";
				break;
			case 5:
				text3 += "10x";
				break;
			}
			if (k != 5)
			{
				text3 += ", ";
			}
			if (k == int3)
			{
				text3 += "</color>";
			}
		}
		string text4 = "Minimap Discovery Radius On Boat (" + text3 + ")";
		CreateTopRightButton(val5.transform, buttonName2, text4, Color.white, Color.black, new Vector2(800f, 60f), new UnityAction(OnMinimapDiscoveryRadiusOnBoatButtonClicked));
		string modButtonName2 = "MinimapDiscoveryRadiusWeatherButton";
		bool num = PlayerPrefs.GetInt("MinimapDiscoveryRadiusWeatherEnabled", 0) == 1;
		string text5 = "<color=green>Enabled</color>";
		if (!num)
		{
			text5 = "<color=red>Disabled</color>";
		}
		string text6 = "Weather Affects Discovery Radius (" + text5 + ")";
		CreateTopRightButton(val5.transform, modButtonName2, text6, Color.white, Color.black, new Vector2(800f, 60f), (UnityAction)delegate
		{
			OnToggleModButtonClicked(modButtonName2, "MinimapDiscoveryRadiusWeatherEnabled", "Weather Affects Discovery Radius");
		});
		string modButtonName = "MinimapDiscoveryRadiusTimeButton";
		bool num2 = PlayerPrefs.GetInt("MinimapDiscoveryRadiusTimeEnabled", 0) == 1;
		string text7 = "<color=green>Enabled</color>";
		if (!num2)
		{
			text7 = "<color=red>Disabled</color>";
		}
		string text8 = "Time Of Day Affects Discovery Radius (" + text7 + ")";
		CreateTopRightButton(val5.transform, modButtonName, text8, Color.white, Color.black, new Vector2(800f, 60f), (UnityAction)delegate
		{
			OnToggleModButtonClicked(modButtonName, "MinimapDiscoveryRadiusTimeEnabled", "Time Of Day Affects Discovery Radius");
		});
		VerticalLayoutGroup obj = val5.AddComponent<VerticalLayoutGroup>();
		((LayoutGroup)obj).childAlignment = (TextAnchor)1;
		((HorizontalOrVerticalLayoutGroup)obj).spacing = 5f;
		((HorizontalOrVerticalLayoutGroup)obj).childForceExpandWidth = true;
		((HorizontalOrVerticalLayoutGroup)obj).childForceExpandHeight = false;
		((HorizontalOrVerticalLayoutGroup)obj).childControlWidth = true;
		((HorizontalOrVerticalLayoutGroup)obj).childControlHeight = false;
		((HorizontalOrVerticalLayoutGroup)obj).childScaleWidth = false;
		((HorizontalOrVerticalLayoutGroup)obj).childScaleHeight = false;
	}

	public static void OnCloseModsFrameClicked()
	{
		GameObject val = GameObject.Find("ModsFrame");
		if (Object.op_Implicit((Object)(object)val))
		{
			Object.Destroy((Object)(object)val);
		}
	}

	private static void OnMinimapDiscoveryRadiusOnFootButtonClicked()
	{
		GameObject val = GameObject.Find("MinimapDiscoveryRadiusOnFootButton");
		if (!Object.op_Implicit((Object)(object)val))
		{
			return;
		}
		int @int = PlayerPrefs.GetInt("MinimapDiscoveryRadiusOnFootMod", 0);
		@int = (@int + 1) % 4;
		PlayerPrefs.SetInt("MinimapDiscoveryRadiusOnFootMod", @int);
		string text = "";
		for (int i = 0; i < 4; i++)
		{
			if (i == @int)
			{
				text += "<color=green>";
			}
			switch (i)
			{
			case 0:
				text += "Default";
				break;
			case 1:
				text += "2x";
				break;
			case 2:
				text += "3x";
				break;
			case 3:
				text += "5x";
				break;
			}
			if (i != 3)
			{
				text += ", ";
			}
			if (i == @int)
			{
				text += "</color>";
			}
		}
		val.GetComponentInChildren<Text>().text = "Minimap Discovery Radius On Foot (" + text + ")";
	}

	private static void OnMinimapDiscoveryRadiusOnBoatButtonClicked()
	{
		GameObject val = GameObject.Find("MinimapDiscoveryRadiusOnBoatButton");
		if (!Object.op_Implicit((Object)(object)val))
		{
			return;
		}
		int @int = PlayerPrefs.GetInt("MinimapDiscoveryRadiusOnBoatMod", 3);
		@int = (@int + 1) % 6;
		PlayerPrefs.SetInt("MinimapDiscoveryRadiusOnBoatMod", @int);
		string text = "";
		for (int i = 0; i < 6; i++)
		{
			if (i == @int)
			{
				text += "<color=green>";
			}
			switch (i)
			{
			case 0:
				text += "Same As On Foot";
				break;
			case 1:
				text += "2x";
				break;
			case 2:
				text += "3x";
				break;
			case 3:
				text += "5x";
				break;
			case 4:
				text += "7x";
				break;
			case 5:
				text += "10x";
				break;
			}
			if (i != 5)
			{
				text += ", ";
			}
			if (i == @int)
			{
				text += "</color>";
			}
		}
		val.GetComponentInChildren<Text>().text = "Minimap Discovery Radius On Boat (" + text + ")";
	}

	private static void OnToggleModButtonClicked(string _modButtonName, string _saveName, string _text)
	{
		GameObject val = GameObject.Find(_modButtonName);
		if (Object.op_Implicit((Object)(object)val))
		{
			bool flag = PlayerPrefs.GetInt(_saveName, 0) == 1;
			flag = !flag;
			PlayerPrefs.SetInt(_saveName, flag ? 1 : 0);
			string text = "<color=green>Enabled</color>";
			if (!flag)
			{
				text = "<color=red>Disabled</color>";
			}
			val.GetComponentInChildren<Text>().text = _text + " (" + text + ")";
		}
	}
}
[HarmonyPatch(typeof(Settings), "OnBack")]
public class SettingsMenuOnBackPatch
{
	public static bool Prefix()
	{
		SettingsMenuUIPatch.OnCloseModsFrameClicked();
		SettingsMenuUIPatch.DestroyModsButton();
		return true;
	}
}
[HarmonyPatch(typeof(Settings), "OnOk")]
public class SettingsMenuOnOkPatch
{
	public static bool Prefix()
	{
		SettingsMenuUIPatch.OnCloseModsFrameClicked();
		SettingsMenuUIPatch.DestroyModsButton();
		return true;
	}
}