Decompiled source of StatsCounter v1.1.4

plugins/StatsCounter/StatsCounter.dll

Decompiled 11 months ago
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using CodeStage.AntiCheat.ObscuredTypes;
using HarmonyLib;
using LLBML;
using LLBML.Players;
using LLBML.Utils;
using LLGUI;
using LLHandlers;
using LLScreen;
using StatsCounter.Platforms;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyTitle("StatsCounter (fr.glomzubuk.plugins.llb.statscounter)")]
[assembly: AssemblyProduct("StatsCounter")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.1.4.0")]
[module: UnverifiableCode]
namespace StatsCounter
{
	[BepInPlugin("fr.glomzubuk.plugins.llb.statscounter", "StatsCounter", "1.1.4")]
	[BepInProcess("LLBlaze.exe")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	public class StatsCounter : BaseUnityPlugin
	{
		public static ConfigEntry<bool> displayBest;

		public static ConfigEntry<long> currentBestWinStreak;

		private LLButton[] winStreakButtons = (LLButton[])(object)new LLButton[4];

		private string[] winStreakValue = new string[4];

		public static StatsCounter Instance { get; private set; }

		public static ManualLogSource Log { get; private set; }

		private void Awake()
		{
			//IL_0067: Unknown result type (might be due to invalid IL or missing references)
			//IL_0071: Expected O, but got Unknown
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			Instance = this;
			Log = ((BaseUnityPlugin)this).Logger;
			((BaseUnityPlugin)this).Logger.LogInfo((object)"Hello, world!");
			displayBest = ((BaseUnityPlugin)this).Config.Bind<bool>("Toggles", "DisplayBest", true, "Display the best streak in the main menu");
			currentBestWinStreak = ((BaseUnityPlugin)this).Config.Bind<long>("Toggles", "CurrentBestWinStreak", 0L, new ConfigDescription("Internal best counter", (AcceptableValueBase)null, new object[1] { "modmenu_hidden" }));
			new Harmony("fr.glomzubuk.plugins.llb.statscounter").PatchAll(typeof(DiplayCounterInMainMenu));
		}

		private void Start()
		{
			ModDependenciesUtils.RegisterToModMenu(((BaseUnityPlugin)this).Info, (List<string>)null);
		}

		private void Update()
		{
			ScreenBase obj = ScreenApi.CurrentScreens[0];
			ScreenMenu val = (ScreenMenu)(object)((obj is ScreenMenu) ? obj : null);
			if (val != null && displayBest.Value && ((Component)val.lbVersion.transform).gameObject.activeInHierarchy)
			{
				((Component)val.lbVersion.transform).gameObject.SetActive(false);
			}
			ScreenBase obj2 = ScreenApi.CurrentScreens[0];
			ScreenPlayers val2 = (ScreenPlayers)(object)((obj2 is ScreenPlayers) ? obj2 : null);
			if (val2 != null)
			{
				UpdateWinStreakButtons(val2);
				return;
			}
			for (int i = 0; i < winStreakButtons.Length; i++)
			{
				if ((Object)(object)winStreakButtons[i] != (Object)null)
				{
					Object.Destroy((Object)(object)winStreakButtons[i]);
					winStreakButtons[i] = null;
				}
			}
		}

		public void UpdateWinStreakButtons(ScreenPlayers screenPlayers)
		{
			//IL_0092: Unknown result type (might be due to invalid IL or missing references)
			//IL_00af: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
			for (int i = 0; i < screenPlayers.playerSelections.Length; i++)
			{
				Player player = Player.GetPlayer(i);
				if (((player != null) ? player.peer : null) != null && (Object)(object)winStreakButtons[player.nr] == (Object)null)
				{
					LLButton btPlayerName = screenPlayers.playerSelections[i].btPlayerName;
					winStreakButtons[player.nr] = Object.Instantiate<LLButton>(btPlayerName);
					((Component)winStreakButtons[player.nr]).transform.SetParent(((Component)btPlayerName).transform.parent);
					((Component)winStreakButtons[player.nr]).transform.localPosition = ((Component)btPlayerName).transform.localPosition;
					Transform transform = ((Component)winStreakButtons[player.nr]).transform;
					transform.localPosition += new Vector3(0f, -54f, 0f);
					((Component)winStreakButtons[player.nr]).transform.localScale = new Vector3(1f, 1f, 1f);
					string text = "-";
					Player localPlayer = Player.GetLocalPlayer();
					int num = ((localPlayer == null) ? null : localPlayer.peer?.playerNr) ?? (-1);
					((BaseUnityPlugin)this).Logger.LogDebug((object)$" player nr: {player.nr} | lpnr: {num}");
					text = ((player.nr != num) ? "-" : (GetCurrentWinStreak()?.ToString() ?? "-"));
					winStreakButtons[player.nr].SetText("Current streak: " + text, -1, false);
				}
			}
		}

		public static void Handle_StatsInitialized(bool success)
		{
			Log.LogDebug((object)("Updating Stats? " + success));
			if (success)
			{
				ScreenBase obj = ScreenApi.CurrentScreens[0];
				ScreenMenu val = (ScreenMenu)(object)((obj is ScreenMenu) ? obj : null);
				if (val != null)
				{
					val.UpdatePlayerInfo();
				}
			}
		}

		public static void UpdateBestStreak(long curStreak)
		{
			if (curStreak > currentBestWinStreak.Value)
			{
				currentBestWinStreak.Value = curStreak;
			}
		}

		public static long? GetCurrentWinStreak()
		{
			long? result = null;
			if (Stats.Initialized)
			{
				long statValue = Stats.Instance.GetStatValue(StatID.currentVictoryStreak);
				long statValue2 = Stats.Instance.GetStatValue(StatID.lossStreak);
				result = statValue - statValue2;
			}
			if (result.HasValue)
			{
				UpdateBestStreak(result.Value);
			}
			return result;
		}

		public static long? GetUserCurrentWinStreak(string userID)
		{
			long? result = null;
			Stats instance = Stats.Instance;
			if (Stats.Initialized && (EnumWrapper<BCODKLJGFND>)instance.state == (EnumWrapper<BCODKLJGFND>)Stats.State.ready)
			{
				if (!instance.opponentsStatsCache.ContainsKey(userID) && (EnumWrapper<BCODKLJGFND>)instance.state == (EnumWrapper<BCODKLJGFND>)Stats.State.ready)
				{
					instance.DownloadStatsForOpponent(userID);
					return result;
				}
				long statValueForUser = instance.GetStatValueForUser(userID, StatID.currentVictoryStreak);
				long statValueForUser2 = instance.GetStatValueForUser(userID, StatID.lossStreak);
				result = statValueForUser - statValueForUser2;
			}
			return result;
		}

		public static long? GetHighestWinStreak()
		{
			if (Stats.Initialized)
			{
				Stats.Instance.GetStatValue(StatID.highestVictoryStreak);
			}
			return null;
		}
	}
	internal static class PluginInfos
	{
		public const string PLUGIN_NAME = "StatsCounter";

		public const string PLUGIN_ID = "fr.glomzubuk.plugins.llb.statscounter";

		public const string PLUGIN_VERSION = "1.1.4";
	}
	public static class DiplayCounterInMainMenu
	{
		[HarmonyPatch(typeof(ScreenMenu), "UpdatePlayerInfo")]
		[HarmonyPostfix]
		public static void OnOpen_Postfix(ScreenMenu __instance)
		{
			string text = TextHandler.Get("MAIN_TXT_MATCHES", new string[1] { BDCINPKBMBL.matchesPlayed.ToString() }) + "\n";
			text = text + "Win streak: " + (StatsCounter.GetCurrentWinStreak()?.ToString() ?? "-") + "\n";
			text = ((!StatsCounter.displayBest.Value) ? (text + TextHandler.Get("MAIN_TXT_LEVEL", new string[1] { __instance.playerLevel })) : (text + $"Best streak: {StatsCounter.currentBestWinStreak.Value}\n"));
			TextHandler.SetText(__instance.lbLevel, text);
		}

		[HarmonyPatch(typeof(KKMGLMJABKH), "AOBECLEDAPM")]
		[HarmonyPostfix]
		public static void Init_Postfix(KKMGLMJABKH __instance)
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Expected O, but got Unknown
			((KIIIINKJKNI)__instance).LHGHOTOTO.GAEOJIGNCMG(new ENDMEPFPLKN(StatsCounter.Handle_StatsInitialized));
		}
	}
}
namespace StatsCounter.Platforms
{
	public static class Platform
	{
		public static PlatformBase current => CGLLJHHAJAK.GIGAKBJGFDI;

		public static Stats Stats => CGLLJHHAJAK.MDEJKGAIAGJ();

		public static Ranking Ranking => CGLLJHHAJAK.CNEINEKEHMF();
	}
	public class PlatformBase
	{
		private readonly KIIIINKJKNI _platformBase;

		public PlatformBase(KIIIINKJKNI pb)
		{
			_platformBase = pb;
		}

		public KIIIINKJKNI Unwrap()
		{
			return _platformBase;
		}

		public override bool Equals(object obj)
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Expected O, but got Unknown
			if (obj is KIIIINKJKNI || obj is PlatformBase)
			{
				return object.Equals((object?)(KIIIINKJKNI)obj, (KIIIINKJKNI)this);
			}
			return false;
		}

		public override int GetHashCode()
		{
			return ((object)_platformBase).GetHashCode();
		}

		public override string ToString()
		{
			return ((object)_platformBase).ToString();
		}

		public static implicit operator KIIIINKJKNI(PlatformBase pb)
		{
			return pb._platformBase;
		}

		public static implicit operator PlatformBase(KIIIINKJKNI pb)
		{
			return new PlatformBase(pb);
		}
	}
	public class Ranking
	{
		private readonly IJJKCHBCHOG _ranking;

		public Ranking(IJJKCHBCHOG r)
		{
			_ranking = r;
		}

		public IJJKCHBCHOG Unwrap()
		{
			return _ranking;
		}

		public override bool Equals(object obj)
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Expected O, but got Unknown
			if (obj is IJJKCHBCHOG || obj is Ranking)
			{
				return object.Equals((object?)(IJJKCHBCHOG)obj, (IJJKCHBCHOG)this);
			}
			return false;
		}

		public override int GetHashCode()
		{
			return ((object)_ranking).GetHashCode();
		}

		public override string ToString()
		{
			return ((object)_ranking).ToString();
		}

		public static implicit operator IJJKCHBCHOG(Ranking r)
		{
			return r._ranking;
		}

		public static implicit operator Ranking(IJJKCHBCHOG r)
		{
			return new Ranking(r);
		}
	}
	public class Stats
	{
		public class State : EnumWrapper<BCODKLJGFND>
		{
			public enum Enum
			{
				none = -1,
				notInitialized,
				initializing,
				ready,
				pullingStat,
				pushingStat
			}

			public enum Enum_Mapping
			{
				none = -1,
				notInitialized,
				initializing,
				ready,
				pullingStat,
				pushingStat
			}

			public static readonly State none = Enum.none;

			public static readonly State notInitialized = Enum.notInitialized;

			public static readonly State initializing = Enum.initializing;

			public static readonly State ready = Enum.ready;

			public static readonly State pullingStat = Enum.pullingStat;

			public static readonly State pushingStat = Enum.pushingStat;

			private State(int id)
				: base(id)
			{
			}

			private State(BCODKLJGFND e)
				: base((int)e)
			{
			}//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Expected I4, but got Unknown


			public override string ToString()
			{
				Enum id = (Enum)base.id;
				return id.ToString();
			}

			public static implicit operator BCODKLJGFND(State ew)
			{
				return (BCODKLJGFND)((EnumWrapper<BCODKLJGFND>)ew).id;
			}

			public static implicit operator State(BCODKLJGFND val)
			{
				//IL_0000: Unknown result type (might be due to invalid IL or missing references)
				return new State(val);
			}

			public static implicit operator State(int id)
			{
				return new State(id);
			}

			public static implicit operator State(Enum val)
			{
				return new State((int)val);
			}

			public static implicit operator Enum(State ew)
			{
				return (Enum)((EnumWrapper<BCODKLJGFND>)ew).id;
			}
		}

		private readonly KKAHBLGMGGI _stats;

		public KKAHBLGMGGI _ => Unwrap();

		public static Stats Instance => CGLLJHHAJAK.MDEJKGAIAGJ();

		public bool IsInitialized => _stats.EOPAPPANNDE();

		public Dictionary<string, Dictionary<AKFAKLAWWAE, AKGAKGALALR>> opponentsStatsCache => _stats.CBCDPJJKJHJ;

		public State state => _stats.ACGGIKGFMJP;

		public static bool Initialized => Instance?.IsInitialized ?? false;

		public Stats(KKAHBLGMGGI s)
		{
			_stats = s;
		}

		public KKAHBLGMGGI Unwrap()
		{
			return _stats;
		}

		public override bool Equals(object obj)
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Expected O, but got Unknown
			if (obj is KKAHBLGMGGI || obj is Stats)
			{
				return object.Equals((object?)(KKAHBLGMGGI)obj, (KKAHBLGMGGI)this);
			}
			return false;
		}

		public override int GetHashCode()
		{
			return ((object)_stats).GetHashCode();
		}

		public override string ToString()
		{
			return ((object)_stats).ToString();
		}

		public static implicit operator KKAHBLGMGGI(Stats s)
		{
			return s._stats;
		}

		public static implicit operator Stats(KKAHBLGMGGI s)
		{
			return new Stats(s);
		}

		public void ClearCacheStatsForOpponent(string userID)
		{
			_stats.ALOJAFLALKM(ObscuredString.op_Implicit(userID));
		}

		public void DownloadStatsForOpponent(string userID)
		{
			_stats.GJGPFIOMNJN(ObscuredString.op_Implicit(userID));
		}

		public long GetStatValue(StatID stat)
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			return _stats.LHMKKKLJOHD((AKFAKLAWWAE)stat);
		}

		public long GetStatValueForUser(string userID, StatID stat)
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			return _stats.EBGKNMGMPEO(ObscuredString.op_Implicit(userID), (AKFAKLAWWAE)stat);
		}
	}
	public class StatID : EnumWrapper<AKFAKLAWWAE>
	{
		public enum Enum
		{
			none = -1,
			numMatchesPlayed,
			numMatchesWon,
			numMatchesLost,
			currentVictoryStreak,
			highestVictoryStreak,
			numMatchesPlayed_KID,
			numMatchesPlayed_ROBOT,
			numMatchesPlayed_CANDY,
			numMatchesPlayed_BOOM,
			numMatchesPlayed_CROC,
			numMatchesPlayed_PONG,
			numMatchesPlayed_BOSS,
			numMatchesPlayed_COP,
			numMatchesPlayed_ELECTRO,
			numMatchesPlayed_SKATE,
			numMatchesPlayed_RANDOM,
			numMatchesWon_KID,
			numMatchesWon_ROBOT,
			numMatchesWon_CANDY,
			numMatchesWon_BOOM,
			numMatchesWon_CROC,
			numMatchesWon_PONG,
			numMatchesWon_BOSS,
			numMatchesWon_COP,
			numMatchesWon_ELECTRO,
			numMatchesWon_SKATE,
			numMatchesWon_RANDOM,
			numMatchesLost_KID,
			numMatchesLost_ROBOT,
			numMatchesLost_CANDY,
			numMatchesLost_BOOM,
			numMatchesLost_CROC,
			numMatchesLost_PONG,
			numMatchesLost_BOSS,
			numMatchesLost_COP,
			numMatchesLost_ELECTRO,
			numMatchesLost_SKATE,
			numMatchesLost_RANDOM,
			lastMatchCompleted,
			numOfDisconnects,
			global_NumMatchesPlayed,
			global_NumMatchesPlayed_KID,
			global_NumMatchesPlayed_ROBOT,
			global_NumMatchesPlayed_CANDY,
			global_NumMatchesPlayed_BOOM,
			global_NumMatchesPlayed_CROC,
			global_NumMatchesPlayed_PONG,
			global_NumMatchesPlayed_BOSS,
			global_NumMatchesPlayed_COP,
			global_NumMatchesPlayed_ELECTRO,
			global_NumMatchesPlayed_SKATE,
			global_NumMatchesPlayed_RANDOM,
			global_NumMatchesWon_KID,
			global_NumMatchesWon_ROBOT,
			global_NumMatchesWon_CANDY,
			global_NumMatchesWon_BOOM,
			global_NumMatchesWon_CROC,
			global_NumMatchesWon_PONG,
			global_NumMatchesWon_BOSS,
			global_NumMatchesWon_COP,
			global_NumMatchesWon_ELECTRO,
			global_NumMatchesWon_SKATE,
			global_NumMatchesLost_KID,
			global_NumMatchesLost_ROBOT,
			global_NumMatchesLost_CANDY,
			global_NumMatchesLost_BOOM,
			global_NumMatchesLost_CROC,
			global_NumMatchesLost_PONG,
			global_NumMatchesLost_BOSS,
			global_NumMatchesLost_COP,
			global_NumMatchesLost_ELECTRO,
			global_NumMatchesLost_SKATE,
			lossStreak,
			numMatchesPlayed_GRAF,
			numMatchesWon_GRAF,
			numMatchesLost_GRAF,
			global_NumMatchesPlayed_GRAF,
			global_NumMatchesWon_GRAF,
			global_NumMatchesLost_GRAF,
			numMatchesPlayed_BAG,
			numMatchesWon_BAG,
			numMatchesLost_BAG,
			global_NumMatchesPlayed_BAG,
			global_NumMatchesWon_BAG,
			global_NumMatchesLost_BAG,
			max
		}

		public enum Enum_Mapping
		{
			none = -1,
			numMatchesPlayed,
			numMatchesWon,
			numMatchesLost,
			currentVictoryStreak,
			highestVictoryStreak,
			numMatchesPlayed_KID,
			numMatchesPlayed_ROBOT,
			numMatchesPlayed_CANDY,
			numMatchesPlayed_BOOM,
			numMatchesPlayed_CROC,
			numMatchesPlayed_PONG,
			numMatchesPlayed_BOSS,
			numMatchesPlayed_COP,
			numMatchesPlayed_ELECTRO,
			numMatchesPlayed_SKATE,
			numMatchesPlayed_RANDOM,
			numMatchesWon_KID,
			numMatchesWon_ROBOT,
			numMatchesWon_CANDY,
			numMatchesWon_BOOM,
			numMatchesWon_CROC,
			numMatchesWon_PONG,
			numMatchesWon_BOSS,
			numMatchesWon_COP,
			numMatchesWon_ELECTRO,
			numMatchesWon_SKATE,
			numMatchesWon_RANDOM,
			numMatchesLost_KID,
			numMatchesLost_ROBOT,
			numMatchesLost_CANDY,
			numMatchesLost_BOOM,
			numMatchesLost_CROC,
			numMatchesLost_PONG,
			numMatchesLost_BOSS,
			numMatchesLost_COP,
			numMatchesLost_ELECTRO,
			numMatchesLost_SKATE,
			numMatchesLost_RANDOM,
			lastMatchCompleted,
			numOfDisconnects,
			global_NumMatchesPlayed,
			global_NumMatchesPlayed_KID,
			global_NumMatchesPlayed_ROBOT,
			global_NumMatchesPlayed_CANDY,
			global_NumMatchesPlayed_BOOM,
			global_NumMatchesPlayed_CROC,
			global_NumMatchesPlayed_PONG,
			global_NumMatchesPlayed_BOSS,
			global_NumMatchesPlayed_COP,
			global_NumMatchesPlayed_ELECTRO,
			global_NumMatchesPlayed_SKATE,
			global_NumMatchesPlayed_RANDOM,
			global_NumMatchesWon_KID,
			global_NumMatchesWon_ROBOT,
			global_NumMatchesWon_CANDY,
			global_NumMatchesWon_BOOM,
			global_NumMatchesWon_CROC,
			global_NumMatchesWon_PONG,
			global_NumMatchesWon_BOSS,
			global_NumMatchesWon_COP,
			global_NumMatchesWon_ELECTRO,
			global_NumMatchesWon_SKATE,
			global_NumMatchesLost_KID,
			global_NumMatchesLost_ROBOT,
			global_NumMatchesLost_CANDY,
			global_NumMatchesLost_BOOM,
			global_NumMatchesLost_CROC,
			global_NumMatchesLost_PONG,
			global_NumMatchesLost_BOSS,
			global_NumMatchesLost_COP,
			global_NumMatchesLost_ELECTRO,
			global_NumMatchesLost_SKATE,
			lossStreak,
			numMatchesPlayed_GRAF,
			numMatchesWon_GRAF,
			numMatchesLost_GRAF,
			global_NumMatchesPlayed_GRAF,
			global_NumMatchesWon_GRAF,
			global_NumMatchesLost_GRAF,
			numMatchesPlayed_BAG,
			numMatchesWon_BAG,
			numMatchesLost_BAG,
			global_NumMatchesPlayed_BAG,
			global_NumMatchesWon_BAG,
			global_NumMatchesLost_BAG,
			max
		}

		public static readonly StatID none = Enum.none;

		public static readonly StatID numMatchesPlayed = Enum.numMatchesPlayed;

		public static readonly StatID numMatchesWon = Enum.numMatchesWon;

		public static readonly StatID numMatchesLost = Enum.numMatchesLost;

		public static readonly StatID currentVictoryStreak = Enum.currentVictoryStreak;

		public static readonly StatID highestVictoryStreak = Enum.highestVictoryStreak;

		public static readonly StatID numMatchesPlayed_KID = Enum.numMatchesPlayed_KID;

		public static readonly StatID numMatchesPlayed_ROBOT = Enum.numMatchesPlayed_ROBOT;

		public static readonly StatID numMatchesPlayed_CANDY = Enum.numMatchesPlayed_CANDY;

		public static readonly StatID numMatchesPlayed_BOOM = Enum.numMatchesPlayed_BOOM;

		public static readonly StatID numMatchesPlayed_CROC = Enum.numMatchesPlayed_CROC;

		public static readonly StatID numMatchesPlayed_PONG = Enum.numMatchesPlayed_PONG;

		public static readonly StatID numMatchesPlayed_BOSS = Enum.numMatchesPlayed_BOSS;

		public static readonly StatID numMatchesPlayed_COP = Enum.numMatchesPlayed_COP;

		public static readonly StatID numMatchesPlayed_ELECTRO = Enum.numMatchesPlayed_ELECTRO;

		public static readonly StatID numMatchesPlayed_SKATE = Enum.numMatchesPlayed_SKATE;

		public static readonly StatID numMatchesPlayed_RANDOM = Enum.numMatchesPlayed_RANDOM;

		public static readonly StatID numMatchesWon_KID = Enum.numMatchesWon_KID;

		public static readonly StatID numMatchesWon_ROBOT = Enum.numMatchesWon_ROBOT;

		public static readonly StatID numMatchesWon_CANDY = Enum.numMatchesWon_CANDY;

		public static readonly StatID numMatchesWon_BOOM = Enum.numMatchesWon_BOOM;

		public static readonly StatID numMatchesWon_CROC = Enum.numMatchesWon_CROC;

		public static readonly StatID numMatchesWon_PONG = Enum.numMatchesWon_PONG;

		public static readonly StatID numMatchesWon_BOSS = Enum.numMatchesWon_BOSS;

		public static readonly StatID numMatchesWon_COP = Enum.numMatchesWon_COP;

		public static readonly StatID numMatchesWon_ELECTRO = Enum.numMatchesWon_ELECTRO;

		public static readonly StatID numMatchesWon_SKATE = Enum.numMatchesWon_SKATE;

		public static readonly StatID numMatchesWon_RANDOM = Enum.numMatchesWon_RANDOM;

		public static readonly StatID numMatchesLost_KID = Enum.numMatchesLost_KID;

		public static readonly StatID numMatchesLost_ROBOT = Enum.numMatchesLost_ROBOT;

		public static readonly StatID numMatchesLost_CANDY = Enum.numMatchesLost_CANDY;

		public static readonly StatID numMatchesLost_BOOM = Enum.numMatchesLost_BOOM;

		public static readonly StatID numMatchesLost_CROC = Enum.numMatchesLost_CROC;

		public static readonly StatID numMatchesLost_PONG = Enum.numMatchesLost_PONG;

		public static readonly StatID numMatchesLost_BOSS = Enum.numMatchesLost_BOSS;

		public static readonly StatID numMatchesLost_COP = Enum.numMatchesLost_COP;

		public static readonly StatID numMatchesLost_ELECTRO = Enum.numMatchesLost_ELECTRO;

		public static readonly StatID numMatchesLost_SKATE = Enum.numMatchesLost_SKATE;

		public static readonly StatID numMatchesLost_RANDOM = Enum.numMatchesLost_RANDOM;

		public static readonly StatID lastMatchCompleted = Enum.lastMatchCompleted;

		public static readonly StatID numOfDisconnects = Enum.numOfDisconnects;

		public static readonly StatID global_NumMatchesPlayed = Enum.global_NumMatchesPlayed;

		public static readonly StatID global_NumMatchesPlayed_KID = Enum.global_NumMatchesPlayed_KID;

		public static readonly StatID global_NumMatchesPlayed_ROBOT = Enum.global_NumMatchesPlayed_ROBOT;

		public static readonly StatID global_NumMatchesPlayed_CANDY = Enum.global_NumMatchesPlayed_CANDY;

		public static readonly StatID global_NumMatchesPlayed_BOOM = Enum.global_NumMatchesPlayed_BOOM;

		public static readonly StatID global_NumMatchesPlayed_CROC = Enum.global_NumMatchesPlayed_CROC;

		public static readonly StatID global_NumMatchesPlayed_PONG = Enum.global_NumMatchesPlayed_PONG;

		public static readonly StatID global_NumMatchesPlayed_BOSS = Enum.global_NumMatchesPlayed_BOSS;

		public static readonly StatID global_NumMatchesPlayed_COP = Enum.global_NumMatchesPlayed_COP;

		public static readonly StatID global_NumMatchesPlayed_ELECTRO = Enum.global_NumMatchesPlayed_ELECTRO;

		public static readonly StatID global_NumMatchesPlayed_SKATE = Enum.global_NumMatchesPlayed_SKATE;

		public static readonly StatID global_NumMatchesPlayed_RANDOM = Enum.global_NumMatchesPlayed_RANDOM;

		public static readonly StatID global_NumMatchesWon_KID = Enum.global_NumMatchesWon_KID;

		public static readonly StatID global_NumMatchesWon_ROBOT = Enum.global_NumMatchesWon_ROBOT;

		public static readonly StatID global_NumMatchesWon_CANDY = Enum.global_NumMatchesWon_CANDY;

		public static readonly StatID global_NumMatchesWon_BOOM = Enum.global_NumMatchesWon_BOOM;

		public static readonly StatID global_NumMatchesWon_CROC = Enum.global_NumMatchesWon_CROC;

		public static readonly StatID global_NumMatchesWon_PONG = Enum.global_NumMatchesWon_PONG;

		public static readonly StatID global_NumMatchesWon_BOSS = Enum.global_NumMatchesWon_BOSS;

		public static readonly StatID global_NumMatchesWon_COP = Enum.global_NumMatchesWon_COP;

		public static readonly StatID global_NumMatchesWon_ELECTRO = Enum.global_NumMatchesWon_ELECTRO;

		public static readonly StatID global_NumMatchesWon_SKATE = Enum.global_NumMatchesWon_SKATE;

		public static readonly StatID global_NumMatchesLost_KID = Enum.global_NumMatchesLost_KID;

		public static readonly StatID global_NumMatchesLost_ROBOT = Enum.global_NumMatchesLost_ROBOT;

		public static readonly StatID global_NumMatchesLost_CANDY = Enum.global_NumMatchesLost_CANDY;

		public static readonly StatID global_NumMatchesLost_BOOM = Enum.global_NumMatchesLost_BOOM;

		public static readonly StatID global_NumMatchesLost_CROC = Enum.global_NumMatchesLost_CROC;

		public static readonly StatID global_NumMatchesLost_PONG = Enum.global_NumMatchesLost_PONG;

		public static readonly StatID global_NumMatchesLost_BOSS = Enum.global_NumMatchesLost_BOSS;

		public static readonly StatID global_NumMatchesLost_COP = Enum.global_NumMatchesLost_COP;

		public static readonly StatID global_NumMatchesLost_ELECTRO = Enum.global_NumMatchesLost_ELECTRO;

		public static readonly StatID global_NumMatchesLost_SKATE = Enum.global_NumMatchesLost_SKATE;

		public static readonly StatID lossStreak = Enum.lossStreak;

		public static readonly StatID numMatchesPlayed_GRAF = Enum.numMatchesPlayed_GRAF;

		public static readonly StatID numMatchesWon_GRAF = Enum.numMatchesWon_GRAF;

		public static readonly StatID numMatchesLost_GRAF = Enum.numMatchesLost_GRAF;

		public static readonly StatID global_NumMatchesPlayed_GRAF = Enum.global_NumMatchesPlayed_GRAF;

		public static readonly StatID global_NumMatchesWon_GRAF = Enum.global_NumMatchesWon_GRAF;

		public static readonly StatID global_NumMatchesLost_GRAF = Enum.global_NumMatchesLost_GRAF;

		public static readonly StatID numMatchesPlayed_BAG = Enum.numMatchesPlayed_BAG;

		public static readonly StatID numMatchesWon_BAG = Enum.numMatchesWon_BAG;

		public static readonly StatID numMatchesLost_BAG = Enum.numMatchesLost_BAG;

		public static readonly StatID global_NumMatchesPlayed_BAG = Enum.global_NumMatchesPlayed_BAG;

		public static readonly StatID global_NumMatchesWon_BAG = Enum.global_NumMatchesWon_BAG;

		public static readonly StatID global_NumMatchesLost_BAG = Enum.global_NumMatchesLost_BAG;

		public static readonly StatID max = Enum.max;

		private StatID(int id)
			: base(id)
		{
		}

		private StatID(AKFAKLAWWAE e)
			: base((int)e)
		{
		}//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_0007: Expected I4, but got Unknown


		public override string ToString()
		{
			Enum id = (Enum)base.id;
			return id.ToString();
		}

		public static implicit operator AKFAKLAWWAE(StatID ew)
		{
			return (AKFAKLAWWAE)((EnumWrapper<AKFAKLAWWAE>)ew).id;
		}

		public static implicit operator StatID(AKFAKLAWWAE val)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			return new StatID(val);
		}

		public static implicit operator StatID(int id)
		{
			return new StatID(id);
		}

		public static implicit operator StatID(Enum val)
		{
			return new StatID((int)val);
		}

		public static implicit operator Enum(StatID ew)
		{
			return (Enum)((EnumWrapper<AKFAKLAWWAE>)ew).id;
		}
	}
}