Decompiled source of HotDogCheat v1.0.4

HotDogCheat.dll

Decompiled 4 days ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Threading.Tasks;
using ArcadeCar.Logic;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using HarmonyLib;
using HotDogCheat.Actions;
using HotDogCheat.Core;
using HotDogCheat.ESP;
using HotDogCheat.Features;
using HotDogCheat.UI;
using HotDogCheat.UI.Tabs;
using HotDogCheat.Utils;
using Lightbug.CharacterControllerPro.Core;
using Lightbug.CharacterControllerPro.Demo;
using Lightbug.CharacterControllerPro.Implementation;
using RootMotion.Dynamics;
using Unity.Collections;
using Unity.Netcode;
using UnityEngine;
using UnityEngine.SceneManagement;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyTitle("HotDogCheat")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("HotDogCheat")]
[assembly: AssemblyCopyright("Copyright 2026")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("ed33da8a-0adc-46ad-9cfe-4d88d43867a5")]
[assembly: AssemblyFileVersion("1.0.4.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: AssemblyVersion("1.0.4.0")]
namespace HotDogCheat.Utils
{
	public static class GameRunner
	{
		private class HostBehaviour : MonoBehaviour
		{
		}

		private static GameObject _hostGo;

		private static HostBehaviour _host;

		[RuntimeInitializeOnLoadMethod(/*Could not decode attribute arguments.*/)]
		private static void Bootstrap()
		{
			try
			{
				EnsureInitialized();
			}
			catch (Exception ex)
			{
				Debug.LogWarning((object)("[HotDogCheat.GameRunner] Bootstrap failed: " + ex.Message + "; falling back to lazy init."));
			}
		}

		public static void RunAfterFixedUpdates(int count, Action action)
		{
			EnsureInitialized();
			((MonoBehaviour)_host).StartCoroutine(RunAfterFixedUpdatesRoutine(count, action));
		}

		public static void RunAfterSeconds(float seconds, Action action)
		{
			EnsureInitialized();
			((MonoBehaviour)_host).StartCoroutine(RunAfterSecondsRoutine(seconds, action));
		}

		private static void EnsureInitialized()
		{
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			//IL_001d: Expected O, but got Unknown
			if (!((Object)(object)_host != (Object)null))
			{
				_hostGo = new GameObject("HotDogCheat.GameRunner");
				Object.DontDestroyOnLoad((Object)(object)_hostGo);
				((Object)_hostGo).hideFlags = (HideFlags)1;
				_host = _hostGo.AddComponent<HostBehaviour>();
			}
		}

		private static IEnumerator RunAfterFixedUpdatesRoutine(int count, Action action)
		{
			for (int i = 0; i < count; i++)
			{
				yield return (object)new WaitForFixedUpdate();
			}
			action?.Invoke();
		}

		private static IEnumerator RunAfterSecondsRoutine(float seconds, Action action)
		{
			yield return (object)new WaitForSeconds(seconds);
			action?.Invoke();
		}
	}
	public static class PlayerHelper
	{
		private static Dictionary<PlayerNetworking, string> playerNames = new Dictionary<PlayerNetworking, string>();

		private static PlayerNetworking cachedLocalPlayer;

		private static float lastLocalPlayerRefresh;

		public static PlayerNetworking GetLocalPlayer()
		{
			if (Time.unscaledTime - lastLocalPlayerRefresh < 1f)
			{
				return cachedLocalPlayer;
			}
			cachedLocalPlayer = ((IEnumerable<PlayerNetworking>)GetAllPlayers()).FirstOrDefault((Func<PlayerNetworking, bool>)((PlayerNetworking p) => ((NetworkBehaviour)p).IsLocalPlayer));
			lastLocalPlayerRefresh = Time.unscaledTime;
			return cachedLocalPlayer;
		}

		public static List<PlayerNetworking> GetAllPlayers()
		{
			return new List<PlayerNetworking>(Object.FindObjectsByType<PlayerNetworking>((FindObjectsSortMode)0));
		}

		public static string GetPlayerName(PlayerNetworking player)
		{
			if (playerNames.ContainsKey(player))
			{
				return playerNames[player];
			}
			string text = "Loading...";
			if ((Object)(object)player.SteamPlayer != (Object)null)
			{
				string text2 = default(string);
				if (player.SteamPlayer.TryGetName(ref text2))
				{
					text = text2;
					playerNames[player] = text;
				}
				else
				{
					LoadPlayerNameAsync(player);
				}
			}
			return text;
		}

		private static async void LoadPlayerNameAsync(PlayerNetworking player)
		{
			try
			{
				string text = await player.SteamPlayer.WaitForName();
				playerNames[player] = text;
				HotDogCheatMod.Log("Loaded player name: " + text);
			}
			catch (Exception ex)
			{
				HotDogCheatMod.LogError("Failed to load player name: " + ex.Message);
			}
		}

		public static StatusEffectHandler GetStatusEffects(PlayerNetworking player)
		{
			if ((Object)(object)player == (Object)null)
			{
				return null;
			}
			StatusEffectHandler val = null;
			try
			{
				val = player.StatusEffects;
			}
			catch
			{
			}
			if ((Object)(object)val == (Object)null)
			{
				val = ((Component)player).GetComponentInChildren<StatusEffectHandler>();
			}
			return val;
		}

		public static List<RCCar> GetAllRCCars()
		{
			return new List<RCCar>(Object.FindObjectsByType<RCCar>((FindObjectsSortMode)0));
		}
	}
}
namespace HotDogCheat.UI
{
	public class MenuManager
	{
		private Rect menuRect = UiLayout.MenuRect;

		private UiProfileKind activeProfile = UiLayout.CurrentKind;

		private int currentTab;

		private readonly string[] tabNames = new string[9] { "Spawner", "Self", "Teleport", "Online", "NPCs", "FreeCam", "Visuals", "Game", "Keybinds" };

		private readonly string[] tabHints = new string[9] { "Items+Objects", "Local", "Movement", "Friends", "World AI", "Camera", "ESP", "Maps", "Controls" };

		private readonly FeatureManager features;

		private readonly ESPRenderer espRenderer;

		private readonly SpawnerTab spawnerTab;

		private readonly PlayerTab playerTab;

		private readonly TeleportTab teleportTab;

		private readonly OnlineTab onlineTab;

		private readonly NPCsTab npcsTab;

		private readonly FreeCamTab freeCamTab;

		private readonly ESPTab espTab;

		private readonly GameTab gameTab;

		private readonly KeybindsTab keybindsTab;

		private bool cursorSaved;

		private CursorLockMode savedLockMode;

		private bool savedCursorVisible;

		public bool IsVisible { get; private set; }

		public MenuManager(FeatureManager features, ESPRenderer espRenderer)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			this.features = features;
			this.espRenderer = espRenderer;
			spawnerTab = new SpawnerTab();
			playerTab = new PlayerTab(features);
			teleportTab = new TeleportTab();
			onlineTab = new OnlineTab(features);
			npcsTab = new NPCsTab(features);
			freeCamTab = new FreeCamTab(features);
			espTab = new ESPTab(espRenderer.Settings);
			gameTab = new GameTab(features);
			keybindsTab = new KeybindsTab(features);
		}

		public void ToggleMenu()
		{
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0108: Unknown result type (might be due to invalid IL or missing references)
			IsVisible = !IsVisible;
			if (IsVisible)
			{
				savedLockMode = Cursor.lockState;
				savedCursorVisible = Cursor.visible;
				cursorSaved = true;
				Cursor.visible = true;
				Cursor.lockState = (CursorLockMode)0;
				PlayerNetworking localPlayer = PlayerHelper.GetLocalPlayer();
				if ((Object)(object)localPlayer != (Object)null)
				{
					PlayerController component = ((Component)localPlayer).GetComponent<PlayerController>();
					if ((Object)(object)component != (Object)null && (Object)(object)component.Camera != (Object)null)
					{
						component.Camera.active = false;
					}
				}
				return;
			}
			PlayerNetworking localPlayer2 = PlayerHelper.GetLocalPlayer();
			if ((Object)(object)localPlayer2 != (Object)null)
			{
				PlayerController component2 = ((Component)localPlayer2).GetComponent<PlayerController>();
				bool flag = (Object)(object)component2 != (Object)null && component2.UIOpen;
				if (flag)
				{
					Cursor.visible = true;
					Cursor.lockState = (CursorLockMode)0;
				}
				else
				{
					Cursor.visible = false;
					Cursor.lockState = (CursorLockMode)1;
				}
				if ((Object)(object)component2 != (Object)null && (Object)(object)component2.Camera != (Object)null && !flag)
				{
					component2.Camera.active = true;
				}
			}
			else if (cursorSaved)
			{
				Cursor.visible = savedCursorVisible;
				Cursor.lockState = savedLockMode;
			}
			cursorSaved = false;
		}

		public void Draw()
		{
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Expected O, but got Unknown
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0053: 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)
			Styles.Init();
			SyncLayoutProfile();
			GUI.backgroundColor = new Color(0f, 0f, 0f, 0f);
			menuRect = GUI.Window(0, menuRect, new WindowFunction(DrawWindow), "", Styles.Background);
			menuRect = ClampToScreen(menuRect);
		}

		private void SyncLayoutProfile()
		{
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			UiProfileKind currentKind = UiLayout.CurrentKind;
			if (activeProfile != currentKind)
			{
				activeProfile = currentKind;
				menuRect = UiLayout.MenuRect;
			}
		}

		private static Rect ClampToScreen(Rect rect)
		{
			//IL_009e: Unknown result type (might be due to invalid IL or missing references)
			((Rect)(ref rect)).width = Mathf.Min(((Rect)(ref rect)).width, (float)Screen.width - 8f);
			((Rect)(ref rect)).height = Mathf.Min(((Rect)(ref rect)).height, (float)Screen.height - 8f);
			((Rect)(ref rect)).x = Mathf.Clamp(((Rect)(ref rect)).x, 0f, Mathf.Max(0f, (float)Screen.width - ((Rect)(ref rect)).width));
			((Rect)(ref rect)).y = Mathf.Clamp(((Rect)(ref rect)).y, 0f, Mathf.Max(0f, (float)Screen.height - ((Rect)(ref rect)).height));
			return rect;
		}

		private void DrawWindow(int id)
		{
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			GUI.DrawTexture(new Rect(0f, 0f, ((Rect)(ref menuRect)).width, ((Rect)(ref menuRect)).height), (Texture)(object)Styles.TexDark);
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			DrawSidebar();
			DrawContent();
			GUILayout.EndHorizontal();
			GUI.DragWindow();
		}

		private void DrawSidebar()
		{
			//IL_00df: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0105: Expected O, but got Unknown
			GUILayout.BeginVertical(Styles.Sidebar, (GUILayoutOption[])(object)new GUILayoutOption[2]
			{
				GUILayout.Width(UiLayout.SidebarWidth),
				GUILayout.ExpandHeight(true)
			});
			GUILayout.Label("HOTDOG\nMENU", Styles.Title, Array.Empty<GUILayoutOption>());
			GUILayout.Label("public build", Styles.MutedLabel, Array.Empty<GUILayoutOption>());
			GUILayout.Space(UiLayout.Space(8f));
			for (int i = 0; i < tabNames.Length; i++)
			{
				if (GUILayout.Button($"{tabNames[i]}\n<size={UiLayout.MutedFont}>{tabHints[i]}</size>", (currentTab == i) ? Styles.SideTabActive : Styles.SideTab, Array.Empty<GUILayoutOption>()))
				{
					currentTab = i;
				}
			}
			GUILayout.FlexibleSpace();
			GUILayout.Label("F10 keybinds", Styles.MutedLabel, Array.Empty<GUILayoutOption>());
			GUIStyle val = new GUIStyle(Styles.MutedLabel)
			{
				fontStyle = (FontStyle)1
			};
			val.normal.textColor = Color.white;
			GUILayout.Label("1.0.4 by: Catfishgod420", val, Array.Empty<GUILayoutOption>());
			GUILayout.EndVertical();
		}

		private void DrawContent()
		{
			GUILayout.BeginVertical(Styles.ContentPanel, (GUILayoutOption[])(object)new GUILayoutOption[2]
			{
				GUILayout.ExpandWidth(true),
				GUILayout.ExpandHeight(true)
			});
			GUILayout.Label(tabNames[currentTab].ToUpperInvariant(), Styles.PageTitle, Array.Empty<GUILayoutOption>());
			switch (currentTab)
			{
			case 0:
				spawnerTab.Draw();
				break;
			case 1:
				playerTab.Draw();
				break;
			case 2:
				teleportTab.Draw();
				break;
			case 3:
				onlineTab.Draw();
				break;
			case 4:
				npcsTab.Draw();
				break;
			case 5:
				freeCamTab.Draw();
				break;
			case 6:
				espTab.Draw();
				break;
			case 7:
				gameTab.Draw();
				break;
			case 8:
				keybindsTab.Draw();
				break;
			}
			GUILayout.EndVertical();
		}
	}
	public class Overlay
	{
		private GUIStyle bulletTimeStyle;

		public void Draw()
		{
			KeybindManager.Instance?.DrawOverlayList();
			DrawBulletTimeIndicator();
		}

		private void DrawBulletTimeIndicator()
		{
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: 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_0080: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bf: 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_0094: Unknown result type (might be due to invalid IL or missing references)
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b4: Expected O, but got Unknown
			FeatureManager featureManager = HotDogCheatMod.Instance?.FeatureManager;
			if (featureManager != null && featureManager.BulletTime != null && featureManager.BulletTime.Enabled)
			{
				float num = 0.5f + 0.5f * Mathf.Sin(Time.unscaledTime * 6f);
				Color textColor = Color.Lerp(new Color(1f, 0.85f, 0.2f, 0.85f), new Color(1f, 1f, 1f, 1f), num);
				if (bulletTimeStyle == null)
				{
					bulletTimeStyle = new GUIStyle(GUI.skin.label)
					{
						fontSize = 18,
						fontStyle = (FontStyle)1,
						alignment = (TextAnchor)4
					};
				}
				bulletTimeStyle.normal.textColor = textColor;
				string text = "●  BULLET TIME  ●";
				GUI.Label(new Rect(0f, 60f, (float)Screen.width, 28f), text, bulletTimeStyle);
			}
		}
	}
	public static class Styles
	{
		private static UiProfileKind initializedProfile;

		public static GUIStyle Background;

		public static GUIStyle Title;

		public static GUIStyle Sidebar;

		public static GUIStyle ContentPanel;

		public static GUIStyle PageTitle;

		public static GUIStyle SideTab;

		public static GUIStyle SideTabActive;

		public static GUIStyle MutedLabel;

		public static GUIStyle Section;

		public static GUIStyle SectionTitle;

		public static GUIStyle Tab;

		public static GUIStyle TabActive;

		public static GUIStyle Button;

		public static GUIStyle ButtonActive;

		public static GUIStyle Toggle;

		public static GUIStyle Selector;

		public static GUIStyle Box;

		public static GUIStyle Label;

		public static GUIStyle Slider;

		public static GUIStyle SliderThumb;

		public static GUIStyle TextField;

		private static Texture2D texDark;

		private static Texture2D texPanel;

		private static Texture2D texSection;

		private static Texture2D texMid;

		private static Texture2D texLight;

		private static Texture2D texAccent;

		private static Texture2D texAccentHover;

		private static Texture2D texMustard;

		private static Texture2D texToggleOn;

		private static Texture2D texToggleOff;

		private static Texture2D texToggleHover;

		public static bool Initialized { get; private set; }

		public static Texture2D TexDark => texDark;

		public static void Init()
		{
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0070: Unknown result type (might be due to invalid IL or missing references)
			//IL_0093: 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_00d9: 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_011f: Unknown result type (might be due to invalid IL or missing references)
			//IL_014c: Unknown result type (might be due to invalid IL or missing references)
			//IL_016f: 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_0183: Unknown result type (might be due to invalid IL or missing references)
			//IL_019f: Expected O, but got Unknown
			//IL_01b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e9: Expected O, but got Unknown
			//IL_0202: Unknown result type (might be due to invalid IL or missing references)
			//IL_020c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0211: Unknown result type (might be due to invalid IL or missing references)
			//IL_0228: Unknown result type (might be due to invalid IL or missing references)
			//IL_0241: Expected O, but got Unknown
			//IL_0255: Unknown result type (might be due to invalid IL or missing references)
			//IL_025a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0271: Unknown result type (might be due to invalid IL or missing references)
			//IL_0276: Unknown result type (might be due to invalid IL or missing references)
			//IL_0280: Expected O, but got Unknown
			//IL_0285: Expected O, but got Unknown
			//IL_0299: Unknown result type (might be due to invalid IL or missing references)
			//IL_029e: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e2: Expected O, but got Unknown
			//IL_02fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0305: Unknown result type (might be due to invalid IL or missing references)
			//IL_030a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0315: Unknown result type (might be due to invalid IL or missing references)
			//IL_031c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0323: Unknown result type (might be due to invalid IL or missing references)
			//IL_033b: Expected O, but got Unknown
			//IL_0354: Unknown result type (might be due to invalid IL or missing references)
			//IL_035e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0363: Unknown result type (might be due to invalid IL or missing references)
			//IL_0379: Unknown result type (might be due to invalid IL or missing references)
			//IL_0391: Expected O, but got Unknown
			//IL_03a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_03aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_03bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_03d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ee: Expected O, but got Unknown
			//IL_0407: Unknown result type (might be due to invalid IL or missing references)
			//IL_0411: Unknown result type (might be due to invalid IL or missing references)
			//IL_0416: Unknown result type (might be due to invalid IL or missing references)
			//IL_0421: Unknown result type (might be due to invalid IL or missing references)
			//IL_0428: Unknown result type (might be due to invalid IL or missing references)
			//IL_042f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0442: Unknown result type (might be due to invalid IL or missing references)
			//IL_0447: Unknown result type (might be due to invalid IL or missing references)
			//IL_0451: Expected O, but got Unknown
			//IL_0456: Expected O, but got Unknown
			//IL_0483: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_04c4: Expected O, but got Unknown
			//IL_04e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_0505: Unknown result type (might be due to invalid IL or missing references)
			//IL_050a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0511: Unknown result type (might be due to invalid IL or missing references)
			//IL_0518: Unknown result type (might be due to invalid IL or missing references)
			//IL_052c: Unknown result type (might be due to invalid IL or missing references)
			//IL_053f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0554: Expected O, but got Unknown
			//IL_0581: Unknown result type (might be due to invalid IL or missing references)
			//IL_05a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_05b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_05c2: Expected O, but got Unknown
			//IL_05e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0608: Unknown result type (might be due to invalid IL or missing references)
			//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_0622: Unknown result type (might be due to invalid IL or missing references)
			//IL_0629: Unknown result type (might be due to invalid IL or missing references)
			//IL_063c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0641: Unknown result type (might be due to invalid IL or missing references)
			//IL_064b: Expected O, but got Unknown
			//IL_0650: Expected O, but got Unknown
			//IL_067d: Unknown result type (might be due to invalid IL or missing references)
			//IL_06a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_06cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_06dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_06e6: Expected O, but got Unknown
			//IL_0704: Unknown result type (might be due to invalid IL or missing references)
			//IL_072c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0736: Unknown result type (might be due to invalid IL or missing references)
			//IL_073b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0746: Unknown result type (might be due to invalid IL or missing references)
			//IL_074d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0760: Unknown result type (might be due to invalid IL or missing references)
			//IL_0765: Unknown result type (might be due to invalid IL or missing references)
			//IL_076f: Expected O, but got Unknown
			//IL_0774: Expected O, but got Unknown
			//IL_07a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_07c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_07f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0819: Unknown result type (might be due to invalid IL or missing references)
			//IL_0828: Unknown result type (might be due to invalid IL or missing references)
			//IL_082d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0839: Expected O, but got Unknown
			//IL_0866: Unknown result type (might be due to invalid IL or missing references)
			//IL_088e: Unknown result type (might be due to invalid IL or missing references)
			//IL_08b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_08de: Unknown result type (might be due to invalid IL or missing references)
			//IL_08e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_08ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_08f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_08ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0906: Unknown result type (might be due to invalid IL or missing references)
			//IL_0919: Unknown result type (might be due to invalid IL or missing references)
			//IL_0931: Expected O, but got Unknown
			//IL_095e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0968: Unknown result type (might be due to invalid IL or missing references)
			//IL_096d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0978: Unknown result type (might be due to invalid IL or missing references)
			//IL_0990: Expected O, but got Unknown
			//IL_09a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_09bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_09c7: Expected O, but got Unknown
			//IL_09f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a03: Expected O, but got Unknown
			//IL_0a51: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a56: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a61: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a79: Expected O, but got Unknown
			//IL_0aa6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ace: Unknown result type (might be due to invalid IL or missing references)
			//IL_0af6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b1e: Unknown result type (might be due to invalid IL or missing references)
			UiProfileKind currentKind = UiLayout.CurrentKind;
			if (!Initialized || initializedProfile != currentKind)
			{
				texDark = MakeTex(new Color(0.07f, 0.07f, 0.1f, 0.96f));
				texPanel = MakeTex(new Color(0.1f, 0.1f, 0.15f, 0.98f));
				texSection = MakeTex(new Color(0.12f, 0.12f, 0.18f, 1f));
				texMid = MakeTex(new Color(0.15f, 0.15f, 0.21f, 1f));
				texLight = MakeTex(new Color(0.22f, 0.22f, 0.3f, 1f));
				texAccent = MakeTex(new Color(0.74f, 0.12f, 0.16f, 1f));
				texAccentHover = MakeTex(new Color(0.9f, 0.2f, 0.22f, 1f));
				texMustard = MakeTex(new Color(0.95f, 0.68f, 0.12f, 1f));
				texToggleOn = texAccent;
				texToggleOff = MakeTex(new Color(0.28f, 0.11f, 0.14f, 1f));
				texToggleHover = MakeTex(new Color(0.38f, 0.14f, 0.18f, 1f));
				Background = new GUIStyle
				{
					padding = UiLayout.Offset(12, 12, 12, 12, 8, 8, 8, 8)
				};
				Background.normal.background = texDark;
				Title = new GUIStyle
				{
					fontSize = UiLayout.TitleFont,
					fontStyle = (FontStyle)1,
					alignment = (TextAnchor)4,
					margin = UiLayout.Offset(0, 0, 4, 8, 0, 0, 3, 5)
				};
				Title.normal.textColor = new Color(1f, 0.86f, 0.38f);
				Sidebar = new GUIStyle
				{
					padding = UiLayout.Offset(10, 10, 10, 10, 7, 7, 7, 7),
					margin = UiLayout.Offset(0, 10, 0, 0, 0, 7, 0, 0)
				};
				Sidebar.normal.background = texPanel;
				ContentPanel = new GUIStyle
				{
					padding = UiLayout.Offset(12, 12, 10, 12, 8, 8, 7, 8),
					margin = new RectOffset(0, 0, 0, 0)
				};
				ContentPanel.normal.background = texPanel;
				PageTitle = new GUIStyle
				{
					fontSize = UiLayout.PageTitleFont,
					fontStyle = (FontStyle)1,
					alignment = (TextAnchor)3,
					padding = UiLayout.Offset(6, 6, 4, 8, 4, 4, 3, 5),
					margin = UiLayout.Offset(0, 0, 0, 8, 0, 0, 0, 5)
				};
				PageTitle.normal.textColor = new Color(1f, 0.86f, 0.38f);
				MutedLabel = new GUIStyle
				{
					fontSize = UiLayout.MutedFont,
					alignment = (TextAnchor)4,
					wordWrap = true,
					padding = UiLayout.Offset(4, 4, 2, 6, 3, 3, 1, 4)
				};
				MutedLabel.normal.textColor = new Color(0.62f, 0.62f, 0.7f);
				Section = new GUIStyle
				{
					padding = UiLayout.Offset(10, 10, 8, 10, 7, 7, 5, 7),
					margin = UiLayout.Offset(0, 0, 0, 8, 0, 0, 0, 5)
				};
				Section.normal.background = texSection;
				SectionTitle = new GUIStyle
				{
					fontSize = UiLayout.SectionTitleFont,
					fontStyle = (FontStyle)1,
					alignment = (TextAnchor)3,
					padding = UiLayout.Offset(4, 4, 0, 6, 3, 3, 0, 4),
					margin = UiLayout.Offset(0, 0, 0, 4, 0, 0, 0, 2)
				};
				SectionTitle.normal.textColor = new Color(1f, 0.82f, 0.28f);
				Tab = new GUIStyle
				{
					fontSize = UiLayout.ControlFont,
					fontStyle = (FontStyle)1,
					alignment = (TextAnchor)4,
					padding = UiLayout.Offset(8, 8, 6, 6, 6, 6, 4, 4),
					margin = new RectOffset(2, 2, 0, 0)
				};
				Tab.normal.background = texMid;
				Tab.normal.textColor = new Color(0.7f, 0.7f, 0.75f);
				Tab.hover.background = texLight;
				Tab.hover.textColor = Color.white;
				TabActive = new GUIStyle(Tab);
				TabActive.normal.background = texAccent;
				TabActive.normal.textColor = Color.white;
				TabActive.hover.background = texAccentHover;
				SideTab = new GUIStyle(Tab)
				{
					alignment = (TextAnchor)3,
					richText = true,
					padding = UiLayout.Offset(12, 8, 8, 8, 8, 6, 5, 5),
					margin = UiLayout.Offset(0, 0, 3, 3, 0, 0, 2, 2),
					fixedHeight = UiLayout.Height(34f)
				};
				SideTab.normal.background = texMid;
				SideTab.normal.textColor = new Color(0.78f, 0.78f, 0.84f);
				SideTab.hover.background = texLight;
				SideTab.hover.textColor = Color.white;
				SideTabActive = new GUIStyle(SideTab);
				SideTabActive.normal.background = texAccent;
				SideTabActive.normal.textColor = Color.white;
				SideTabActive.hover.background = texAccentHover;
				SideTabActive.hover.textColor = Color.white;
				Button = new GUIStyle
				{
					fontSize = UiLayout.ControlFont,
					alignment = (TextAnchor)4,
					padding = UiLayout.Offset(8, 8, 6, 6, 6, 6, 4, 4),
					margin = new RectOffset(2, 2, 2, 2)
				};
				Button.normal.background = texMid;
				Button.normal.textColor = new Color(0.85f, 0.85f, 0.9f);
				Button.hover.background = texLight;
				Button.hover.textColor = Color.white;
				Button.active.background = texAccent;
				Button.active.textColor = Color.white;
				ButtonActive = new GUIStyle(Button);
				ButtonActive.normal.background = texAccent;
				ButtonActive.normal.textColor = Color.white;
				ButtonActive.hover.background = texAccentHover;
				ButtonActive.hover.textColor = Color.white;
				Toggle = new GUIStyle
				{
					fontSize = UiLayout.ControlFont,
					alignment = (TextAnchor)4,
					padding = UiLayout.Offset(8, 8, 6, 6, 6, 6, 4, 4),
					margin = new RectOffset(2, 2, 2, 2)
				};
				Toggle.normal.background = texToggleOff;
				Toggle.normal.textColor = new Color(0.86f, 0.72f, 0.75f);
				Toggle.onNormal.background = texToggleOn;
				Toggle.onNormal.textColor = Color.white;
				Toggle.hover.background = texToggleHover;
				Toggle.hover.textColor = Color.white;
				Toggle.onHover.background = texToggleOn;
				Toggle.onHover.textColor = Color.white;
				Selector = new GUIStyle(Toggle)
				{
					fontStyle = (FontStyle)1
				};
				Selector.normal.background = texMid;
				Selector.normal.textColor = new Color(0.85f, 0.85f, 0.9f);
				Selector.hover.background = texLight;
				Selector.hover.textColor = Color.white;
				Selector.onNormal.background = texAccent;
				Selector.onNormal.textColor = Color.white;
				Selector.onHover.background = texAccentHover;
				Selector.onHover.textColor = Color.white;
				Box = new GUIStyle
				{
					fontSize = UiLayout.BoxFont,
					fontStyle = (FontStyle)1,
					alignment = (TextAnchor)4,
					padding = UiLayout.Offset(6, 6, 4, 4, 4, 4, 3, 3),
					margin = UiLayout.Offset(0, 0, 4, 4, 0, 0, 3, 3)
				};
				Box.normal.background = texMid;
				Box.normal.textColor = new Color(1f, 0.82f, 0.28f);
				Label = new GUIStyle
				{
					fontSize = UiLayout.ControlFont,
					padding = UiLayout.Offset(4, 4, 2, 2, 3, 3, 1, 1)
				};
				Label.normal.textColor = new Color(0.8f, 0.8f, 0.85f);
				Slider = new GUIStyle(GUI.skin.horizontalSlider);
				Slider.normal.background = texMid;
				Slider.fixedHeight = UiLayout.Height(8f);
				SliderThumb = new GUIStyle(GUI.skin.horizontalSliderThumb);
				SliderThumb.normal.background = texMustard;
				SliderThumb.fixedWidth = (UiLayout.IsCompact ? 12 : 14);
				SliderThumb.fixedHeight = (UiLayout.IsCompact ? 12 : 14);
				TextField = new GUIStyle(GUI.skin.textField)
				{
					fontSize = UiLayout.ControlFont,
					padding = UiLayout.Offset(6, 6, 4, 4, 4, 4, 3, 3)
				};
				TextField.normal.background = texMid;
				TextField.normal.textColor = new Color(0.9f, 0.9f, 0.95f);
				TextField.active.background = texLight;
				TextField.active.textColor = Color.white;
				TextField.focused.background = texLight;
				TextField.focused.textColor = Color.white;
				TextField.hover.background = texLight;
				TextField.hover.textColor = Color.white;
				initializedProfile = currentKind;
				Initialized = true;
				UiLayout.NoteStylesRebuilt();
			}
		}

		public static void BeginSection(string title)
		{
			GUILayout.BeginVertical(Section, Array.Empty<GUILayoutOption>());
			GUILayout.Label(title, SectionTitle, Array.Empty<GUILayoutOption>());
		}

		public static string FilterNumeric(string input)
		{
			if (string.IsNullOrEmpty(input))
			{
				return "";
			}
			string text = "";
			bool flag = false;
			for (int i = 0; i < input.Length; i++)
			{
				char c = input[i];
				if (c >= '0' && c <= '9')
				{
					text += c;
				}
				else if (c == '.' && !flag)
				{
					text += c;
					flag = true;
				}
			}
			return text;
		}

		public static string FilterInteger(string input)
		{
			if (string.IsNullOrEmpty(input))
			{
				return "";
			}
			string text = "";
			for (int i = 0; i < input.Length; i++)
			{
				char c = input[i];
				if (c >= '0' && c <= '9')
				{
					text += c;
				}
			}
			return text;
		}

		public static void EndSection()
		{
			GUILayout.EndVertical();
		}

		private static Texture2D MakeTex(Color col)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000a: 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_0017: Expected O, but got Unknown
			Texture2D val = new Texture2D(1, 1);
			val.SetPixel(0, 0, col);
			val.Apply();
			return val;
		}
	}
	public enum UiProfileKind
	{
		Default,
		Compact1080
	}
	public static class UiLayout
	{
		public static UiProfileKind CurrentKind
		{
			get
			{
				if (Screen.width != 1920 || Screen.height != 1080)
				{
					return UiProfileKind.Default;
				}
				return UiProfileKind.Compact1080;
			}
		}

		public static bool IsCompact => CurrentKind == UiProfileKind.Compact1080;

		public static Rect MenuRect
		{
			get
			{
				//IL_0035: Unknown result type (might be due to invalid IL or missing references)
				//IL_001b: Unknown result type (might be due to invalid IL or missing references)
				if (!IsCompact)
				{
					return new Rect(20f, 20f, 840f, 700f);
				}
				return new Rect(14f, 14f, 720f, 610f);
			}
		}

		public static Rect KeybindPickerRect
		{
			get
			{
				//IL_0035: Unknown result type (might be due to invalid IL or missing references)
				//IL_001b: Unknown result type (might be due to invalid IL or missing references)
				if (!IsCompact)
				{
					return new Rect(870f, 20f, 520f, 560f);
				}
				return new Rect(746f, 14f, 440f, 500f);
			}
		}

		public static Rect KeybindCaptureRect
		{
			get
			{
				//IL_0035: Unknown result type (might be due to invalid IL or missing references)
				//IL_001b: Unknown result type (might be due to invalid IL or missing references)
				if (!IsCompact)
				{
					return new Rect(0f, 0f, 340f, 150f);
				}
				return new Rect(0f, 0f, 300f, 128f);
			}
		}

		public static int StyleVersion { get; private set; }

		public static float SidebarWidth
		{
			get
			{
				if (!IsCompact)
				{
					return 150f;
				}
				return 122f;
			}
		}

		public static float OverlayKeybindWidth
		{
			get
			{
				if (!IsCompact)
				{
					return 260f;
				}
				return 230f;
			}
		}

		public static float OverlayKeybindHeaderHeight
		{
			get
			{
				if (!IsCompact)
				{
					return 24f;
				}
				return 20f;
			}
		}

		public static float OverlayKeybindRowHeight
		{
			get
			{
				if (!IsCompact)
				{
					return 18f;
				}
				return 16f;
			}
		}

		public static float OverlayKeybindMargin
		{
			get
			{
				if (!IsCompact)
				{
					return 15f;
				}
				return 10f;
			}
		}

		public static float OverlayKeybindY
		{
			get
			{
				if (!IsCompact)
				{
					return 38f;
				}
				return 32f;
			}
		}

		public static int TitleFont
		{
			get
			{
				if (!IsCompact)
				{
					return 18;
				}
				return 15;
			}
		}

		public static int PageTitleFont
		{
			get
			{
				if (!IsCompact)
				{
					return 15;
				}
				return 13;
			}
		}

		public static int MutedFont
		{
			get
			{
				if (!IsCompact)
				{
					return 11;
				}
				return 10;
			}
		}

		public static int SectionTitleFont
		{
			get
			{
				if (!IsCompact)
				{
					return 12;
				}
				return 11;
			}
		}

		public static int ControlFont
		{
			get
			{
				if (!IsCompact)
				{
					return 12;
				}
				return 11;
			}
		}

		public static int BoxFont
		{
			get
			{
				if (!IsCompact)
				{
					return 13;
				}
				return 12;
			}
		}

		public static void NoteStylesRebuilt()
		{
			StyleVersion++;
		}

		public static float Space(float normal)
		{
			if (!IsCompact)
			{
				return normal;
			}
			if (normal >= 12f)
			{
				return 8f;
			}
			if (normal >= 10f)
			{
				return 7f;
			}
			if (normal >= 8f)
			{
				return 6f;
			}
			if (normal >= 6f)
			{
				return 4f;
			}
			if (normal >= 4f)
			{
				return 3f;
			}
			return normal;
		}

		public static GUILayoutOption H(float normal)
		{
			return GUILayout.Height(Height(normal));
		}

		public static GUILayoutOption W(float normal)
		{
			return GUILayout.Width(Width(normal));
		}

		public static GUILayoutOption MinH(float normal)
		{
			return GUILayout.MinHeight(Height(normal));
		}

		public static float Height(float normal)
		{
			if (!IsCompact)
			{
				return normal;
			}
			if (normal >= 420f)
			{
				return 300f;
			}
			if (normal >= 400f)
			{
				return 290f;
			}
			if (normal >= 260f)
			{
				return 190f;
			}
			if (normal >= 245f)
			{
				return 185f;
			}
			if (normal >= 150f)
			{
				return 110f;
			}
			if (normal >= 105f)
			{
				return 78f;
			}
			if (normal >= 40f)
			{
				return 34f;
			}
			if (normal >= 35f)
			{
				return 30f;
			}
			if (normal >= 32f)
			{
				return 28f;
			}
			if (normal >= 30f)
			{
				return 26f;
			}
			if (normal >= 28f)
			{
				return 24f;
			}
			if (normal >= 26f)
			{
				return 23f;
			}
			if (normal >= 24f)
			{
				return 21f;
			}
			return normal;
		}

		public static float Width(float normal)
		{
			if (!IsCompact)
			{
				return normal;
			}
			if (normal >= 330f)
			{
				return 270f;
			}
			if (normal >= 285f)
			{
				return 230f;
			}
			if (normal >= 260f)
			{
				return 210f;
			}
			if (normal >= 220f)
			{
				return 178f;
			}
			if (normal >= 160f)
			{
				return 130f;
			}
			if (normal >= 146f)
			{
				return 118f;
			}
			if (normal >= 145f)
			{
				return 118f;
			}
			if (normal >= 140f)
			{
				return 112f;
			}
			if (normal >= 130f)
			{
				return 106f;
			}
			if (normal >= 120f)
			{
				return 98f;
			}
			if (normal >= 112f)
			{
				return 92f;
			}
			if (normal >= 110f)
			{
				return 90f;
			}
			if (normal >= 105f)
			{
				return 86f;
			}
			if (normal >= 100f)
			{
				return 82f;
			}
			if (normal >= 95f)
			{
				return 78f;
			}
			if (normal >= 92f)
			{
				return 76f;
			}
			if (normal >= 90f)
			{
				return 74f;
			}
			if (normal >= 82f)
			{
				return 68f;
			}
			if (normal >= 80f)
			{
				return 66f;
			}
			if (normal >= 78f)
			{
				return 64f;
			}
			if (normal >= 70f)
			{
				return 58f;
			}
			if (normal >= 65f)
			{
				return 54f;
			}
			if (normal >= 55f)
			{
				return 48f;
			}
			if (normal >= 50f)
			{
				return 44f;
			}
			if (normal >= 45f)
			{
				return 40f;
			}
			if (normal >= 42f)
			{
				return 38f;
			}
			if (normal >= 40f)
			{
				return 36f;
			}
			if (normal >= 34f)
			{
				return 30f;
			}
			if (normal >= 32f)
			{
				return 28f;
			}
			if (normal >= 22f)
			{
				return 20f;
			}
			return normal;
		}

		public static RectOffset Offset(int l, int r, int t, int b, int cl, int cr, int ct, int cb)
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Expected O, but got Unknown
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Expected O, but got Unknown
			if (IsCompact)
			{
				return new RectOffset(cl, cr, ct, cb);
			}
			return new RectOffset(l, r, t, b);
		}
	}
}
namespace HotDogCheat.UI.Tabs
{
	public class ESPTab
	{
		private readonly ESPSettings s;

		private int subTab;

		private int settingsSubTab;

		private Vector2 regularColorsScroll;

		private Vector2 tasksColorsScroll;

		public ESPTab(ESPSettings settings)
		{
			s = settings;
		}

		public void Draw()
		{
			if (subTab > 1)
			{
				subTab = 0;
			}
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			if (GUILayout.Button("ESP", (subTab == 0) ? Styles.TabActive : Styles.Tab, Array.Empty<GUILayoutOption>()))
			{
				subTab = 0;
			}
			if (GUILayout.Button("Settings", (subTab == 1) ? Styles.TabActive : Styles.Tab, Array.Empty<GUILayoutOption>()))
			{
				subTab = 1;
			}
			GUILayout.EndHorizontal();
			GUILayout.Space(10f);
			switch (subTab)
			{
			case 0:
				DrawESP();
				break;
			case 1:
				DrawSettings();
				break;
			}
		}

		private void DrawESP()
		{
			if (!string.IsNullOrEmpty(s.ItemFilter))
			{
				s.ItemFilter = "";
			}
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			GUILayout.BeginVertical((GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.ExpandWidth(true) });
			Styles.BeginSection("Player ESP");
			s.PlayerEnabled = GUILayout.Toggle(s.PlayerEnabled, "Enable Player ESP", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(28f) });
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			s.PlayerBoxes = GUILayout.Toggle(s.PlayerBoxes, "Boxes", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(26f) });
			s.PlayerNames = GUILayout.Toggle(s.PlayerNames, "Names", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(26f) });
			s.PlayerHealth = GUILayout.Toggle(s.PlayerHealth, "Health", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(26f) });
			GUILayout.EndHorizontal();
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			s.PlayerDistance = GUILayout.Toggle(s.PlayerDistance, "Distance", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(26f) });
			s.PlayerTracers = GUILayout.Toggle(s.PlayerTracers, "Tracers", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(26f) });
			GUILayout.EndHorizontal();
			s.PlayerSkeleton = GUILayout.Toggle(s.PlayerSkeleton, "Skeleton", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(26f) });
			Styles.EndSection();
			Styles.BeginSection("NPC ESP");
			s.NpcEnabled = GUILayout.Toggle(s.NpcEnabled, "Enable NPC ESP", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(28f) });
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			s.NpcBob = GUILayout.Toggle(s.NpcBob, "Bob", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(26f) });
			GUILayout.EndHorizontal();
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			s.NpcBoxes = GUILayout.Toggle(s.NpcBoxes, "Boxes", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(26f) });
			s.NpcNames = GUILayout.Toggle(s.NpcNames, "Names", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(26f) });
			s.NpcDistance = GUILayout.Toggle(s.NpcDistance, "Distance", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(26f) });
			s.NpcTracers = GUILayout.Toggle(s.NpcTracers, "Tracers", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(26f) });
			GUILayout.EndHorizontal();
			s.NpcSkeleton = GUILayout.Toggle(s.NpcSkeleton, "Skeleton (Human)", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(26f) });
			Styles.EndSection();
			Styles.BeginSection("Enemy AI");
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			s.NpcHuman = GUILayout.Toggle(s.NpcHuman, "Human", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(25f) });
			s.NpcSpider = GUILayout.Toggle(s.NpcSpider, "Spider", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(25f) });
			GUILayout.EndHorizontal();
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			s.NpcCat = GUILayout.Toggle(s.NpcCat, "Cat", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(25f) });
			s.NpcMole = GUILayout.Toggle(s.NpcMole, "Mole", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(25f) });
			s.NpcVacuum = GUILayout.Toggle(s.NpcVacuum, "Vacuum", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(25f) });
			GUILayout.EndHorizontal();
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			s.NpcRedcap = GUILayout.Toggle(s.NpcRedcap, "Redcap", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(25f) });
			s.NpcRat = GUILayout.Toggle(s.NpcRat, "Rat", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(25f) });
			s.NpcRoach = GUILayout.Toggle(s.NpcRoach, "Roach", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(25f) });
			GUILayout.EndHorizontal();
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			s.NpcBoar = GUILayout.Toggle(s.NpcBoar, "Boar", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(25f) });
			s.NpcDog = GUILayout.Toggle(s.NpcDog, "Dog", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(25f) });
			s.NpcBibi = GUILayout.Toggle(s.NpcBibi, "Bibi", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(25f) });
			GUILayout.EndHorizontal();
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			s.NpcBeehive = GUILayout.Toggle(s.NpcBeehive, "Beehive", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(25f) });
			s.NpcFairy = GUILayout.Toggle(s.NpcFairy, "Fairy", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(25f) });
			GUILayout.EndHorizontal();
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			s.NpcJonathan = GUILayout.Toggle(s.NpcJonathan, "Jonathan", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(25f) });
			s.NpcSealman = GUILayout.Toggle(s.NpcSealman, "Sealman", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(25f) });
			GUILayout.EndHorizontal();
			Styles.EndSection();
			GUILayout.EndVertical();
			GUILayout.Space(12f);
			GUILayout.BeginVertical((GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.ExpandWidth(true) });
			Styles.BeginSection("Item ESP");
			s.ItemEnabled = GUILayout.Toggle(s.ItemEnabled, "Enable Item ESP", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(28f) });
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			s.ItemNames = GUILayout.Toggle(s.ItemNames, "Names", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(26f) });
			s.ItemDistance = GUILayout.Toggle(s.ItemDistance, "Distance", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(26f) });
			GUILayout.EndHorizontal();
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			s.ItemTracers = GUILayout.Toggle(s.ItemTracers, "Tracers", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(26f) });
			s.ItemFilterWeaponsOnly = GUILayout.Toggle(s.ItemFilterWeaponsOnly, "Weapons Only", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(26f) });
			GUILayout.EndHorizontal();
			Styles.EndSection();
			Styles.BeginSection("Smart Tasks");
			s.TaskEnabled = GUILayout.Toggle(s.TaskEnabled, "Enable Smart Tasks ESP", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(28f) });
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			s.TaskNames = GUILayout.Toggle(s.TaskNames, "Names", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(26f) });
			s.TaskDistance = GUILayout.Toggle(s.TaskDistance, "Distance", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(26f) });
			s.TaskTracers = GUILayout.Toggle(s.TaskTracers, "Tracers", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(26f) });
			GUILayout.EndHorizontal();
			Styles.EndSection();
			Styles.BeginSection("Keybinds UI");
			s.ShowKeybindsUi = GUILayout.Toggle(s.ShowKeybindsUi, "Show Keybinds UI", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(28f) });
			s.KeybindsUiRightSide = GUILayout.Toggle(s.KeybindsUiRightSide, s.KeybindsUiRightSide ? "Top Right" : "Top Left", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(26f) });
			Styles.EndSection();
			GUILayout.EndVertical();
			GUILayout.EndHorizontal();
		}

		private void DrawSettings()
		{
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			if (GUILayout.Button("General", (settingsSubTab == 0) ? Styles.TabActive : Styles.Tab, Array.Empty<GUILayoutOption>()))
			{
				settingsSubTab = 0;
			}
			if (GUILayout.Button("ESP Colors", (settingsSubTab == 1) ? Styles.TabActive : Styles.Tab, Array.Empty<GUILayoutOption>()))
			{
				settingsSubTab = 1;
			}
			if (GUILayout.Button("Tasks Colors", (settingsSubTab == 2) ? Styles.TabActive : Styles.Tab, Array.Empty<GUILayoutOption>()))
			{
				settingsSubTab = 2;
			}
			GUILayout.EndHorizontal();
			GUILayout.Space(10f);
			switch (settingsSubTab)
			{
			case 0:
				DrawSettingsGeneral();
				break;
			case 1:
				DrawRegularColors();
				break;
			case 2:
				DrawTasksColors();
				break;
			}
		}

		private void DrawSettingsGeneral()
		{
			Styles.BeginSection("Distance");
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			GUILayout.Label($"Max Distance: {s.MaxDistance:F0}m", Styles.Label, Array.Empty<GUILayoutOption>());
			s.MaxDistance = GUILayout.HorizontalSlider(s.MaxDistance, 10f, 500f, Styles.Slider, Styles.SliderThumb, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(200f) });
			GUILayout.EndHorizontal();
			Styles.EndSection();
			Styles.BeginSection("Scan Intervals");
			GUILayout.Label("Scan Intervals:", Styles.Label, Array.Empty<GUILayoutOption>());
			IntervalSlider("Players", ref s.IntervalPlayers, 0.05f, 0.5f, "F2");
			IntervalSlider("NPCs/AI", ref s.IntervalNpcs, 0.1f, 0.5f, "F2");
			IntervalSlider("Items", ref s.IntervalItems, 1f, 10f, "F1");
			IntervalSlider("Cabinets", ref s.IntervalCabinets, 2f, 15f, "F1");
			IntervalSlider("World", ref s.IntervalWorld, 2f, 15f, "F1");
			IntervalSlider("Tasks", ref s.IntervalTasks, 0.1f, 1f, "F2");
			Styles.EndSection();
			Styles.BeginSection("Config");
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			if (GUILayout.Button("Save Config", Styles.Button, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(35f) }))
			{
				HotDogCheatMod.Instance?.SaveAllConfig();
			}
			if (GUILayout.Button("Reset to Default", Styles.Button, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(35f) }))
			{
				ResetToDefault();
				HotDogCheatMod.Instance?.SaveAllConfig();
				HotDogCheatMod.Log("ESP settings reset to default (saved)");
			}
			GUILayout.EndHorizontal();
			Styles.EndSection();
		}

		private void DrawRegularColors()
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			regularColorsScroll = GUILayout.BeginScrollView(regularColorsScroll, Array.Empty<GUILayoutOption>());
			Styles.BeginSection("Player ESP");
			ColorRow("Other Players", ref s.ColorPlayerOther);
			ColorRow("Local [YOU]", ref s.ColorPlayerLocal);
			Styles.EndSection();
			Styles.BeginSection("NPC ESP");
			ColorRow("Bob", ref s.ColorBob);
			Styles.EndSection();
			Styles.BeginSection("Enemy AI");
			ColorRow("Human", ref s.ColorHuman);
			ColorRow("Spider", ref s.ColorSpider);
			ColorRow("Cat", ref s.ColorCat);
			ColorRow("Mole", ref s.ColorMole);
			ColorRow("Vacuum", ref s.ColorVacuum);
			ColorRow("Redcap", ref s.ColorRedcap);
			ColorRow("Rat", ref s.ColorRat);
			ColorRow("Roach", ref s.ColorRoach);
			ColorRow("Boar", ref s.ColorBoar);
			ColorRow("Dog", ref s.ColorDog);
			ColorRow("Bibi", ref s.ColorBibi);
			ColorRow("Beehive", ref s.ColorBeehive);
			ColorRow("Fairy", ref s.ColorFairy);
			ColorRow("Jonathan", ref s.ColorJonathan);
			ColorRow("Sealman", ref s.ColorSealman);
			Styles.EndSection();
			Styles.BeginSection("Item ESP");
			ColorRow("Items", ref s.ColorItem);
			ColorRow("Weapons", ref s.ColorWeapon);
			Styles.EndSection();
			Styles.BeginSection("World");
			ColorRow("Doors", ref s.ColorDoor);
			ColorRow("Hatches", ref s.ColorHatch);
			Styles.EndSection();
			GUILayout.EndScrollView();
		}

		private void DrawTasksColors()
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			tasksColorsScroll = GUILayout.BeginScrollView(tasksColorsScroll, Array.Empty<GUILayoutOption>());
			Styles.BeginSection("Task Slot Colors");
			ColorRow("Task #1", ref s.ColorTask1);
			ColorRow("Task #2", ref s.ColorTask2);
			ColorRow("Task #3", ref s.ColorTask3);
			ColorRow("Task #4", ref s.ColorTask4);
			ColorRow("Task #5", ref s.ColorTask5);
			Styles.EndSection();
			Styles.BeginSection("Other");
			ColorRow("Generic Task", ref s.ColorTask);
			ColorRow("Weapons (in tasks)", ref s.ColorWeapon);
			Styles.EndSection();
			GUILayout.EndScrollView();
		}

		private void IntervalSlider(string label, ref float val, float min, float max, string fmt)
		{
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			GUILayout.Label(label + ": " + val.ToString(fmt) + "s", Styles.Label, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(120f) });
			val = GUILayout.HorizontalSlider(val, min, max, Styles.Slider, Styles.SliderThumb, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(100f) });
			GUILayout.EndHorizontal();
		}

		private void ColorRow(string label, ref Color c)
		{
			//IL_0130: 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_013a: Unknown result type (might be due to invalid IL or missing references)
			//IL_013f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0141: Unknown result type (might be due to invalid IL or missing references)
			//IL_0175: Unknown result type (might be due to invalid IL or missing references)
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			GUILayout.Label(label, Styles.Label, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(90f) });
			GUILayout.Label("R", Styles.Label, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(12f) });
			float num = GUILayout.HorizontalSlider(c.r, 0f, 1f, Styles.Slider, Styles.SliderThumb, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(50f) });
			GUILayout.Label("G", Styles.Label, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(12f) });
			float num2 = GUILayout.HorizontalSlider(c.g, 0f, 1f, Styles.Slider, Styles.SliderThumb, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(50f) });
			GUILayout.Label("B", Styles.Label, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(12f) });
			float num3 = GUILayout.HorizontalSlider(c.b, 0f, 1f, Styles.Slider, Styles.SliderThumb, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(50f) });
			c = new Color(num, num2, num3, 1f);
			Color backgroundColor = GUI.backgroundColor;
			GUI.backgroundColor = c;
			GUILayout.Box("", (GUILayoutOption[])(object)new GUILayoutOption[2]
			{
				GUILayout.Width(22f),
				GUILayout.Height(18f)
			});
			GUI.backgroundColor = backgroundColor;
			GUILayout.EndHorizontal();
		}

		private void ResetToDefault()
		{
			s.ResetToDefaults();
		}
	}
	public class FreeCamTab
	{
		private readonly FeatureManager features;

		private Vector2 scrollPos;

		public FreeCamTab(FeatureManager features)
		{
			this.features = features;
		}

		public void Draw()
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			scrollPos = GUILayout.BeginScrollView(scrollPos, Array.Empty<GUILayoutOption>());
			Styles.BeginSection("FreeCam");
			if (GUILayout.Button(features.FreeCam.Enabled ? "[ACTIVE] Toggle FreeCam" : "Toggle FreeCam", features.FreeCam.Enabled ? Styles.ButtonActive : Styles.Button, Array.Empty<GUILayoutOption>()))
			{
				features.FreeCam.Toggle();
			}
			if (features.FreeCam.Enabled)
			{
				GUILayout.Label($"Mode: {features.FreeCam.CurrentMode}", Styles.Label, Array.Empty<GUILayoutOption>());
				GUILayout.Label("Mouse wheel changes mode while FreeCam is active", Styles.Label, Array.Empty<GUILayoutOption>());
			}
			Styles.EndSection();
			Styles.BeginSection("Base Settings");
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			GUILayout.Label($"Move Speed: {features.FreeCam.MoveSpeed:F0}", Styles.Label, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(160f) });
			features.FreeCam.MoveSpeed = GUILayout.HorizontalSlider(features.FreeCam.MoveSpeed, 5f, 150f, Styles.Slider, Styles.SliderThumb, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(260f) });
			GUILayout.EndHorizontal();
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			GUILayout.Label($"Camera Sens: {features.FreeCam.LookSensitivity:F2}", Styles.Label, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(160f) });
			features.FreeCam.LookSensitivity = GUILayout.HorizontalSlider(features.FreeCam.LookSensitivity, 0.02f, 1.5f, Styles.Slider, Styles.SliderThumb, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(260f) });
			GUILayout.EndHorizontal();
			Styles.EndSection();
			Styles.BeginSection("Black Hole");
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			GUILayout.Label($"Strength: {features.FreeCam.BlackHoleStrength:F0}", Styles.Label, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(160f) });
			features.FreeCam.BlackHoleStrength = GUILayout.HorizontalSlider(features.FreeCam.BlackHoleStrength, 5f, 300f, Styles.Slider, Styles.SliderThumb, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(260f) });
			GUILayout.EndHorizontal();
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			GUILayout.Label($"Radius: {features.FreeCam.BlackHoleRadius:F0}", Styles.Label, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(160f) });
			features.FreeCam.BlackHoleRadius = GUILayout.HorizontalSlider(features.FreeCam.BlackHoleRadius, 2f, 80f, Styles.Slider, Styles.SliderThumb, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(260f) });
			GUILayout.EndHorizontal();
			Styles.EndSection();
			Styles.BeginSection("Interact Grab");
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			GUILayout.Label($"Strength: {features.FreeCam.InteractGrabStrength:F1}x", Styles.Label, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(160f) });
			features.FreeCam.InteractGrabStrength = GUILayout.HorizontalSlider(features.FreeCam.InteractGrabStrength, 1f, 5f, Styles.Slider, Styles.SliderThumb, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(260f) });
			GUILayout.EndHorizontal();
			Styles.EndSection();
			Styles.BeginSection("Knife Throw");
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			GUILayout.Label($"Throw Rate: {features.FreeCam.KnifeThrowRate:F0}/s", Styles.Label, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(160f) });
			features.FreeCam.KnifeThrowRate = GUILayout.HorizontalSlider(features.FreeCam.KnifeThrowRate, 1f, 30f, Styles.Slider, Styles.SliderThumb, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(260f) });
			GUILayout.EndHorizontal();
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			GUILayout.Label($"Throw Power: {features.FreeCam.KnifeThrowPower:F0}", Styles.Label, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(160f) });
			features.FreeCam.KnifeThrowPower = GUILayout.HorizontalSlider(features.FreeCam.KnifeThrowPower, 10f, 200f, Styles.Slider, Styles.SliderThumb, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(260f) });
			GUILayout.EndHorizontal();
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			GUILayout.Label($"Despawn: {features.FreeCam.KnifeDespawnTime:F0}s", Styles.Label, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(160f) });
			features.FreeCam.KnifeDespawnTime = GUILayout.HorizontalSlider(features.FreeCam.KnifeDespawnTime, 1f, 60f, Styles.Slider, Styles.SliderThumb, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(260f) });
			GUILayout.EndHorizontal();
			Styles.EndSection();
			Styles.BeginSection("Gun");
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			GUILayout.Label($"Cooldown: {features.FreeCam.GunCooldownTime:F2}s", Styles.Label, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(160f) });
			features.FreeCam.GunCooldownTime = GUILayout.HorizontalSlider(features.FreeCam.GunCooldownTime, 0.01f, 2f, Styles.Slider, Styles.SliderThumb, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(260f) });
			GUILayout.EndHorizontal();
			features.FreeCam.GunRapidFire = GUILayout.Toggle(features.FreeCam.GunRapidFire, "Rapid Fire (Hold Left Click)", Styles.Toggle, Array.Empty<GUILayoutOption>());
			if (features.FreeCam.GunRapidFire)
			{
				GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
				GUILayout.Label($"Fire Rate: {features.FreeCam.GunRapidFireRate:F0}/s", Styles.Label, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(160f) });
				features.FreeCam.GunRapidFireRate = GUILayout.HorizontalSlider(features.FreeCam.GunRapidFireRate, 1f, 30f, Styles.Slider, Styles.SliderThumb, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(260f) });
				GUILayout.EndHorizontal();
			}
			Styles.EndSection();
			Styles.BeginSection("RPG");
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			GUILayout.Label($"Cooldown: {features.FreeCam.RpgCooldownTime:F2}s", Styles.Label, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(160f) });
			features.FreeCam.RpgCooldownTime = GUILayout.HorizontalSlider(features.FreeCam.RpgCooldownTime, 0.01f, 2f, Styles.Slider, Styles.SliderThumb, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(260f) });
			GUILayout.EndHorizontal();
			features.FreeCam.RpgRapidFire = GUILayout.Toggle(features.FreeCam.RpgRapidFire, "Rapid Fire (Hold Left Click)", Styles.Toggle, Array.Empty<GUILayoutOption>());
			if (features.FreeCam.RpgRapidFire)
			{
				GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
				GUILayout.Label($"Fire Rate: {features.FreeCam.RpgRapidFireRate:F0}/s", Styles.Label, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(160f) });
				features.FreeCam.RpgRapidFireRate = GUILayout.HorizontalSlider(features.FreeCam.RpgRapidFireRate, 1f, 30f, Styles.Slider, Styles.SliderThumb, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(260f) });
				GUILayout.EndHorizontal();
			}
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			GUILayout.Label($"Speed: {features.FreeCam.RpgProjectileSpeed:F0}", Styles.Label, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(160f) });
			features.FreeCam.RpgProjectileSpeed = GUILayout.HorizontalSlider(features.FreeCam.RpgProjectileSpeed, 10f, 200f, Styles.Slider, Styles.SliderThumb, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(260f) });
			GUILayout.EndHorizontal();
			features.FreeCam.RpgAccurate = GUILayout.Toggle(features.FreeCam.RpgAccurate, "Dead Straight (No Gravity/Drift)", Styles.Toggle, Array.Empty<GUILayoutOption>());
			Styles.EndSection();
			Styles.BeginSection("Shotgun");
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			GUILayout.Label($"Cooldown: {features.FreeCam.ShotgunCooldownTime:F2}s", Styles.Label, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(160f) });
			features.FreeCam.ShotgunCooldownTime = GUILayout.HorizontalSlider(features.FreeCam.ShotgunCooldownTime, 0.01f, 2f, Styles.Slider, Styles.SliderThumb, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(260f) });
			GUILayout.EndHorizontal();
			features.FreeCam.ShotgunRapidFire = GUILayout.Toggle(features.FreeCam.ShotgunRapidFire, "Rapid Fire (Hold Left Click)", Styles.Toggle, Array.Empty<GUILayoutOption>());
			if (features.FreeCam.ShotgunRapidFire)
			{
				GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
				GUILayout.Label($"Fire Rate: {features.FreeCam.ShotgunRapidFireRate:F0}/s", Styles.Label, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(160f) });
				features.FreeCam.ShotgunRapidFireRate = GUILayout.HorizontalSlider(features.FreeCam.ShotgunRapidFireRate, 1f, 30f, Styles.Slider, Styles.SliderThumb, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(260f) });
				GUILayout.EndHorizontal();
			}
			Styles.EndSection();
			Styles.BeginSection("Config");
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			if (GUILayout.Button("Save FreeCam Settings", Styles.Button, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(35f) }))
			{
				HotDogCheatMod.Instance?.SaveAllConfig();
				HotDogCheatMod.Log("FreeCam settings saved");
			}
			if (GUILayout.Button("Reset FreeCam", Styles.Button, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(35f) }))
			{
				features.FreeCam.MoveSpeed = 20f;
				features.FreeCam.LookSensitivity = 0.15f;
				features.FreeCam.BlackHoleStrength = 45f;
				features.FreeCam.BlackHoleRadius = 14f;
				features.FreeCam.InteractGrabStrength = 1f;
				features.FreeCam.GunCooldownTime = 0.4f;
				features.FreeCam.GunRapidFire = false;
				features.FreeCam.GunRapidFireRate = 8f;
				features.FreeCam.RpgCooldownTime = 1f;
				features.FreeCam.RpgRapidFire = false;
				features.FreeCam.RpgRapidFireRate = 4f;
				features.FreeCam.RpgProjectileSpeed = 40f;
				features.FreeCam.RpgAccurate = true;
				features.FreeCam.ShotgunCooldownTime = 0.8f;
				features.FreeCam.ShotgunRapidFire = false;
				features.FreeCam.ShotgunRapidFireRate = 6f;
				features.FreeCam.KnifeThrowRate = 4f;
				features.FreeCam.KnifeThrowPower = 30f;
				features.FreeCam.KnifeDespawnTime = 7f;
			}
			GUILayout.EndHorizontal();
			Styles.EndSection();
			GUILayout.EndScrollView();
		}
	}
	public class GameTab
	{
		private readonly FeatureManager features;

		private int subTab;

		private Vector2 scrollPos;

		private int selectedTaskIndex = -1;

		private Vector2 taskScrollPos;

		private PlayerTaskManager cachedTaskManager;

		private int selectedCarIndex;

		private bool speedSliderAll;

		private Vector2 carScrollPos;

		private static GUIStyle gameSection;

		private static GUIStyle gameTitle;

		private static int gameStyleVersion = -1;

		private string timeMinutesInput = "5";

		private float timeMinutes = 5f;

		private string respawnsPerRoundInput = "3";

		private int respawnsPerRound = 3;

		private string singlePlayerRespawnsInput = "1";

		private int singlePlayerRespawns = 1;

		private static FieldInfo _fCurrentGameTime;

		private static FieldInfo _fLandMineGrenade;

		private static MethodInfo _mMicrowaveExplode;

		private static FieldInfo _fMaxRespawnsPerRound;

		private static FieldInfo _fMaxRespawnsPerRoundSinglePlayer;

		private const float MAX_GAME_MINUTES = 15f;

		public GameTab(FeatureManager features)
		{
			this.features = features;
		}

		public void Draw()
		{
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			if (GUILayout.Button("Game", (subTab == 0) ? Styles.TabActive : Styles.Tab, Array.Empty<GUILayoutOption>()))
			{
				subTab = 0;
			}
			if (GUILayout.Button("World", (subTab == 1) ? Styles.TabActive : Styles.Tab, Array.Empty<GUILayoutOption>()))
			{
				subTab = 1;
			}
			GUILayout.EndHorizontal();
			GUILayout.Space(UiLayout.Space(10f));
			switch (subTab)
			{
			case 0:
				DrawGame();
				break;
			case 1:
				DrawWorld();
				break;
			}
		}

		private void DrawGame()
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			EnsureGameStyles();
			scrollPos = GUILayout.BeginScrollView(scrollPos, Array.Empty<GUILayoutOption>());
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			DrawMapManager();
			GUILayout.Space(UiLayout.Space(10f));
			DrawTasks();
			GUILayout.EndHorizontal();
			DrawRCCars();
			GUILayout.EndScrollView();
		}

		private void DrawMapManager()
		{
			MapManagerFeature mapManager = features.MapManager;
			IReadOnlyList<LevelInstance> maps = mapManager.GetMaps();
			BeginGameSection("Map Manager");
			GUILayout.Label("Next: " + mapManager.GetCurrentNextMapName(), Styles.Box, (GUILayoutOption[])(object)new GUILayoutOption[1] { UiLayout.H(26f) });
			GUILayout.Label(mapManager.GetDisplayedOptionsText(), Styles.MutedLabel, Array.Empty<GUILayoutOption>());
			if (maps.Count == 0)
			{
				GUILayout.Label("No maps found yet. This usually needs the lobby/game progression to be loaded.", Styles.MutedLabel, Array.Empty<GUILayoutOption>());
				if (GUILayout.Button("Refresh Maps", Styles.Button, (GUILayoutOption[])(object)new GUILayoutOption[1] { UiLayout.H(28f) }))
				{
					mapManager.GetMaps();
				}
				EndGameSection();
				return;
			}
			for (int i = 0; i < maps.Count; i++)
			{
				string mapLabel = MapManagerFeature.GetMapLabel(maps[i], i);
				if (GUILayout.Toggle(mapManager.SelectedMapIndex == i, mapLabel, Styles.Selector, (GUILayoutOption[])(object)new GUILayoutOption[1] { UiLayout.H(26f) }))
				{
					mapManager.SelectedMapIndex = i;
				}
			}
			GUILayout.Space(UiLayout.Space(3f));
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			if (GUILayout.Button("Set Next", Styles.Button, (GUILayoutOption[])(object)new GUILayoutOption[1] { UiLayout.H(28f) }))
			{
				mapManager.SetNextMap(mapManager.SelectedMapIndex);
			}
			if (GUILayout.Button("Refresh", Styles.Button, (GUILayoutOption[])(object)new GUILayoutOption[2]
			{
				UiLayout.H(28f),
				UiLayout.W(92f)
			}))
			{
				mapManager.GetMaps();
			}
			GUILayout.EndHorizontal();
			EndGameSection();
		}

		private void DrawTasks()
		{
			//IL_009f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_0124: Unknown result type (might be due to invalid IL or missing references)
			//IL_0129: Unknown result type (might be due to invalid IL or missing references)
			//IL_013a: Unknown result type (might be due to invalid IL or missing references)
			//IL_013f: 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_0199: Unknown result type (might be due to invalid IL or missing references)
			//IL_0152: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bc: 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_0250: Unknown result type (might be due to invalid IL or missing references)
			//IL_0186: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0300: Unknown result type (might be due to invalid IL or missing references)
			BeginGameSection("Tasks");
			PlayerNetworking localPlayer = PlayerHelper.GetLocalPlayer();
			if ((Object)(object)localPlayer == (Object)null)
			{
				GUILayout.Label("Local player not found.", Styles.Label, Array.Empty<GUILayoutOption>());
				EndGameSection();
				return;
			}
			PlayerTaskManager val = FindTaskManager(localPlayer);
			if ((Object)(object)val == (Object)null || val.AllTasks == null || val.AllTasks.Count == 0)
			{
				GUILayout.Label("No tasks loaded yet.", Styles.Label, Array.Empty<GUILayoutOption>());
				if (GUILayout.Button("Refresh", Styles.Button, (GUILayoutOption[])(object)new GUILayoutOption[1] { UiLayout.H(28f) }))
				{
					RefreshTaskCache(localPlayer);
				}
				EndGameSection();
				return;
			}
			ReadOnly<TaskInstance> currentTasks = val.CurrentTasks;
			if (currentTasks.Length == 0)
			{
				GUILayout.Label("No active tasks.", Styles.Label, Array.Empty<GUILayoutOption>());
				EndGameSection();
				return;
			}
			GUILayout.Label($"Active: {currentTasks.Length}", Styles.Label, Array.Empty<GUILayoutOption>());
			taskScrollPos = GUILayout.BeginScrollView(taskScrollPos, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(Mathf.Min(UiLayout.Height(150f), (float)currentTasks.Length * UiLayout.Height(28f))) });
			for (int i = 0; i < currentTasks.Length; i++)
			{
				TaskInstance val2 = currentTasks[i];
				string text = "Unknown Task";
				if (val2.taskIndex >= 0 && val2.taskIndex < val.AllTasks.Count && (Object)(object)val.AllTasks[val2.taskIndex] != (Object)null)
				{
					text = ((Object)val.AllTasks[val2.taskIndex]).name;
				}
				string text2 = ((!val2.wasCompleted) ? $" [{val2.currentCompletionCount}/{val2.maxCompletionCount}]" : " ✓ DONE");
				string text3 = text + text2;
				if (GUILayout.Toggle(selectedTaskIndex == i, text3, Styles.Selector, (GUILayoutOption[])(object)new GUILayoutOption[1] { UiLayout.H(26f) }))
				{
					selectedTaskIndex = i;
				}
			}
			GUILayout.EndScrollView();
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			bool flag = selectedTaskIndex >= 0 && selectedTaskIndex < currentTasks.Length && !currentTasks[selectedTaskIndex].wasCompleted;
			if (GUILayout.Button("Complete", Styles.Button, (GUILayoutOption[])(object)new GUILayoutOption[1] { UiLayout.H(28f) }) && flag)
			{
				ForceCompleteTask(val, selectedTaskIndex);
			}
			if (GUILayout.Button("Refresh", Styles.Button, (GUILayoutOption[])(object)new GUILayoutOption[1] { UiLayout.H(28f) }))
			{
				RefreshTaskCache(localPlayer);
			}
			int num = CountIncomplete(currentTasks);
			if (num > 0 && GUILayout.Button($"All ({num})", Styles.Button, (GUILayoutOption[])(object)new GUILayoutOption[1] { UiLayout.H(28f) }))
			{
				ForceCompleteAllTasks(val, currentTasks);
			}
			GUILayout.EndHorizontal();
			EndGameSection();
		}

		private int CountIncomplete(ReadOnly<TaskInstance> current)
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			int num = 0;
			for (int i = 0; i < current.Length; i++)
			{
				if (!current[i].wasCompleted)
				{
					num++;
				}
			}
			return num;
		}

		private void ForceCompleteAllTasks(PlayerTaskManager tm, ReadOnly<TaskInstance> current)
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			int num = 0;
			for (int i = 0; i < current.Length; i++)
			{
				if (!current[i].wasCompleted)
				{
					ForceCompleteTask(tm, i);
					num++;
				}
			}
			HotDogCheatMod.Log($"Completed {num} tasks");
		}

		private void ForceCompleteTask(PlayerTaskManager tm, int index)
		{
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_0046: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			try
			{
				MethodInfo method = typeof(PlayerTaskManager).GetMethod("DebugCompleteTask", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
				if (method != null)
				{
					method.Invoke(tm, new object[1] { index });
					TaskInstance val = tm.CurrentTasks[index];
					string name = ((Object)tm.AllTasks[val.taskIndex]).name;
					HotDogCheatMod.Log("Force-completed task: " + name);
				}
				else
				{
					HotDogCheatMod.LogError("DebugCompleteTask method not found");
				}
			}
			catch (Exception ex)
			{
				HotDogCheatMod.LogError("Failed to complete task: " + ex.Message);
			}
		}

		private PlayerTaskManager FindTaskManager(PlayerNetworking local)
		{
			if ((Object)(object)cachedTaskManager != (Object)null && (Object)(object)((Component)cachedTaskManager).gameObject != (Object)null)
			{
				return cachedTaskManager;
			}
			cachedTaskManager = ((Component)local).GetComponent<PlayerTaskManager>() ?? ((Component)local).GetComponentInChildren<PlayerTaskManager>(true) ?? ((Component)local).GetComponentInParent<PlayerTaskManager>() ?? Object.FindFirstObjectByType<PlayerTaskManager>();
			return cachedTaskManager;
		}

		private void RefreshTaskCache(PlayerNetworking local)
		{
			cachedTaskManager = null;
			selectedTaskIndex = -1;
			FindTaskManager(local);
		}

		private static void EnsureGameStyles()
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: Expected O, but got Unknown
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0053: 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_006b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Expected O, but got Unknown
			//IL_007a: Expected O, but got Unknown
			if (gameSection == null || gameStyleVersion != UiLayout.StyleVersion)
			{
				gameSection = new GUIStyle(Styles.Section)
				{
					padding = UiLayout.Offset(7, 7, 5, 6, 5, 5, 4, 5),
					margin = UiLayout.Offset(0, 0, 0, 6, 0, 0, 0, 4)
				};
				gameTitle = new GUIStyle(Styles.SectionTitle)
				{
					padding = UiLayout.Offset(4, 4, 0, 2, 3, 3, 0, 1),
					margin = new RectOffset(0, 0, 0, 1)
				};
				gameStyleVersion = UiLayout.StyleVersion;
			}
		}

		private static void BeginGameSection(string title)
		{
			EnsureGameStyles();
			GUILayout.BeginVertical(gameSection, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.ExpandWidth(true) });
			GUILayout.Label(title, gameTitle, Array.Empty<GUILayoutOption>());
		}

		private static void EndGameSection()
		{
			GUILayout.EndVertical();
		}

		private void DrawRCCars()
		{
			//IL_010b: Unknown result type (might be due to invalid IL or missing references)
			//IL_012c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0131: Unknown result type (might be due to invalid IL or missing references)
			List<RCCar> allRCCars = PlayerHelper.GetAllRCCars();
			if (selectedCarIndex >= allRCCars.Count)
			{
				selectedCarIndex = Mathf.Max(0, allRCCars.Count - 1);
			}
			GUILayout.BeginHorizontal((GUILayoutOption[])(object)new GUILayoutOption[2]
			{
				UiLayout.MinH(245f),
				GUILayout.ExpandHeight(true)
			});
			GUILayout.BeginVertical((GUILayoutOption[])(object)new GUILayoutOption[2]
			{
				UiLayout.W(285f),
				GUILayout.ExpandHeight(true)
			});
			BeginGameSection("RC Cars");
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			GUILayout.Label($"Total: {allRCCars.Count}", Styles.Label, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.ExpandWidth(true) });
			if (GUILayout.Button("Spawn", Styles.Button, (GUILayoutOption[])(object)new GUILayoutOption[2]
			{
				UiLayout.W(78f),
				UiLayout.H(26f)
			}))
			{
				SpawnRCCar();
			}
			GUILayout.EndHorizontal();
			if (allRCCars.Count == 0)
			{
				GUILayout.Label("No RC Cars in scene", Styles.MutedLabel, Array.Empty<GUILayoutOption>());
			}
			else
			{
				carScrollPos = GUILayout.BeginScrollView(carScrollPos, (GUILayoutOption[])(object)new GUILayoutOption[2]
				{
					UiLayout.MinH(105f),
					GUILayout.ExpandHeight(true)
				});
				for (int i = 0; i < allRCCars.Count; i++)
				{
					string arg = (((Object)(object)((PlayerSittable)allRCCars[i]).CurrentSitter != (Object)null) ? (" - " + PlayerHelper.GetPlayerName(((PlayerSittable)allRCCars[i]).CurrentSitter)) : " - Empty");
					if (GUILayout.Toggle(selectedCarIndex == i, $"#{i + 1}{arg}", Styles.Selector, (GUILayoutOption[])(object)new GUILayoutOption[1] { UiLayout.H(26f) }))
					{
						selectedCarIndex = i;
					}
				}
				GUILayout.EndScrollView();
			}
			EndGameSection();
			BeginGameSection("Mass");
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			if (GUILayout.Button("TP to Me", Styles.Button, (GUILayoutOption[])(object)new GUILayoutOption[1] { UiLayout.H(28f) }))
			{
				TeleportAllCarsToMe(allRCCars);
			}
			if (GUILayout.Button("Flip All", Styles.Button, (GUILayoutOption[])(object)new GUILayoutOption[1] { UiLayout.H(28f) }))
			{
				FlipAllCars(allRCCars);
			}
			GUILayout.EndHorizontal();
			speedSliderAll = GUILayout.Toggle(speedSliderAll, "speed-slider-all", Styles.Toggle, (GUILayoutOption[])(object)new GUILayoutOption[1] { UiLayout.H(26f) });
			if (GUILayout.Button("Delete All", Styles.Button, (GUILayoutOption[])(object)new GUILayoutOption[1] { UiLayout.H(28f) }))
			{
				RCCarActions.DeleteAll();
			}
			EndGameSection();
			GUILayout.EndVertical();
			GUILayout.Space(UiLayout.Space(10f));
			GUILayout.BeginVertical((GUILayoutOption[])(object)new GUILayoutOption[2]
			{
				GUILayout.ExpandWidth(true),
				GUILayout.ExpandHeight(true)
			});
			if (selectedCarIndex < allRCCars.Count)
			{
				RCCar val = allRCCars[selectedCarIndex];
				BeginGameSection($"Selected: RC Car #{selectedCarIndex + 1}");
				GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
				if (GUILayout.Button("TP to Me", Styles.Button, (GUILayoutOption[])(object)new GUILayoutOption[1] { UiLayout.H(28f) }))
				{
					RCCarActions.TeleportToMe(val);
				}
				if (GUILayout.Button("TP to Car", Styles.Button, (GUILayoutOption[])(object)new GUILayoutOption[1] { UiLayout.H(28f) }))
				{
					RCCarActions.TeleportMeTo(val);
				}
				GUILayout.EndHorizontal();
				if (GUILayout.Button("Flip", Styles.Button, (GUILayoutOption[])(object)new GUILayoutOption[1] { UiLayout.H(28f) }))
				{
					RCCarActions.Flip(val);
				}
				GUILayout.Space(UiLayout.Space(3f));
				float speedMultiplier = RCCarActions.GetSpeedMultiplier(val);
				GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
				GUILayout.Label($"Speed: {speedMultiplier:F1}x", Styles.Label, (GUILayoutOption[])(object)new GUILayoutOption[1] { UiLayout.W(95f) });
				float num = GUILayout.HorizontalSlider(speedMultiplier, 1f, 10f, Styles.Slider, Styles.SliderThumb, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.ExpandWidth(true) });
				if (GUILayout.Button("1x", Styles.Button, (GUILayoutOption[])(object)new GUILayoutOption[2]
				{
					UiLayout.W(42f),
					UiLayout.H(26f)
				}))
				{
					num = 1f;
				}
				GUILayout.EndHorizontal();
				if (!Mathf.Approximately(num, speedMultiplier))
				{
					if (speedSliderAll)
					{
						SetSpeedMultiplierForAll(allRCCars, num);
					}
					else
					{
						RCCarActions.SetSpeedMultiplier(val, num);
					}
				}
				GUILayout.Space(UiLayout.Space(3f));
				if ((Object)(object)((PlayerSittable)val).CurrentSitter != (Object)null)
				{
					if (GUILayout.Button("Eject Driver", Styles.Button, (GUILayoutOption[])(object)new GUILayoutOption[1] { UiLayout.H(28f) }))
					{
						RCCarActions.EjectDriver(val);
					}
					else
					{
						GUILayout.Label("Driver: Empty", Styles.MutedLabel, Array.Empty<GUILayoutOption>());
					}
				}
				if (GUILayout.Button("Delete Car", Styles.Button, (GUILayoutOption[])(object)new GUILayoutOption[1] { UiLayout.H(28f) }))
				{
					RCCarActions.Delete(val);
				}
				EndGameSection();
			}
			else
			{
				BeginGameSection("Selected");
				GUILayout.Label("Spawn or select an RC car.", Styles.MutedLabel, Array.Empty<GUILayoutOption>());
				EndGameSection();
			}
			GUILayout.EndVertical();
			GUILayout.EndHorizontal();
		}

		private void SpawnRCCar()
		{
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0076: 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_0080: 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_0083: Unknown result type (might be due to invalid IL or missing references)
			try
			{
				PlayerNetworking localPlayer = PlayerHelper.GetLocalPlayer();
				if ((Object)(object)localPlayer == (Object)null)
				{
					return;
				}
				GameObject val = null;
				RCCar[] array = Resources.FindObjectsOfTypeAll<RCCar>();
				foreach (RCCar val2 in array)
				{
					if ((Object)(object)val2 != (Object)null)
					{
						val = ((Component)val2).gameObject;
						break;
					}
				}
				if ((Object)(object)val == (Object)null)
				{
					HotDogCheatMod.LogError("No RC Car prefab found");
					return;
				}
				Vector3 val3 = ((GameEntityBase)localPlayer).Position + ((Component)localPlayer).transform.forward * 3f;
				NetworkObject componentInChildren = Object.Instantiate<GameObject>(val, val3, Quaternion.identity).GetComponentInChildren<NetworkObject>();
				if ((Object)(object)componentInChildren != (Object)null)
				{
					componentInChildren.Spawn(false);
				}
				HotDogCheatMod.Log("Spawned RC Car");
			}
			catch (Exception ex)
			{
				HotDogCheatMod.LogError("RC Spawn failed: " + ex.Message);
			}
		}

		private static void TeleportAllCarsToMe(List<RCCar> cars)
		{
			foreach (RCCar car in cars)
			{
				RCCarActions.TeleportToMe(car);
			}
		}

		private static void FlipAllCars(List<RCCar> cars)
		{
			foreach (RCCar car in cars)
			{
				RCCarActions.Flip(car);
			}
		}

		private static void SetSpeedMultiplierForAll(List<RCCar> cars, float multiplier)
		{
			foreach (RCCar car in cars)
			{
				RCCarActions.SetSpeedMultiplier(car, multiplier);
			}
		}

		private void DrawWorld()
		{
			//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e2: Unknown result type (might be due to invalid IL or missing references)
			EnsureGameStyles();
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			GUILayout.BeginVertical((GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.ExpandWidth(true) });
			BeginGameSection("Doors & Explosives");
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			if (GUILayout.Button("Open Doors", Styles.Button, (GUILayoutOption[])(object)new GUILayoutOption[1] { UiLayout.H(28f) }))
			{
				int num = 0;
				HashSet<Type> hashSet = new HashSet<Type>
				{
					(Type)30,
					(Type)31,
					(Type)26,
					(Type)27,
					(Type)28
				};
				OpenableInteractable[] array = Object.FindObjectsByType<OpenableInteractable>((FindObjectsSortMode)0);
				foreach (OpenableInteractable val in array)
				{
					if (!((Object)(object)val == (Object)null) && !val.Unhinged && !hashSet.Contains(((InteractableObject)val).InteractType) && (int)val.State != 0)
					{
						try
						{
							val.OpenRpc();
							num++;
						}
						catch
						{
						}
					}
				}
				GarageDoor[] array2 = Object.FindObjectsByType<GarageDoor>((FindObjectsSortMode)0);
				foreach (GarageDoor val2 in array2)
				{
					if (!((Object)(object)val2 == (Object)null))
					{
						try
						{
							val2.Open();
							num++;
						}
						catch
						{
						}
					}
				}
				HotDogCheatMod.Log($"Opened {num} doors/windows");
			}
			if (GUILayout.Button("Close Doors", Styles.Button, (GUILayoutOption[])(object)new GUILayoutOption[1] { UiLayout.H(28f) }))
			{
				int num2 = 0;
				HashSet<Type> hashSet2 = new HashSet<Type>
				{
					(Type)30,
					(Type)31,
					(Type)26,
					(Type)27,
					(Type)28
				};
				OpenableInteractable[] array = Object.FindObjectsByType<OpenableInteractable>((FindObjectsSortMode)0);
				foreach (OpenableInteractable val3 in array)
				{
					if (!((Object)(object)val3 == (Object)null) && !val3.Unhinged && !hashSet2.Contains(((InteractableObject)val3).InteractType) && (int)val3.State == 0)
					{
						try
						{
							val3.ToggleRpc();
							num2++;
						}
						catch
						{
						}
					}
				}
				HotDogCheatMod.Log($"Closed {num2} doors/windows");
			}
			GUILayout.EndHorizontal();
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			if (GUILayout.Button("Explode Grenades", Styles.Button, (GUILayoutOption[])(object)new GUILayoutOption[1] { UiLayout.H(28f) }))
			{
				int num3 = 0;
				Grenade[] array3 = Object.FindObjectsByType<Grenade>((FindObjectsSortMode)0);
				foreach (Grenade val4 in array3)
				{
					if (!((Object)(object)val4 == (Object)null))
					{
						try
						{
							val4.InstantExplodeRpc();
							num3++;
						}
						catch
						{
						}
					}
				}
				HotDogCheatMod.Log($"Exploded {num3} grenades");
			}
			if (GUILayout.Button("Explode Landmines", Styles.Button, (GUILayoutOption[])(object)new GUILayoutOption[1] { UiLayout.H(28f) }))
			{
				int num4 = 0;
				if (_fLandMineGrenade == null)
				{
					_fLandMineGrenade = typeof(LandMineTrigger).GetField("grenade", BindingFlags.Instance | BindingFlags.NonPublic);
				}
				LandMineTrigger[] array4 = Object.FindObjectsByType<LandMineTrigger>((FindObjectsSortMode)0);
				foreach (LandMineTrigger val5 in array4)
				{
					if ((Object)(object)val5 == (Object)null)
					{
						continue;
					}
					try
					{
						object? obj5 = _fLandMineGrenade?.GetValue(val5);
						Grenade val6 = (Grenade)((obj5 is Grenade) ? obj5 : null);
						if ((Object)(object)val6 != (Object)null)
						{
							val6.InstantExplodeRpc();
							num4++;
						}
					}
					catch
					{
					}
				}
				HotDogCheatMod.Log($"Exploded {num4} landmines");
			}
			GUILayout.EndHorizontal();
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			if (GUILayout.Button("Explode Microwaves", Styles.Button, (GUILayoutOption[])(object)new GUILayoutOption[1] { UiLayout.H(28f) }))
			{
				int num5 = 0;
				if (_mMicrowaveExplode == null)
				{
					_mMicrowaveExplode = typeof(Microwave).GetMethod("Explode", BindingFlags.Instance | BindingFlags.NonPublic);
				}
				Microwave[] array5 = Object.FindObjectsByType<Microwave>((FindObjectsSortMode)0);
				foreach (Microwave val7 in array5)
				{
					if (!((Object)(object)val7 == (Object)null))
					{
						try
						{
							_mMicrowaveExplode?.Invoke(val7, null);
							num5++;
						}
						catch
						{
						}
					}
				}
				HotDogCheatMod.Log($"Exploded {num5} microwaves");
			}
			if (GUILayout.Button("Explode All 3", Styles.Button, (GUILayoutOption[])(object)new GUILayoutOption[1] { UiLayout.H(28f) }))
			{
				int num6 = 0;
				int num7 = 0;
				int num8 = 0;
				Grenade[] array3 = Object.FindObjectsByType<Grenade>((FindObjectsSortMode)0);
				foreach (Grenade val8 in array3)
				{
					if (!((Object)(object)val8 == (Object)null))
					{
						try
						{
							val8.InstantExplodeRpc();
							num6++;
						}
						catch
						{
						}
					}
				}
				if (_fLandMineGrenade == null)
				{
					_fLandMineGrenade = typeof(LandMineTrigger).GetField("grenade", BindingFlags.Instance | BindingFlags.NonPublic);
				}
				LandMineTrigger[] array4 = Object.FindObjectsByType<LandMineTrigger>((FindObjectsSortMode)0);
				foreach (LandMineTrigger val9 in array4)
				{
					if ((Object)(object)val9 == (Object)null)
					{
						continue;
					}
					try
					{
						object? obj9 = _fLandMineGrenade?.GetValue(val9);
						Grenade val10 = (Grenade)((obj9 is Grenade) ? obj9 : null);
						if ((Object)(object)val10 != (Object)null)
						{
							val10.InstantExplodeRpc();
							num7++;
						}
					}
					catch
					{
					}
				}
				if (_mMicrowaveExplode == null)
				{
					_mMicrowaveExplode = typeof(Microwave).GetMethod("Explode", BindingFlags.Instance | BindingFlags.NonPublic);
				}
				Microwave[] array5 = Object.FindObjectsByType<Microwave>((FindObjectsSortMode)0);
				foreach (Microwave val11 in array5)
				{
					if (!((Object)(object)val11 == (Object)null))
					{
						try
						{
							_mMicrowaveExplode?.Invoke(val11, null);
							num8++;
						}
						catch
						{
						}
					}
				}
				HotDogCheatMod.Log($"Exploded All 3 -> {num6} grenades + {num7} landmines + {num8} microwaves");
			}
			GUILayout.EndHorizontal();
			EndGameSection();
			BeginGameSection("Game Timer");
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			GUILayout.Label("Remaining (1-15 min):", Styles.Label, (GUILayoutOption[])(object)new GUILayoutOption[1] { UiLayout.W(140f) });
			string text = GUILayout.TextField(timeMinutesInput, Styles.TextField, (GUILayoutOption[])(object)new GUILayoutOption[1] { UiLayout.W(45f) });
			if (text != timeMinutesInput)
			{
				timeMinutesInput = Styles.FilterNumeric(text);
				if (float.TryParse(timeMinutesInput, out var result) && result > 0f)
				{
					timeMinutes = Mathf.Clamp(result, 1f, 15f);
				}
			}
			if (GUILayout.Button("Set", Styles.Button, (GUILayoutOption[])(object)new GUILayoutOption[2]
			{
				UiLayout.W(40f),
				UiLayout.H(28f)
			}))
			{
				SetGameTimer(timeMinutes);
			}
			GUILayout.EndHorizontal();
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			if (GUILayout.Button("1m", Styles.Button, (GUILayoutOption[])(object)new GUILayoutOption[1] { UiLayout.H(26f) }))
			{
				SetGameTimer(1f);
			}
			if (GUILayout.Button("5m", Styles.Button, (GUILayoutOption[])(object)new GUILayoutOption[1] { UiLayout.H(26f) }))
			{
				SetGameTimer(5f);
			}
			if (GUILayout.Button("10m", Styles.Button, (GUILayoutOption[])(object)new GUILayoutOption[1] { UiLayout.H(26f) }))
			{
				SetGameTimer(10f);
			}
			if (GUILayout.Button("15m", Styles.Button, (GUILayoutOption[])(object)new GUILayoutOption[1] { UiLayout.H(26f) }))
			{
				SetGameTimer(15f);
			}
			GUILayout.EndHorizontal();
			EndGameSection();
			GUILayout.EndVertical();
			GUILayout.Space(UiLayout.Space(10f));
			GUILayout.BeginVertical((GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.ExpandWidth(true) });
			BeginGameSection("Gnomeium");
			GUILayout.Label("Multiplies gnomeium earned from tasks at round end.", Styles.Label, Array.Empty<GUILayoutOption>());
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			GUILayout.Label($"Multiplier: {features.GnomeiumMultiplier:F1}x", Styles.Label, (GUILayoutOption[])(object)new GUILayoutOption[1] { UiLayout.W(100f) });
			features.GnomeiumMultiplier = GUILayout.HorizontalSlider(features.GnomeiumMultiplier, 1f, 20f, Styles.Slider, Styles.SliderThumb, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.ExpandWidth(true) });
			GUILayout.EndHorizontal();
			if (!Mathf.Approximately(features.GnomeiumMultiplier, 1f))
			{
				GUILayout.Label($"Active: {features.GnomeiumMultiplier:F0}x more gnomeium per task", Styles.MutedLabel, Array.Empty<GUILayoutOption>());
			}
			EndGameSection();
			BeginGameSection("Respawns");
			GUILayout.Label("Set respawn limits per round.", Styles.Label, Array.Empty<GUILayoutOption>());
			GUILayout.Space(UiLayout.Space(3f));
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			GUILayout.Label("Per Round:", Styles.Label, (GUILayoutOption[])(object)new GUILayoutOption[1] { UiLayout.W(80f) });
			string text2 = GUILayout.TextField(respawnsPerRoundInput, Styles.TextField, (GUILayoutOption[])(object)new GUILayoutOption[1] { UiLayout.W(40f) });
			if (text2 != respawnsPerRoundInput)
			{
				respawnsPerRoundInput = Styles.FilterNumeric(text2);
				if (int.TryParse(respawnsPerRoundInput, out var result2) && result2 >= 1 && result2 <= 99)
				{
					respawnsPerRound = result2;
				}
			}
			if (GUILayout.Button("Set", Styles.Button, (GUILayoutOption[])(object)new GUILayoutOption[2]
			{
				UiLayout.W(40f),
				UiLayout.H(26f)
			}))
			{
				SetRespawnsPerRound(respawnsPerRound);
			}
			GUILayout.EndHorizontal();
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			GUILayout.Label("Solo:", Styles.Label, (GUILayoutOption[])(object)new GUILayoutOption[1] { UiLayout.W(80f) });
			string text3 = GUILayout.TextField(singlePlayerRespawnsInput, Styles.TextField, (GUILayoutOption[])(object)new GUILayoutOption[1] { UiLayout.W(40f) });
			if (text3 != singlePlayerRespawnsInput)
			{
				singlePlayerRespawnsInput = Styles.FilterNumeric(text3);
				if (int.TryParse(singlePlayerRespawnsInput, out var result3) && result3 >= 1 && result3 <= 99)
				{
					singlePlayerRespawns = result3;
				}
			}
			if (GUILayout.Button("Set", Styles.Button, (GUILayoutOption[])(object)new GUILayoutOption[2]
			{
				UiLayout.W(40f),
				UiLayout.H(26f)
			}))
			{
				SetSinglePlayerRespawns(singlePlayerRespawns);
			}
			GUILayout.EndHorizontal();
			EndGameSection();
			BeginGameSection("Karma");
			GameProgressionManager instance = GameProgressionManager.Instance;
			bool flag = (Object)(object)NetworkManager.Singleton != (Object)null && NetworkManager.Singleton.IsServer;
			bool flag2 = flag && (Object)(object)instance != (Object)null;
			float num9 = (((Object)(object)instance != (Object)null) ? instance.Karma : 0f);
			float num10 = Mathf.Round(num9 * 100f) / 100f;
			GUILayout.Label($"Current: {num9:F2} / 1.00", Styles.Label, Array.Empty<GUILayoutOption>());
			GUI.