using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Security; using System.Security.Permissions; using System.Text; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using GameplayEntities; using HarmonyLib; using LLBML.Bundles; using LLBML.Math; using LLBML.Players; using LLBML.Settings; using LLBML.States; using LLBML.Utils; using LLGUI; using LLHandlers; using LLScreen; using Microsoft.CodeAnalysis; using Rewired; using TMPro; using TinyJson; using TourneyMod.Patches; using TourneyMod.PlayerTags; using TourneyMod.Rulesets; using TourneyMod.SetTracking; using TourneyMod.StageStriking; using TourneyMod.UI; using TourneyMod.UI.Lobby; using TourneyMod.UI.Menu; using TourneyMod.UI.PlayerTags; using TourneyMod.UI.StageSelect; using UnityEngine; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyCompany("TourneyMod")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.3.0.0")] [assembly: AssemblyInformationalVersion("1.3.0+5e6735fa7cb204e1b601009a899cdc7134d71902")] [assembly: AssemblyProduct("TourneyMod")] [assembly: AssemblyTitle("TourneyMod")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.3.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace TourneyMod { internal static class Assets { private static string pathAssets; private static Dictionary assetFiles; internal static void Init() { pathAssets = Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)Plugin.Instance).Info.Location), "assets").Replace(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar); DirectoryInfo directoryInfo = new DirectoryInfo(pathAssets); assetFiles = directoryInfo.GetFiles("*", SearchOption.AllDirectories).ToDictionary(delegate(FileInfo file) { string text = file.FullName.Replace(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar); string text2 = pathAssets; char altDirectorySeparatorChar = Path.AltDirectorySeparatorChar; return text.Replace(text2 + altDirectorySeparatorChar, ""); }); } private static FileInfo GetAssetFile(string asset) { assetFiles.TryGetValue(asset, out var value); return value; } private static void CopyStream(Stream input, Stream output) { byte[] array = new byte[8192]; int count; while ((count = input.Read(array, 0, array.Length)) > 0) { output.Write(array, 0, count); } } internal static Texture2D LoadTexture(string asset) { return LoadTexture(GetAssetFile(asset)); } private static Texture2D LoadTexture(FileInfo file) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Expected O, but got Unknown using FileStream input = file.OpenRead(); using MemoryStream memoryStream = new MemoryStream(); CopyStream(input, memoryStream); Texture2D val = new Texture2D(1, 1); ImageConversion.LoadImage(val, memoryStream.ToArray()); return val; } } public static class Configs { internal static ConfigEntry RulesetLocal1v1 { get; private set; } internal static ConfigEntry RulesetLocalDoubles { get; private set; } internal static ConfigEntry RulesetLocalCrew { get; private set; } internal static ConfigEntry RulesetOnline1v1 { get; private set; } internal static ConfigEntry SelectedTagKeyboard { get; private set; } internal static ConfigEntry SelectedTagController1 { get; private set; } internal static ConfigEntry SelectedTagController2 { get; private set; } internal static ConfigEntry SelectedTagController3 { get; private set; } internal static ConfigEntry SelectedTagController4 { get; private set; } internal static void BindConfigs() { ConfigFile config = ((BaseUnityPlugin)Plugin.Instance).Config; RulesetLocal1v1 = config.Bind("Selected Rulesets", "RulesetLocal1v1", "standard_online", "Selected ruleset for local 1v1 mode"); RulesetLocalDoubles = config.Bind("Selected Rulesets", "RulesetLocalDoubles", "standard_online", "Selected ruleset for local doubles mode"); RulesetLocalCrew = config.Bind("Selected Rulesets", "RulesetLocalCrew", "standard_online", "Selected ruleset for crew battle mode"); RulesetOnline1v1 = config.Bind("Selected Rulesets", "RulesetOnline1v1", "standard_online", "Selected ruleset for online 1v1 mode"); SelectedTagKeyboard = config.Bind("Selected Player Tags", "SelectedTagKeyboard", "", "Player tag selected for the keyboard. Tag selections are case insensitive"); SelectedTagController1 = config.Bind("Selected Player Tags", "SelectedTagController1", "", "Player tag selected for controller 1. Tag selections are case insensitive"); SelectedTagController2 = config.Bind("Selected Player Tags", "SelectedTagController2", "", "Player tag selected for controller 2. Tag selections are case insensitive"); SelectedTagController3 = config.Bind("Selected Player Tags", "SelectedTagController3", "", "Player tag selected for controller 3. Tag selections are case insensitive"); SelectedTagController4 = config.Bind("Selected Player Tags", "SelectedTagController4", "", "Player tag selected for controller 4. Tag selections are case insensitive"); } } internal static class JsonIO { internal static void WriteFile(string path, string data) { using MemoryStream input = new MemoryStream(Encoding.UTF8.GetBytes(data)); using FileStream output = new FileStream(path, FileMode.Create, FileAccess.Write); CopyStream(input, output); } internal static string ReadFile(FileInfo file) { using FileStream input = file.OpenRead(); using MemoryStream memoryStream = new MemoryStream(); CopyStream(input, memoryStream); return Encoding.UTF8.GetString(memoryStream.ToArray()); } private static void CopyStream(Stream input, Stream output) { byte[] array = new byte[8192]; int count; while ((count = input.Read(array, 0, array.Length)) > 0) { output.Write(array, 0, count); } } } [BepInPlugin("avgduck.plugins.llb.tourneymod", "TourneyMod", "1.3.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInIncompatibility("com.github.daioutzu.stageselect")] [BepInProcess("LLBlaze.exe")] public class Plugin : BaseUnityPlugin { public const string GUID = "avgduck.plugins.llb.tourneymod"; internal const string DEPENDENCY_LLBML = "fr.glomzubuk.plugins.llb.llbml"; internal const string DEPENDENCY_MODMENU = "no.mrgentle.plugins.llb.modmenu"; internal const string DEPENDENCY_CURSORSPEED = "com.github.daioutzu.cursorspeed"; internal const string DEPENDENCY_CHARACTERREROLL = "avgduck.plugins.llb.characterreroll"; internal const string INCOMPATIBILITY_STAGESELECT = "com.github.daioutzu.stageselect"; private const string defaultRulesetId = "all_stages"; internal Dictionary SelectedRulesetIds; internal Dictionary SelectedRulesets; internal string SelectedPlayerTagNameKeyboard; internal string[] SelectedPlayerTagNames; internal PlayerTag SelectedPlayerTagKeyboard; internal PlayerTag[] SelectedPlayerTags; internal bool TourneyMenuOpen = false; internal bool RulesetsMenuOpen = false; internal bool SetPreviewMenuOpen = false; internal bool ScoreEditMenuOpen = false; internal bool RecolorCursors = false; internal static Plugin Instance { get; private set; } internal static ManualLogSource LogGlobal { get; private set; } private void Awake() { Instance = this; LogGlobal = ((BaseUnityPlugin)this).Logger; Assets.Init(); SelectedRulesetIds = new Dictionary(); SelectedRulesets = new Dictionary(); SetTracker.Init(); StageStrikeTracker.Init(); UIUtils.Init(); Cursors.LoadCursorImages(); HarmonyPatches.PatchAll(); RulesetIO.Init(); PlayerTagIO.Init(); SelectedPlayerTagNameKeyboard = ""; SelectedPlayerTagNames = new string[4] { "", "", "", "" }; SelectedPlayerTagKeyboard = PlayerTag.DEFAULT; SelectedPlayerTags = new PlayerTag[4] { PlayerTag.DEFAULT, PlayerTag.DEFAULT, PlayerTag.DEFAULT, PlayerTag.DEFAULT }; VoteButton.ActiveVoteButtons = new List(); Configs.BindConfigs(); ((BaseUnityPlugin)this).Config.SettingChanged += delegate { OnConfigChanged(); }; OnConfigChanged(); ModDependenciesUtils.RegisterToModMenu(((BaseUnityPlugin)this).Info, GetModMenuText()); } private void OnConfigChanged() { SelectedRulesetIds[TourneyMode.NONE] = "all_stages"; SelectedRulesetIds[TourneyMode.LOCAL_1V1] = Configs.RulesetLocal1v1.Value; SelectedRulesetIds[TourneyMode.LOCAL_DOUBLES] = Configs.RulesetLocalDoubles.Value; SelectedRulesetIds[TourneyMode.LOCAL_CREW] = Configs.RulesetLocalCrew.Value; SelectedRulesetIds[TourneyMode.ONLINE_1V1] = Configs.RulesetOnline1v1.Value; SelectedRulesetIds.ToList().ForEach(delegate(KeyValuePair entry) { TourneyMode key = entry.Key; string value = entry.Value; Ruleset rulesetById = RulesetIO.GetRulesetById(value); if (rulesetById == null) { rulesetById = RulesetIO.GetRulesetById("all_stages"); } if (!SelectedRulesets.ContainsKey(key) || SelectedRulesets[key] != rulesetById) { LogGlobal.LogInfo((object)("Loaded ruleset for tourney mode " + GetModeName(key) + ": `" + rulesetById.Id + "`")); } SelectedRulesets[key] = rulesetById; }); SelectedPlayerTagNameKeyboard = Configs.SelectedTagKeyboard.Value; SelectedPlayerTagNames[0] = Configs.SelectedTagController1.Value; SelectedPlayerTagNames[1] = Configs.SelectedTagController2.Value; SelectedPlayerTagNames[2] = Configs.SelectedTagController3.Value; SelectedPlayerTagNames[3] = Configs.SelectedTagController4.Value; PlayerTag playerTagByName = PlayerTagIO.GetPlayerTagByName(SelectedPlayerTagNameKeyboard); if (playerTagByName == null) { SelectedPlayerTagKeyboard = PlayerTag.DEFAULT; } else { if (SelectedPlayerTagKeyboard != playerTagByName) { LogGlobal.LogInfo((object)("Setting keyboard selected player tag '" + playerTagByName.GetName() + "'")); } SelectedPlayerTagKeyboard = playerTagByName; } for (int i = 0; i < 4; i++) { PlayerTag playerTagByName2 = PlayerTagIO.GetPlayerTagByName(SelectedPlayerTagNames[i]); if (playerTagByName2 == null) { SelectedPlayerTags[i] = PlayerTag.DEFAULT; continue; } if (SelectedPlayerTags[i] != playerTagByName2) { LogGlobal.LogInfo((object)$"Setting controller {i} selected player tag '{playerTagByName2.GetName()}'"); } SelectedPlayerTags[i] = playerTagByName2; } } internal void SelectPlayerTag(int playerNr, PlayerTag playerTag) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) Player player = Player.GetPlayer(playerNr); SelectPlayerTag(player.controller, playerTag); } internal void SelectPlayerTag(Controller controller, PlayerTag playerTag) { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) Player inputPlayer = ((Controller)(ref controller)).GetInputPlayer(); Controller val = Controller.FromNr(inputPlayer.id, false); if (inputPlayer.id == 0) { SelectedPlayerTagKeyboard = playerTag; LoadTagConfig(inputPlayer, ((Controller)(ref val)).GetHardwareName(), ((Controller)(ref val)).GetReControllerType()); LoadTagMovementKeys(); Configs.SelectedTagKeyboard.Value = playerTag.GetName(); LogGlobal.LogInfo((object)("Setting keyboard selected player tag '" + playerTag.GetName() + "'")); return; } int num = inputPlayer.id - 1; SelectedPlayerTags[num] = playerTag; LoadTagConfig(inputPlayer, ((Controller)(ref val)).GetHardwareName(), ((Controller)(ref val)).GetReControllerType()); LogGlobal.LogInfo((object)$"Setting controller {num + 1} selected player tag '{playerTag.GetName()}'"); switch (num) { case 0: Configs.SelectedTagController1.Value = playerTag.GetName(); break; case 1: Configs.SelectedTagController2.Value = playerTag.GetName(); break; case 2: Configs.SelectedTagController3.Value = playerTag.GetName(); break; case 3: Configs.SelectedTagController4.Value = playerTag.GetName(); break; } } internal PlayerTag GetPlayerTag(int playerNr) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) Player player = Player.GetPlayer(playerNr); return GetPlayerTag(player.controller); } internal PlayerTag GetPlayerTag(Controller controller) { return GetPlayerTag(((Controller)(ref controller)).GetInputPlayer()); } internal PlayerTag GetPlayerTag(Player rePlayer) { if (rePlayer == null) { return PlayerTag.DEFAULT; } if (rePlayer.id == 0) { return SelectedPlayerTagKeyboard; } int num = rePlayer.id - 1; return SelectedPlayerTags[num]; } internal void LoadTagMovementKeys() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) InputHandler.SetMovementKeys(SelectedPlayerTagKeyboard.GetMovementKeys()); } internal void UpdateAllWithTag(PlayerTag playerTag) { if ((EnumWrapper)(object)GameStates.GetCurrent() != (EnumWrapper)(object)GameState.OPTIONS_INPUT) { return; } HGFCCNMEEEF.inputConfigControllers.ForEach(delegate(JBKFDDKLDDG inputConfigController) { //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_000e: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) Controller gDEMBCKIDMA = inputConfigController.GDEMBCKIDMA; if (GetPlayerTag(gDEMBCKIDMA) == playerTag) { LoadTagConfig(gDEMBCKIDMA.rePlayer, ((Controller)(ref gDEMBCKIDMA)).GetHardwareName(), ((Controller)(ref gDEMBCKIDMA)).GetReControllerType()); } }); } internal void LoadTagConfig(Player rePlayer, string hardwareName, ControllerType controllerType) { //IL_001d: 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_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) if (rePlayer.id < 0 || rePlayer.id > 4) { return; } ControllerMap val = PPHBCKEFJEP.AMIGAPOBFPJ(rePlayer, controllerType); if (val == null) { return; } PlayerTag playerTag = GetPlayerTag(rePlayer); List bindings = playerTag.GetBindings(hardwareName); foreach (InputConfigAssignment item in bindings) { PPHBCKEFJEP.IJJPHFJAMGK(val, controllerType, item); } } internal static string PrintArray(T[] arr, bool includeBrackets) { string text = ""; if (includeBrackets) { text += "["; } for (int i = 0; i < arr.Length; i++) { if (i != 0) { text += ", "; } text += arr[i].ToString(); } if (includeBrackets) { text += "]"; } return text; } internal static string GetModeName(TourneyMode tourneyMode, bool capitalized = false) { if (1 == 0) { } string result = tourneyMode switch { TourneyMode.LOCAL_1V1 => capitalized ? "Local 1v1" : "local 1v1", TourneyMode.LOCAL_DOUBLES => capitalized ? "Local Doubles" : "local doubles", TourneyMode.LOCAL_CREW => capitalized ? "Crew Battle" : "crew battle", TourneyMode.ONLINE_1V1 => capitalized ? "Online 1v1" : "online 1v1", _ => capitalized ? "Vanilla" : "none", }; if (1 == 0) { } return result; } private List GetModMenuText() { List text = new List(); text.Add("Choose a ruleset from those currently loaded (shown below). Default rulesets are included with the mod download, and custom rulesets can be specified in your Modding Folder."); text.Add(""); text.Add("Default Rulesets:"); if (RulesetIO.RulesetsDefault.Count == 0) { text.Add("none"); } else { RulesetIO.RulesetsDefault.ToList().ForEach(delegate(KeyValuePair entry) { text.Add("- " + entry.Value.name + " [" + entry.Key + "]"); }); } text.Add(""); text.Add("Custom Rulesets:"); if (RulesetIO.RulesetsCustom.Count == 0) { text.Add("none"); } else { RulesetIO.RulesetsCustom.ToList().ForEach(delegate(KeyValuePair entry) { text.Add("- " + entry.Value.name + " [" + entry.Key + "]"); }); } return text; } } internal enum TourneyMode { NONE, LOCAL_1V1, LOCAL_DOUBLES, LOCAL_CREW, ONLINE_1V1 } public static class MyPluginInfo { public const string PLUGIN_GUID = "TourneyMod"; public const string PLUGIN_NAME = "TourneyMod"; public const string PLUGIN_VERSION = "1.3.0"; } } namespace TourneyMod.UI { internal static class Cursors { private static readonly Color COLOR_CURSOR_ACTIVE = Color.white; private static readonly Color COLOR_CURSOR_INACTIVE = Color.white * 0.6f; private static PlayerCursor[] playerCursors; internal static void LoadCursorImages() { //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Expected O, but got Unknown //IL_0052: Unknown result type (might be due to invalid IL or missing references) playerCursors = new PlayerCursor[4]; for (int i = 0; i < 4; i++) { PlayerCursor playerCursor = new PlayerCursor(); for (int j = 0; j < 5; j++) { Texture2D val = Assets.LoadTexture($"cursors/cursor{i}_{Team.op_Implicit(j)}.png"); Texture2D destination = new Texture2D(1, 1); UIUtils.SetTextureCopy(ref destination, val); UIUtils.SetTextureColor(ref destination, COLOR_CURSOR_INACTIVE); playerCursor.textures[j, 0] = val; playerCursor.textures[j, 1] = destination; playerCursor.sprites[j, 0] = UIUtils.ToSprite(val); playerCursor.sprites[j, 1] = UIUtils.ToSprite(destination); } playerCursors[i] = playerCursor; } } internal static void UpdateCursorColors(Team controllingTeam) { if (!StageStrikeTracker.Instance.IsTrackingStrikeInfo || SetTracker.Instance.CurrentSet.IsFreePickMode || SetTracker.Instance.CurrentSet.IsFreePickForced) { ResetCursorColors(); return; } Player.ForAll((Action)delegate(Player player) { //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Invalid comparison between Unknown and I4 //IL_00a4: Unknown result type (might be due to invalid IL or missing references) player.cursor.image.sprite = playerCursors[player.nr].GetSprite(player.Team, (EnumWrapper)(object)player.Team == (EnumWrapper)(object)controllingTeam); if ((int)player.cursor.state == 2) { Texture2D texture = playerCursors[player.nr].GetTexture(player.Team, active: true); Texture2D texture2 = playerCursors[player.nr].GetTexture(player.Team, active: false); Cursor.SetCursor(((EnumWrapper)(object)player.Team == (EnumWrapper)(object)controllingTeam) ? texture : texture2, new Vector2(0f, 0f), (CursorMode)1); } }); } internal static void ResetCursorColors() { Player.ForAll((Action)delegate(Player player) { //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Invalid comparison between Unknown and I4 //IL_0065: Unknown result type (might be due to invalid IL or missing references) player.cursor.image.sprite = playerCursors[player.nr].GetSprite(player.Team, active: true); if ((int)player.cursor.state == 2) { Texture2D texture = playerCursors[player.nr].GetTexture(player.Team, active: true); Cursor.SetCursor(texture, new Vector2(0f, 0f), (CursorMode)1); } }); } } internal interface ICustomScreen { void Init(T screenVanilla); } internal class PlayerCursor { internal Texture2D[,] textures = new Texture2D[5, 2]; internal Sprite[,] sprites = new Sprite[5, 2]; internal Texture2D GetTexture(Team team, bool active) { return textures[(int)(EnumWrapper)(object)team, (!active) ? 1 : 0]; } internal Sprite GetSprite(Team team, bool active) { return sprites[(int)(EnumWrapper)(object)team, (!active) ? 1 : 0]; } } internal static class UIUtils { private static Sprite panelBG; private static Sprite buttonBG; internal static Sprite spriteStageSelected; internal static Sprite spriteLock; internal static readonly Color[] COLOR_TEAM = (Color[])(object)new Color[4] { new Color(1f, 0.2509804f, 0.08627451f), new Color(0.050980393f, 8f / 15f, 1f), new Color(1f, 1f, 0.23921569f), new Color(0.3529412f, 0.95686275f, 0.3529412f) }; internal static void Init() { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) panelBG = Sprite.Create(Texture2D.whiteTexture, new Rect(0f, 0f, 1f, 1f), new Vector2(0.5f, 0.5f)); buttonBG = Sprite.Create(Texture2D.whiteTexture, new Rect(0f, 0f, 1f, 1f), new Vector2(0.5f, 0.5f)); spriteStageSelected = Sprite.Create(CreateBorderTexture(Color.yellow, 8, 500, 250), new Rect(0f, 0f, 500f, 250f), new Vector2(0.5f, 0.5f)); spriteLock = ToSprite(Assets.LoadTexture("lock.png")); } internal static Texture2D CreateBorderTexture(Color color, int thickness, int width, int height) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Expected O, but got Unknown //IL_0044: 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) Texture2D val = new Texture2D(width, height); for (int i = 0; i < width; i++) { for (int j = 0; j < height; j++) { if (i <= thickness || i >= width - thickness - 1 || j <= thickness || j >= height - thickness - 1) { val.SetPixel(i, j, color); } else { val.SetPixel(i, j, Color.clear); } } } val.Apply(); return val; } internal static void CreateImage(ref Image image, Sprite sprite, string name, Transform parent, Vector2 position, Vector2 scale) { //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) image = LLControl.CreateImage(parent, sprite); ((Object)((Graphic)image).rectTransform).name = name; ((Graphic)image).rectTransform.anchorMin = new Vector2(0f, 0f); ((Graphic)image).rectTransform.anchorMax = new Vector2(1f, 1f); ((Graphic)image).rectTransform.SetSizeWithCurrentAnchors((Axis)0, scale.x); ((Graphic)image).rectTransform.SetSizeWithCurrentAnchors((Axis)1, scale.y); ((Graphic)image).rectTransform.anchoredPosition = position; } internal static void CreateImageButton(ref LLButton button, Sprite sprite, string name, Transform parent, Vector2 position, Vector2 scale) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0039: 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_0055: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) Image val = LLControl.CreateImage(parent, sprite); RectTransform rectTransform = ((Graphic)val).rectTransform; ((Object)rectTransform).name = name; rectTransform.anchorMin = new Vector2(0f, 0f); rectTransform.anchorMax = new Vector2(1f, 1f); rectTransform.SetSizeWithCurrentAnchors((Axis)0, scale.x); rectTransform.SetSizeWithCurrentAnchors((Axis)1, scale.y); rectTransform.anchoredPosition = position; button = ((Component)rectTransform).gameObject.AddComponent(); button.colDefault = Color.white; button.colHover = new Color(0.902f, 0.9529f, 0.051f); button.hoverColorToImage = true; button.hoverColorToOutline = false; ((LLControl)button).Init(); } internal static void CreatePanel(ref RectTransform panel, string name, Transform parent, Vector2 position, Vector2 scale) { //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_0005: 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) CreatePanel(ref panel, name, parent, position, scale, Color.black); } internal static void CreatePanel(ref RectTransform panel, string name, Transform parent, Vector2 position, Vector2 scale, Color bgColor) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_004a: 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_0068: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) Image val = LLControl.CreateImage(parent, buttonBG); ((Graphic)val).color = bgColor; panel = ((Graphic)val).rectTransform; ((Object)panel).name = name; panel.anchorMin = new Vector2(0f, 0f); panel.anchorMax = new Vector2(1f, 1f); panel.SetSizeWithCurrentAnchors((Axis)0, scale.x); panel.SetSizeWithCurrentAnchors((Axis)1, scale.y); panel.anchoredPosition = position; } internal static void CreateBorderPanel(ref RectTransform panel, string name, Transform parent, Vector2 position, Vector2 scale, Color bgColor, Color borderColor, int borderThickness) { //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_0005: 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_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0013: 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) //IL_0044: 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) CreatePanel(ref panel, name, parent, position, scale, bgColor); Texture2D val = CreateBorderTexture(borderColor, borderThickness, (int)scale.x, (int)scale.y); Image val2 = LLControl.CreateImage((Transform)(object)panel, Sprite.Create(val, new Rect(0f, 0f, (float)((Texture)val).width, (float)((Texture)val).height), new Vector2(0.5f, 0.5f))); } internal static void CreateImageBorderPanel(ref Image panel, string name, Transform parent, Vector2 position, Vector2 scale, Color bgColor, Color borderColor, int borderThickness) { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0037: 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_007b: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Unknown result type (might be due to invalid IL or missing references) panel = LLControl.CreateImage(parent, buttonBG); ((Graphic)panel).color = bgColor; ((Object)((Graphic)panel).rectTransform).name = name; ((Graphic)panel).rectTransform.anchorMin = new Vector2(0f, 0f); ((Graphic)panel).rectTransform.anchorMax = new Vector2(1f, 1f); ((Graphic)panel).rectTransform.SetSizeWithCurrentAnchors((Axis)0, scale.x); ((Graphic)panel).rectTransform.SetSizeWithCurrentAnchors((Axis)1, scale.y); ((Graphic)panel).rectTransform.anchoredPosition = position; Texture2D val = CreateBorderTexture(borderColor, borderThickness, (int)scale.x, (int)scale.y); Image val2 = LLControl.CreateImage((Transform)(object)((Graphic)panel).rectTransform, Sprite.Create(val, new Rect(0f, 0f, (float)((Texture)val).width, (float)((Texture)val).height), new Vector2(0.5f, 0.5f))); } internal static void CreateText(ref TextMeshProUGUI text, string name, Transform parent) { //IL_0004: Unknown result type (might be due to invalid IL or missing references) CreateText(ref text, name, parent, Vector2.zero); } internal static void CreateText(ref TextMeshProUGUI text, string name, Transform parent, Vector2 position) { //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) CreateText(ref text, name, parent, position, Vector2.zero); } internal static void CreateText(ref TextMeshProUGUI text, string name, Transform parent, Vector2 position, Vector2 scale) { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0037: 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_0054: 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) RectTransform val = LLControl.CreatePanel(parent, name); val.anchorMin = new Vector2(0f, 0f); val.anchorMax = new Vector2(1f, 1f); val.SetSizeWithCurrentAnchors((Axis)0, scale.x); val.SetSizeWithCurrentAnchors((Axis)1, scale.y); val.anchoredPosition = position; text = ((Component)val).gameObject.AddComponent(); ((Graphic)text).raycastTarget = false; TextHandler.SetText((TMP_Text)(object)text, ""); ((Graphic)text).color = Color.white; ((TMP_Text)text).fontSize = 32f; ((TMP_Text)text).alignment = (TextAlignmentOptions)514; ((TMP_Text)text).enableWordWrapping = false; ((TMP_Text)text).overflowMode = (TextOverflowModes)0; } internal static void CreateButton(ref LLButton button, string name, Transform parent, Vector2 position, Vector2 scale) { //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_0005: 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) CreateButton(ref button, name, parent, position, scale, Color.black); } internal static void CreateButton(ref LLButton button, string name, Transform parent, Vector2 position, Vector2 scale, Color bgColor) { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Unknown result type (might be due to invalid IL or missing references) //IL_0115: 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_0137: Unknown result type (might be due to invalid IL or missing references) //IL_0176: Unknown result type (might be due to invalid IL or missing references) //IL_0197: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Unknown result type (might be due to invalid IL or missing references) Image val = LLControl.CreateImage(parent, buttonBG); ((Graphic)val).color = new Color(1f, 1f, 0f, 0f); RectTransform rectTransform = ((Graphic)val).rectTransform; ((Object)rectTransform).name = name; rectTransform.anchorMin = new Vector2(0f, 0f); rectTransform.anchorMax = new Vector2(1f, 1f); rectTransform.SetSizeWithCurrentAnchors((Axis)0, scale.x); rectTransform.SetSizeWithCurrentAnchors((Axis)1, scale.y); rectTransform.anchoredPosition = position; button = ((Component)rectTransform).gameObject.AddComponent(); button.keepIconColor = true; button.colHover = new Color(0.902f, 0.9529f, 0.051f); button.soundClick = true; Image val2 = LLControl.CreateImage(((Component)button).transform, buttonBG); ((Graphic)val2).rectTransform.anchorMin = new Vector2(0.5f, 0.5f); ((Graphic)val2).rectTransform.anchorMax = new Vector2(0.5f, 0.5f); ((Graphic)val2).rectTransform.SetSizeWithCurrentAnchors((Axis)0, scale.x); ((Graphic)val2).rectTransform.SetSizeWithCurrentAnchors((Axis)1, scale.y); ((Graphic)val2).color = bgColor; ((Graphic)val2).raycastTarget = false; CreateText(ref button.textMesh, "Text", ((Component)button).transform); ((TMP_Text)button.textMesh).rectTransform.anchorMin = new Vector2(0f, 0f); ((TMP_Text)button.textMesh).rectTransform.anchorMax = new Vector2(1f, 1f); ((Graphic)button.textMesh).raycastTarget = false; button.SetText("", -1, false); ((Graphic)button.textMesh).color = Color.white; ((TMP_Text)button.textMesh).alignment = (TextAlignmentOptions)514; ((LLControl)button).Init(); } internal static void CreateVoteButton(ref VoteButton button, string name, Transform parent, Vector2 position, Vector2 scale) { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Unknown result type (might be due to invalid IL or missing references) //IL_016e: Unknown result type (might be due to invalid IL or missing references) //IL_0174: Unknown result type (might be due to invalid IL or missing references) //IL_017c: Unknown result type (might be due to invalid IL or missing references) //IL_0193: Unknown result type (might be due to invalid IL or missing references) //IL_019c: Unknown result type (might be due to invalid IL or missing references) //IL_01a5: Unknown result type (might be due to invalid IL or missing references) //IL_01b4: Unknown result type (might be due to invalid IL or missing references) //IL_01d6: Unknown result type (might be due to invalid IL or missing references) //IL_01f2: Unknown result type (might be due to invalid IL or missing references) //IL_0205: Unknown result type (might be due to invalid IL or missing references) //IL_021a: Unknown result type (might be due to invalid IL or missing references) //IL_0229: Unknown result type (might be due to invalid IL or missing references) //IL_0275: Unknown result type (might be due to invalid IL or missing references) //IL_0296: Unknown result type (might be due to invalid IL or missing references) //IL_02c5: Unknown result type (might be due to invalid IL or missing references) Image val = LLControl.CreateImage(parent, buttonBG); ((Graphic)val).color = new Color(1f, 1f, 0f, 0f); RectTransform rectTransform = ((Graphic)val).rectTransform; ((Object)rectTransform).name = name; rectTransform.anchorMin = new Vector2(0f, 0f); rectTransform.anchorMax = new Vector2(1f, 1f); rectTransform.SetSizeWithCurrentAnchors((Axis)0, scale.x); rectTransform.SetSizeWithCurrentAnchors((Axis)1, scale.y); rectTransform.anchoredPosition = position; button = ((Component)rectTransform).gameObject.AddComponent(); ((LLButton)button).keepIconColor = true; ((LLButton)button).colHover = new Color(0.902f, 0.9529f, 0.051f); ((LLButton)button).colDisabled = new Color(0.5f, 0.5f, 0.5f); ((LLButton)button).soundClick = true; Image val2 = LLControl.CreateImage(((Component)button).transform, buttonBG); ((Graphic)val2).rectTransform.anchorMin = new Vector2(0.5f, 0.5f); ((Graphic)val2).rectTransform.anchorMax = new Vector2(0.5f, 0.5f); ((Graphic)val2).rectTransform.SetSizeWithCurrentAnchors((Axis)0, scale.x); ((Graphic)val2).rectTransform.SetSizeWithCurrentAnchors((Axis)1, scale.y); ((Graphic)val2).color = Color.black; ((Graphic)val2).raycastTarget = false; int thickness = 2; Image val3 = LLControl.CreateImage(((Component)button).transform, Sprite.Create(CreateBorderTexture(Color.white, thickness, (int)scale.x, (int)scale.y), new Rect(0f, 0f, (float)(int)scale.x, (float)(int)scale.y), new Vector2(0.5f, 0.5f))); ((Graphic)val3).rectTransform.anchorMin = new Vector2(0.5f, 0.5f); ((Graphic)val3).rectTransform.anchorMax = new Vector2(0.5f, 0.5f); ((Graphic)val3).rectTransform.SetSizeWithCurrentAnchors((Axis)0, scale.x); ((Graphic)val3).rectTransform.SetSizeWithCurrentAnchors((Axis)1, scale.y); ((Graphic)val3).color = Color.clear; ((Graphic)val3).raycastTarget = false; button.imgBorder = val3; CreateText(ref ((LLButton)button).textMesh, "Text", ((Component)button).transform); ((TMP_Text)((LLButton)button).textMesh).rectTransform.anchorMin = new Vector2(0f, 0f); ((TMP_Text)((LLButton)button).textMesh).rectTransform.anchorMax = new Vector2(1f, 1f); ((Graphic)((LLButton)button).textMesh).raycastTarget = false; ((LLButton)button).SetText("", -1, false); ((Graphic)((LLButton)button).textMesh).color = Color.white; ((TMP_Text)((LLButton)button).textMesh).alignment = (TextAlignmentOptions)514; ((LLControl)button).Init(); } internal static void CreateCharsetButton(ref CharsetButton button, string name, Transform parent, Vector2 position, Vector2 scale, Color bgColor) { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Unknown result type (might be due to invalid IL or missing references) //IL_0191: Unknown result type (might be due to invalid IL or missing references) //IL_01b2: Unknown result type (might be due to invalid IL or missing references) //IL_01e1: Unknown result type (might be due to invalid IL or missing references) Image val = LLControl.CreateImage(parent, buttonBG); ((Graphic)val).color = new Color(1f, 1f, 0f, 0f); RectTransform rectTransform = ((Graphic)val).rectTransform; ((Object)rectTransform).name = name; rectTransform.anchorMin = new Vector2(0f, 0f); rectTransform.anchorMax = new Vector2(1f, 1f); rectTransform.SetSizeWithCurrentAnchors((Axis)0, scale.x); rectTransform.SetSizeWithCurrentAnchors((Axis)1, scale.y); rectTransform.anchoredPosition = position; button = ((Component)rectTransform).gameObject.AddComponent(); ((LLButton)button).keepIconColor = true; ((LLButton)button).colHover = new Color(0.902f, 0.9529f, 0.051f); ((LLButton)button).colDisabled = new Color(0.5f, 0.5f, 0.5f); ((LLButton)button).soundClick = true; Image val2 = LLControl.CreateImage(((Component)button).transform, buttonBG); ((Graphic)val2).rectTransform.anchorMin = new Vector2(0.5f, 0.5f); ((Graphic)val2).rectTransform.anchorMax = new Vector2(0.5f, 0.5f); ((Graphic)val2).rectTransform.SetSizeWithCurrentAnchors((Axis)0, scale.x); ((Graphic)val2).rectTransform.SetSizeWithCurrentAnchors((Axis)1, scale.y); ((Graphic)val2).color = bgColor; ((Graphic)val2).raycastTarget = false; CreateText(ref ((LLButton)button).textMesh, "Text", ((Component)button).transform); ((TMP_Text)((LLButton)button).textMesh).rectTransform.anchorMin = new Vector2(0f, 0f); ((TMP_Text)((LLButton)button).textMesh).rectTransform.anchorMax = new Vector2(1f, 1f); ((Graphic)((LLButton)button).textMesh).raycastTarget = false; ((LLButton)button).SetText("", -1, false); ((Graphic)((LLButton)button).textMesh).color = Color.white; ((TMP_Text)((LLButton)button).textMesh).alignment = (TextAlignmentOptions)514; ((LLControl)button).Init(); } internal static void SetButtonBGVisibility(LLButton button, bool visible) { Transform val = ((Component)button).transform.Find("Image"); if (!((Object)(object)val == (Object)null)) { ((Component)val).gameObject.SetActive(visible); } } internal static void SetTextAutoSize(LLButton button, string text, int maxFontSize, Vector2 maxBounds) { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_0023: 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_003b: Unknown result type (might be due to invalid IL or missing references) int num = maxFontSize; do { button.SetText(text, num, false); num--; } while ((((TMP_Text)button.textMesh).GetPreferredValues().x > maxBounds.x || ((TMP_Text)button.textMesh).GetPreferredValues().y > maxBounds.y) && num > 0); } internal static void SetTextAutoSize(TextMeshProUGUI label, string text, int maxFontSize, Vector2 maxBounds) { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002e: 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) int num = maxFontSize; do { TextHandler.SetText((TMP_Text)(object)label, text); ((TMP_Text)label).fontSize = num; num--; } while ((((TMP_Text)label).GetPreferredValues().x > maxBounds.x || ((TMP_Text)label).GetPreferredValues().y > maxBounds.y) && num > 0); } internal static void SetTextureCopy(ref Texture2D destination, Texture2D source) { //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Expected O, but got Unknown //IL_005f: Unknown result type (might be due to invalid IL or missing references) RenderTexture temporary = RenderTexture.GetTemporary(((Texture)source).width, ((Texture)source).height, 0, (RenderTextureFormat)7, (RenderTextureReadWrite)1); Graphics.Blit((Texture)(object)source, temporary); RenderTexture active = RenderTexture.active; RenderTexture.active = temporary; destination = new Texture2D(((Texture)source).width, ((Texture)source).height, source.format, false); destination.ReadPixels(new Rect(0f, 0f, (float)((Texture)temporary).width, (float)((Texture)temporary).height), 0, 0); destination.Apply(); RenderTexture.active = active; RenderTexture.ReleaseTemporary(temporary); } internal static void SetTextureColor(ref Texture2D texture, Color color) { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0018: 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_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0032: 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_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0045: 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_0051: Unknown result type (might be due to invalid IL or missing references) Color[] pixels = texture.GetPixels(); for (int i = 0; i < pixels.Length; i++) { Color val = pixels[i]; pixels[i] = new Color(val.r * color.r, val.g * color.g, val.b * color.b, val.a * color.a); } texture.SetPixels(pixels); texture.Apply(); } internal static Sprite ToSprite(Texture2D tex) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) return Sprite.Create(tex, new Rect(0f, 0f, (float)((Texture)tex).width, (float)((Texture)tex).height), new Vector2(0.5f, 0.5f)); } } internal class VoteButton : LLButton { private bool[] votes; internal Action onVote; internal bool enableVoting; internal string label; internal Image imgBorder; internal static List ActiveVoteButtons; internal VoteButton() { //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Expected O, but got Unknown votes = new bool[4]; enableVoting = true; label = ""; ((LLClickable)this).onClick = (ControlDelegate)delegate(int playerNr) { SetPlayerVote(playerNr, vote: true); }; } private void SetPlayerVote(int playerNr, bool vote) { if (playerNr == -1) { SetAllVotes(vote); } else { votes[playerNr] = vote; } } private void SetAllVotes(bool vote) { for (int i = 0; i < 4; i++) { votes[i] = vote; } } private void LateUpdate() { ((LLButton)this).SetText(label + (enableVoting ? $" {votes.Count((bool vote) => vote)}/{SetTracker.Instance.NumPlayersInMatch}" : ""), -1, false); UpdateVoteStatus(); } private void UpdateVoteStatus() { int numPlayersInMatch = SetTracker.Instance.NumPlayersInMatch; if (numPlayersInMatch >= 1) { int num = ((!enableVoting) ? 1 : numPlayersInMatch); if (votes.Count((bool vote) => vote) >= num) { OnVote(); } } } private void OnVote() { SetAllVotes(vote: false); onVote(); } internal static void RemovePlayer(int playerNr) { ActiveVoteButtons.ForEach(delegate(VoteButton button) { button.SetPlayerVote(playerNr, vote: false); }); } } } namespace TourneyMod.UI.StageSelect { internal interface IStageSelect { void OnClickStage(int playerNumber, Stage stage); void OnStageSelected(); } internal class ScreenStageStrike : ScreenPlayersStage, ICustomScreen, IStageSelect { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static ControlDelegate <>9__36_0; public static Action <>9__45_0; internal void b__36_0(int playerNumber) { GameStates.Send((Msg)2, playerNumber, -1); } internal void b__45_0(StageContainer container) { ((LLClickable)container.Button).OnHoverOut(-1); ((LLClickable)container.Button).SetActive(false); container.Button.UpdateDisplay(); } } private static readonly Vector2 BG_SCALE = new Vector2(1f, 2f); private static readonly Vector2 BG_POSITION = new Vector2(0f, -20f); private static readonly Vector2 TITLE_SCALE = new Vector2(1f, 0.6f); private static readonly Vector2 TITLE_POSITION = new Vector2(0f, 328f); private const int TITLE_FONT_SIZE = 36; private static readonly Vector2 BACK_SCALE = new Vector2(0.6f, 0.5f); private static readonly Vector2 BACK_POSITION = new Vector2(-570f, -336f); private const int BACK_FONT_SIZE = 22; private static readonly Vector2 SETCOUNT_POSITION = new Vector2(0f, 270f); private const int SETCOUNT_FONT_SIZE = 32; private static readonly Vector2 BANSREMAINING_POSITION = new Vector2(0f, -276f); private const int BANSREMAINING_FONT_SIZE = 18; private static readonly Vector2 BANSTATUS_POSITION = new Vector2(0f, -310f); private const int BANSTATUS_FONT_SIZE = 42; private static readonly Vector2 FREEPICK_POSITION = new Vector2(506f, -336f); private static readonly Vector2 FREEPICK_SCALE = new Vector2(234f, 27.5f); private const int FREEPICK_FONT_SIZE = 18; private static readonly Vector2 RANDOM_POSITION = new Vector2(-378f, -336f); private static readonly Vector2 RANDOM_SCALE = new Vector2(255.6f, 27.5f); private const int RANDOM_FONT_SIZE = 18; private static readonly Vector2 RANDOM_BOTH_OFFSET = new Vector2(60f, 0f); private static readonly Vector2 RANDOM_BOTH_SCALE = new Vector2(100f, 34f); private const int RANDOM_BOTH_FONT_SIZE = 16; private List stageContainersNeutral; private List stageContainersCounterpick; private List stageContainers; private TextMeshProUGUI lbSetCount; private TextMeshProUGUI lbBansRemaining; private TextMeshProUGUI lbBanStatus; private VoteButton btFreePick; private VoteButton btRandomMain; private VoteButton btRandomBoth3D; private VoteButton btRandomBoth2D; private Stage selectedStage = (Stage)0; private Ruleset.RandomStageMode _selectedRandomStage = Ruleset.RandomStageMode.OFF; public void Init(ScreenPlayersStage screenPlayersStage) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0027: 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_0033: 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_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: 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_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00db: 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_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) ((ScreenBase)this).screenType = ((ScreenBase)screenPlayersStage).screenType; ((ScreenBase)this).layer = ((ScreenBase)screenPlayersStage).layer; ((ScreenBase)this).isActive = ((ScreenBase)screenPlayersStage).isActive; ((ScreenBase)this).msgEsc = ((ScreenBase)screenPlayersStage).msgEsc; ((ScreenBase)this).msgMenu = ((ScreenBase)screenPlayersStage).msgMenu; ((ScreenBase)this).msgCancel = ((ScreenBase)screenPlayersStage).msgCancel; base.btBack = screenPlayersStage.btBack; base.btLeft = screenPlayersStage.btLeft; base.btRight = screenPlayersStage.btRight; base.lbTitle = screenPlayersStage.lbTitle; base.lbPlayersSelectingStage = screenPlayersStage.lbPlayersSelectingStage; base.obSpectator = screenPlayersStage.obSpectator; base.obNotSpectator = screenPlayersStage.obNotSpectator; base.stageButtonsContainer = screenPlayersStage.stageButtonsContainer; base.btStages = screenPlayersStage.btStages; base.posMid = screenPlayersStage.posMid; base.posLeft = screenPlayersStage.posLeft; base.posLeft2 = screenPlayersStage.posLeft2; base.posRight = screenPlayersStage.posRight; base.posRight2 = screenPlayersStage.posRight2; base.scaleSmall = screenPlayersStage.scaleSmall; base.scaleBig = screenPlayersStage.scaleBig; base.nButtons = screenPlayersStage.nButtons; base.curIndex = screenPlayersStage.curIndex; base.isMoving = screenPlayersStage.isMoving; base.queuedMove = screenPlayersStage.queuedMove; } public override void OnOpen(ScreenType screenTypePrev) { //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //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_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Unknown result type (might be due to invalid IL or missing references) //IL_015e: 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_019e: Unknown result type (might be due to invalid IL or missing references) //IL_01d0: Unknown result type (might be due to invalid IL or missing references) //IL_021b: Unknown result type (might be due to invalid IL or missing references) //IL_0259: Unknown result type (might be due to invalid IL or missing references) //IL_0297: Unknown result type (might be due to invalid IL or missing references) //IL_029c: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_0128: Unknown result type (might be due to invalid IL or missing references) //IL_012e: Expected O, but got Unknown //IL_0347: Unknown result type (might be due to invalid IL or missing references) //IL_034c: Unknown result type (might be due to invalid IL or missing references) //IL_047a: Unknown result type (might be due to invalid IL or missing references) //IL_047f: Unknown result type (might be due to invalid IL or missing references) //IL_0484: Unknown result type (might be due to invalid IL or missing references) //IL_0489: Unknown result type (might be due to invalid IL or missing references) //IL_0548: Unknown result type (might be due to invalid IL or missing references) //IL_054d: Unknown result type (might be due to invalid IL or missing references) //IL_0552: Unknown result type (might be due to invalid IL or missing references) //IL_0557: Unknown result type (might be due to invalid IL or missing references) //IL_061b: Unknown result type (might be due to invalid IL or missing references) //IL_0667: Unknown result type (might be due to invalid IL or missing references) //IL_066d: Unknown result type (might be due to invalid IL or missing references) //IL_0672: Unknown result type (might be due to invalid IL or missing references) StageStrikeTracker.Instance.Start(); Plugin.Instance.RecolorCursors = true; if (TextHandler.isInited) { ((ScreenBase)this).UpdateText(); } ((ScreenBase)this).msgMenu = (Msg)0; RectTransform component = ((Component)((Component)this).transform.Find("bar_top")).GetComponent(); component.anchoredPosition = TITLE_POSITION; ((Transform)component).localScale = Vector2.op_Implicit(TITLE_SCALE); ((Transform)base.lbTitle.rectTransform).localScale = Vector2.op_Implicit(new Vector2(1f / TITLE_SCALE.x, 1f / TITLE_SCALE.y)); base.lbTitle.fontSize = 36f; RectTransform component2 = ((Component)((Component)this).transform.Find("bar_mid")).GetComponent(); component2.anchoredPosition = BG_POSITION; ((Transform)component2).localScale = Vector2.op_Implicit(BG_SCALE); ((LLControl)base.btLeft).visible = false; ((LLControl)base.btRight).visible = false; LLButton btBack = base.btBack; object obj = <>c.<>9__36_0; if (obj == null) { ControlDelegate val = delegate(int playerNumber) { GameStates.Send((Msg)2, playerNumber, -1); }; <>c.<>9__36_0 = val; obj = (object)val; } ((LLClickable)btBack).onClick = (ControlDelegate)obj; ((Component)base.btBack).transform.localPosition = Vector2.op_Implicit(BACK_POSITION); ((Component)base.btBack).transform.localScale = Vector2.op_Implicit(BACK_SCALE); ((Transform)((TMP_Text)base.btBack.textMesh).rectTransform).localScale = Vector2.op_Implicit(new Vector2(1f / BACK_SCALE.x, 1f / BACK_SCALE.y)); ((TMP_Text)base.btBack.textMesh).fontSize = 22f; UIUtils.CreateText(ref lbSetCount, "lbSetCount", ((Component)this).transform, SETCOUNT_POSITION); ((TMP_Text)lbSetCount).fontSize = 32f; ((TMP_Text)lbSetCount).richText = true; TextHandler.SetText((TMP_Text)(object)lbSetCount, ""); UIUtils.CreateText(ref lbBansRemaining, "lbBansRemaining", ((Component)this).transform, BANSREMAINING_POSITION); ((TMP_Text)lbBansRemaining).fontSize = 18f; TextHandler.SetText((TMP_Text)(object)lbBansRemaining, ""); UIUtils.CreateText(ref lbBanStatus, "lbBanStatus", ((Component)this).transform, BANSTATUS_POSITION); ((TMP_Text)lbBanStatus).fontSize = 42f; TextHandler.SetText((TMP_Text)(object)lbBanStatus, ""); UIUtils.CreateVoteButton(ref btFreePick, "btFreePick", ((Component)this).transform, FREEPICK_POSITION, FREEPICK_SCALE); VoteButton.ActiveVoteButtons.Add(btFreePick); btFreePick.label = "Toggle free pick"; ((TMP_Text)((LLButton)btFreePick).textMesh).fontSize = 18f; btFreePick.onVote = OnVoteFreePick; if (SetTracker.Instance.CurrentSet.IsFreePickForced) { ((Component)btFreePick).gameObject.SetActive(false); } Ruleset.RandomStageMode randomStageMode = SetTracker.Instance.CurrentSet.ActiveRuleset.randomStageMode; UIUtils.CreateVoteButton(ref btRandomMain, "btRandomMain", ((Component)this).transform, RANDOM_POSITION, RANDOM_SCALE); VoteButton.ActiveVoteButtons.Add(btRandomMain); VoteButton voteButton = btRandomMain; if (1 == 0) { } string text = randomStageMode switch { Ruleset.RandomStageMode.ANY => "(any 3D/2D)", Ruleset.RandomStageMode.ANY_3D => "(any 3D)", Ruleset.RandomStageMode.ANY_2D => "(any 2D)", Ruleset.RandomStageMode.ANY_LEGAL => "(any legal)", _ => "", }; if (1 == 0) { } voteButton.label = "Random " + text; ((TMP_Text)((LLButton)btRandomMain).textMesh).fontSize = 18f; btRandomMain.onVote = delegate { OnVoteRandom(randomStageMode); }; btRandomMain.enableVoting = !SetTracker.Instance.CurrentSet.IsFreePickMode && !SetTracker.Instance.CurrentSet.IsFreePickForced; if (randomStageMode == Ruleset.RandomStageMode.OFF || randomStageMode == Ruleset.RandomStageMode.BOTH) { ((Component)btRandomMain).gameObject.SetActive(false); } UIUtils.CreateVoteButton(ref btRandomBoth3D, "btRandomBoth3D", ((Component)this).transform, RANDOM_POSITION - RANDOM_BOTH_OFFSET, RANDOM_BOTH_SCALE); VoteButton.ActiveVoteButtons.Add(btRandomBoth3D); btRandomBoth3D.label = "Random\n(3D)"; ((TMP_Text)((LLButton)btRandomBoth3D).textMesh).fontSize = 16f; btRandomBoth3D.onVote = delegate { OnVoteRandom(Ruleset.RandomStageMode.ANY_3D); }; btRandomBoth3D.enableVoting = !SetTracker.Instance.CurrentSet.IsFreePickMode && !SetTracker.Instance.CurrentSet.IsFreePickForced; if (randomStageMode != Ruleset.RandomStageMode.BOTH) { ((Component)btRandomBoth3D).gameObject.SetActive(false); } UIUtils.CreateVoteButton(ref btRandomBoth2D, "btRandomBoth2D", ((Component)this).transform, RANDOM_POSITION + RANDOM_BOTH_OFFSET, RANDOM_BOTH_SCALE); VoteButton.ActiveVoteButtons.Add(btRandomBoth2D); btRandomBoth2D.label = "Random\n(2D)"; ((TMP_Text)((LLButton)btRandomBoth2D).textMesh).fontSize = 16f; btRandomBoth2D.onVote = delegate { OnVoteRandom(Ruleset.RandomStageMode.ANY_2D); }; btRandomBoth2D.enableVoting = !SetTracker.Instance.CurrentSet.IsFreePickMode && !SetTracker.Instance.CurrentSet.IsFreePickForced; if (randomStageMode != Ruleset.RandomStageMode.BOTH) { ((Component)btRandomBoth2D).gameObject.SetActive(false); } if (SetTracker.Instance.ActiveTourneyMode != 0 && (int)SetTracker.Instance.CurrentSet.StageLock != 0 && (EnumWrapper)(object)SetTracker.Instance.CurrentSet.LastWinnerOverride == (EnumWrapper)(object)Team.NONE) { UIScreen.blockGlobalInput = false; AudioHandler.PlaySfx((Sfx)4); selectedStage = StageStrikeTracker.Instance.CurrentStrikeInfo.PickStage(SetTracker.Instance.CurrentSet.StageLock, -1); } else { CreateStageContainers(); UpdateStageBans(); UpdateSetInfo(); } } public override void OnClose(ScreenType screenTypeNext) { //IL_005c: Unknown result type (might be due to invalid IL or missing references) StageStrikeTracker.Instance.End(); Plugin.Instance.RecolorCursors = false; VoteButton.ActiveVoteButtons.Remove(btFreePick); VoteButton.ActiveVoteButtons.Remove(btRandomMain); VoteButton.ActiveVoteButtons.Remove(btRandomBoth3D); VoteButton.ActiveVoteButtons.Remove(btRandomBoth2D); ((ScreenBase)this).OnClose(screenTypeNext); } public override void DoUpdate() { //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) //IL_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01aa: Invalid comparison between Unknown and I4 //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_01c9: Unknown result type (might be due to invalid IL or missing references) //IL_01ce: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Invalid comparison between Unknown and I4 //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Invalid comparison between Unknown and I4 //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Unknown result type (might be due to invalid IL or missing references) //IL_0157: Unknown result type (might be due to invalid IL or missing references) //IL_0145: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Invalid comparison between Unknown and I4 //IL_0187: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Invalid comparison between Unknown and I4 //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Unknown result type (might be due to invalid IL or missing references) Controller all; if (!UIScreen.blockGlobalInput) { all = Controller.all; if (((Controller)(ref all)).GetButtonDown(InputAction.ESC)) { ((ScreenBase)this).SendGlobal(((ScreenBase)this).msgEsc, -1); } if ((int)((ScreenBase)this).msgMenu != 0 || (int)((ScreenBase)this).msgCancel > 0) { if ((int)UIInput.uiControl == 2) { for (int i = 0; i < 4; i++) { ALDOKEMAOMB val = ALDOKEMAOMB.BJDPHEHJJJK(i); if ((int)UIInput.uiControl != 2 || (val.OBELDJGOOIJ != null && (int)val.OBELDJGOOIJ.state > 0)) { if (((Controller)(ref val.GDEMBCKIDMA)).GetButtonDown(InputAction.MENU)) { ((ScreenBase)this).SendGlobal(((ScreenBase)this).msgMenu, i); } if (((Controller)(ref val.GDEMBCKIDMA)).GetButtonDown(InputAction.BACK) || (((Controller)(ref val.GDEMBCKIDMA)).IncludesMouse() && Input.GetMouseButtonDown(1))) { ((ScreenBase)this).SendGlobal(((ScreenBase)this).msgCancel, i); } } } } else { all = Controller.all; if (((Controller)(ref all)).GetButtonDown(InputAction.MENU)) { ((ScreenBase)this).SendGlobal(((ScreenBase)this).msgMenu, -1); } all = Controller.all; if (((Controller)(ref all)).GetButtonDown(InputAction.BACK) || (CGLLJHHAJAK.GIGAKBJGFDI.hasMouseKeyboard && Input.GetMouseButtonDown(1))) { ((ScreenBase)this).SendGlobal(((ScreenBase)this).msgCancel, -1); } } } } if (UIScreen.blockGlobalInput) { return; } if ((int)UIInput.uiControl == 2) { Player.ForAll((Action)delegate(Player player) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Invalid comparison between Unknown and I4 //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) if (player.cursor != null && (int)player.cursor.state != 0) { Controller controller = player.controller; if (((Controller)(ref controller)).GetButtonDown(InputAction.MENU)) { LLClickable defaultFocus2 = ((ScreenBase)this).GetDefaultFocus(player.cursor); if ((Object)(object)defaultFocus2 != (Object)null && defaultFocus2.isActive) { defaultFocus2.OnClick(player.nr); } } } }); return; } all = Controller.all; if (((Controller)(ref all)).GetButtonDown(InputAction.MENU)) { LLClickable defaultFocus = ((ScreenBase)this).GetDefaultFocus(UIInput.mainCursor); if ((Object)(object)defaultFocus != (Object)null && defaultFocus.isActive) { defaultFocus.OnClick(-1); } } } public override LLClickable GetDefaultFocus(LLCursor cursor) { Ruleset.RandomStageMode randomStageMode = SetTracker.Instance.CurrentSet.ActiveRuleset.randomStageMode; if (1 == 0) { } VoteButton result = randomStageMode switch { Ruleset.RandomStageMode.OFF => null, Ruleset.RandomStageMode.BOTH => btRandomBoth3D, _ => btRandomMain, }; if (1 == 0) { } return (LLClickable)(object)result; } public override void GetControls(ref List list, bool vert, LLClickable curFocus, LLCursor cursor) { list.AddRange((IEnumerable)(object)base.btStages); list.Add((LLClickable)(object)base.btBack); switch (SetTracker.Instance.CurrentSet.ActiveRuleset.randomStageMode) { case Ruleset.RandomStageMode.BOTH: list.Add((LLClickable)(object)btRandomBoth3D); list.Add((LLClickable)(object)btRandomBoth2D); break; default: list.Add((LLClickable)(object)btRandomMain); break; case Ruleset.RandomStageMode.OFF: break; } if (!SetTracker.Instance.CurrentSet.IsFreePickForced) { list.Add((LLClickable)(object)btFreePick); } } private void CreateStageContainers() { //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: 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) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_015d: Unknown result type (might be due to invalid IL or missing references) //IL_0168: Unknown result type (might be due to invalid IL or missing references) //IL_017b: 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_01a9: Unknown result type (might be due to invalid IL or missing references) //IL_01b6: Unknown result type (might be due to invalid IL or missing references) //IL_01c1: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Unknown result type (might be due to invalid IL or missing references) //IL_0259: Unknown result type (might be due to invalid IL or missing references) //IL_025e: Unknown result type (might be due to invalid IL or missing references) //IL_0262: Unknown result type (might be due to invalid IL or missing references) //IL_0283: Unknown result type (might be due to invalid IL or missing references) //IL_029d: Unknown result type (might be due to invalid IL or missing references) //IL_02c8: Unknown result type (might be due to invalid IL or missing references) //IL_02d3: Unknown result type (might be due to invalid IL or missing references) //IL_02ef: Unknown result type (might be due to invalid IL or missing references) //IL_02fa: Unknown result type (might be due to invalid IL or missing references) //IL_0334: Unknown result type (might be due to invalid IL or missing references) //IL_0341: Unknown result type (might be due to invalid IL or missing references) //IL_034c: Unknown result type (might be due to invalid IL or missing references) //IL_0351: Unknown result type (might be due to invalid IL or missing references) StageLayout stageLayout = StageLayout.Create(SetTracker.Instance.CurrentSet.ActiveRuleset.stagesNeutral.Count, SetTracker.Instance.CurrentSet.ActiveRuleset.stagesCounterpick.Count); float num = stageLayout.position.y + stageLayout.totalHeight / 2f - stageLayout.stageSize.y / 2f; base.nButtons = SetTracker.Instance.CurrentSet.ActiveRuleset.stagesNeutral.Count + SetTracker.Instance.CurrentSet.ActiveRuleset.stagesCounterpick.Count; base.btStages = (LLButton[])(object)new LLButton[base.nButtons]; int num2 = 0; int num3 = 0; int num4 = 0; stageContainers = new List(); stageContainersNeutral = new List(); foreach (Stage item in SetTracker.Instance.CurrentSet.ActiveRuleset.stagesNeutral) { float num5 = stageLayout.position.x - stageLayout.GetRowWidth(stageLayout.rowLengthsNeutral[num3]) / 2f + stageLayout.stageSize.x / 2f; StageContainer stageContainer = new StageContainer(this, base.stageButtonsContainer, item); stageContainers.Add(stageContainer); stageContainersNeutral.Add(stageContainer); float num6 = num5 + (float)num4 * (stageLayout.stageSize.x + stageLayout.spacing.x); float num7 = num - (float)num3 * (stageLayout.stageSize.y + stageLayout.spacing.y); RectTransform component = ((Component)stageContainer.Button).GetComponent(); component.anchoredPosition = new Vector2(num6, num7); ((Transform)component).localScale = Vector2.op_Implicit(Vector2.one * stageLayout.stageScaleFactor); base.btStages[num2] = (LLButton)(object)stageContainer.Button; num2++; num4++; if (num4 >= stageLayout.rowLengthsNeutral[num3]) { num3++; num4 = 0; } } num3 = 0; num4 = 0; stageContainersCounterpick = new List(); foreach (Stage item2 in SetTracker.Instance.CurrentSet.ActiveRuleset.stagesCounterpick) { float num8 = stageLayout.position.x - stageLayout.GetRowWidth(stageLayout.rowLengthsCounterpick[num3]) / 2f + stageLayout.stageSize.x / 2f; StageContainer stageContainer2 = new StageContainer(this, base.stageButtonsContainer, item2); stageContainers.Add(stageContainer2); stageContainersCounterpick.Add(stageContainer2); float num9 = num8 + (float)num4 * (stageLayout.stageSize.x + stageLayout.spacing.x); float num10 = num - (float)(num3 + stageLayout.rowLengthsNeutral.Length) * (stageLayout.stageSize.y + stageLayout.spacing.y); if (stageLayout.useBothCategories) { num10 -= stageLayout.stageCategorySpacing; } RectTransform component2 = ((Component)stageContainer2.Button).GetComponent(); component2.anchoredPosition = new Vector2(num9, num10); ((Transform)component2).localScale = Vector2.op_Implicit(Vector2.one * stageLayout.stageScaleFactor); base.btStages[num2] = (LLButton)(object)stageContainer2.Button; num2++; num4++; if (num4 >= stageLayout.rowLengthsCounterpick[num3]) { num3++; num4 = 0; } } } private void UpdateStageBans() { List stageBans = StageStrikeTracker.Instance.CurrentStrikeInfo.StageBans; stageBans.ForEach(delegate(StageBan ban) { stageContainers.Find((StageContainer container) => container.StoredStage == ban.stage)?.Button.SetBan((SetTracker.Instance.CurrentSet.IsFreePickMode || SetTracker.Instance.CurrentSet.IsFreePickForced) ? null : ban); }); } private void UpdateSetInfo() { //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_01ba: Unknown result type (might be due to invalid IL or missing references) //IL_011a: Unknown result type (might be due to invalid IL or missing references) int num = 0; int[] array = new int[4]; if (SetTracker.Instance.IsTrackingSet) { num = SetTracker.Instance.CurrentSet.GameNumber; array = SetTracker.Instance.CurrentSet.WinCounts; } TextHandler.SetText((TMP_Text)(object)lbSetCount, (SetTracker.Instance.ActiveTourneyMode == TourneyMode.NONE) ? "" : $"Game {SetTracker.Instance.CurrentSet.GameNumber} ({SetTracker.Instance.CurrentSet.WinCounts[0]}-{SetTracker.Instance.CurrentSet.WinCounts[1]})"); if (SetTracker.Instance.CurrentSet.IsFreePickMode || SetTracker.Instance.CurrentSet.IsFreePickForced) { TextHandler.SetText((TMP_Text)(object)lbBansRemaining, "Free pick mode"); ((Graphic)lbBanStatus).color = Color.white; TextHandler.SetText((TMP_Text)(object)lbBanStatus, (StageStrikeTracker.Instance.CurrentStrikeInfo.CurrentInteractMode == StrikeInfo.InteractMode.PICK) ? "Picking..." : "Banning..."); } else { TextHandler.SetText((TMP_Text)(object)lbBansRemaining, $"Bans remaining: RED {StageStrikeTracker.Instance.CurrentStrikeInfo.TotalBansRemaining[0]}, BLUE {StageStrikeTracker.Instance.CurrentStrikeInfo.TotalBansRemaining[1]}"); Team controllingTeam = StageStrikeTracker.Instance.CurrentStrikeInfo.ControllingTeam; ((Graphic)lbBanStatus).color = UIUtils.COLOR_TEAM[(int)(EnumWrapper)(object)controllingTeam]; TextHandler.SetText((TMP_Text)(object)lbBanStatus, (StageStrikeTracker.Instance.CurrentStrikeInfo.CurrentInteractMode == StrikeInfo.InteractMode.BAN) ? $"{controllingTeam} banning {StageStrikeTracker.Instance.CurrentStrikeInfo.CurrentBansRemaining}..." : $"{controllingTeam} picking..."); } } public void OnClickStage(int playerNumber, Stage stage) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_004a: 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_0051: Unknown result type (might be due to invalid IL or missing references) if (StageStrikeTracker.Instance.CurrentStrikeInfo.CheckPlayerInteraction(stage, playerNumber)) { if (StageStrikeTracker.Instance.CurrentStrikeInfo.CurrentInteractMode == StrikeInfo.InteractMode.PICK) { UIScreen.blockGlobalInput = false; AudioHandler.PlaySfx((Sfx)4); selectedStage = StageStrikeTracker.Instance.CurrentStrikeInfo.PickStage(stage, playerNumber); } else { StageStrikeTracker.Instance.CurrentStrikeInfo.BanStage(stage, playerNumber); UpdateStageBans(); } UpdateSetInfo(); } } public void OnStageSelected() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Invalid comparison between Unknown and I4 //IL_01b5: Unknown result type (might be due to invalid IL or missing references) //IL_01cc: 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_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_0149: Unknown result type (might be due to invalid IL or missing references) //IL_0178: Unknown result type (might be due to invalid IL or missing references) //IL_018f: Unknown result type (might be due to invalid IL or missing references) //IL_0194: Unknown result type (might be due to invalid IL or missing references) if ((int)selectedStage == 0) { return; } TextHandler.SetTextCode(base.lbTitle, "PLAYER_STAGE_VOTED"); stageContainers.ForEach(delegate(StageContainer container) { ((LLClickable)container.Button).OnHoverOut(-1); ((LLClickable)container.Button).SetActive(false); container.Button.UpdateDisplay(); }); ((LLClickable)btRandomMain).SetActive(false); ((LLClickable)btRandomBoth3D).SetActive(false); ((LLClickable)btRandomBoth2D).SetActive(false); ((LLClickable)btFreePick).SetActive(false); if (_selectedRandomStage == Ruleset.RandomStageMode.OFF || _selectedRandomStage == Ruleset.RandomStageMode.BOTH) { StageContainer stageContainer = stageContainers.Find((StageContainer container) => container.StoredStage == selectedStage); Plugin.LogGlobal.LogInfo((object)stageContainer); if (stageContainer != null) { stageContainer.Button.Select(selected: true); stageContainer.Button.UpdateDisplay(); } return; } Ruleset.RandomStageMode randomStageMode = SetTracker.Instance.CurrentSet.ActiveRuleset.randomStageMode; if (randomStageMode == Ruleset.RandomStageMode.BOTH) { if (_selectedRandomStage == Ruleset.RandomStageMode.ANY_3D) { ((Graphic)btRandomBoth3D.imgBorder).color = Color.white; ((LLButton)btRandomBoth3D).colDisabled = ((LLButton)btRandomBoth3D).colHover; ((LLButton)btRandomBoth3D).UpdateColor(); } else if (_selectedRandomStage == Ruleset.RandomStageMode.ANY_2D) { ((Graphic)btRandomBoth2D.imgBorder).color = Color.white; ((LLButton)btRandomBoth2D).colDisabled = ((LLButton)btRandomBoth2D).colHover; ((LLButton)btRandomBoth2D).UpdateColor(); } } else { ((Graphic)btRandomMain.imgBorder).color = Color.white; ((LLButton)btRandomMain).colDisabled = ((LLButton)btRandomMain).colHover; ((LLButton)btRandomMain).UpdateColor(); } } private void OnVoteFreePick() { StageStrikeTracker.Instance.CurrentStrikeInfo.ToggleFreePickMode(); btRandomMain.enableVoting = !SetTracker.Instance.CurrentSet.IsFreePickMode && !SetTracker.Instance.CurrentSet.IsFreePickForced; btRandomBoth3D.enableVoting = !SetTracker.Instance.CurrentSet.IsFreePickMode && !SetTracker.Instance.CurrentSet.IsFreePickForced; btRandomBoth2D.enableVoting = !SetTracker.Instance.CurrentSet.IsFreePickMode && !SetTracker.Instance.CurrentSet.IsFreePickForced; UpdateStageBans(); UpdateSetInfo(); } private void OnVoteRandom(Ruleset.RandomStageMode randomStageMode) { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) if (randomStageMode != 0 && randomStageMode != Ruleset.RandomStageMode.BOTH) { UIScreen.blockGlobalInput = false; AudioHandler.PlaySfx((Sfx)4); selectedStage = StageStrikeTracker.Instance.CurrentStrikeInfo.PickRandomStage(randomStageMode); _selectedRandomStage = randomStageMode; } } } internal class ScreenStageStrikeRanked : ScreenPlayersStageComp, ICustomScreen, IStageSelect { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static ControlDelegate <>9__36_0; public static Action <>9__46_0; internal void b__36_0(int playerNumber) { GameStates.Send((Msg)2, playerNumber, -1); } internal void b__46_0(StageContainer container) { ((LLClickable)container.Button).OnHoverOut(-1); ((LLClickable)container.Button).SetActive(false); container.Button.UpdateDisplay(); } } private static readonly Vector2 BG_SCALE = new Vector2(1f, 2f); private static readonly Vector2 BG_POSITION = new Vector2(0f, -20f); private static readonly Vector2 TITLE_SCALE = new Vector2(1f, 0.6f); private static readonly Vector2 TITLE_POSITION = new Vector2(0f, 328f); private const int TITLE_FONT_SIZE = 36; private static readonly Vector2 SETCOUNT_POSITION = new Vector2(0f, 270f); private const int SETCOUNT_FONT_SIZE = 32; private static readonly Vector2 BANSREMAINING_POSITION = new Vector2(0f, -276f); private const int BANSREMAINING_FONT_SIZE = 18; private static readonly Vector2 BANSTATUS_POSITION = new Vector2(0f, -310f); private const int BANSTATUS_FONT_SIZE = 42; private static readonly Vector2 FREEPICK_POSITION = new Vector2(506f, -336f); private static readonly Vector2 FREEPICK_SCALE = new Vector2(234f, 27.5f); private const int FREEPICK_FONT_SIZE = 18; private static readonly Vector2 RANDOM_POSITION = new Vector2(-378f, -336f); private static readonly Vector2 RANDOM_SCALE = new Vector2(255.6f, 27.5f); private const int RANDOM_FONT_SIZE = 18; private static readonly Vector2 RANDOM_BOTH_OFFSET = new Vector2(60f, 0f); private static readonly Vector2 RANDOM_BOTH_SCALE = new Vector2(100f, 34f); private const int RANDOM_BOTH_FONT_SIZE = 16; private static readonly Vector2 USER_INFO_POSITION = new Vector2(-580f, -250f); private static readonly Vector2 OPPONENT_INFO_POSITION = new Vector2(580f, -250f); private static readonly Vector2 INFO_SCALE = Vector2.one * 0.65f; private List stageContainersNeutral; private List stageContainersCounterpick; private List stageContainers; private TextMeshProUGUI lbSetCount; private TextMeshProUGUI lbBansRemaining; private TextMeshProUGUI lbBanStatus; private VoteButton btFreePick; private VoteButton btRandomMain; private VoteButton btRandomBoth3D; private VoteButton btRandomBoth2D; private Stage selectedStage = (Stage)0; private Ruleset.RandomStageMode _selectedRandomStage = Ruleset.RandomStageMode.OFF; public void Init(ScreenPlayersStageComp screenPlayersStageComp) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0027: 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_0033: 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_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: 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_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00db: 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_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) ((ScreenBase)this).screenType = ((ScreenBase)screenPlayersStageComp).screenType; ((ScreenBase)this).layer = ((ScreenBase)screenPlayersStageComp).layer; ((ScreenBase)this).isActive = ((ScreenBase)screenPlayersStageComp).isActive; ((ScreenBase)this).msgEsc = ((ScreenBase)screenPlayersStageComp).msgEsc; ((ScreenBase)this).msgMenu = ((ScreenBase)screenPlayersStageComp).msgMenu; ((ScreenBase)this).msgCancel = ((ScreenBase)screenPlayersStageComp).msgCancel; ((ScreenPlayersStage)this).btBack = ((ScreenPlayersStage)screenPlayersStageComp).btBack; ((ScreenPlayersStage)this).btLeft = ((ScreenPlayersStage)screenPlayersStageComp).btLeft; ((ScreenPlayersStage)this).btRight = ((ScreenPlayersStage)screenPlayersStageComp).btRight; ((ScreenPlayersStage)this).lbTitle = ((ScreenPlayersStage)screenPlayersStageComp).lbTitle; ((ScreenPlayersStage)this).lbPlayersSelectingStage = ((ScreenPlayersStage)screenPlayersStageComp).lbPlayersSelectingStage; ((ScreenPlayersStage)this).obSpectator = ((ScreenPlayersStage)screenPlayersStageComp).obSpectator; ((ScreenPlayersStage)this).obNotSpectator = ((ScreenPlayersStage)screenPlayersStageComp).obNotSpectator; ((ScreenPlayersStage)this).stageButtonsContainer = ((ScreenPlayersStage)screenPlayersStageComp).stageButtonsContainer; ((ScreenPlayersStage)this).btStages = ((ScreenPlayersStage)screenPlayersStageComp).btStages; ((ScreenPlayersStage)this).posMid = ((ScreenPlayersStage)screenPlayersStageComp).posMid; ((ScreenPlayersStage)this).posLeft = ((ScreenPlayersStage)screenPlayersStageComp).posLeft; ((ScreenPlayersStage)this).posLeft2 = ((ScreenPlayersStage)screenPlayersStageComp).posLeft2; ((ScreenPlayersStage)this).posRight = ((ScreenPlayersStage)screenPlayersStageComp).posRight; ((ScreenPlayersStage)this).posRight2 = ((ScreenPlayersStage)screenPlayersStageComp).posRight2; ((ScreenPlayersStage)this).scaleSmall = ((ScreenPlayersStage)screenPlayersStageComp).scaleSmall; ((ScreenPlayersStage)this).scaleBig = ((ScreenPlayersStage)screenPlayersStageComp).scaleBig; ((ScreenPlayersStage)this).nButtons = ((ScreenPlayersStage)screenPlayersStageComp).nButtons; ((ScreenPlayersStage)this).curIndex = ((ScreenPlayersStage)screenPlayersStageComp).curIndex; ((ScreenPlayersStage)this).isMoving = ((ScreenPlayersStage)screenPlayersStageComp).isMoving; ((ScreenPlayersStage)this).queuedMove = ((ScreenPlayersStage)screenPlayersStageComp).queuedMove; base.userInfo = screenPlayersStageComp.userInfo; base.opponentInfo = screenPlayersStageComp.opponentInfo; base.userNameLabel = screenPlayersStageComp.userNameLabel; base.userPlayerRender = screenPlayersStageComp.userPlayerRender; base.userCharacterIcon = screenPlayersStageComp.userCharacterIcon; base.opponentNameLabel = screenPlayersStageComp.opponentNameLabel; base.opponentPlayerRender = screenPlayersStageComp.opponentPlayerRender; base.opponentCharacterIcon = screenPlayersStageComp.opponentCharacterIcon; } public override void OnOpen(ScreenType screenTypePrev) { //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0067: 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_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: 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_014b: Unknown result type (might be due to invalid IL or missing references) //IL_0196: 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_0212: Unknown result type (might be due to invalid IL or missing references) //IL_0217: Unknown result type (might be due to invalid IL or missing references) //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Expected O, but got Unknown //IL_02c2: Unknown result type (might be due to invalid IL or missing references) //IL_02c7: Unknown result type (might be due to invalid IL or missing references) //IL_03f5: Unknown result type (might be due to invalid IL or missing references) //IL_03fa: Unknown result type (might be due to invalid IL or missing references) //IL_03ff: Unknown result type (might be due to invalid IL or missing references) //IL_0404: Unknown result type (might be due to invalid IL or missing references) //IL_04c3: Unknown result type (might be due to invalid IL or missing references) //IL_04c8: Unknown result type (might be due to invalid IL or missing references) //IL_04cd: Unknown result type (might be due to invalid IL or missing references) //IL_04d2: Unknown result type (might be due to invalid IL or missing references) StageStrikeTracker.Instance.Start(); Plugin.Instance.RecolorCursors = true; if (TextHandler.isInited) { ((ScreenBase)this).UpdateText(); } RankedOnOpen(); ((ScreenBase)this).msgMenu = (Msg)0; RectTransform component = ((Component)((Component)this).transform.Find("bar_top")).GetComponent(); component.anchoredPosition = TITLE_POSITION; ((Transform)component).localScale = Vector2.op_Implicit(TITLE_SCALE); ((Transform)((ScreenPlayersStage)this).lbTitle.rectTransform).localScale = Vector2.op_Implicit(new Vector2(1f / TITLE_SCALE.x, 1f / TITLE_SCALE.y)); ((ScreenPlayersStage)this).lbTitle.fontSize = 36f; RectTransform component2 = ((Component)((Component)this).transform.Find("bar_mid")).GetComponent(); component2.anchoredPosition = BG_POSITION; ((Transform)component2).localScale = Vector2.op_Implicit(BG_SCALE); ((LLControl)((ScreenPlayersStage)this).btLeft).visible = false; ((LLControl)((ScreenPlayersStage)this).btRight).visible = false; LLButton btBack = ((ScreenPlayersStage)this).btBack; object obj = <>c.<>9__36_0; if (obj == null) { ControlDelegate val = delegate(int playerNumber) { GameStates.Send((Msg)2, playerNumber, -1); }; <>c.<>9__36_0 = val; obj = (object)val; } ((LLClickable)btBack).onClick = (ControlDelegate)obj; UIUtils.CreateText(ref lbSetCount, "lbSetCount", ((Component)this).transform, SETCOUNT_POSITION); ((TMP_Text)lbSetCount).fontSize = 32f; ((TMP_Text)lbSetCount).richText = true; TextHandler.SetText((TMP_Text)(object)lbSetCount, ""); UIUtils.CreateText(ref lbBansRemaining, "lbBansRemaining", ((Component)this).transform, BANSREMAINING_POSITION); ((TMP_Text)lbBansRemaining).fontSize = 18f; TextHandler.SetText((TMP_Text)(object)lbBansRemaining, ""); UIUtils.CreateText(ref lbBanStatus, "lbBanStatus", ((Component)this).transform, BANSTATUS_POSITION); ((TMP_Text)lbBanStatus).fontSize = 42f; TextHandler.SetText((TMP_Text)(object)lbBanStatus, ""); UIUtils.CreateVoteButton(ref btFreePick, "btFreePick", ((Component)this).transform, FREEPICK_POSITION, FREEPICK_SCALE); VoteButton.ActiveVoteButtons.Add(btFreePick); btFreePick.label = "Toggle free pick"; ((TMP_Text)((LLButton)btFreePick).textMesh).fontSize = 18f; btFreePick.onVote = OnVoteFreePick; if (SetTracker.Instance.CurrentSet.IsFreePickForced) { ((Component)btFreePick).gameObject.SetActive(false); } Ruleset.RandomStageMode randomStageMode = SetTracker.Instance.CurrentSet.ActiveRuleset.randomStageMode; UIUtils.CreateVoteButton(ref btRandomMain, "btRandomMain", ((Component)this).transform, RANDOM_POSITION, RANDOM_SCALE); VoteButton.ActiveVoteButtons.Add(btRandomMain); VoteButton voteButton = btRandomMain; if (1 == 0) { } string text = randomStageMode switch { Ruleset.RandomStageMode.ANY => "(any 3D/2D)", Ruleset.RandomStageMode.ANY_3D => "(any 3D)", Ruleset.RandomStageMode.ANY_2D => "(any 2D)", Ruleset.RandomStageMode.ANY_LEGAL => "(any legal)", _ => "", }; if (1 == 0) { } voteButton.label = "Random " + text; ((TMP_Text)((LLButton)btRandomMain).textMesh).fontSize = 18f; btRandomMain.onVote = delegate { OnVoteRandom(randomStageMode); }; btRandomMain.enableVoting = !SetTracker.Instance.CurrentSet.IsFreePickMode && !SetTracker.Instance.CurrentSet.IsFreePickForced; if (randomStageMode == Ruleset.RandomStageMode.OFF || randomStageMode == Ruleset.RandomStageMode.BOTH) { ((Component)btRandomMain).gameObject.SetActive(false); } UIUtils.CreateVoteButton(ref btRandomBoth3D, "btRandomBoth3D", ((Component)this).transform, RANDOM_POSITION - RANDOM_BOTH_OFFSET, RANDOM_BOTH_SCALE); VoteButton.ActiveVoteButtons.Add(btRandomBoth3D); btRandomBoth3D.label = "Random\n(3D)"; ((TMP_Text)((LLButton)btRandomBoth3D).textMesh).fontSize = 16f; btRandomBoth3D.onVote = delegate { OnVoteRandom(Ruleset.RandomStageMode.ANY_3D); }; btRandomBoth3D.enableVoting = !SetTracker.Instance.CurrentSet.IsFreePickMode && !SetTracker.Instance.CurrentSet.IsFreePickForced; if (randomStageMode != Ruleset.RandomStageMode.BOTH) { ((Component)btRandomBoth3D).gameObject.SetActive(false); } UIUtils.CreateVoteButton(ref btRandomBoth2D, "btRandomBoth2D", ((Component)this).transform, RANDOM_POSITION + RANDOM_BOTH_OFFSET, RANDOM_BOTH_SCALE); VoteButton.ActiveVoteButtons.Add(btRandomBoth2D); btRandomBoth2D.label = "Random\n(2D)"; ((TMP_Text)((LLButton)btRandomBoth2D).textMesh).fontSize = 16f; btRandomBoth2D.onVote = delegate { OnVoteRandom(Ruleset.RandomStageMode.ANY_2D); }; btRandomBoth2D.enableVoting = !SetTracker.Instance.CurrentSet.IsFreePickMode && !SetTracker.Instance.CurrentSet.IsFreePickForced; if (randomStageMode != Ruleset.RandomStageMode.BOTH) { ((Component)btRandomBoth2D).gameObject.SetActive(false); } CreateStageContainers(); UpdateStageBans(); UpdateSetInfo(); } private void RankedOnOpen() { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: 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_010d: Unknown result type (might be due to invalid IL or missing references) //IL_0110: Invalid comparison between Unknown and I4 //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_016b: Unknown result type (might be due to invalid IL or missing references) //IL_0170: Unknown result type (might be due to invalid IL or missing references) //IL_01fb: Unknown result type (might be due to invalid IL or missing references) //IL_0212: Unknown result type (might be due to invalid IL or missing references) //IL_0216: Unknown result type (might be due to invalid IL or missing references) //IL_022c: Unknown result type (might be due to invalid IL or missing references) //IL_024f: Unknown result type (might be due to invalid IL or missing references) //IL_0252: Invalid comparison between Unknown and I4 //IL_025e: Unknown result type (might be due to invalid IL or missing references) //IL_02ad: Unknown result type (might be due to invalid IL or missing references) //IL_02b2: Unknown result type (might be due to invalid IL or missing references) //IL_02e3: Unknown result type (might be due to invalid IL or missing references) //IL_02e8: Unknown result type (might be due to invalid IL or missing references) //IL_02f9: Unknown result type (might be due to invalid IL or missing references) //IL_02fe: Unknown result type (might be due to invalid IL or missing references) //IL_030f: Unknown result type (might be due to invalid IL or missing references) //IL_0314: Unknown result type (might be due to invalid IL or missing references) //IL_0325: Unknown result type (might be due to invalid IL or missing references) //IL_032a: Unknown result type (might be due to invalid IL or missing references) ScreenPlayers val = Object.FindObjectOfType(); if ((Object)(object)val == (Object)null) { Plugin.LogGlobal.LogFatal((object)"Could not find lobby screen ScreenPlayers"); } Character characterSelected = Player.GetPlayer(0).CharacterSelected; base.userNameLabel = ((Component)base.userInfo.Find("lbName")).GetComponent(); ((TMP_Text)base.userNameLabel).text = val.playerSelections[0].btPlayerName.GetText(); base.userPlayerRender = ((Component)base.userInfo).GetComponentInChildren(); base.userPlayerRender.texture = (Texture)(object)val.playerSelections[0].modelPreview.renderTex; ((Graphic)base.userPlayerRender).rectTransform.sizeDelta = ((Graphic)val.playerSelections[0].modelPreview.image).rectTransform.sizeDelta; Vector3 localScale = default(Vector3); ((Graphic)base.userPlayerRender).rectTransform.anchoredPosition = ((ScreenPlayersStageComp)this).GetCharacterRenderCustomPosition(characterSelected, ref localScale, (Side)1); ((Transform)((Graphic)base.userPlayerRender).rectTransform).localScale = localScale; base.userCharacterIcon = ((Component)base.userInfo.Find("characterIcon")).GetComponent(); if ((int)characterSelected != 102) { int num = JPLELOFJOOH.LPCPPJOIIEF(characterSelected); ((Component)base.userCharacterIcon).gameObject.SetActive(true); base.userCharacterIcon.sprite = JPLELOFJOOH.BNFIDCAPPDK("_spriteCharacterSymbols", num); } else { ((Component)base.userCharacterIcon).gameObject.SetActive(false); } Character characterSelected2 = Player.GetPlayer(1).CharacterSelected; base.opponentNameLabel = ((Component)base.opponentInfo.Find("lbName")).GetComponent(); ((TMP_Text)base.opponentNameLabel).text = val.playerSelections[1].btPlayerName.GetText(); base.opponentPlayerRender = ((Component)base.opponentInfo).GetComponentInChildren(); base.opponentPlayerRender.texture = (Texture)(object)val.playerSelections[1].modelPreview.renderTex; ((Graphic)base.opponentPlayerRender).rectTransform.sizeDelta = ((Graphic)val.playerSelections[1].modelPreview.image).rectTransform.sizeDelta; Vector3 localScale2 = default(Vector3); ((Graphic)base.opponentPlayerRender).rectTransform.anchoredPosition = ((ScreenPlayersStageComp)this).GetCharacterRenderCustomPosition(characterSelected2, ref localScale2, (Side)0); ((Transform)((Graphic)base.opponentPlayerRender).rectTransform).localScale = localScale2; base.opponentCharacterIcon = ((Component)base.opponentInfo.Find("characterIcon")).GetComponent(); if ((int)characterSelected2 != 102) { int num2 = JPLELOFJOOH.LPCPPJOIIEF(characterSelected2); ((Component)base.opponentCharacterIcon).gameObject.SetActive(true); base.opponentCharacterIcon.sprite = JPLELOFJOOH.BNFIDCAPPDK("_spriteCharacterSymbols", num2); } else { ((Component)base.opponentCharacterIcon).gameObject.SetActive(false); } ((ScreenPlayersStage)this).stageButtonsContainer.localPosition = Vector2.op_Implicit(Vector2.zero); Transform val2 = ((Component)this).transform.Find("lbVersus"); ((Component)val2).gameObject.SetActive(false); base.userInfo.localPosition = Vector2.op_Implicit(USER_INFO_POSITION); base.userInfo.localScale = Vector2.op_Implicit(INFO_SCALE); base.opponentInfo.localPosition = Vector2.op_Implicit(OPPONENT_INFO_POSITION); base.opponentInfo.localScale = Vector2.op_Implicit(INFO_SCALE); } public override void OnClose(ScreenType screenTypeNext) { //IL_005c: Unknown result type (might be due to invalid IL or missing references) StageStrikeTracker.Instance.End(); Plugin.Instance.RecolorCursors = false; VoteButton.ActiveVoteButtons.Remove(btFreePick); VoteButton.ActiveVoteButtons.Remove(btRandomMain); VoteButton.ActiveVoteButtons.Remove(btRandomBoth3D); VoteButton.ActiveVoteButtons.Remove(btRandomBoth2D); ((ScreenPlayersStageComp)this).OnClose(screenTypeNext); } public override void DoUpdate() { //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) //IL_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01aa: Invalid comparison between Unknown and I4 //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_01c9: Unknown result type (might be due to invalid IL or missing references) //IL_01ce: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Invalid comparison between Unknown and I4 //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Invalid comparison between Unknown and I4 //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Unknown result type (might be due to invalid IL or missing references) //IL_0157: Unknown result type (might be due to invalid IL or missing references) //IL_0145: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Invalid comparison between Unknown and I4 //IL_0187: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Invalid comparison between Unknown and I4 //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Unknown result type (might be due to invalid IL or missing references) Controller all; if (!UIScreen.blockGlobalInput) { all = Controller.all; if (((Controller)(ref all)).GetButtonDown(InputAction.ESC)) { ((ScreenBase)this).SendGlobal(((ScreenBase)this).msgEsc, -1); } if ((int)((ScreenBase)this).msgMenu != 0 || (int)((ScreenBase)this).msgCancel > 0) { if ((int)UIInput.uiControl == 2) { for (int i = 0; i < 4; i++) { ALDOKEMAOMB val = ALDOKEMAOMB.BJDPHEHJJJK(i); if ((int)UIInput.uiControl != 2 || (val.OBELDJGOOIJ != null && (int)val.OBELDJGOOIJ.state > 0)) { if (((Controller)(ref val.GDEMBCKIDMA)).GetButtonDown(InputAction.MENU)) { ((ScreenBase)this).SendGlobal(((ScreenBase)this).msgMenu, i); } if (((Controller)(ref val.GDEMBCKIDMA)).GetButtonDown(InputAction.BACK) || (((Controller)(ref val.GDEMBCKIDMA)).IncludesMouse() && Input.GetMouseButtonDown(1))) { ((ScreenBase)this).SendGlobal(((ScreenBase)this).msgCancel, i); } } } } else { all = Controller.all; if (((Controller)(ref all)).GetButtonDown(InputAction.MENU)) { ((ScreenBase)this).SendGlobal(((ScreenBase)this).msgMenu, -1); } all = Controller.all; if (((Controller)(ref all)).GetButtonDown(InputAction.BACK) || (CGLLJHHAJAK.GIGAKBJGFDI.hasMouseKeyboard && Input.GetMouseButtonDown(1))) { ((ScreenBase)this).SendGlobal(((ScreenBase)this).msgCancel, -1); } } } } if (UIScreen.blockGlobalInput) { return; } if ((int)UIInput.uiControl == 2) { Player.ForAll((Action)delegate(Player player) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Invalid comparison between Unknown and I4 //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) if (player.cursor != null && (int)player.cursor.state != 0) { Controller controller = player.controller; if (((Controller)(ref controller)).GetButtonDown(InputAction.MENU)) { LLClickable defaultFocus2 = ((ScreenBase)this).GetDefaultFocus(player.cursor); if ((Object)(object)defaultFocus2 != (Object)null && defaultFocus2.isActive) { defaultFocus2.OnClick(player.nr); } } } }); return; } all = Controller.all; if (((Controller)(ref all)).GetButtonDown(InputAction.MENU)) { LLClickable defaultFocus = ((ScreenBase)this).GetDefaultFocus(UIInput.mainCursor); if ((Object)(object)defaultFocus != (Object)null && defaultFocus.isActive) { defaultFocus.OnClick(-1); } } } public override LLClickable GetDefaultFocus(LLCursor cursor) { Ruleset.RandomStageMode randomStageMode = SetTracker.Instance.CurrentSet.ActiveRuleset.randomStageMode; if (1 == 0) { } VoteButton result = randomStageMode switch { Ruleset.RandomStageMode.OFF => null, Ruleset.RandomStageMode.BOTH => btRandomBoth3D, _ => btRandomMain, }; if (1 == 0) { } return (LLClickable)(object)result; } public override void GetControls(ref List list, bool vert, LLClickable curFocus, LLCursor cursor) { list.AddRange((IEnumerable)(object)((ScreenPlayersStage)this).btStages); list.Add((LLClickable)(object)((ScreenPlayersStage)this).btBack); switch (SetTracker.Instance.CurrentSet.ActiveRuleset.randomStageMode) { case Ruleset.RandomStageMode.BOTH: list.Add((LLClickable)(object)btRandomBoth3D); list.Add((LLClickable)(object)btRandomBoth2D); break; default: list.Add((LLClickable)(object)btRandomMain); break; case Ruleset.RandomStageMode.OFF: break; } if (!SetTracker.Instance.CurrentSet.IsFreePickForced) { list.Add((LLClickable)(object)btFreePick); } } private void CreateStageContainers() { //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: 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) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_015d: Unknown result type (might be due to invalid IL or missing references) //IL_0168: Unknown result type (might be due to invalid IL or missing references) //IL_017b: 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_01a9: Unknown result type (might be due to invalid IL or missing references) //IL_01b6: Unknown result type (might be due to invalid IL or missing references) //IL_01c1: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Unknown result type (might be due to invalid IL or missing references) //IL_0259: Unknown result type (might be due to invalid IL or missing references) //IL_025e: Unknown result type (might be due to invalid IL or missing references) //IL_0262: Unknown result type (might be due to invalid IL or missing references) //IL_0283: Unknown result type (might be due to invalid IL or missing references) //IL_029d: Unknown result type (might be due to invalid IL or missing references) //IL_02c8: Unknown result type (might be due to invalid IL or missing references) //IL_02d3: Unknown result type (might be due to invalid IL or missing references) //IL_02ef: Unknown result type (might be due to invalid IL or missing references) //IL_02fa: Unknown result type (might be due to invalid IL or missing references) //IL_0334: Unknown result type (might be due to invalid IL or missing references) //IL_0341: Unknown result type (might be due to invalid IL or missing references) //IL_034c: Unknown result type (might be due to invalid IL or missing references) //IL_0351: Unknown result type (might be due to invalid IL or missing references) StageLayout stageLayout = StageLayout.Create(SetTracker.Instance.CurrentSet.ActiveRuleset.stagesNeutral.Count, SetTracker.Instance.CurrentSet.ActiveRuleset.stagesCounterpick.Count); float num = stageLayout.position.y + stageLayout.totalHeight / 2f - stageLayout.stageSize.y / 2f; ((ScreenPlayersStage)this).nButtons = SetTracker.Instance.CurrentSet.ActiveRuleset.stagesNeutral.Count + SetTracker.Instance.CurrentSet.ActiveRuleset.stagesCounterpick.Count; ((ScreenPlayersStage)this).btStages = (LLButton[])(object)new LLButton[((ScreenPlayersStage)this).nButtons]; int num2 = 0; int num3 = 0; int num4 = 0; stageContainers = new List(); stageContainersNeutral = new List(); foreach (Stage item in SetTracker.Instance.CurrentSet.ActiveRuleset.stagesNeutral) { float num5 = stageLayout.position.x - stageLayout.GetRowWidth(stageLayout.rowLengthsNeutral[num3]) / 2f + stageLayout.stageSize.x / 2f; StageContainer stageContainer = new StageContainer(this, ((ScreenPlayersStage)this).stageButtonsContainer, item); stageContainers.Add(stageContainer); stageContainersNeutral.Add(stageContainer); float num6 = num5 + (float)num4 * (stageLayout.stageSize.x + stageLayout.spacing.x); float num7 = num - (float)num3 * (stageLayout.stageSize.y + stageLayout.spacing.y); RectTransform component = ((Component)stageContainer.Button).GetComponent(); component.anchoredPosition = new Vector2(num6, num7); ((Transform)component).localScale = Vector2.op_Implicit(Vector2.one * stageLayout.stageScaleFactor); ((ScreenPlayersStage)this).btStages[num2] = (LLButton)(object)stageContainer.Button; num2++; num4++; if (num4 >= stageLayout.rowLengthsNeutral[num3]) { num3++; num4 = 0; } } num3 = 0; num4 = 0; stageContainersCounterpick = new List(); foreach (Stage item2 in SetTracker.Instance.CurrentSet.ActiveRuleset.stagesCounterpick) { float num8 = stageLayout.position.x - stageLayout.GetRowWidth(stageLayout.rowLengthsCounterpick[num3]) / 2f + stageLayout.stageSize.x / 2f; StageContainer stageContainer2 = new StageContainer(this, ((ScreenPlayersStage)this).stageButtonsContainer, item2); stageContainers.Add(stageContainer2); stageContainersCounterpick.Add(stageContainer2); float num9 = num8 + (float)num4 * (stageLayout.stageSize.x + stageLayout.spacing.x); float num10 = num - (float)(num3 + stageLayout.rowLengthsNeutral.Length) * (stageLayout.stageSize.y + stageLayout.spacing.y); if (stageLayout.useBothCategories) { num10 -= stageLayout.stageCategorySpacing; } RectTransform component2 = ((Component)stageContainer2.Button).GetComponent(); component2.anchoredPosition = new Vector2(num9, num10); ((Transform)component2).localScale = Vector2.op_Implicit(Vector2.one * stageLayout.stageScaleFactor); ((ScreenPlayersStage)this).btStages[num2] = (LLButton)(object)stageContainer2.Button; num2++; num4++; if (num4 >= stageLayout.rowLengthsCounterpick[num3]) { num3++; num4 = 0; } } } private void UpdateStageBans() { List stageBans = StageStrikeTracker.Instance.CurrentStrikeInfo.StageBans; stageBans.ForEach(delegate(StageBan ban) { stageContainers.Find((StageContainer container) => container.StoredStage == ban.stage)?.Button.SetBan((SetTracker.Instance.CurrentSet.IsFreePickMode || SetTracker.Instance.CurrentSet.IsFreePickForced) ? null : ban); }); } private void UpdateSetInfo() { //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_01ba: Unknown result type (might be due to invalid IL or missing references) //IL_011a: Unknown result type (might be due to invalid IL or missing references) int num = 0; int[] array = new int[4]; if (SetTracker.Instance.IsTrackingSet) { num = SetTracker.Instance.CurrentSet.GameNumber; array = SetTracker.Instance.CurrentSet.WinCounts; } TextHandler.SetText((TMP_Text)(object)lbSetCount, (SetTracker.Instance.ActiveTourneyMode == TourneyMode.NONE) ? "" : $"Game {SetTracker.Instance.CurrentSet.GameNumber} ({SetTracker.Instance.CurrentSet.WinCounts[0]}-{SetTracker.Instance.CurrentSet.WinCounts[1]})"); if (SetTracker.Instance.CurrentSet.IsFreePickMode || SetTracker.Instance.CurrentSet.IsFreePickForced) { TextHandler.SetText((TMP_Text)(object)lbBansRemaining, "Free pick mode"); ((Graphic)lbBanStatus).color = Color.white; TextHandler.SetText((TMP_Text)(object)lbBanStatus, (StageStrikeTracker.Instance.CurrentStrikeInfo.CurrentInteractMode == StrikeInfo.InteractMode.PICK) ? "Picking..." : "Banning..."); } else { TextHandler.SetText((TMP_Text)(object)lbBansRemaining, $"Bans remaining: RED {StageStrikeTracker.Instance.CurrentStrikeInfo.TotalBansRemaining[0]}, BLUE {StageStrikeTracker.Instance.CurrentStrikeInfo.TotalBansRemaining[1]}"); Team controllingTeam = StageStrikeTracker.Instance.CurrentStrikeInfo.ControllingTeam; ((Graphic)lbBanStatus).color = UIUtils.COLOR_TEAM[(int)(EnumWrapper)(object)controllingTeam]; TextHandler.SetText((TMP_Text)(object)lbBanStatus, (StageStrikeTracker.Instance.CurrentStrikeInfo.CurrentInteractMode == StrikeInfo.InteractMode.BAN) ? $"{controllingTeam} banning {StageStrikeTracker.Instance.CurrentStrikeInfo.CurrentBansRemaining}..." : $"{controllingTeam} picking..."); } } public void OnClickStage(int playerNumber, Stage stage) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_004a: 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_0051: Unknown result type (might be due to invalid IL or missing references) if (StageStrikeTracker.Instance.CurrentStrikeInfo.CheckPlayerInteraction(stage, playerNumber)) { if (StageStrikeTracker.Instance.CurrentStrikeInfo.CurrentInteractMode == StrikeInfo.InteractMode.PICK) { UIScreen.blockGlobalInput = false; AudioHandler.PlaySfx((Sfx)4); selectedStage = StageStrikeTracker.Instance.CurrentStrikeInfo.PickStage(stage, playerNumber); } else { StageStrikeTracker.Instance.CurrentStrikeInfo.BanStage(stage, playerNumber); UpdateStageBans(); } UpdateSetInfo(); } } public void OnStageSelected() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Invalid comparison between Unknown and I4 //IL_01b5: Unknown result type (might be due to invalid IL or missing references) //IL_01cc: 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_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_0149: Unknown result type (might be due to invalid IL or missing references) //IL_0178: Unknown result type (might be due to invalid IL or missing references) //IL_018f: Unknown result type (might be due to invalid IL or missing references) //IL_0194: Unknown result type (might be due to invalid IL or missing references) if ((int)selectedStage == 0) { return; } TextHandler.SetTextCode(((ScreenPlayersStage)this).lbTitle, "PLAYER_STAGE_VOTED"); stageContainers.ForEach(delegate(StageContainer container) { ((LLClickable)container.Button).OnHoverOut(-1); ((LLClickable)container.Button).SetActive(false); container.Button.UpdateDisplay(); }); ((LLClickable)btRandomMain).SetActive(false); ((LLClickable)btRandomBoth3D).SetActive(false); ((LLClickable)btRandomBoth2D).SetActive(false); ((LLClickable)btFreePick).SetActive(false); if (_selectedRandomStage == Ruleset.RandomStageMode.OFF || _selectedRandomStage == Ruleset.RandomStageMode.BOTH) { StageContainer stageContainer = stageContainers.Find((StageContainer container) => container.StoredStage == selectedStage); Plugin.LogGlobal.LogInfo((object)stageContainer); if (stageContainer != null) { stageContainer.Button.Select(selected: true); stageContainer.Button.UpdateDisplay(); } return; } Ruleset.RandomStageMode randomStageMode = SetTracker.Instance.CurrentSet.ActiveRuleset.randomStageMode; if (randomStageMode == Ruleset.RandomStageMode.BOTH) { if (_selectedRandomStage == Ruleset.RandomStageMode.ANY_3D) { ((Graphic)btRandomBoth3D.imgBorder).color = Color.white; ((LLButton)btRandomBoth3D).colDisabled = ((LLButton)btRandomBoth3D).colHover; ((LLButton)btRandomBoth3D).UpdateColor(); } else if (_selectedRandomStage == Ruleset.RandomStageMode.ANY_2D) { ((Graphic)btRandomBoth2D.imgBorder).color = Color.white; ((LLButton)btRandomBoth2D).colDisabled = ((LLButton)btRandomBoth2D).colHover; ((LLButton)btRandomBoth2D).UpdateColor(); } } else { ((Graphic)btRandomMain.imgBorder).color = Color.white; ((LLButton)btRandomMain).colDisabled = ((LLButton)btRandomMain).colHover; ((LLButton)btRandomMain).UpdateColor(); } } private void OnVoteFreePick() { StageStrikeTracker.Instance.CurrentStrikeInfo.ToggleFreePickMode(); btRandomMain.enableVoting = !SetTracker.Instance.CurrentSet.IsFreePickMode && !SetTracker.Instance.CurrentSet.IsFreePickForced; btRandomBoth3D.enableVoting = !SetTracker.Instance.CurrentSet.IsFreePickMode && !SetTracker.Instance.CurrentSet.IsFreePickForced; btRandomBoth2D.enableVoting = !SetTracker.Instance.CurrentSet.IsFreePickMode && !SetTracker.Instance.CurrentSet.IsFreePickForced; UpdateStageBans(); UpdateSetInfo(); } private void OnVoteRandom(Ruleset.RandomStageMode randomStageMode) { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) if (randomStageMode != 0 && randomStageMode != Ruleset.RandomStageMode.BOTH) { UIScreen.blockGlobalInput = false; AudioHandler.PlaySfx((Sfx)4); selectedStage = StageStrikeTracker.Instance.CurrentStrikeInfo.PickRandomStage(randomStageMode); _selectedRandomStage = randomStageMode; } } } internal class StageButton : LLButton { private static readonly Color COLOR_BANNED = Color.white * 0.25f; private static readonly Color COLOR_UNFOCUSED = Color.white * 0.6f; private static readonly Color COLOR_FOCUSED = Color.white; private static readonly Color COLOR_LOCK = Color.white; private static readonly Color[] COLOR_LOCK_TEAM = (Color[])(object)new Color[4] { new Color(1f, 0.2509804f, 0.08627451f), new Color(0.050980393f, 8f / 15f, 1f), new Color(1f, 1f, 0.23921569f), new Color(0.3529412f, 0.95686275f, 0.3529412f) }; private static readonly Color[] COLOR_SOFTLOCK_TEAM = (Color[])(object)new Color[4] { new Color(1f, 0.2509804f, 0.08627451f, 0.3f), new Color(0.050980393f, 8f / 15f, 1f, 0.3f), new Color(1f, 1f, 0.23921569f, 0.3f), new Color(0.3529412f, 0.95686275f, 0.3529412f, 0.3f) }; private bool[] playersHovering = new bool[4]; private StageBan stageBan; private bool selected; private Image stageImage; private Image lockedImage; private Image selectedImage; private TextMeshProUGUI lbBanReason; private bool IsBeingHovered => playersHovering[0] || playersHovering[1] || playersHovering[2] || playersHovering[3]; internal static StageButton CreateStageButton(Transform tfParent, Stage stage) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) RectTransform val = LLControl.CreatePanel(tfParent, $"Button_{stage}"); StageButton stageButton = ((Component)val).gameObject.AddComponent(); ((LLButton)stageButton).soundClick = true; ((LLButton)stageButton).soundHover = true; Sprite val2 = JPLELOFJOOH.BNFIDCAPPDK($"_spritePreview{stage}"); stageButton.stageImage = LLControl.CreateImage((Transform)(object)val, val2); Sprite val3 = JPLELOFJOOH.BNFIDCAPPDK("_spritePreviewLOCKED"); stageButton.lockedImage = LLControl.CreateImage((Transform)(object)val, val3); ((Graphic)stageButton.lockedImage).raycastTarget = false; stageButton.selectedImage = LLControl.CreateImage((Transform)(object)val, UIUtils.spriteStageSelected); ((Graphic)stageButton.selectedImage).raycastTarget = false; UIUtils.CreateText(ref stageButton.lbBanReason, "lbBanReason", ((Component)stageButton).transform, new Vector2(0f, 13f)); ((TMP_Text)stageButton.lbBanReason).fontSize = 22f; TextHandler.SetText((TMP_Text)(object)stageButton.lbBanReason, ""); ((LLControl)stageButton).Init(); return stageButton; } public override void InitNeeded() { ((LLClickable)this).OnHoverOut(-1); } public void SetBan(StageBan ban) { stageBan = ban; if (stageBan != null) { if ((EnumWrapper)(object)stageBan.banTeam == (EnumWrapper)(object)Team.NONE) { ((LLClickable)this).OnHoverOut(-1); } else { for (int i = 0; i < 4; i++) { if ((EnumWrapper)(object)SetTracker.Instance.GetPlayerTeam(i) == (EnumWrapper)(object)stageBan.banTeam) { ((LLClickable)this).OnHoverOut(i); } } } } UpdateDisplay(); } public override void OnHover(int playerNumber) { if (playerNumber == -1) { playersHovering = new bool[4] { true, true, true, true }; if (base.soundHover) { AudioHandler.PlayMenuSfx((Sfx)5); } } else { bool flag = StageStrikeTracker.Instance.CurrentStrikeInfo.CheckPlayerInteraction(stageBan, playerNumber); playersHovering[playerNumber] = flag; if (flag && base.soundHover) { AudioHandler.PlayMenuSfx((Sfx)5); } } UpdateDisplay(); } public override void OnHoverOut(int playerNumber) { if (playerNumber == -1) { playersHovering = new bool[4]; } else { playersHovering[playerNumber] = false; } UpdateDisplay(); } internal void Select(bool selected) { this.selected = selected; } internal void UpdateDisplay() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0059: 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_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_0170: Unknown result type (might be due to invalid IL or missing references) //IL_0181: Unknown result type (might be due to invalid IL or missing references) //IL_01bd: Unknown result type (might be due to invalid IL or missing references) //IL_01e3: Unknown result type (might be due to invalid IL or missing references) //IL_024d: Unknown result type (might be due to invalid IL or missing references) //IL_0246: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_0291: Unknown result type (might be due to invalid IL or missing references) //IL_028a: Unknown result type (might be due to invalid IL or missing references) ((Graphic)selectedImage).color = Color.clear; if (selected) { ((Graphic)stageImage).color = COLOR_FOCUSED; ((Graphic)selectedImage).color = Color.white; } else if (!((LLClickable)this).isActive) { ((Graphic)stageImage).color = COLOR_BANNED; } else if (IsBeingHovered) { ((Graphic)stageImage).color = COLOR_FOCUSED; } else if (stageBan != null) { if (stageBan.reason == StageBan.BanReason.DSR && (EnumWrapper)(object)stageBan.banTeam != (EnumWrapper)(object)Team.NONE) { ((Graphic)stageImage).color = COLOR_UNFOCUSED; } else { ((Graphic)stageImage).color = COLOR_BANNED; } } else { ((Graphic)stageImage).color = COLOR_UNFOCUSED; } ((Component)lockedImage).gameObject.SetActive(stageBan != null); if (stageBan == null) { TextHandler.SetText((TMP_Text)(object)lbBanReason, ""); return; } switch (stageBan.reason) { case StageBan.BanReason.COUNTERPICK: ((Graphic)lockedImage).color = COLOR_LOCK; ((Graphic)lbBanReason).color = COLOR_LOCK; TextHandler.SetText((TMP_Text)(object)lbBanReason, "Counterpick"); break; case StageBan.BanReason.BAN: ((Graphic)lockedImage).color = COLOR_LOCK_TEAM[(int)(EnumWrapper)(object)stageBan.banTeam]; ((Graphic)lbBanReason).color = COLOR_LOCK_TEAM[(int)(EnumWrapper)(object)stageBan.banTeam]; TextHandler.SetText((TMP_Text)(object)lbBanReason, $"{stageBan.banTeam} Ban"); break; case StageBan.BanReason.DSR: ((Graphic)lockedImage).color = (((EnumWrapper)(object)stageBan.banTeam == (EnumWrapper)(object)Team.NONE) ? COLOR_LOCK : COLOR_SOFTLOCK_TEAM[(int)(EnumWrapper)(object)stageBan.banTeam]); ((Graphic)lbBanReason).color = (((EnumWrapper)(object)stageBan.banTeam == (EnumWrapper)(object)Team.NONE) ? COLOR_LOCK : COLOR_SOFTLOCK_TEAM[(int)(EnumWrapper)(object)stageBan.banTeam]); TextHandler.SetText((TMP_Text)(object)lbBanReason, ((EnumWrapper)(object)stageBan.banTeam == (EnumWrapper)(object)Team.NONE) ? "Both DSR" : $"{stageBan.banTeam} DSR"); break; } } } internal class StageContainer { private TextMeshProUGUI lbStageName; private TextMeshProUGUI lbStageSize; internal StageButton Button { get; private set; } internal Stage StoredStage { get; private set; } private string StageName => StringUtils.GetStageReadableName(StoredStage); private Vector2 StageSize { get { //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) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Expected I4, but got Unknown //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00db: 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_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_011a: Unknown result type (might be due to invalid IL or missing references) //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Unknown result type (might be due to invalid IL or missing references) //IL_013f: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_01c8: Unknown result type (might be due to invalid IL or missing references) //IL_01cd: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Unknown result type (might be due to invalid IL or missing references) //IL_016b: Unknown result type (might be due to invalid IL or missing references) //IL_0178: Unknown result type (might be due to invalid IL or missing references) //IL_017d: Unknown result type (might be due to invalid IL or missing references) //IL_018a: Unknown result type (might be due to invalid IL or missing references) //IL_018f: Unknown result type (might be due to invalid IL or missing references) //IL_019c: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_01ae: Unknown result type (might be due to invalid IL or missing references) //IL_01b3: Unknown result type (might be due to invalid IL or missing references) //IL_01c0: Unknown result type (might be due to invalid IL or missing references) //IL_01c5: Unknown result type (might be due to invalid IL or missing references) //IL_01d4: Unknown result type (might be due to invalid IL or missing references) Stage storedStage = StoredStage; if (1 == 0) { } Vector2 result = (Vector2)((storedStage - 3) switch { 0 => new Vector2(1240f, 510f), 1 => new Vector2(1240f, 510f), 2 => new Vector2(1130f, 510f), 3 => new Vector2(1492f, 522f), 4 => new Vector2(1400f, 542f), 5 => new Vector2(1050f, 510f), 6 => new Vector2(1230f, 540f), 7 => new Vector2(1320f, 515f), 8 => new Vector2(1210f, 575f), 9 => new Vector2(1100f, 550f), 17 => new Vector2(1230f, 493f), 18 => new Vector2(1160f, 518f), 19 => new Vector2(1162f, 512f), 20 => new Vector2(975f, 484f), 21 => new Vector2(1105f, 480f), 22 => new Vector2(1100f, 483f), 23 => new Vector2(1256f, 407f), _ => Vector2.zero, }); if (1 == 0) { } return result; } } internal StageContainer(IStageSelect stageSelect, Transform tfParent, Stage stage) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Expected O, but got Unknown //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) StageContainer stageContainer = this; StoredStage = stage; Button = StageButton.CreateStageButton(tfParent, stage); ((LLClickable)Button).SetActive(true); ((LLClickable)Button).onClick = (ControlDelegate)delegate(int playerNumber) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) stageSelect.OnClickStage(playerNumber, stageContainer.StoredStage); stageContainer.Button.UpdateDisplay(); }; UIUtils.CreateText(ref lbStageName, "lbStageName", ((Component)Button).transform, new Vector2(0f, -110f)); ((TMP_Text)lbStageName).fontSize = 42f; TextHandler.SetText((TMP_Text)(object)lbStageName, StageName); UIUtils.CreateText(ref lbStageSize, "lbStageSize", ((Component)Button).transform, new Vector2(190f, 110f)); ((TMP_Text)lbStageSize).fontSize = 22f; TextHandler.SetText((TMP_Text)(object)lbStageSize, (StageSize != Vector2.zero) ? $"{StageSize.x}x{StageSize.y}" : ""); } } internal struct StageLayout { private static readonly float STAGE_SCALE_FACTOR = 0.62f; private static readonly float STAGE_SCALE_FACTOR_MINI = 0.48f; private static readonly float STAGE_SCALE_FACTOR_TINY = 0.41f; private static readonly Vector2 STAGE_SIZE = new Vector2(500f, 250f) * STAGE_SCALE_FACTOR; private static readonly Vector2 STAGE_SIZE_MINI = new Vector2(500f, 250f) * STAGE_SCALE_FACTOR_MINI; private static readonly Vector2 STAGE_SIZE_TINY = new Vector2(500f, 250f) * STAGE_SCALE_FACTOR_TINY; private static readonly Vector2 STAGES_POSITION = new Vector2(0f, 0f); private static readonly Vector2 STAGES_SPACING = new Vector2(6f, 6f); private const float STAGE_CATEGORY_SPACING = 20f; private const float STAGE_CATEGORY_SPACING_MINI = 10f; internal readonly Vector2 position; internal readonly Vector2 spacing; internal readonly Vector2 stageSize; internal readonly float stageScaleFactor; internal readonly float stageCategorySpacing; internal readonly float totalHeight; internal readonly bool useBothCategories; internal readonly int[] rowLengthsNeutral; internal readonly int[] rowLengthsCounterpick; internal readonly int maxRowLength; internal readonly int numRowsTotal; internal StageLayout(int[] rowLengthsNeutral, int[] rowLengthsCounterpick, int maxRowLength, int numRowsTotal) { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //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_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0067: 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_007a: Unknown result type (might be due to invalid IL or missing references) this.rowLengthsNeutral = rowLengthsNeutral; this.rowLengthsCounterpick = rowLengthsCounterpick; this.maxRowLength = maxRowLength; this.numRowsTotal = numRowsTotal; useBothCategories = rowLengthsNeutral.Length != 0 && rowLengthsCounterpick.Length != 0; position = STAGES_POSITION; spacing = STAGES_SPACING; stageSize = STAGE_SIZE; if (maxRowLength > 4 || numRowsTotal > 3) { stageSize = STAGE_SIZE_MINI; } if (maxRowLength > 5) { stageSize = STAGE_SIZE_TINY; } stageScaleFactor = STAGE_SCALE_FACTOR; if (maxRowLength > 4 || numRowsTotal > 3) { stageScaleFactor = STAGE_SCALE_FACTOR_MINI; } if (maxRowLength > 5) { stageScaleFactor = STAGE_SCALE_FACTOR_TINY; } stageCategorySpacing = 20f; if (maxRowLength > 4 || numRowsTotal > 3) { stageCategorySpacing = 10f; } totalHeight = (float)numRowsTotal * stageSize.y + (float)(numRowsTotal - 1) * spacing.y; if (useBothCategories) { totalHeight += stageCategorySpacing; } } internal float GetRowWidth(int rowLength) { return (float)rowLength * stageSize.x + (float)(rowLength - 1) * STAGES_SPACING.x; } internal static StageLayout Create(int numStagesNeutral, int numStagesCounterpick) { int[] array; int[] array2; switch (numStagesCounterpick) { case 0: { array = new int[0]; if (1 == 0) { } int[] array3; switch (numStagesNeutral) { case 1: case 2: case 3: case 4: array3 = new int[1] { numStagesNeutral }; break; case 5: case 6: array3 = new int[2] { 3, numStagesNeutral - 3 }; break; case 7: case 8: array3 = new int[2] { 4, numStagesNeutral - 4 }; break; case 9: array3 = new int[3] { 3, 3, 3 }; break; case 10: array3 = new int[3] { 3, 4, 3 }; break; case 11: array3 = new int[3] { 4, 4, 3 }; break; case 12: array3 = new int[3] { 4, 4, 4 }; break; case 13: array3 = new int[3] { 4, 5, 4 }; break; case 14: array3 = new int[3] { 5, 5, 4 }; break; case 15: array3 = new int[3] { 5, 5, 5 }; break; case 16: array3 = new int[4] { 4, 4, 4, 4 }; break; case 17: array3 = new int[4] { 5, 4, 4, 4 }; break; default: array3 = new int[0]; break; } if (1 == 0) { } array2 = array3; break; } case 1: case 2: case 3: case 4: { array = new int[1] { numStagesCounterpick }; if (1 == 0) { } int[] array3; switch (numStagesNeutral) { case 1: case 2: case 3: case 4: array3 = new int[1] { numStagesNeutral }; break; case 5: case 6: array3 = new int[2] { 3, numStagesNeutral - 3 }; break; case 7: case 8: array3 = new int[2] { 4, numStagesNeutral - 4 }; break; case 9: array3 = new int[2] { 5, 4 }; break; case 10: array3 = new int[2] { 5, 5 }; break; case 11: array3 = new int[3] { 4, 4, 3 }; break; case 12: array3 = new int[3] { 4, 4, 4 }; break; case 13: array3 = new int[3] { 4, 5, 4 }; break; case 14: array3 = new int[3] { 5, 5, 4 }; break; case 15: array3 = new int[3] { 5, 5, 5 }; break; case 16: array3 = new int[3] { 5, 6, 5 }; break; default: array3 = new int[0]; break; } if (1 == 0) { } array2 = array3; break; } case 5: { if (1 == 0) { } int[] array3 = ((numStagesNeutral < 0) ? new int[0] : ((numStagesNeutral > 10) ? new int[1] { 5 } : new int[2] { 3, 2 })); if (1 == 0) { } array = array3; if (1 == 0) { } switch (numStagesNeutral) { case 1: case 2: case 3: case 4: array3 = new int[1] { numStagesNeutral }; break; case 5: case 6: array3 = new int[2] { 3, numStagesNeutral - 3 }; break; case 7: case 8: array3 = new int[2] { 4, numStagesNeutral - 4 }; break; case 9: array3 = new int[2] { 5, 4 }; break; case 10: array3 = new int[2] { 5, 5 }; break; case 11: array3 = new int[3] { 4, 4, 3 }; break; case 12: array3 = new int[3] { 4, 4, 4 }; break; default: array3 = new int[0]; break; } if (1 == 0) { } array2 = array3; break; } case 6: { if (1 == 0) { } int[] array3; switch (numStagesNeutral) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: array3 = new int[2] { 3, 3 }; break; case 11: array3 = new int[1] { 6 }; break; default: array3 = new int[0]; break; } if (1 == 0) { } array = array3; if (1 == 0) { } switch (numStagesNeutral) { case 1: case 2: case 3: case 4: array3 = new int[1] { numStagesNeutral }; break; case 5: case 6: array3 = new int[2] { 3, numStagesNeutral - 3 }; break; case 7: case 8: array3 = new int[2] { 4, numStagesNeutral - 4 }; break; case 9: array3 = new int[2] { 5, 4 }; break; case 10: array3 = new int[2] { 5, 5 }; break; case 11: array3 = new int[3] { 4, 4, 3 }; break; default: array3 = new int[0]; break; } if (1 == 0) { } array2 = array3; break; } case 7: case 8: { if (1 == 0) { } int[] array3 = ((numStagesNeutral < 0 || numStagesNeutral > 10) ? new int[0] : new int[2] { 4, numStagesCounterpick - 4 }); if (1 == 0) { } array = array3; if (1 == 0) { } switch (numStagesNeutral) { case 1: case 2: case 3: case 4: case 5: array3 = new int[1] { numStagesNeutral }; break; case 6: array3 = new int[2] { 3, numStagesNeutral - 3 }; break; case 7: case 8: array3 = new int[2] { 4, numStagesNeutral - 4 }; break; case 9: array3 = new int[2] { 5, 4 }; break; case 10: array3 = new int[2] { 5, 5 }; break; default: array3 = new int[0]; break; } if (1 == 0) { } array2 = array3; break; } case 9: { if (1 == 0) { } int[] array3; switch (numStagesNeutral) { case 0: case 1: case 2: case 3: case 4: case 5: array3 = new int[3] { 3, 3, 3 }; break; case 6: case 7: case 8: array3 = new int[2] { 5, 4 }; break; default: array3 = new int[0]; break; } if (1 == 0) { } array = array3; if (1 == 0) { } switch (numStagesNeutral) { case 1: case 2: case 3: case 4: case 5: array3 = new int[1] { numStagesNeutral }; break; case 6: array3 = new int[2] { 3, numStagesNeutral - 3 }; break; case 7: case 8: array3 = new int[2] { 4, numStagesNeutral - 4 }; break; default: array3 = new int[0]; break; } if (1 == 0) { } array2 = array3; break; } case 10: { if (1 == 0) { } int[] array3; switch (numStagesNeutral) { case 0: case 1: case 2: case 3: case 4: case 5: array3 = new int[3] { 3, 4, 3 }; break; case 6: case 7: array3 = new int[2] { 5, 5 }; break; default: array3 = new int[0]; break; } if (1 == 0) { } array = array3; if (1 == 0) { } switch (numStagesNeutral) { case 1: case 2: case 3: case 4: case 5: array3 = new int[1] { numStagesNeutral }; break; case 6: array3 = new int[2] { 3, 3 }; break; case 7: array3 = new int[2] { 4, 3 }; break; default: array3 = new int[0]; break; } if (1 == 0) { } array2 = array3; break; } case 11: { if (1 == 0) { } int[] array3 = ((numStagesNeutral < 0 || numStagesNeutral > 6) ? new int[0] : new int[3] { 4, 4, 3 }); if (1 == 0) { } array = array3; if (1 == 0) { } array3 = ((numStagesNeutral < 1 || numStagesNeutral > 6) ? new int[0] : new int[1] { numStagesNeutral }); if (1 == 0) { } array2 = array3; break; } case 12: { if (1 == 0) { } int[] array3 = ((numStagesNeutral < 0 || numStagesNeutral > 5) ? new int[0] : new int[3] { 4, 4, 4 }); if (1 == 0) { } array = array3; if (1 == 0) { } array3 = ((numStagesNeutral < 1 || numStagesNeutral > 5) ? new int[0] : new int[1] { numStagesNeutral }); if (1 == 0) { } array2 = array3; break; } case 13: { if (1 == 0) { } int[] array3 = ((numStagesNeutral < 0 || numStagesNeutral > 4) ? new int[0] : new int[3] { 4, 5, 4 }); if (1 == 0) { } array = array3; if (1 == 0) { } array3 = ((numStagesNeutral < 1 || numStagesNeutral > 4) ? new int[0] : new int[1] { numStagesNeutral }); if (1 == 0) { } array2 = array3; break; } case 14: { if (1 == 0) { } int[] array3 = ((numStagesNeutral < 0 || numStagesNeutral > 3) ? new int[0] : new int[3] { 5, 5, 4 }); if (1 == 0) { } array = array3; if (1 == 0) { } array3 = ((numStagesNeutral < 1 || numStagesNeutral > 3) ? new int[0] : new int[1] { numStagesNeutral }); if (1 == 0) { } array2 = array3; break; } case 15: { if (1 == 0) { } int[] array3 = ((numStagesNeutral < 0 || numStagesNeutral > 2) ? new int[0] : new int[3] { 5, 5, 5 }); if (1 == 0) { } array = array3; if (1 == 0) { } array3 = ((numStagesNeutral < 1 || numStagesNeutral > 2) ? new int[0] : new int[1] { numStagesNeutral }); if (1 == 0) { } array2 = array3; break; } case 16: { if (1 == 0) { } int[] array3 = numStagesNeutral switch { 0 => new int[4] { 4, 4, 4, 4 }, 1 => new int[3] { 5, 6, 5 }, _ => new int[0], }; if (1 == 0) { } array = array3; if (1 == 0) { } array3 = ((numStagesNeutral != 1) ? new int[0] : new int[1] { 1 }); if (1 == 0) { } array2 = array3; break; } case 17: { if (1 == 0) { } int[] array3 = ((numStagesNeutral != 0) ? new int[0] : new int[4] { 5, 4, 4, 4 }); if (1 == 0) { } array = array3; array2 = new int[0]; break; } default: array = new int[0]; array2 = new int[0]; break; } int num = 0; int[] array4 = array2; foreach (int num2 in array4) { if (num2 > num) { num = num2; } } int[] array5 = array; foreach (int num3 in array5) { if (num3 > num) { num = num3; } } int num4 = array2.Length + array.Length; return new StageLayout(array2, array, num, num4); } } } namespace TourneyMod.UI.PlayerTags { public class Charset { internal char[] lowercase; internal char[] uppercase; private bool spacing; internal int length; internal Charset(char[] set, bool spacing = false) : this(set, set, spacing) { } internal Charset(char[] lowercase, char[] uppercase, bool spacing = false) { this.lowercase = lowercase; this.uppercase = uppercase; this.spacing = spacing; length = ((lowercase.Length == uppercase.Length) ? lowercase.Length : 0); } internal char GetChar(int index, bool upper) { if (index > length) { return ' '; } return upper ? uppercase[index] : lowercase[index]; } internal string GetText(bool upper) { char[] array = (upper ? uppercase : lowercase); string text = ""; for (int i = 0; i < length; i++) { if (spacing && i > 0) { text += " "; } text += array[i]; } return text; } } public class CharsetButton : LLButton { private Charset charset; private bool upper; internal void SetCharset(Charset charset) { this.charset = charset; upper = false; ((LLButton)this).SetText(charset.GetText(upper), -1, false); } internal void SetUpper(bool upper) { this.upper = upper; ((LLButton)this).SetText(charset.GetText(upper), -1, false); } internal char GetChar(int count) { return charset.GetChar(count % charset.length, upper); } } public enum CustomInputConfigBarType { TAG_MENU_TOGGLE } public class CustomInputConfigElement : InputConfigElement { private static readonly Color COLOR_TAG_DEFAULT = Color.red; private static readonly Color COLOR_TAG_CUSTOM = Color.white; private const int TAG_FONT_SIZE = 14; internal CustomInputConfigBarType customInputConfigBarType; private ScreenInput screenInput; public CustomInputConfigElement(LLButton _button, JBKFDDKLDDG _inputConfigController, int _inputAction, bool _altInput, CustomInputConfigBarType _customInputConfigBarType, ScreenInput _screenInput) : base(_button, _inputConfigController, _inputAction, _altInput, (InputConfigBarType)5) { customInputConfigBarType = _customInputConfigBarType; screenInput = _screenInput; } internal void CustomUpdateLooks() { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_0074: 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_008c: Unknown result type (might be due to invalid IL or missing references) if (customInputConfigBarType == CustomInputConfigBarType.TAG_MENU_TOGGLE) { PlayerTag playerTag = Plugin.Instance.GetPlayerTag(base.inputConfigController.GDEMBCKIDMA); UIUtils.SetTextAutoSize(base.button, playerTag.IsDefault ? "DEFAULT" : playerTag.GetName(), 14, new Vector2(120f, 36f)); base.button.colDefault = (playerTag.IsDefault ? COLOR_TAG_DEFAULT : COLOR_TAG_CUSTOM); ((Graphic)base.button.textMesh).color = (playerTag.IsDefault ? COLOR_TAG_DEFAULT : COLOR_TAG_CUSTOM); } base.button.UpdateColor(); } internal void CustomButtonClick(int playerNr) { if (base.inputConfigController.LNDBODJBNFM == playerNr) { PlayerTagMenuOptions playerTagMenuOptions = screenInput.playerTagMenus[base.inputConfigController.LNDBODJBNFM]; if (((Component)playerTagMenuOptions).gameObject.activeSelf) { playerTagMenuOptions.Close(); } else { playerTagMenuOptions.OpenBrowse(); } } } } public class CustomOptionsBarInputConfig : OptionsBarInputConfig { internal CustomInputConfigBarType customInputConfigBarType; internal ScreenInput screenInput; internal void Copy(OptionsBarInputConfig copy) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Unknown result type (might be due to invalid IL or missing references) //IL_0134: Unknown result type (might be due to invalid IL or missing references) ((OptionsBar)this).barType = ((OptionsBar)copy).barType; ((OptionsBar)this).lbText = ((OptionsBar)copy).lbText; ((OptionsBar)this).btButton = ((OptionsBar)copy).btButton; ((OptionsBar)this).imBar = ((OptionsBar)copy).imBar; ((OptionsBar)this).btImage = ((OptionsBar)copy).btImage; ((OptionsBar)this).imToggle = ((OptionsBar)copy).imToggle; ((OptionsBar)this).lbValue = ((OptionsBar)copy).lbValue; ((OptionsBar)this).rawSlider = ((OptionsBar)copy).rawSlider; ((OptionsBar)this).tfSlider = ((OptionsBar)copy).tfSlider; ((OptionsBar)this).enumSize = ((OptionsBar)copy).enumSize; ((OptionsBar)this).enumTextCodes = ((OptionsBar)copy).enumTextCodes; ((OptionsBar)this).buttonIndex = ((OptionsBar)copy).buttonIndex; ((OptionsBar)this).onChange = ((OptionsBar)copy).onChange; ((OptionsBar)this).curText = ((OptionsBar)copy).curText; ((OptionsBar)this).linkedConfigVar = ((OptionsBar)copy).linkedConfigVar; ((OptionsBar)this).msgAction = ((OptionsBar)copy).msgAction; ((OptionsBar)this).isEnabled = ((OptionsBar)copy).isEnabled; ((OptionsBar)this).curValueSlider = ((OptionsBar)copy).curValueSlider; ((OptionsBar)this).spriteToggle0 = ((OptionsBar)copy).spriteToggle0; ((OptionsBar)this).spriteToggle1 = ((OptionsBar)copy).spriteToggle1; ((OptionsBar)this).directMoveLast = ((OptionsBar)copy).directMoveLast; base.pfOptionsBarInputConfigButton = copy.pfOptionsBarInputConfigButton; base.buttonOffset = copy.buttonOffset; base.inputAction = copy.inputAction; base.altInput = copy.altInput; base.inputConfigBarType = copy.inputConfigBarType; base.inputElements = copy.inputElements; } internal void CustomAddController(JBKFDDKLDDG inputConfigController) { //IL_0040: Unknown result type (might be due to invalid IL or missing references) if (base.inputElements.Count < 5) { Transform transform = Object.Instantiate(base.pfOptionsBarInputConfigButton).transform; transform.SetParent(((Component)((OptionsBar)this).imBar).transform, false); transform.localScale = Vector3.one; LLButton component = ((Component)transform).GetComponent(); ((LLControl)component).Init(); component.SetFontSize(TextHandler.GetFontSize("MENU_SETTING")); ((LLClickable)component).ignoreMouseHover = !((Controller)(ref inputConfigController.GDEMBCKIDMA)).IncludesMouse(); base.inputElements.Add((InputConfigElement)(object)new CustomInputConfigElement(component, inputConfigController, base.inputAction, base.altInput, customInputConfigBarType, screenInput)); ((OptionsBarInputConfig)this).UpdateBar(); ((OptionsBarInputConfig)this).UpdateButton(inputConfigController); } } public override LLClickable GetDefaultFocus(LLCursor cursor) { JBKFDDKLDDG inputConfigController = ((OptionsBarInputConfig)this).GetInputConfigController(cursor); int elementIndex = ((OptionsBarInputConfig)this).GetElementIndex(inputConfigController); return (LLClickable)(object)((elementIndex >= 0) ? base.inputElements[elementIndex].button : null); } } public class PlayerTagMenuLobby : MonoBehaviour { private RectTransform rectTransform; private int playerNr; private static readonly Vector2 MAIN_SCALE = new Vector2(320f, 320f); private static readonly Vector2 MAIN_POSITION = new Vector2(0f, 319.5f - MAIN_SCALE.y / 2f + 13f); private const int TAG_FONT_SIZE = 18; private const int CONTROL_FONT_SIZE = 24; private const int BORDER_SIZE = 2; private const float PADDING = 6f; private const float SPACING = 4f; private static readonly Vector2 NEWTAG_SCALE = new Vector2(320f, 30f); private static readonly Vector2 NEWTAG_POSITION = new Vector2(0f, MAIN_SCALE.y / 2f - NEWTAG_SCALE.y / 2f); private static readonly Vector2 PAGES_SCALE = new Vector2(320f, 30f); private static readonly Vector2 PAGES_POSITION = new Vector2(0f, (0f - MAIN_SCALE.y) / 2f + NEWTAG_SCALE.y / 2f); private static readonly Vector2 PAGE_NUMBER_SCALE = new Vector2(240f, 30f); private static readonly Vector2 PAGE_NUMBER_POSITION = new Vector2(0f, 0f); private static readonly Vector2 PAGE_BUTTON_SCALE = new Vector2(40f, 30f); private static readonly Vector2 PAGE_BUTTON_FORWARD_POSITION = new Vector2(MAIN_SCALE.x / 2f - PAGE_BUTTON_SCALE.x / 2f, 0f); private static readonly Vector2 PAGE_BUTTON_BACK_POSITION = new Vector2((0f - MAIN_SCALE.x) / 2f + PAGE_BUTTON_SCALE.x / 2f, 0f); private RectTransform pnBrowse; private LLButton btNewTag; private RectTransform pnPages; private TextMeshProUGUI lbPageNumber; private LLButton btPageBack; private LLButton btPageForward; private RectTransform pnTagList; private static readonly Vector2 TAG_LIST_SCALE = new Vector2(308f, 260f); private static readonly Vector2 TAG_LIST_POSITION = new Vector2(0f, 0f); private const int TAG_LIST_ROWS = 8; private static readonly Vector2 TAG_LIST_ENTRY_SCALE = new Vector2(TAG_LIST_SCALE.x, (TAG_LIST_SCALE.y - 36f) / 8f); private List loadedTags; private LLButton[] btSelectTags; private int maxPages; private int currentPage; internal static readonly Color COLOR_TAG_DEFAULT = Color.red; internal static readonly Color COLOR_TAG_CUSTOM = Color.white; private static readonly Vector2 CREATETAG_SCALE = new Vector2(274f, 40f); private static readonly Vector2 CREATETAG_POSITION = new Vector2((0f - MAIN_SCALE.x) / 2f + CREATETAG_SCALE.x / 2f + 6f, MAIN_SCALE.y / 2f - CREATETAG_SCALE.y / 2f - 6f); private static readonly Vector2 BACKSPACE_SCALE = new Vector2(34f, 40f); private static readonly Vector2 BACKSPACE_POSITION = new Vector2(MAIN_SCALE.x / 2f - BACKSPACE_SCALE.x / 2f - 6f, MAIN_SCALE.y / 2f - BACKSPACE_SCALE.y / 2f - 6f); private static readonly Vector2 KEYPAD_SCALE = new Vector2(308f, 264f); private static readonly Vector2 KEYPAD_POSITION = new Vector2(0f, (0f - MAIN_SCALE.y) / 2f + KEYPAD_SCALE.y / 2f + 6f); private const int KEYPAD_COLS = 3; private const int KEYPAD_ROWS = 4; private static readonly Vector2 KEYPAD_BUTTON_SCALE = new Vector2((KEYPAD_SCALE.x - 8f) / 3f, (KEYPAD_SCALE.y - 12f) / 4f); private RectTransform pnCreate; private TextMeshProUGUI lbCreateTag; private LLButton btBackspace; private LLButton btShift; private LLButton btNumbers; private LLButton btEnter; private RectTransform pnKeypad; private List btCharsets; private List btCharsetsAlpha; private List btCharsetsNumbers; private static readonly Charset[] charsetAlpha = new Charset[8] { new Charset(new char[3] { 'a', 'b', 'c' }, new char[3] { 'A', 'B', 'C' }), new Charset(new char[3] { 'd', 'e', 'f' }, new char[3] { 'D', 'E', 'F' }), new Charset(new char[3] { 'g', 'h', 'i' }, new char[3] { 'G', 'H', 'I' }), new Charset(new char[3] { 'j', 'k', 'l' }, new char[3] { 'J', 'K', 'L' }), new Charset(new char[3] { 'm', 'n', 'o' }, new char[3] { 'M', 'N', 'O' }), new Charset(new char[4] { 'p', 'q', 'r', 's' }, new char[4] { 'P', 'Q', 'R', 'S' }), new Charset(new char[3] { 't', 'u', 'v' }, new char[3] { 'T', 'U', 'V' }), new Charset(new char[4] { 'w', 'x', 'y', 'z' }, new char[4] { 'W', 'X', 'Y', 'Z' }) }; private static readonly Charset[] charsetNumbers = new Charset[9] { new Charset(new char[3] { '1', '2', '3' }), new Charset(new char[3] { '4', '5', '6' }), new Charset(new char[4] { '7', '8', '9', '0' }), new Charset(new char[4] { '\'', ',', '.', ';' }, spacing: true), new Charset(new char[3] { '_', '-', '~' }, spacing: true), new Charset(new char[3] { '!', '$', '@' }, spacing: true), new Charset(new char[3] { '#', '&', '%' }, spacing: true), new Charset(new char[4] { '(', ')', '[', ']' }, spacing: true), new Charset(new char[3] { '+', '=', '^' }, spacing: true) }; private const int TAG_MAX_LENGTH = 12; private const float TAG_REPEAT_TIME = 0.5f; private string tag; private bool upper; private bool numbers; private int activeBtIndex = -1; private int count = 0; private float repeatTimer = 0f; internal static PlayerTagMenuLobby CreateMenu(Transform parent, int playerNr) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) RectTransform panel = null; UIUtils.CreatePanel(ref panel, "Player Tag Menu", parent, MAIN_POSITION, MAIN_SCALE, Color.clear); PlayerTagMenuLobby playerTagMenuLobby = ((Component)panel).gameObject.AddComponent(); playerTagMenuLobby.rectTransform = panel; playerTagMenuLobby.playerNr = playerNr; playerTagMenuLobby.Init(); ((Component)playerTagMenuLobby).gameObject.SetActive(false); return playerTagMenuLobby; } private void Init() { InitBrowsePanel(); InitCreatePanel(); ((Component)pnCreate).gameObject.SetActive(false); } private void InitBrowsePanel() { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0048: 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_0052: 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_009d: Expected O, but got Unknown //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: 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_0106: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_0151: Unknown result type (might be due to invalid IL or missing references) //IL_015b: Expected O, but got Unknown //IL_016c: Unknown result type (might be due to invalid IL or missing references) //IL_0171: Unknown result type (might be due to invalid IL or missing references) //IL_0176: Unknown result type (might be due to invalid IL or missing references) //IL_01b7: Unknown result type (might be due to invalid IL or missing references) //IL_01c1: Expected O, but got Unknown //IL_01d2: Unknown result type (might be due to invalid IL or missing references) //IL_01d7: Unknown result type (might be due to invalid IL or missing references) //IL_01dc: Unknown result type (might be due to invalid IL or missing references) //IL_0234: Unknown result type (might be due to invalid IL or missing references) //IL_026c: Unknown result type (might be due to invalid IL or missing references) //IL_026d: Unknown result type (might be due to invalid IL or missing references) //IL_0272: Unknown result type (might be due to invalid IL or missing references) UIUtils.CreateBorderPanel(ref pnBrowse, "pnBrowse", (Transform)(object)rectTransform, new Vector2(0f, 0f), MAIN_SCALE, Color.black, Color.yellow, 2); UIUtils.CreateButton(ref btNewTag, "btNewTag", (Transform)(object)pnBrowse, NEWTAG_POSITION, NEWTAG_SCALE, Color.yellow); ((TMP_Text)btNewTag.textMesh).fontSize = 24f; btNewTag.SetText("+ new tag", -1, false); ((LLClickable)btNewTag).onClick = (ControlDelegate)delegate(int playerNr) { if (playerNr == -1 || this.playerNr == playerNr) { OpenCreate(); } }; UIUtils.CreatePanel(ref pnPages, "pnPages", (Transform)(object)pnBrowse, PAGES_POSITION, PAGES_SCALE, Color.yellow); UIUtils.CreateText(ref lbPageNumber, "lbPageNumber", (Transform)(object)pnPages, PAGE_NUMBER_POSITION, PAGE_NUMBER_SCALE); ((TMP_Text)lbPageNumber).fontSize = 24f; UIUtils.CreateButton(ref btPageForward, "btPageForward", (Transform)(object)pnPages, PAGE_BUTTON_FORWARD_POSITION, PAGE_BUTTON_SCALE, Color.clear); ((TMP_Text)btPageForward.textMesh).fontSize = 24f; btPageForward.SetText(">", -1, false); ((LLClickable)btPageForward).onClick = new ControlDelegate(OnClickPageForward); UIUtils.CreateButton(ref btPageBack, "btPageBack", (Transform)(object)pnPages, PAGE_BUTTON_BACK_POSITION, PAGE_BUTTON_SCALE, Color.clear); ((TMP_Text)btPageBack.textMesh).fontSize = 24f; btPageBack.SetText("<", -1, false); ((LLClickable)btPageBack).onClick = new ControlDelegate(OnClickPageBack); UIUtils.CreatePanel(ref pnTagList, "pnTagList", (Transform)(object)pnBrowse, TAG_LIST_POSITION, TAG_LIST_SCALE, Color.clear); Vector2 val = default(Vector2); ((Vector2)(ref val))..ctor(0f, TAG_LIST_SCALE.y / 2f - TAG_LIST_ENTRY_SCALE.y / 2f - 4f); btSelectTags = (LLButton[])(object)new LLButton[8]; Vector2 position = default(Vector2); for (int i = 0; i < 8; i++) { LLButton button = null; ((Vector2)(ref position))..ctor(0f, val.y - (TAG_LIST_ENTRY_SCALE.y + 4f) * (float)i); UIUtils.CreateButton(ref button, "btSelectTag" + i, (Transform)(object)pnTagList, position, TAG_LIST_ENTRY_SCALE, Color.clear); ((TMP_Text)button.textMesh).fontSize = 18f; btSelectTags[i] = button; } } private void InitCreatePanel() { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0048: 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_007a: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Expected O, but got Unknown //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Expected O, but got Unknown //IL_0172: Unknown result type (might be due to invalid IL or missing references) //IL_0177: Unknown result type (might be due to invalid IL or missing references) //IL_017c: Unknown result type (might be due to invalid IL or missing references) //IL_01bd: Unknown result type (might be due to invalid IL or missing references) //IL_01c7: Expected O, but got Unknown //IL_0221: Unknown result type (might be due to invalid IL or missing references) //IL_0226: Unknown result type (might be due to invalid IL or missing references) //IL_022b: Unknown result type (might be due to invalid IL or missing references) //IL_0273: Unknown result type (might be due to invalid IL or missing references) //IL_027d: Expected O, but got Unknown //IL_0313: Unknown result type (might be due to invalid IL or missing references) //IL_0318: Unknown result type (might be due to invalid IL or missing references) //IL_031d: Unknown result type (might be due to invalid IL or missing references) //IL_036c: Unknown result type (might be due to invalid IL or missing references) //IL_0376: Expected O, but got Unknown //IL_03cb: Unknown result type (might be due to invalid IL or missing references) //IL_03d0: Unknown result type (might be due to invalid IL or missing references) //IL_03d5: 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_0420: Expected O, but got Unknown UIUtils.CreateBorderPanel(ref pnCreate, "pnCreate", (Transform)(object)rectTransform, new Vector2(0f, 0f), MAIN_SCALE, Color.black, Color.yellow, 2); UIUtils.CreateText(ref lbCreateTag, "lbCreateTag", (Transform)(object)pnCreate, CREATETAG_POSITION, CREATETAG_SCALE); ((TMP_Text)lbCreateTag).fontSize = 18f; UIUtils.CreateButton(ref btBackspace, "btBackspace", (Transform)(object)pnCreate, BACKSPACE_POSITION, BACKSPACE_SCALE, Color.yellow); ((TMP_Text)btBackspace.textMesh).fontSize = 24f; btBackspace.SetText("<", -1, false); ((LLClickable)btBackspace).onClick = new ControlDelegate(OnClickBackspace); UIUtils.CreatePanel(ref pnKeypad, "pnKeypad", (Transform)(object)pnCreate, KEYPAD_POSITION, KEYPAD_SCALE, Color.clear); UIUtils.CreateButton(ref btShift, "btShift", (Transform)(object)pnKeypad, GetKeypadPosition(3, 0), KEYPAD_BUTTON_SCALE, Color.yellow); ((TMP_Text)btShift.textMesh).fontSize = 24f; btShift.SetText("case", -1, false); ((LLClickable)btShift).onClick = new ControlDelegate(OnClickShift); UIUtils.CreateButton(ref btNumbers, "btNumbers", (Transform)(object)pnKeypad, GetKeypadPosition(3, 1), KEYPAD_BUTTON_SCALE, Color.yellow); ((TMP_Text)btNumbers.textMesh).fontSize = 24f; btNumbers.SetText("nums", -1, false); ((LLClickable)btNumbers).onClick = new ControlDelegate(OnClickNumbers); btCharsets = new List(); btCharsetsAlpha = new List(); for (int i = 0; i < charsetAlpha.Length; i++) { CharsetButton btCharset = null; int col = i % 3; int row = i / 3; UIUtils.CreateCharsetButton(ref btCharset, "btCharsetAlpha" + i, (Transform)(object)pnKeypad, GetKeypadPosition(row, col), KEYPAD_BUTTON_SCALE, Color.gray); ((TMP_Text)((LLButton)btCharset).textMesh).fontSize = 24f; btCharset.SetCharset(charsetAlpha[i]); int btIndex = i; ((LLClickable)btCharset).onClick = (ControlDelegate)delegate(int playerNr) { OnClickCharset(playerNr, btCharset, btIndex); }; btCharsets.Add(btCharset); btCharsetsAlpha.Add(btCharset); } btCharsetsNumbers = new List(); for (int j = 0; j < charsetNumbers.Length; j++) { CharsetButton btCharset2 = null; int col2 = j % 3; int row2 = j / 3; UIUtils.CreateCharsetButton(ref btCharset2, "btCharsetNumbers" + j, (Transform)(object)pnKeypad, GetKeypadPosition(row2, col2), KEYPAD_BUTTON_SCALE, Color.gray); ((TMP_Text)((LLButton)btCharset2).textMesh).fontSize = 24f; btCharset2.SetCharset(charsetNumbers[j]); int btIndex2 = j; ((LLClickable)btCharset2).onClick = (ControlDelegate)delegate(int playerNr) { OnClickCharset(playerNr, btCharset2, btIndex2); }; btCharsets.Add(btCharset2); btCharsetsNumbers.Add(btCharset2); } UIUtils.CreateButton(ref btEnter, "btEnter", (Transform)(object)pnKeypad, GetKeypadPosition(3, 2), KEYPAD_BUTTON_SCALE, Color.yellow); ((TMP_Text)btEnter.textMesh).fontSize = 24f; btEnter.SetText("done", -1, false); ((LLClickable)btEnter).onClick = new ControlDelegate(OnClickEnter); } private Vector2 GetKeypadPosition(int row, int col) { //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) Vector2 val = default(Vector2); ((Vector2)(ref val))..ctor((0f - KEYPAD_SCALE.x) / 2f + KEYPAD_BUTTON_SCALE.x / 2f, KEYPAD_SCALE.y / 2f - KEYPAD_BUTTON_SCALE.y / 2f); return new Vector2(val.x + (KEYPAD_BUTTON_SCALE.x + 4f) * (float)col, val.y - (KEYPAD_BUTTON_SCALE.y + 4f) * (float)row); } internal void OpenBrowse() { ((Component)pnBrowse).gameObject.SetActive(true); ((Component)pnCreate).gameObject.SetActive(false); loadedTags = PlayerTagIO.PlayerTags.Values.OrderBy((PlayerTag pt) => pt.GetName()).ToList(); loadedTags.Insert(0, PlayerTag.DEFAULT); maxPages = 1 + (loadedTags.Count - 1) / 8; currentPage = 0; TextHandler.SetText((TMP_Text)(object)lbPageNumber, $"{currentPage + 1}/{maxPages}"); LoadPage(); ((Component)this).gameObject.SetActive(true); } private void OnClickPageBack(int playerNr) { if (playerNr == -1 || this.playerNr == playerNr) { if (currentPage > 0) { currentPage--; } LoadPage(); TextHandler.SetText((TMP_Text)(object)lbPageNumber, $"{currentPage + 1}/{maxPages}"); } } private void OnClickPageForward(int playerNr) { if (playerNr == -1 || this.playerNr == playerNr) { if (currentPage < maxPages - 1) { currentPage++; } LoadPage(); TextHandler.SetText((TMP_Text)(object)lbPageNumber, $"{currentPage + 1}/{maxPages}"); } } private void LoadPage() { //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: 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_0112: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_0131: Expected O, but got Unknown LLButton[] array = btSelectTags; foreach (LLButton val in array) { val.SetText("", -1, false); ((LLClickable)val).onClick = null; ((LLClickable)val).SetActive(false); } for (int j = 0; j < 8; j++) { int num = currentPage * 8 + j; if (num >= loadedTags.Count) { break; } PlayerTag displayTag = loadedTags[num]; LLButton val2 = btSelectTags[j]; val2.SetText(displayTag.IsDefault ? $"PLAYER{playerNr + 1}" : displayTag.GetName(), -1, false); val2.colDefault = (displayTag.IsDefault ? COLOR_TAG_DEFAULT : COLOR_TAG_CUSTOM); ((Graphic)val2.textMesh).color = (displayTag.IsDefault ? COLOR_TAG_DEFAULT : COLOR_TAG_CUSTOM); ((LLClickable)val2).onClick = (ControlDelegate)delegate(int playerNr) { OnClickSelectTag(playerNr, displayTag); }; ((LLClickable)val2).SetActive(true); } } private void OnClickSelectTag(int playerNr, PlayerTag playerTag) { if (playerNr == -1 || this.playerNr == playerNr) { Plugin.Instance.SelectPlayerTag(this.playerNr, playerTag); Close(); FHPLAFJAAIP currentGameStateObject = GameStates.GetCurrentGameStateObject(); HPNLMFHPHFD val = (HPNLMFHPHFD)(object)((currentGameStateObject is HPNLMFHPHFD) ? currentGameStateObject : null); if (!((Object)(object)val == (Object)null)) { val.BDMIDGAHNLA(Player.op_Implicit(Player.GetPlayer(this.playerNr)), false); } } } private void OpenCreate() { ((Component)pnBrowse).gameObject.SetActive(false); ((Component)pnCreate).gameObject.SetActive(true); tag = ""; TextHandler.SetText((TMP_Text)(object)lbCreateTag, tag); upper = false; numbers = false; btShift.SetText("case", -1, false); btNumbers.SetText("nums", -1, false); btCharsets.ForEach(delegate(CharsetButton btCharset) { btCharset.SetUpper(upper); }); btCharsetsAlpha.ForEach(delegate(CharsetButton btCharset) { ((Component)btCharset).gameObject.SetActive(true); }); btCharsetsNumbers.ForEach(delegate(CharsetButton btCharset) { ((Component)btCharset).gameObject.SetActive(false); }); ((Component)this).gameObject.SetActive(true); } internal void Close() { ((Component)this).gameObject.SetActive(false); } private void OnClickBackspace(int playerNr) { if ((playerNr == -1 || this.playerNr == playerNr) && tag.Length >= 1) { tag = tag.Remove(tag.Length - 1); TextHandler.SetText((TMP_Text)(object)lbCreateTag, tag); activeBtIndex = -1; } } private void OnClickShift(int playerNr) { if (playerNr == -1 || this.playerNr == playerNr) { upper = !upper; btCharsets.ForEach(delegate(CharsetButton btCharset) { btCharset.SetUpper(upper); }); btShift.SetText(upper ? "CASE" : "case", -1, false); activeBtIndex = -1; } } private void OnClickNumbers(int playerNr) { if (playerNr == -1 || this.playerNr == playerNr) { numbers = !numbers; btCharsetsAlpha.ForEach(delegate(CharsetButton btCharset) { ((Component)btCharset).gameObject.SetActive(!numbers); }); btCharsetsNumbers.ForEach(delegate(CharsetButton btCharset) { ((Component)btCharset).gameObject.SetActive(numbers); }); btNumbers.SetText(numbers ? "alpha" : "nums", -1, false); activeBtIndex = -1; } } private void OnClickEnter(int playerNr) { if (playerNr == -1 || this.playerNr == playerNr) { PlayerTag playerTag = PlayerTagIO.CreatePlayerTag(tag); if (playerTag == null) { OpenBrowse(); return; } OnClickSelectTag(this.playerNr, playerTag); Close(); } } private void OnClickCharset(int playerNr, CharsetButton btCharset, int btIndex) { if (playerNr != -1 && this.playerNr != playerNr) { return; } if (btIndex != activeBtIndex) { if (tag.Length >= 12) { return; } activeBtIndex = btIndex; count = 0; } else { count++; if (tag.Length >= 1) { tag = tag.Remove(tag.Length - 1); } } tag += btCharset.GetChar(count); TextHandler.SetText((TMP_Text)(object)lbCreateTag, tag); repeatTimer = 0f; } private void Update() { if (activeBtIndex != -1) { if (repeatTimer >= 0.5f) { repeatTimer = 0f; activeBtIndex = -1; } else { repeatTimer += Time.deltaTime; } } } } public class PlayerTagMenuOptions : MonoBehaviour { internal static Vector2 BarStartPos; internal static Vector2 BarOffset; private RectTransform rectTransform; private int playerIndex; private Sprite barSprite; private bool ignoreMouse; private Color colHover; private ScreenInput screenInput; private static readonly Vector2 MAIN_POSITION = new Vector2(-50f, 0f); private static readonly Vector2 BAR_SCALE = new Vector2(140f, 40f); private const float ELEMENT_OFFSET = 160f; private static readonly Vector2 BUTTON_SCALE = new Vector2(120f, 28f); private const int TAG_FONT_SIZE = 14; private const int CONTROL_FONT_SIZE = 18; private static readonly Color COLOR_CONTROL = Color.yellow; private static readonly Color COLOR_HOVER = new Color(0.1176f, 0.6706f, 1f); private static readonly Color COLOR_TAG_CUSTOM = Color.white; private static readonly Color COLOR_TAG_DEFAULT = Color.red; private static readonly int ROWS = InputAction.EConfigurables().Count() + 5; private Image[] bgRows = (Image[])(object)new Image[ROWS]; private List allControls; private RectTransform pnBrowse; private LLButton btNewTag; private RectTransform pnPages; private TextMeshProUGUI lbPageNumber; private LLButton btPageBack; private LLButton btPageForward; private RectTransform pnTagList; private List loadedTags; private LLButton[] btSelectTags; private static readonly int TAG_LIST_ROWS = ROWS - 2; private int maxPages; private int currentPage; private const int KEYPAD_COLS = 3; private const int KEYPAD_ROWS = 4; private const float SPACING = 2f; private const int BORDER = 1; private const int KEYPAD_FONT_SIZE = 10; private static readonly Vector2 KEYPAD_BUTTON_SCALE = new Vector2((BUTTON_SCALE.x - 4f) / 3f, BUTTON_SCALE.y); private RectTransform pnCreate; private RectTransform pnTagEdit; private RectTransform pnCreateTagBorder; private TextMeshProUGUI lbCreateTag; private LLButton btBackspace; private LLButton btShift; private LLButton btNumbers; private LLButton btEnter; private RectTransform pnKeypad; private List btCharsets; private List btCharsetsAlpha; private List btCharsetsNumbers; private static readonly Charset[] charsetAlpha = new Charset[8] { new Charset(new char[3] { 'a', 'b', 'c' }, new char[3] { 'A', 'B', 'C' }), new Charset(new char[3] { 'd', 'e', 'f' }, new char[3] { 'D', 'E', 'F' }), new Charset(new char[3] { 'g', 'h', 'i' }, new char[3] { 'G', 'H', 'I' }), new Charset(new char[3] { 'j', 'k', 'l' }, new char[3] { 'J', 'K', 'L' }), new Charset(new char[3] { 'm', 'n', 'o' }, new char[3] { 'M', 'N', 'O' }), new Charset(new char[4] { 'p', 'q', 'r', 's' }, new char[4] { 'P', 'Q', 'R', 'S' }), new Charset(new char[3] { 't', 'u', 'v' }, new char[3] { 'T', 'U', 'V' }), new Charset(new char[4] { 'w', 'x', 'y', 'z' }, new char[4] { 'W', 'X', 'Y', 'Z' }) }; private static readonly Charset[] charsetNumbers = new Charset[9] { new Charset(new char[3] { '1', '2', '3' }), new Charset(new char[3] { '4', '5', '6' }), new Charset(new char[4] { '7', '8', '9', '0' }), new Charset(new char[4] { '\'', ',', '.', ';' }, spacing: true), new Charset(new char[3] { '_', '-', '~' }, spacing: true), new Charset(new char[3] { '!', '$', '@' }, spacing: true), new Charset(new char[3] { '#', '&', '%' }, spacing: true), new Charset(new char[4] { '(', ')', '[', ']' }, spacing: true), new Charset(new char[3] { '+', '=', '^' }, spacing: true) }; private const int TAG_MAX_LENGTH = 12; private const float TAG_REPEAT_TIME = 0.5f; private string tag; private bool upper; private bool numbers; private static readonly float createTagWidth = BUTTON_SCALE.x * 7f / 8f - 1f; private static readonly float backspaceWidth = BUTTON_SCALE.x - createTagWidth - 1f; private int activeBtIndex = -1; private int count = 0; private float repeatTimer = 0f; internal static PlayerTagMenuOptions CreateMenu(Transform parent, int playerIndex, ScreenInput screenInput) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) RectTransform panel = null; UIUtils.CreatePanel(ref panel, "Player Tag Menu", parent, MAIN_POSITION, Vector2.one, Color.clear); PlayerTagMenuOptions playerTagMenuOptions = ((Component)panel).gameObject.AddComponent(); playerTagMenuOptions.rectTransform = panel; playerTagMenuOptions.playerIndex = playerIndex; playerTagMenuOptions.barSprite = Assets.LoadFromBundle(Bundle.op_Implicit((BundleType)3), "_spriteOptionsBar", false); playerTagMenuOptions.screenInput = screenInput; playerTagMenuOptions.Init(); ((Component)playerTagMenuOptions).gameObject.SetActive(false); return playerTagMenuOptions; } private void Init() { //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) allControls = new List(); ignoreMouse = playerIndex != 0; for (int i = 0; i < ROWS; i++) { Image image = null; UIUtils.CreateImage(ref image, barSprite, "row" + i, (Transform)(object)rectTransform, new Vector2(Mathf.Round(BarStartPos.x + BarOffset.x * (float)(i + 1)) + 160f * (float)playerIndex, Mathf.Round(BarStartPos.y + BarOffset.y * (float)(i + 1))), BAR_SCALE); image.type = (Type)1; bgRows[i] = image; } InitBrowsePanel(); InitCreatePanel(); ((Component)pnCreate).gameObject.SetActive(false); } private void InitBrowsePanel() { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005a: 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_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Expected O, but got Unknown //IL_012e: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Unknown result type (might be due to invalid IL or missing references) //IL_0178: Unknown result type (might be due to invalid IL or missing references) //IL_0189: Unknown result type (might be due to invalid IL or missing references) //IL_01dd: Unknown result type (might be due to invalid IL or missing references) //IL_01fc: Unknown result type (might be due to invalid IL or missing references) //IL_0201: Unknown result type (might be due to invalid IL or missing references) //IL_0217: 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_022d: Unknown result type (might be due to invalid IL or missing references) //IL_0238: Unknown result type (might be due to invalid IL or missing references) //IL_023d: Unknown result type (might be due to invalid IL or missing references) //IL_0295: Unknown result type (might be due to invalid IL or missing references) //IL_029f: Expected O, but got Unknown //IL_02e8: Unknown result type (might be due to invalid IL or missing references) //IL_0307: Unknown result type (might be due to invalid IL or missing references) //IL_030c: Unknown result type (might be due to invalid IL or missing references) //IL_0322: Unknown result type (might be due to invalid IL or missing references) //IL_0333: Unknown result type (might be due to invalid IL or missing references) //IL_0338: Unknown result type (might be due to invalid IL or missing references) //IL_0343: Unknown result type (might be due to invalid IL or missing references) //IL_0348: Unknown result type (might be due to invalid IL or missing references) //IL_03a0: Unknown result type (might be due to invalid IL or missing references) //IL_03aa: Expected O, but got Unknown //IL_03cd: Unknown result type (might be due to invalid IL or missing references) //IL_03d2: Unknown result type (might be due to invalid IL or missing references) //IL_03d7: Unknown result type (might be due to invalid IL or missing references) //IL_0409: Unknown result type (might be due to invalid IL or missing references) //IL_040e: Unknown result type (might be due to invalid IL or missing references) //IL_0413: Unknown result type (might be due to invalid IL or missing references) //IL_042d: Unknown result type (might be due to invalid IL or missing references) //IL_042e: Unknown result type (might be due to invalid IL or missing references) //IL_0433: Unknown result type (might be due to invalid IL or missing references) //IL_043f: Unknown result type (might be due to invalid IL or missing references) //IL_0444: Unknown result type (might be due to invalid IL or missing references) UIUtils.CreatePanel(ref pnBrowse, "pnBrowse", (Transform)(object)rectTransform, Vector2.zero, Vector2.one, Color.clear); UIUtils.CreateButton(ref btNewTag, "btNewTag", (Transform)(object)pnBrowse, Vector2.op_Implicit(((Transform)((Graphic)bgRows[ROWS - 1]).rectTransform).localPosition), BUTTON_SCALE, Color.clear); ((Graphic)btNewTag.textMesh).color = COLOR_CONTROL; btNewTag.colDefault = COLOR_CONTROL; btNewTag.colHover = COLOR_HOVER; ((TMP_Text)btNewTag.textMesh).fontSize = 18f; btNewTag.SetText("+ new tag", -1, false); ((LLClickable)btNewTag).ignoreMouseHover = ignoreMouse; btNewTag.soundHover = true; ((LLClickable)btNewTag).onClick = (ControlDelegate)delegate { OpenCreate(); }; allControls.Add((LLClickable)(object)btNewTag); UIUtils.CreatePanel(ref pnPages, "pnPages", (Transform)(object)pnBrowse, Vector2.op_Implicit(((Transform)((Graphic)bgRows[ROWS - 2]).rectTransform).localPosition), BUTTON_SCALE, Color.clear); UIUtils.CreateText(ref lbPageNumber, "lbPageNumber", (Transform)(object)pnPages, Vector2.zero, new Vector2(BUTTON_SCALE.x / 2f, BUTTON_SCALE.y)); ((Graphic)lbPageNumber).color = COLOR_CONTROL; ((TMP_Text)lbPageNumber).fontSize = 18f; UIUtils.CreateButton(ref btPageBack, "btPageBack", (Transform)(object)pnPages, new Vector2((0f - BUTTON_SCALE.x) / 2f + BUTTON_SCALE.x / 8f, 0f), new Vector2(BUTTON_SCALE.x / 4f, BUTTON_SCALE.y), Color.clear); ((Graphic)btPageBack.textMesh).color = COLOR_CONTROL; btPageBack.colDefault = COLOR_CONTROL; btPageBack.colHover = COLOR_HOVER; ((TMP_Text)btPageBack.textMesh).fontSize = 18f; btPageBack.SetText("<", -1, false); ((LLClickable)btPageBack).ignoreMouseHover = ignoreMouse; btPageBack.soundHover = true; ((LLClickable)btPageBack).onClick = new ControlDelegate(OnClickPageBack); allControls.Add((LLClickable)(object)btPageBack); UIUtils.CreateButton(ref btPageForward, "btPageForward", (Transform)(object)pnPages, new Vector2(BUTTON_SCALE.x / 2f - BUTTON_SCALE.x / 8f, 0f), new Vector2(BUTTON_SCALE.x / 4f, BUTTON_SCALE.y), Color.clear); ((Graphic)btPageForward.textMesh).color = COLOR_CONTROL; btPageForward.colDefault = COLOR_CONTROL; btPageForward.colHover = COLOR_HOVER; ((TMP_Text)btPageForward.textMesh).fontSize = 18f; btPageForward.SetText(">", -1, false); ((LLClickable)btPageForward).ignoreMouseHover = ignoreMouse; btPageForward.soundHover = true; ((LLClickable)btPageForward).onClick = new ControlDelegate(OnClickPageForward); allControls.Add((LLClickable)(object)btPageForward); UIUtils.CreatePanel(ref pnTagList, "pnTagList", (Transform)(object)pnBrowse, Vector2.zero, Vector2.one, Color.clear); btSelectTags = (LLButton[])(object)new LLButton[TAG_LIST_ROWS]; for (int i = 0; i < TAG_LIST_ROWS; i++) { LLButton button = null; Vector2 position = Vector2.op_Implicit(((Transform)((Graphic)bgRows[i]).rectTransform).localPosition); UIUtils.CreateButton(ref button, "btSelectTag" + i, (Transform)(object)pnTagList, position, BUTTON_SCALE, Color.clear); button.colHover = COLOR_HOVER; ((TMP_Text)button.textMesh).fontSize = 14f; ((LLClickable)button).ignoreMouseHover = ignoreMouse; button.soundHover = true; btSelectTags[i] = button; allControls.Add((LLClickable)(object)button); } } private void InitCreatePanel() { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: 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_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Unknown result type (might be due to invalid IL or missing references) //IL_016d: Unknown result type (might be due to invalid IL or missing references) //IL_0172: Unknown result type (might be due to invalid IL or missing references) //IL_0188: 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_019e: Unknown result type (might be due to invalid IL or missing references) //IL_01a9: Unknown result type (might be due to invalid IL or missing references) //IL_01ae: Unknown result type (might be due to invalid IL or missing references) //IL_01e9: Unknown result type (might be due to invalid IL or missing references) //IL_01f3: Expected O, but got Unknown //IL_0233: Unknown result type (might be due to invalid IL or missing references) //IL_0238: Unknown result type (might be due to invalid IL or missing references) //IL_023d: Unknown result type (might be due to invalid IL or missing references) //IL_025c: Unknown result type (might be due to invalid IL or missing references) //IL_0261: Unknown result type (might be due to invalid IL or missing references) //IL_0266: Unknown result type (might be due to invalid IL or missing references) //IL_027c: Unknown result type (might be due to invalid IL or missing references) //IL_028d: Unknown result type (might be due to invalid IL or missing references) //IL_0292: Unknown result type (might be due to invalid IL or missing references) //IL_029d: Unknown result type (might be due to invalid IL or missing references) //IL_02a2: Unknown result type (might be due to invalid IL or missing references) //IL_02dd: Unknown result type (might be due to invalid IL or missing references) //IL_02e7: Expected O, but got Unknown //IL_032a: Unknown result type (might be due to invalid IL or missing references) //IL_032f: Unknown result type (might be due to invalid IL or missing references) //IL_0334: Unknown result type (might be due to invalid IL or missing references) //IL_034a: Unknown result type (might be due to invalid IL or missing references) //IL_035b: Unknown result type (might be due to invalid IL or missing references) //IL_0360: Unknown result type (might be due to invalid IL or missing references) //IL_036b: Unknown result type (might be due to invalid IL or missing references) //IL_0370: Unknown result type (might be due to invalid IL or missing references) //IL_03ab: Unknown result type (might be due to invalid IL or missing references) //IL_03b5: Expected O, but got Unknown //IL_03f8: Unknown result type (might be due to invalid IL or missing references) //IL_03fd: Unknown result type (might be due to invalid IL or missing references) //IL_0402: Unknown result type (might be due to invalid IL or missing references) //IL_0418: Unknown result type (might be due to invalid IL or missing references) //IL_0429: Unknown result type (might be due to invalid IL or missing references) //IL_042e: Unknown result type (might be due to invalid IL or missing references) //IL_0439: Unknown result type (might be due to invalid IL or missing references) //IL_043e: Unknown result type (might be due to invalid IL or missing references) //IL_0479: Unknown result type (might be due to invalid IL or missing references) //IL_0483: Expected O, but got Unknown //IL_050c: 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_0516: 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_053d: Unknown result type (might be due to invalid IL or missing references) //IL_0542: Unknown result type (might be due to invalid IL or missing references) //IL_054d: Unknown result type (might be due to invalid IL or missing references) //IL_0552: Unknown result type (might be due to invalid IL or missing references) //IL_0594: Unknown result type (might be due to invalid IL or missing references) //IL_059e: Expected O, but got Unknown //IL_0663: Unknown result type (might be due to invalid IL or missing references) //IL_0668: Unknown result type (might be due to invalid IL or missing references) //IL_066d: Unknown result type (might be due to invalid IL or missing references) //IL_0684: Unknown result type (might be due to invalid IL or missing references) //IL_0696: Unknown result type (might be due to invalid IL or missing references) //IL_069b: Unknown result type (might be due to invalid IL or missing references) //IL_06a7: Unknown result type (might be due to invalid IL or missing references) //IL_06ac: Unknown result type (might be due to invalid IL or missing references) //IL_06f5: Unknown result type (might be due to invalid IL or missing references) //IL_06ff: Expected O, but got Unknown UIUtils.CreatePanel(ref pnCreate, "pnCreate", (Transform)(object)rectTransform, Vector2.zero, Vector2.one, Color.clear); UIUtils.CreatePanel(ref pnTagEdit, "pnTagEdit", (Transform)(object)pnCreate, Vector2.op_Implicit(((Transform)((Graphic)bgRows[ROWS - 1 - 4]).rectTransform).localPosition), BUTTON_SCALE, Color.clear); UIUtils.CreateBorderPanel(ref pnCreateTagBorder, "pnCreateTagBorder", (Transform)(object)pnTagEdit, new Vector2((0f - BUTTON_SCALE.x) / 2f + createTagWidth / 2f, 0f), new Vector2(createTagWidth, BUTTON_SCALE.y), Color.clear, Color.yellow, 1); UIUtils.CreateText(ref lbCreateTag, "lbCreateTag", (Transform)(object)pnTagEdit, new Vector2((0f - BUTTON_SCALE.x) / 2f + createTagWidth / 2f, 0f), new Vector2(createTagWidth, BUTTON_SCALE.y)); ((TMP_Text)lbCreateTag).fontSize = 14f; UIUtils.CreateButton(ref btBackspace, "btBackspace", (Transform)(object)pnTagEdit, new Vector2(BUTTON_SCALE.x / 2f - backspaceWidth / 2f, 0f), new Vector2(backspaceWidth, BUTTON_SCALE.y), Color.yellow); ((Graphic)btBackspace.textMesh).color = COLOR_TAG_CUSTOM; btBackspace.colDefault = COLOR_TAG_CUSTOM; btBackspace.colHover = COLOR_HOVER; ((TMP_Text)btBackspace.textMesh).fontSize = 10f; btBackspace.SetText("<", -1, false); ((LLClickable)btBackspace).onClick = new ControlDelegate(OnClickBackspace); ((LLClickable)btBackspace).ignoreMouseHover = ignoreMouse; btBackspace.soundHover = true; allControls.Add((LLClickable)(object)btBackspace); UIUtils.CreatePanel(ref pnKeypad, "pnKeypad", (Transform)(object)pnCreate, Vector2.zero, Vector2.one, Color.clear); UIUtils.CreateButton(ref btShift, "btShift", (Transform)(object)pnKeypad, GetKeypadPosition(3, 0), KEYPAD_BUTTON_SCALE, Color.yellow); ((Graphic)btShift.textMesh).color = COLOR_TAG_CUSTOM; btShift.colDefault = COLOR_TAG_CUSTOM; btShift.colHover = COLOR_HOVER; ((TMP_Text)btShift.textMesh).fontSize = 10f; btShift.SetText("case", -1, false); ((LLClickable)btShift).onClick = new ControlDelegate(OnClickShift); ((LLClickable)btShift).ignoreMouseHover = ignoreMouse; btShift.soundHover = true; allControls.Add((LLClickable)(object)btShift); UIUtils.CreateButton(ref btNumbers, "btNumbers", (Transform)(object)pnKeypad, GetKeypadPosition(3, 1), KEYPAD_BUTTON_SCALE, Color.yellow); ((Graphic)btNumbers.textMesh).color = COLOR_TAG_CUSTOM; btNumbers.colDefault = COLOR_TAG_CUSTOM; btNumbers.colHover = COLOR_HOVER; ((TMP_Text)btNumbers.textMesh).fontSize = 10f; btNumbers.SetText("nums", -1, false); ((LLClickable)btNumbers).onClick = new ControlDelegate(OnClickNumbers); ((LLClickable)btNumbers).ignoreMouseHover = ignoreMouse; btNumbers.soundHover = true; allControls.Add((LLClickable)(object)btNumbers); UIUtils.CreateButton(ref btEnter, "btEnter", (Transform)(object)pnKeypad, GetKeypadPosition(3, 2), KEYPAD_BUTTON_SCALE, Color.yellow); ((Graphic)btEnter.textMesh).color = COLOR_TAG_CUSTOM; btEnter.colDefault = COLOR_TAG_CUSTOM; btEnter.colHover = COLOR_HOVER; ((TMP_Text)btEnter.textMesh).fontSize = 10f; btEnter.SetText("done", -1, false); ((LLClickable)btEnter).onClick = new ControlDelegate(OnClickEnter); ((LLClickable)btEnter).ignoreMouseHover = ignoreMouse; btEnter.soundHover = true; allControls.Add((LLClickable)(object)btEnter); btCharsets = new List(); btCharsetsAlpha = new List(); for (int i = 0; i < charsetAlpha.Length; i++) { CharsetButton btCharset = null; int col = i % 3; int row = i / 3; UIUtils.CreateCharsetButton(ref btCharset, "btCharsetAlpha" + i, (Transform)(object)pnKeypad, GetKeypadPosition(row, col), KEYPAD_BUTTON_SCALE, Color.gray); ((Graphic)((LLButton)btCharset).textMesh).color = COLOR_TAG_CUSTOM; ((LLButton)btCharset).colDefault = COLOR_TAG_CUSTOM; ((LLButton)btCharset).colHover = COLOR_HOVER; ((TMP_Text)((LLButton)btCharset).textMesh).fontSize = 10f; btCharset.SetCharset(charsetAlpha[i]); int btIndex = i; ((LLClickable)btCharset).onClick = (ControlDelegate)delegate(int playerNr) { OnClickCharset(playerNr, btCharset, btIndex); }; ((LLClickable)btCharset).ignoreMouseHover = ignoreMouse; ((LLButton)btCharset).soundHover = true; btCharsets.Add(btCharset); btCharsetsAlpha.Add(btCharset); allControls.Add((LLClickable)(object)btCharset); } btCharsetsNumbers = new List(); for (int j = 0; j < charsetNumbers.Length; j++) { CharsetButton btCharset2 = null; int col2 = j % 3; int row2 = j / 3; UIUtils.CreateCharsetButton(ref btCharset2, "btCharsetsNumbers" + j, (Transform)(object)pnKeypad, GetKeypadPosition(row2, col2), KEYPAD_BUTTON_SCALE, Color.gray); ((Graphic)((LLButton)btCharset2).textMesh).color = COLOR_TAG_CUSTOM; ((LLButton)btCharset2).colDefault = COLOR_TAG_CUSTOM; ((LLButton)btCharset2).colHover = COLOR_HOVER; ((TMP_Text)((LLButton)btCharset2).textMesh).fontSize = 10f; btCharset2.SetCharset(charsetNumbers[j]); int btIndex2 = j; ((LLClickable)btCharset2).onClick = (ControlDelegate)delegate(int playerNr) { OnClickCharset(playerNr, btCharset2, btIndex2); }; ((LLClickable)btCharset2).ignoreMouseHover = ignoreMouse; ((LLButton)btCharset2).soundHover = true; btCharsets.Add(btCharset2); btCharsetsNumbers.Add(btCharset2); allControls.Add((LLClickable)(object)btCharset2); } } private Vector2 GetKeypadPosition(int row, int col) { //IL_0016: 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) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //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_0054: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) Vector2 val = Vector2.op_Implicit(((Transform)((Graphic)bgRows[ROWS - 4 + row]).rectTransform).localPosition); Vector2 val2 = val + new Vector2((0f - BUTTON_SCALE.x) / 2f + KEYPAD_BUTTON_SCALE.x / 2f, 0f); return val2 + new Vector2((KEYPAD_BUTTON_SCALE.x + 2f) * (float)col, 0f); } private int GetKeypadIndex(int row, int col) { return row * 3 + col; } internal void OpenBrowse() { ((Component)pnBrowse).gameObject.SetActive(true); ((Component)pnCreate).gameObject.SetActive(false); allControls.ForEach(delegate(LLClickable control) { control.OnHoverOut(-1); }); loadedTags = PlayerTagIO.PlayerTags.Values.OrderBy((PlayerTag pt) => pt.GetName()).ToList(); loadedTags.Insert(0, PlayerTag.DEFAULT); maxPages = 1 + (loadedTags.Count - 1) / TAG_LIST_ROWS; currentPage = 0; TextHandler.SetText((TMP_Text)(object)lbPageNumber, $"{currentPage + 1}/{maxPages}"); LoadPage(); ((Component)this).gameObject.SetActive(true); } private void LoadPage() { //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Unknown result type (might be due to invalid IL or missing references) //IL_0126: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Expected O, but got Unknown LLButton[] array = btSelectTags; foreach (LLButton val in array) { val.SetText("", -1, false); ((LLClickable)val).onClick = null; ((LLClickable)val).SetActive(false); ((LLClickable)val).OnHoverOut(-1); } for (int j = 0; j < TAG_LIST_ROWS; j++) { int num = currentPage * TAG_LIST_ROWS + j; if (num >= loadedTags.Count) { break; } PlayerTag displayTag = loadedTags[num]; LLButton val2 = btSelectTags[j]; UIUtils.SetTextAutoSize(val2, displayTag.IsDefault ? "DEFAULT" : displayTag.GetName(), 14, BUTTON_SCALE); ((Graphic)val2.textMesh).color = (displayTag.IsDefault ? COLOR_TAG_DEFAULT : COLOR_TAG_CUSTOM); val2.colDefault = (displayTag.IsDefault ? COLOR_TAG_DEFAULT : COLOR_TAG_CUSTOM); ((LLClickable)val2).onClick = (ControlDelegate)delegate(int playerNr) { OnClickSelectTag(playerNr, displayTag); }; ((LLClickable)val2).SetActive(true); } } private void OnClickPageBack(int playerNr) { if (currentPage > 0) { currentPage--; } LoadPage(); TextHandler.SetText((TMP_Text)(object)lbPageNumber, $"{currentPage + 1}/{maxPages}"); } private void OnClickPageForward(int playerNr) { if (currentPage < maxPages - 1) { currentPage++; } LoadPage(); TextHandler.SetText((TMP_Text)(object)lbPageNumber, $"{currentPage + 1}/{maxPages}"); } private void OnClickSelectTag(int playerNr, PlayerTag playerTag) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) Plugin.Instance.SelectPlayerTag(Controller.FromNr(playerIndex, false), playerTag); Close(); screenInput.UpdateBarButtons(); } private void OpenCreate() { ((Component)pnBrowse).gameObject.SetActive(false); ((Component)pnCreate).gameObject.SetActive(true); allControls.ForEach(delegate(LLClickable control) { control.OnHoverOut(-1); }); tag = ""; TextHandler.SetText((TMP_Text)(object)lbCreateTag, tag); upper = false; numbers = false; btShift.SetText("case", -1, false); btNumbers.SetText("nums", -1, false); btCharsets.ForEach(delegate(CharsetButton btCharset) { btCharset.SetUpper(upper); }); btCharsetsAlpha.ForEach(delegate(CharsetButton btCharset) { ((Component)btCharset).gameObject.SetActive(true); }); btCharsetsNumbers.ForEach(delegate(CharsetButton btCharset) { ((Component)btCharset).gameObject.SetActive(false); }); ((Component)this).gameObject.SetActive(true); } internal void Close() { ((Component)this).gameObject.SetActive(false); } private void OnClickBackspace(int playerNr) { //IL_0056: Unknown result type (might be due to invalid IL or missing references) if (tag.Length >= 1) { tag = tag.Remove(tag.Length - 1); UIUtils.SetTextAutoSize(lbCreateTag, tag, 14, new Vector2(createTagWidth - 2f, BUTTON_SCALE.y)); activeBtIndex = -1; } } private void OnClickShift(int playerNr) { upper = !upper; btCharsets.ForEach(delegate(CharsetButton btCharset) { btCharset.SetUpper(upper); }); btShift.SetText(upper ? "CASE" : "case", -1, false); activeBtIndex = -1; } private void OnClickNumbers(int playerNr) { numbers = !numbers; btCharsetsAlpha.ForEach(delegate(CharsetButton btCharset) { ((Component)btCharset).gameObject.SetActive(!numbers); }); btCharsetsNumbers.ForEach(delegate(CharsetButton btCharset) { ((Component)btCharset).gameObject.SetActive(numbers); }); btNumbers.SetText(numbers ? "alpha" : "nums", -1, false); activeBtIndex = -1; } private void OnClickEnter(int playerNr) { PlayerTag playerTag = PlayerTagIO.CreatePlayerTag(tag); if (playerTag == null) { OpenBrowse(); return; } OpenBrowse(); OnClickSelectTag(playerNr, playerTag); } private void OnClickCharset(int playerNr, CharsetButton btCharset, int btIndex) { //IL_00c9: Unknown result type (might be due to invalid IL or missing references) if (btIndex != activeBtIndex) { if (tag.Length >= 12) { return; } activeBtIndex = btIndex; count = 0; } else { count++; if (tag.Length >= 1) { tag = tag.Remove(tag.Length - 1); } } tag += btCharset.GetChar(count); UIUtils.SetTextAutoSize(lbCreateTag, tag, 14, new Vector2(createTagWidth - 2f, BUTTON_SCALE.y)); repeatTimer = 0f; } private void Update() { if (activeBtIndex != -1) { if (repeatTimer >= 0.5f) { repeatTimer = 0f; activeBtIndex = -1; } else { repeatTimer += Time.deltaTime; } } } internal void GetControls(ref List list, LLClickable curFocus, LLCursor cursor) { if (((Component)this).gameObject.activeSelf) { if (((Component)pnBrowse).gameObject.activeSelf) { list.AddRange((IEnumerable)(object)btSelectTags); list.Add((LLClickable)(object)btPageBack); list.Add((LLClickable)(object)btNewTag); } else if (((Component)pnCreate).gameObject.activeSelf) { list.Add((LLClickable)(object)btEnter); } } } internal LLClickable GetDefaultFocus(LLCursor cursor) { return (LLClickable)(object)(((Component)pnCreate).gameObject.activeSelf ? btEnter : null); } internal bool DirectMove(Vector2 move, LLClickable curFocus, bool shouldMove) { //IL_0010: 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_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0206: Unknown result type (might be due to invalid IL or missing references) //IL_0190: Unknown result type (might be due to invalid IL or missing references) //IL_0279: Unknown result type (might be due to invalid IL or missing references) //IL_02c7: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_0364: Unknown result type (might be due to invalid IL or missing references) //IL_03b2: Unknown result type (might be due to invalid IL or missing references) //IL_044f: Unknown result type (might be due to invalid IL or missing references) //IL_0859: Unknown result type (might be due to invalid IL or missing references) //IL_072d: 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_04fd: Unknown result type (might be due to invalid IL or missing references) if (!shouldMove) { return false; } bool flag = move.y != 0f && Mathf.Abs(move.y) > Mathf.Abs(move.x); LLCursor oBELDJGOOIJ = HGFCCNMEEEF.inputConfigControllers.First((JBKFDDKLDDG inputConfigController) => inputConfigController.LNDBODJBNFM == playerIndex).OBELDJGOOIJ; if (((Component)pnBrowse).gameObject.activeSelf) { if (((Object)(object)curFocus == (Object)(object)btPageBack || (Object)(object)curFocus == (Object)(object)btPageForward) && flag) { LLButton val = btSelectTags[0]; for (int i = 1; i < btSelectTags.Length && ((LLClickable)btSelectTags[i]).GetActive(); i++) { val = btSelectTags[i]; } oBELDJGOOIJ.SetFocus((LLClickable)(object)((move.y > 0f) ? val : btNewTag)); return true; } if ((Object)(object)curFocus == (Object)(object)btPageBack) { oBELDJGOOIJ.SetFocus((LLClickable)(object)btPageForward); return true; } if ((Object)(object)curFocus == (Object)(object)btPageForward) { oBELDJGOOIJ.SetFocus((LLClickable)(object)btPageBack); return true; } } else if (((Component)pnCreate).gameObject.activeSelf) { if ((Object)(object)curFocus == (Object)(object)btBackspace) { if (flag) { if (move.y > 0f) { oBELDJGOOIJ.SetFocus((LLClickable)(object)btEnter); } else { oBELDJGOOIJ.SetFocus((LLClickable)(object)(numbers ? btCharsetsNumbers[GetKeypadIndex(0, 2)] : btCharsetsAlpha[GetKeypadIndex(0, 2)])); } } return true; } if ((Object)(object)curFocus == (Object)(object)btEnter && flag) { if (move.y > 0f) { oBELDJGOOIJ.SetFocus((LLClickable)(object)(numbers ? btCharsetsNumbers[GetKeypadIndex(2, 2)] : btCharsetsAlpha[GetKeypadIndex(1, 2)])); } else { oBELDJGOOIJ.SetFocus((LLClickable)(object)btBackspace); } return true; } if ((Object)(object)curFocus == (Object)(object)btEnter) { if (move.x > 0f) { oBELDJGOOIJ.SetFocus((LLClickable)(object)btShift); } else { oBELDJGOOIJ.SetFocus((LLClickable)(object)btNumbers); } return true; } if ((Object)(object)curFocus == (Object)(object)btNumbers && flag) { if (move.y > 0f) { oBELDJGOOIJ.SetFocus((LLClickable)(object)(numbers ? btCharsetsNumbers[GetKeypadIndex(2, 1)] : btCharsetsAlpha[GetKeypadIndex(2, 1)])); } else { oBELDJGOOIJ.SetFocus((LLClickable)(object)(numbers ? btCharsetsNumbers[GetKeypadIndex(0, 1)] : btCharsetsAlpha[GetKeypadIndex(0, 1)])); } return true; } if ((Object)(object)curFocus == (Object)(object)btNumbers) { if (move.x > 0f) { oBELDJGOOIJ.SetFocus((LLClickable)(object)btEnter); } else { oBELDJGOOIJ.SetFocus((LLClickable)(object)btShift); } return true; } if ((Object)(object)curFocus == (Object)(object)btShift && flag) { if (move.y > 0f) { oBELDJGOOIJ.SetFocus((LLClickable)(object)(numbers ? btCharsetsNumbers[GetKeypadIndex(2, 0)] : btCharsetsAlpha[GetKeypadIndex(2, 0)])); } else { oBELDJGOOIJ.SetFocus((LLClickable)(object)(numbers ? btCharsetsNumbers[GetKeypadIndex(0, 0)] : btCharsetsAlpha[GetKeypadIndex(0, 0)])); } return true; } if ((Object)(object)curFocus == (Object)(object)btShift) { if (move.x > 0f) { oBELDJGOOIJ.SetFocus((LLClickable)(object)btNumbers); } else { oBELDJGOOIJ.SetFocus((LLClickable)(object)btEnter); } return true; } for (int j = 0; j < 3; j++) { for (int k = 0; k < 3; k++) { if (numbers) { if (GetKeypadIndex(j, k) >= btCharsetsNumbers.Count) { break; } if ((Object)(object)curFocus != (Object)(object)btCharsetsNumbers[GetKeypadIndex(j, k)]) { continue; } if (flag) { if (move.y > 0f) { if (k == 2 && j == 0) { oBELDJGOOIJ.SetFocus((LLClickable)(object)btBackspace); } else if (k == 1 && j == 0) { oBELDJGOOIJ.SetFocus((LLClickable)(object)btNumbers); } else if (k == 0 && j == 0) { oBELDJGOOIJ.SetFocus((LLClickable)(object)btShift); } else { oBELDJGOOIJ.SetFocus((LLClickable)(object)btCharsetsNumbers[GetKeypadIndex(j - 1, k)]); } } else if (k == 2 && j == 2) { oBELDJGOOIJ.SetFocus((LLClickable)(object)btEnter); } else if (k == 1 && j == 2) { oBELDJGOOIJ.SetFocus((LLClickable)(object)btNumbers); } else if (k == 0 && j == 2) { oBELDJGOOIJ.SetFocus((LLClickable)(object)btShift); } else { oBELDJGOOIJ.SetFocus((LLClickable)(object)btCharsetsNumbers[GetKeypadIndex(j + 1, k)]); } } else if (move.x > 0f) { if (k == 2) { oBELDJGOOIJ.SetFocus((LLClickable)(object)btCharsetsNumbers[GetKeypadIndex(j, 0)]); } else { oBELDJGOOIJ.SetFocus((LLClickable)(object)btCharsetsNumbers[GetKeypadIndex(j, k + 1)]); } } else if (k == 0) { oBELDJGOOIJ.SetFocus((LLClickable)(object)btCharsetsNumbers[GetKeypadIndex(j, 2)]); } else { oBELDJGOOIJ.SetFocus((LLClickable)(object)btCharsetsNumbers[GetKeypadIndex(j, k - 1)]); } return true; } if (GetKeypadIndex(j, k) >= btCharsetsAlpha.Count) { break; } if ((Object)(object)curFocus != (Object)(object)btCharsetsAlpha[GetKeypadIndex(j, k)]) { continue; } if (flag) { if (move.y > 0f) { if (k == 2 && j == 0) { oBELDJGOOIJ.SetFocus((LLClickable)(object)btBackspace); } else if (k == 1 && j == 0) { oBELDJGOOIJ.SetFocus((LLClickable)(object)btNumbers); } else if (k == 0 && j == 0) { oBELDJGOOIJ.SetFocus((LLClickable)(object)btShift); } else { oBELDJGOOIJ.SetFocus((LLClickable)(object)btCharsetsAlpha[GetKeypadIndex(j - 1, k)]); } } else if (k == 2 && j == 1) { oBELDJGOOIJ.SetFocus((LLClickable)(object)btEnter); } else if (k == 1 && j == 2) { oBELDJGOOIJ.SetFocus((LLClickable)(object)btNumbers); } else if (k == 0 && j == 2) { oBELDJGOOIJ.SetFocus((LLClickable)(object)btShift); } else { oBELDJGOOIJ.SetFocus((LLClickable)(object)btCharsetsAlpha[GetKeypadIndex(j + 1, k)]); } } else if (move.x > 0f) { if (k == 1 && j == 2) { oBELDJGOOIJ.SetFocus((LLClickable)(object)btCharsetsAlpha[GetKeypadIndex(j, 0)]); } else if (k == 2) { oBELDJGOOIJ.SetFocus((LLClickable)(object)btCharsetsAlpha[GetKeypadIndex(j, 0)]); } else { oBELDJGOOIJ.SetFocus((LLClickable)(object)btCharsetsAlpha[GetKeypadIndex(j, k + 1)]); } } else if (k == 0 && j == 2) { oBELDJGOOIJ.SetFocus((LLClickable)(object)btCharsetsAlpha[GetKeypadIndex(j, 1)]); } else if (k == 0) { oBELDJGOOIJ.SetFocus((LLClickable)(object)btCharsetsAlpha[GetKeypadIndex(j, 2)]); } else { oBELDJGOOIJ.SetFocus((LLClickable)(object)btCharsetsAlpha[GetKeypadIndex(j, k - 1)]); } return true; } } } return false; } internal bool CheckControlFocus(LLClickable curFocus) { bool result = false; foreach (LLClickable allControl in allControls) { if ((Object)(object)curFocus == (Object)(object)allControl) { result = true; } } return result; } } public class ScreenInput : ScreenOptions, ICustomScreen { internal PlayerTagMenuOptions[] playerTagMenus; private bool[] EditingTags = new bool[5]; public void Init(ScreenOptions screenOptions) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0027: 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_0033: 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_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) ((ScreenBase)this).screenType = ((ScreenBase)screenOptions).screenType; ((ScreenBase)this).layer = ((ScreenBase)screenOptions).layer; ((ScreenBase)this).isActive = ((ScreenBase)screenOptions).isActive; ((ScreenBase)this).msgEsc = ((ScreenBase)screenOptions).msgEsc; ((ScreenBase)this).msgMenu = ((ScreenBase)screenOptions).msgMenu; ((ScreenBase)this).msgCancel = ((ScreenBase)screenOptions).msgCancel; base.pfBarButton = screenOptions.pfBarButton; base.pfBarToggle = screenOptions.pfBarToggle; base.pfBarImageToggle = screenOptions.pfBarImageToggle; base.pfBarSlider = screenOptions.pfBarSlider; base.pfBarInputConfig = screenOptions.pfBarInputConfig; base.pfBarEnumLanguage = screenOptions.pfBarEnumLanguage; base.pfBarEnum = screenOptions.pfBarEnum; base.tfBars = screenOptions.tfBars; base.offsetBars = screenOptions.offsetBars; base.posBarNext = screenOptions.posBarNext; base.optionBars = screenOptions.optionBars; base.btApply = screenOptions.btApply; } public override void OnOpen(ScreenType screenTypePrev) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) ((ScreenOptions)this).OnOpen(screenTypePrev); EditingTags = new bool[5]; } public override void GetControls(ref List list, bool vert, LLClickable curFocus, LLCursor cursor) { if (!vert) { return; } JBKFDDKLDDG inputConfigController = GetInputConfigController(cursor); playerTagMenus[inputConfigController.LNDBODJBNFM].GetControls(ref list, curFocus, cursor); foreach (OptionsBar optionBar in base.optionBars) { optionBar.GetControls(ref list, curFocus, cursor); } } public override LLClickable GetDefaultFocus(LLCursor cursor) { if (playerTagMenus == null || playerTagMenus.Length != 5) { return ((ScreenOptions)this).GetDefaultFocus(cursor); } JBKFDDKLDDG inputConfigController = GetInputConfigController(cursor); PlayerTagMenuOptions playerTagMenuOptions = playerTagMenus[inputConfigController.LNDBODJBNFM]; LLClickable defaultFocus = playerTagMenuOptions.GetDefaultFocus(cursor); return ((Object)(object)defaultFocus == (Object)null) ? ((ScreenOptions)this).GetDefaultFocus(cursor) : defaultFocus; } public override bool DirectMove(Vector2 move, LLClickable curFocus, bool shouldMove) { //IL_003f: Unknown result type (might be due to invalid IL or missing references) int num = -1; for (int i = 0; i < playerTagMenus.Length; i++) { if (playerTagMenus[i].CheckControlFocus(curFocus)) { num = i; break; } } return num != -1 && playerTagMenus[num].DirectMove(move, curFocus, shouldMove); } internal JBKFDDKLDDG GetInputConfigController(LLCursor cursor) { for (int i = 0; i < HGFCCNMEEEF.inputConfigControllers.Count; i++) { JBKFDDKLDDG val = HGFCCNMEEEF.inputConfigControllers[i]; if (val.OBELDJGOOIJ == cursor) { return val; } } return null; } internal void OnRemoveController(JBKFDDKLDDG inputConfigController) { playerTagMenus[inputConfigController.LNDBODJBNFM].Close(); } internal CustomOptionsBarInputConfig AddCustomInputConfigBar(CustomInputConfigBarType customInputConfigBarType, string text) { //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: 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_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) GameObject pfBarInputConfig = base.pfBarInputConfig; Transform transform = Object.Instantiate(pfBarInputConfig).transform; transform.SetParent(base.tfBars, false); transform.localPosition = new Vector3(Mathf.Round(base.posBarNext.x), Mathf.Round(base.posBarNext.y), 0f); transform.localScale = Vector3.one; OptionsBarInputConfig component = ((Component)transform).GetComponent(); CustomOptionsBarInputConfig customOptionsBarInputConfig = pfBarInputConfig.AddComponent(); customOptionsBarInputConfig.Copy(component); customOptionsBarInputConfig.customInputConfigBarType = customInputConfigBarType; customOptionsBarInputConfig.screenInput = this; Object.DestroyImmediate((Object)(object)component); HNEDEAGADKO val = (HNEDEAGADKO)0; ((OptionsBar)customOptionsBarInputConfig).Init(text, val, (Msg)69, -1); base.optionBars.Add((OptionsBar)(object)customOptionsBarInputConfig); base.posBarNext += base.offsetBars; return customOptionsBarInputConfig; } internal void SetupPlayerTagMenu() { playerTagMenus = new PlayerTagMenuOptions[5]; for (int i = 0; i < 5; i++) { playerTagMenus[i] = PlayerTagMenuOptions.CreateMenu(base.tfBars, i, this); } } internal void UpdateBarButtons() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: 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_00aa: Invalid comparison between Unknown and I4 //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Invalid comparison between Unknown and I4 for (int i = 0; i < 5; i++) { PlayerTag playerTag = Plugin.Instance.GetPlayerTag(Controller.FromNr(i, false)); playerTag.SetEditing(isEditing: false); } foreach (OptionsBar optionBar in base.optionBars) { OptionsBarInputConfig val = (OptionsBarInputConfig)(object)((optionBar is OptionsBarInputConfig) ? optionBar : null); if ((Object)(object)val == (Object)null) { continue; } CustomOptionsBarInputConfig customOptionsBarInputConfig = val as CustomOptionsBarInputConfig; if ((Object)(object)customOptionsBarInputConfig != (Object)null) { ((OptionsBarInputConfig)customOptionsBarInputConfig).inputElements.ForEach(delegate(InputConfigElement element) { //IL_0033: Unknown result type (might be due to invalid IL or missing references) if (element != null) { EditingTags[element.inputConfigController.LNDBODJBNFM] = element.inputConfigController.DJFKIGINECC; PlayerTag playerTag3 = Plugin.Instance.GetPlayerTag(element.inputConfigController.GDEMBCKIDMA); if (EditingTags[element.inputConfigController.LNDBODJBNFM]) { playerTag3.SetEditing(isEditing: true); } element.UpdateLooks(); ((LLClickable)element.button).SetActive(!EditingTags[element.inputConfigController.LNDBODJBNFM]); } }); continue; } InputConfigBarType inputConfigBarType = val.inputConfigBarType; if (inputConfigBarType - 2 <= 1) { val.inputElements.ForEach(delegate(InputConfigElement element) { //IL_0038: 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) if (element != null) { bool activeSelf = ((Component)playerTagMenus[element.inputConfigController.LNDBODJBNFM]).gameObject.activeSelf; bool isDefault = Plugin.Instance.GetPlayerTag(element.inputConfigController.GDEMBCKIDMA).IsDefault; PlayerTag playerTag2 = Plugin.Instance.GetPlayerTag(element.inputConfigController.GDEMBCKIDMA); bool flag2 = playerTag2.GetEditing() && !EditingTags[element.inputConfigController.LNDBODJBNFM]; ((LLClickable)element.button).SetActive(!activeSelf && !isDefault && !flag2); } }); continue; } inputConfigBarType = val.inputConfigBarType; if (((int)inputConfigBarType == 0 || (int)inputConfigBarType == 4) ? true : false) { val.inputElements.ForEach(delegate(InputConfigElement element) { element.UpdateLooks(); }); } } foreach (JBKFDDKLDDG inputConfigController in HGFCCNMEEEF.inputConfigControllers) { ShowConflicts(inputConfigController); } bool flag = false; bool[] editingTags = EditingTags; for (int j = 0; j < editingTags.Length; j++) { if (editingTags[j]) { flag = true; } } PlayerTagMenuOptions[] array = playerTagMenus; foreach (PlayerTagMenuOptions playerTagMenuOptions in array) { if (((Component)playerTagMenuOptions).gameObject.activeSelf) { flag = true; } } UIScreen.blockGlobalInput = flag; IOGKKINMEFB.GMBFKKNCMOO(!flag); } private void ShowConflicts(JBKFDDKLDDG inputConfigController) { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Invalid comparison between Unknown and I4 //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Invalid comparison between Unknown and I4 foreach (OptionsBar optionBar in base.optionBars) { OptionsBarInputConfig val = (OptionsBarInputConfig)(object)((optionBar is OptionsBarInputConfig) ? optionBar : null); if ((Object)(object)val == (Object)null || (int)val.inputConfigBarType > 0) { continue; } bool flag = false; string curControlText = val.GetCurControlText(inputConfigController); if (curControlText == "-") { continue; } foreach (OptionsBar optionBar2 in base.optionBars) { OptionsBarInputConfig val2 = (OptionsBarInputConfig)(object)((optionBar2 is OptionsBarInputConfig) ? optionBar2 : null); if (!((Object)(object)val == (Object)(object)val2) && !((Object)(object)val2 == (Object)null) && (int)val2.inputConfigBarType <= 0) { string curControlText2 = val2.GetCurControlText(inputConfigController); if (curControlText == curControlText2) { flag = true; break; } } } val.SetConflict(inputConfigController, flag); } } } } namespace TourneyMod.UI.Menu { internal interface IMenuTitle { string GetCustomTitle(); } internal class ScreenMenuMain : ScreenMenuMain, ICustomScreen { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static ControlDelegate <>9__3_0; internal void b__3_0(int playerNr) { Plugin.Instance.TourneyMenuOpen = true; GameStates.Send((Msg)11, playerNr, -1); } } private static readonly Vector3 OFFSET_RIGHTCOL = Vector2.op_Implicit(new Vector2(406.3f, 0f)); internal LLButton btTourney; public void Init(ScreenMenuMain screenVanilla) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0027: 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_0033: 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_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) ((ScreenBase)this).screenType = ((ScreenBase)screenVanilla).screenType; ((ScreenBase)this).layer = ((ScreenBase)screenVanilla).layer; ((ScreenBase)this).isActive = ((ScreenBase)screenVanilla).isActive; ((ScreenBase)this).msgEsc = ((ScreenBase)screenVanilla).msgEsc; ((ScreenBase)this).msgMenu = ((ScreenBase)screenVanilla).msgMenu; ((ScreenBase)this).msgCancel = ((ScreenBase)screenVanilla).msgCancel; base.btOnline = screenVanilla.btOnline; base.btVersus = screenVanilla.btVersus; base.btSingle = screenVanilla.btSingle; base.btOptions = screenVanilla.btOptions; base.btUnlocks = screenVanilla.btUnlocks; base.onlineGray = screenVanilla.onlineGray; base.onlineColDefault = screenVanilla.btOnline.colDefault; base.onlineColDisabled = screenVanilla.btOnline.colDisabled; } public override void OnOpen(ScreenType screenTypePrev) { //IL_0002: 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_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0047: 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_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Expected O, but got Unknown ((ScreenMenuMain)this).OnOpen(screenTypePrev); btTourney = Object.Instantiate(base.btOnline, ((Component)this).transform); ((Object)btTourney).name = "btTourney"; Transform transform = ((Component)btTourney).transform; transform.localPosition += OFFSET_RIGHTCOL; LLButton obj = btTourney; object obj2 = <>c.<>9__3_0; if (obj2 == null) { ControlDelegate val = delegate(int playerNr) { Plugin.Instance.TourneyMenuOpen = true; GameStates.Send((Msg)11, playerNr, -1); }; <>c.<>9__3_0 = val; obj2 = (object)val; } ((LLClickable)obj).onClick = (ControlDelegate)obj2; btTourney.SetText("tournament", -1, false); bool active = SetTracker.Instance.ActiveTourneyMode == TourneyMode.NONE; ((LLClickable)base.btOnline).SetActive(active); ((LLClickable)base.btVersus).SetActive(active); ((LLClickable)base.btSingle).SetActive(active); } public override void GetControls(ref List list, bool vert, LLClickable curFocus, LLCursor cursor) { ((ScreenMenuMain)this).GetControls(ref list, vert, curFocus, cursor); list.Add((LLClickable)(object)btTourney); } public override bool DirectMove(Vector2 move, LLClickable curFocus, bool shouldMove) { //IL_0010: 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) //IL_0039: 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) if (!shouldMove) { return false; } bool flag = Mathf.Abs(move.y) > Mathf.Abs(move.x); float num = (flag ? Mathf.Sign(move.y) : Mathf.Sign(move.x)); if (flag) { return false; } if ((Object)(object)curFocus == (Object)(object)btTourney) { if (SetTracker.Instance.ActiveTourneyMode != 0) { UIScreen.SetFocus((LLClickable)(object)base.btUnlocks); } else { UIScreen.SetFocus((LLClickable)(object)(((LLControl)base.btOnline).visible ? base.btOnline : base.btVersus)); } AudioHandler.PlayMenuSfx((Sfx)5); return true; } UIScreen.SetFocus((LLClickable)(object)btTourney); AudioHandler.PlayMenuSfx((Sfx)5); return true; } } internal class ScreenMenuRulesets : ScreenUnlocksStages, ICustomScreen, IMenuTitle { internal List btRulesets; private const int FONTSIZE_RULESET = 32; private static readonly Vector2 SPACING_RULESET = new Vector2(0f, -32f); private const int FONTSIZE_HEADER = 22; private static readonly Vector2 SPACING_HEADER = new Vector2(0f, -22f); private const int FONTSIZE_MAIN = 14; private static readonly Vector2 SPACING_MAIN = new Vector2(0f, -14f); private static readonly Vector2 TOP = new Vector2(272f, 220f); private static readonly Vector2 LEFTCOL = new Vector2(TOP.x - 160f, TOP.y); private static readonly Vector2 RIGHTCOL = new Vector2(TOP.x + 160f, TOP.y); private TextMeshProUGUI lbRuleset; private TextMeshProUGUI lbStagesNeutral; private TextMeshProUGUI lbStagesCounterpick; private TextMeshProUGUI lbBanOrder; private TextMeshProUGUI lbDsrMode; private TextMeshProUGUI lbRandomStageMode; private TextMeshProUGUI lbWinnerCharacterLock; private TextMeshProUGUI lbGameOptions; public string GetCustomTitle() { return "RULESETS"; } public void Init(ScreenUnlocksStages screenUnlocksStages) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0027: 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_0033: 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_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) ((ScreenBase)this).screenType = ((ScreenBase)screenUnlocksStages).screenType; ((ScreenBase)this).layer = ((ScreenBase)screenUnlocksStages).layer; ((ScreenBase)this).isActive = ((ScreenBase)screenUnlocksStages).isActive; ((ScreenBase)this).msgEsc = ((ScreenBase)screenUnlocksStages).msgEsc; ((ScreenBase)this).msgMenu = ((ScreenBase)screenUnlocksStages).msgMenu; ((ScreenBase)this).msgCancel = ((ScreenBase)screenUnlocksStages).msgCancel; base.btFirstButton = screenUnlocksStages.btFirstButton; base.pfModeButton = screenUnlocksStages.pfModeButton; base.pfPriceButton = screenUnlocksStages.pfPriceButton; base.pfBuyButton = screenUnlocksStages.pfBuyButton; base.characterBackdrop = screenUnlocksStages.characterBackdrop; base.lbCurrency = screenUnlocksStages.lbCurrency; base.lbName = screenUnlocksStages.lbName; base.lbDescription = screenUnlocksStages.lbDescription; base.imPreview = screenUnlocksStages.imPreview; base.pnBuy = screenUnlocksStages.pnBuy; base.RowYOffset = screenUnlocksStages.RowYOffset; base.RowXOffset = screenUnlocksStages.RowXOffset; base.priceButtons = screenUnlocksStages.priceButtons; base.btStageButtons = screenUnlocksStages.btStageButtons; } public override void OnOpen(ScreenType screenTypePrev) { //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_013c: 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_0146: Unknown result type (might be due to invalid IL or missing references) //IL_0191: Unknown result type (might be due to invalid IL or missing references) //IL_0196: Unknown result type (might be due to invalid IL or missing references) //IL_019b: Unknown result type (might be due to invalid IL or missing references) //IL_01a0: Unknown result type (might be due to invalid IL or missing references) //IL_01a5: Unknown result type (might be due to invalid IL or missing references) //IL_01f0: Unknown result type (might be due to invalid IL or missing references) //IL_01f5: Unknown result type (might be due to invalid IL or missing references) //IL_01fa: Unknown result type (might be due to invalid IL or missing references) //IL_01ff: Unknown result type (might be due to invalid IL or missing references) //IL_0209: Unknown result type (might be due to invalid IL or missing references) //IL_020e: Unknown result type (might be due to invalid IL or missing references) //IL_0259: Unknown result type (might be due to invalid IL or missing references) //IL_025e: Unknown result type (might be due to invalid IL or missing references) //IL_0263: Unknown result type (might be due to invalid IL or missing references) //IL_0268: Unknown result type (might be due to invalid IL or missing references) //IL_0272: Unknown result type (might be due to invalid IL or missing references) //IL_0277: Unknown result type (might be due to invalid IL or missing references) //IL_02c2: Unknown result type (might be due to invalid IL or missing references) //IL_02c7: Unknown result type (might be due to invalid IL or missing references) //IL_02cc: Unknown result type (might be due to invalid IL or missing references) //IL_02d1: Unknown result type (might be due to invalid IL or missing references) //IL_02db: Unknown result type (might be due to invalid IL or missing references) //IL_02e0: Unknown result type (might be due to invalid IL or missing references) //IL_032b: Unknown result type (might be due to invalid IL or missing references) //IL_0330: Unknown result type (might be due to invalid IL or missing references) //IL_0335: Unknown result type (might be due to invalid IL or missing references) //IL_033a: Unknown result type (might be due to invalid IL or missing references) //IL_0344: Unknown result type (might be due to invalid IL or missing references) //IL_0349: Unknown result type (might be due to invalid IL or missing references) //IL_0394: Unknown result type (might be due to invalid IL or missing references) //IL_0399: Unknown result type (might be due to invalid IL or missing references) //IL_039e: Unknown result type (might be due to invalid IL or missing references) //IL_03a3: Unknown result type (might be due to invalid IL or missing references) //IL_03ad: Unknown result type (might be due to invalid IL or missing references) //IL_03b2: Unknown result type (might be due to invalid IL or missing references) //IL_03ff: Unknown result type (might be due to invalid IL or missing references) base.characterBackdrop.transform.SetParent(OGKPCMDOMPF.screenMenu.tfBackgroundOverlay, true); base.characterBackdrop.transform.SetAsFirstSibling(); LLButton componentInChildren = base.pfBuyButton.GetComponentInChildren(); ((LLControl)componentInChildren).visible = false; base.btStageButtons = (LLButton[])(object)new LLButton[0]; TextHandler.SetText((TMP_Text)(object)base.lbDescription, ""); base.pnBuy.gameObject.SetActive(false); btRulesets = new List(); int index = 0; Plugin.Instance.SelectedRulesets.ToList().ForEach(delegate(KeyValuePair entry) { //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: 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_0101: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Expected O, but got Unknown //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_011d: Expected O, but got Unknown TourneyMode mode = entry.Key; Ruleset value = entry.Value; GameObject val; if (index == 0) { val = ((Component)((Component)base.btFirstButton).transform.parent).gameObject; } else { val = Object.Instantiate(base.pfModeButton, ((Component)this).transform, false); val.transform.localPosition = ((Component)base.btFirstButton).transform.parent.localPosition + new Vector3(base.RowXOffset * (float)index, base.RowYOffset * (float)index, 0f); } LLButton componentInChildren2 = val.GetComponentInChildren(); btRulesets.Add(componentInChildren2); componentInChildren2.SetText(Plugin.GetModeName(mode, capitalized: true), -1, false); ((LLClickable)componentInChildren2).onHover = (ControlDelegate)delegate { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Invalid comparison between Unknown and I4 AudioHandler.PlayMenuSfx((Sfx)5); if ((int)UIInput.mainCursor.GetState() == 1) { SetSelectedButton(mode); } }; ((LLClickable)componentInChildren2).onClick = (ControlDelegate)delegate { SetSelectedButton(mode); }; index++; }); ((TMP_Text)base.lbName).transform.localPosition = Vector2.op_Implicit(TOP - SPACING_RULESET); ((TMP_Text)base.lbName).alignment = (TextAlignmentOptions)514; UIUtils.CreateText(ref lbRuleset, "lbRuleset", ((Component)this).transform, TOP); ((TMP_Text)lbRuleset).fontSize = 32f; ((TMP_Text)lbRuleset).richText = true; UIUtils.CreateText(ref lbStagesNeutral, "lbStagesNeutral", ((Component)this).transform, LEFTCOL + SPACING_RULESET + SPACING_HEADER); ((TMP_Text)lbStagesNeutral).fontSize = 22f; ((TMP_Text)lbStagesNeutral).alignment = (TextAlignmentOptions)258; ((TMP_Text)lbStagesNeutral).richText = true; UIUtils.CreateText(ref lbStagesCounterpick, "lbStagesCounterpick", ((Component)this).transform, RIGHTCOL + SPACING_RULESET + SPACING_HEADER); ((TMP_Text)lbStagesCounterpick).fontSize = 22f; ((TMP_Text)lbStagesCounterpick).alignment = (TextAlignmentOptions)258; ((TMP_Text)lbStagesCounterpick).richText = true; UIUtils.CreateText(ref lbBanOrder, "lbBanOrder", ((Component)this).transform, TOP + SPACING_RULESET + SPACING_HEADER * 3.5f); ((TMP_Text)lbBanOrder).fontSize = 22f; ((TMP_Text)lbBanOrder).alignment = (TextAlignmentOptions)258; ((TMP_Text)lbBanOrder).richText = true; UIUtils.CreateText(ref lbDsrMode, "lbDsrMode", ((Component)this).transform, TOP + SPACING_RULESET + SPACING_HEADER * 5f); ((TMP_Text)lbDsrMode).fontSize = 22f; ((TMP_Text)lbDsrMode).alignment = (TextAlignmentOptions)258; ((TMP_Text)lbDsrMode).richText = true; UIUtils.CreateText(ref lbRandomStageMode, "lbRandomStageMode", ((Component)this).transform, TOP + SPACING_RULESET + SPACING_HEADER * 6.5f); ((TMP_Text)lbRandomStageMode).fontSize = 22f; ((TMP_Text)lbRandomStageMode).alignment = (TextAlignmentOptions)258; ((TMP_Text)lbRandomStageMode).richText = true; UIUtils.CreateText(ref lbWinnerCharacterLock, "lbWinnerCharacterLock", ((Component)this).transform, TOP + SPACING_RULESET + SPACING_HEADER * 8f); ((TMP_Text)lbWinnerCharacterLock).fontSize = 22f; ((TMP_Text)lbWinnerCharacterLock).alignment = (TextAlignmentOptions)258; ((TMP_Text)lbWinnerCharacterLock).richText = true; UIUtils.CreateText(ref lbGameOptions, "lbGameOptions", ((Component)this).transform, TOP + SPACING_RULESET + SPACING_HEADER * 9.5f); ((TMP_Text)lbGameOptions).fontSize = 22f; ((TMP_Text)lbGameOptions).alignment = (TextAlignmentOptions)258; ((TMP_Text)lbGameOptions).richText = true; ((LLClickable)base.btFirstButton).OnHover(-1); ((LLSelectionButton)base.btFirstButton).SetSelected(-1); base.btFirstButton.OnClickNoEffects(-1); ((LLClickable)base.btFirstButton).OnHoverOut(-1); } public override void UpdateText() { } public override void GetControls(ref List list, bool vert, LLClickable curFocus, LLCursor cursor) { list.AddRange(btRulesets.Cast()); } private string GetBanOrder(Ruleset ruleset) { string text = ""; if (ruleset.banAmounts.Length == 0) { text += $"Free pick"; } else { text += $"({ruleset.game1FirstTeam} starts for Game 1)\n"; int num = 0; int[][] banAmounts = ruleset.banAmounts; foreach (int[] array in banAmounts) { text += string.Format("Game {0}{1}: ", num + 1, (num == ruleset.banAmounts.Length - 1) ? "+" : ""); for (int j = 0; j < array.Length; j++) { if (array[j] == 0) { text = text + ((ruleset.laterGamesFirstTeam == Ruleset.FirstTeam.WINNER) ? "W" : "L") + " picks"; break; } if (j != 0) { text += "-"; } for (int k = 0; k < array[j]; k++) { text += ((j % 2 == 0) ? ((ruleset.laterGamesFirstTeam == Ruleset.FirstTeam.WINNER) ? "W" : "L") : ((ruleset.laterGamesFirstTeam == Ruleset.FirstTeam.WINNER) ? "L" : "W")); } } text += "\n"; num++; } } return text; } private void SetSelectedButton(TourneyMode tourneyMode) { //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_0198: Unknown result type (might be due to invalid IL or missing references) //IL_019d: Unknown result type (might be due to invalid IL or missing references) //IL_01a2: Unknown result type (might be due to invalid IL or missing references) //IL_01a7: Unknown result type (might be due to invalid IL or missing references) //IL_01b1: Unknown result type (might be due to invalid IL or missing references) //IL_01b6: Unknown result type (might be due to invalid IL or missing references) //IL_01bb: 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_01c8: Unknown result type (might be due to invalid IL or missing references) //IL_01cd: 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_0216: Unknown result type (might be due to invalid IL or missing references) //IL_021b: Unknown result type (might be due to invalid IL or missing references) //IL_0220: Unknown result type (might be due to invalid IL or missing references) //IL_022a: Unknown result type (might be due to invalid IL or missing references) //IL_022f: Unknown result type (might be due to invalid IL or missing references) //IL_0234: Unknown result type (might be due to invalid IL or missing references) //IL_023f: Unknown result type (might be due to invalid IL or missing references) //IL_0244: Unknown result type (might be due to invalid IL or missing references) //IL_0249: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_02df: Unknown result type (might be due to invalid IL or missing references) //IL_02e4: Unknown result type (might be due to invalid IL or missing references) //IL_02e9: Unknown result type (might be due to invalid IL or missing references) //IL_02ee: Unknown result type (might be due to invalid IL or missing references) //IL_02f8: Unknown result type (might be due to invalid IL or missing references) //IL_02fd: Unknown result type (might be due to invalid IL or missing references) //IL_0302: Unknown result type (might be due to invalid IL or missing references) //IL_0310: 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_031a: Unknown result type (might be due to invalid IL or missing references) //IL_0400: Unknown result type (might be due to invalid IL or missing references) //IL_0405: Unknown result type (might be due to invalid IL or missing references) //IL_040a: Unknown result type (might be due to invalid IL or missing references) //IL_040f: Unknown result type (might be due to invalid IL or missing references) //IL_0419: Unknown result type (might be due to invalid IL or missing references) //IL_041e: Unknown result type (might be due to invalid IL or missing references) //IL_0423: Unknown result type (might be due to invalid IL or missing references) //IL_0434: Unknown result type (might be due to invalid IL or missing references) //IL_0439: Unknown result type (might be due to invalid IL or missing references) //IL_043e: Unknown result type (might be due to invalid IL or missing references) //IL_04a9: Unknown result type (might be due to invalid IL or missing references) //IL_04ae: Unknown result type (might be due to invalid IL or missing references) //IL_04b3: Unknown result type (might be due to invalid IL or missing references) //IL_04b8: Unknown result type (might be due to invalid IL or missing references) //IL_04c2: Unknown result type (might be due to invalid IL or missing references) //IL_04c7: Unknown result type (might be due to invalid IL or missing references) //IL_04cc: Unknown result type (might be due to invalid IL or missing references) //IL_04e0: Unknown result type (might be due to invalid IL or missing references) //IL_04e5: Unknown result type (might be due to invalid IL or missing references) //IL_04ea: Unknown result type (might be due to invalid IL or missing references) Ruleset ruleset = Plugin.Instance.SelectedRulesets[tourneyMode]; TextHandler.SetText((TMP_Text)(object)base.lbName, Plugin.GetModeName(tourneyMode, capitalized: true)); TextHandler.SetText((TMP_Text)(object)lbRuleset, "Ruleset: " + ruleset.name + ""); int num = 0; string text = ""; for (int i = 0; i < ruleset.stagesNeutral.Count; i++) { if (i != 0) { if (i % 2 == 0) { text += "\n"; num++; } else { text += ", "; } } text += StringUtils.GetStageReadableName(ruleset.stagesNeutral[i]); } TextHandler.SetText((TMP_Text)(object)lbStagesNeutral, $"Neutral stages:\n{text}"); int num2 = 0; string text2 = ""; for (int j = 0; j < ruleset.stagesCounterpick.Count; j++) { if (j != 0) { if (j % 2 == 0) { text2 += "\n"; num2++; } else { text2 += ", "; } } text2 += StringUtils.GetStageReadableName(ruleset.stagesCounterpick[j]); } TextHandler.SetText((TMP_Text)(object)lbStagesCounterpick, $"Counterpick stages:\n{text2}"); int num3 = Mathf.Max(num, num2); ((TMP_Text)lbBanOrder).transform.localPosition = Vector2.op_Implicit(TOP + SPACING_RULESET + SPACING_HEADER * 3.5f + SPACING_MAIN * (float)num3); TextHandler.SetText((TMP_Text)(object)lbBanOrder, $"Ban order: {GetBanOrder(ruleset)}"); int num4 = ruleset.banAmounts.Length; ((TMP_Text)lbDsrMode).transform.localPosition = Vector2.op_Implicit(TOP + SPACING_RULESET + SPACING_HEADER * 5f + SPACING_MAIN * (float)(num3 + num4)); TMP_Text val = (TMP_Text)(object)lbDsrMode; Ruleset.DsrMode dsrMode = ruleset.dsrMode; if (1 == 0) { } string text3 = dsrMode switch { Ruleset.DsrMode.FULL_SET => $"ON\n(includes all wins)", Ruleset.DsrMode.LAST_WIN => $"ON\n(only last win)", _ => "OFF", }; if (1 == 0) { } TextHandler.SetText(val, "DSR: " + text3 + ""); int num5 = ((ruleset.dsrMode != 0) ? 1 : 0); ((TMP_Text)lbRandomStageMode).transform.localPosition = Vector2.op_Implicit(TOP + SPACING_RULESET + SPACING_HEADER * 6.5f + SPACING_MAIN * (float)(num3 + num4 + num5)); TMP_Text val2 = (TMP_Text)(object)lbRandomStageMode; Ruleset.RandomStageMode randomStageMode = ruleset.randomStageMode; if (1 == 0) { } text3 = randomStageMode switch { Ruleset.RandomStageMode.ANY_3D => $"ON\n(any 3D stage)", Ruleset.RandomStageMode.ANY_2D => $"ON\n(any 2D stage)", Ruleset.RandomStageMode.BOTH => $"ON\n(both any 3D/any 2D stage options)", Ruleset.RandomStageMode.ANY => $"ON\n(any stage)", Ruleset.RandomStageMode.ANY_LEGAL => $"ON\n(any legal stage)", _ => "OFF", }; if (1 == 0) { } TextHandler.SetText(val2, "Random stage select: " + text3 + ""); int num6 = ((ruleset.randomStageMode != 0) ? 1 : 0); ((TMP_Text)lbWinnerCharacterLock).transform.localPosition = Vector2.op_Implicit(TOP + SPACING_RULESET + SPACING_HEADER * 8f + SPACING_MAIN * (float)(num3 + num4 + num5 + num6)); TextHandler.SetText((TMP_Text)(object)lbWinnerCharacterLock, "Winner character lock: " + (ruleset.winnerCharacterLock ? "ON" : "OFF") + ((tourneyMode == TourneyMode.LOCAL_CREW) ? $"\n(forced on for crew battles)" : "") + ""); int num7 = ((tourneyMode == TourneyMode.LOCAL_CREW) ? 1 : 0); ((TMP_Text)lbGameOptions).transform.localPosition = Vector2.op_Implicit(TOP + SPACING_RULESET + SPACING_HEADER * 9.5f + SPACING_MAIN * (float)(num3 + num4 + num5 + num6 + num7)); if (ruleset.HasGameOptions) { SetTracker.Instance.ApplyGameOptions(GameSettings.op_Implicit(ScreenPlayersSettings.curGameSettings), ruleset.GameOptions); string text4 = default(string); string text5 = default(string); string text6 = default(string); string text7 = default(string); string text8 = default(string); string text9 = default(string); string text10 = default(string); string text11 = default(string); string text12 = default(string); ScreenPlayersSettings.GetSettingTexts(ref text4, ref text5, ref text6, ref text7, ref text8, ref text9, ref text10, ref text11, ref text12); TextHandler.SetText((TMP_Text)(object)lbGameOptions, $"Game options:" + "\n" + text4 + " " + text5 + "\nTime: " + text6 + ((tourneyMode == TourneyMode.LOCAL_CREW) ? "\n(forced infinite for crew battles)" : "") + "\nEnergy: " + text10 + "\nHP: " + text11 + "\nMin ball speed: " + text8 + "\nBall type: " + text9 + "\nPowerups: " + text12 + ""); } else { TextHandler.SetText((TMP_Text)(object)lbGameOptions, ""); } } } internal class ScreenMenuSetPreview : ScreenUnlocksStages, ICustomScreen, IMenuTitle { private enum ButtonType { OVERVIEW, COMPLETED } internal List btGames; private List reversed; private const int FONTSIZE_TITLE = 32; private static readonly Vector2 SPACING_TITLE = new Vector2(0f, -32f); private const int FONTSIZE_HEADER = 22; private static readonly Vector2 SPACING_HEADER = new Vector2(0f, -22f); private const int FONTSIZE_MAIN = 14; private static readonly Vector2 SPACING_MAIN = new Vector2(0f, -14f); private static readonly Vector2 TOP = new Vector2(272f, 220f); private static readonly Vector2 LEFTCOL = new Vector2(TOP.x - 160f, TOP.y); private static readonly Vector2 RIGHTCOL = new Vector2(TOP.x + 160f, TOP.y); private TextMeshProUGUI lbInfo; public string GetCustomTitle() { return "CURRENT SET"; } public void Init(ScreenUnlocksStages screenUnlocksStages) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0027: 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_0033: 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_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) ((ScreenBase)this).screenType = ((ScreenBase)screenUnlocksStages).screenType; ((ScreenBase)this).layer = ((ScreenBase)screenUnlocksStages).layer; ((ScreenBase)this).isActive = ((ScreenBase)screenUnlocksStages).isActive; ((ScreenBase)this).msgEsc = ((ScreenBase)screenUnlocksStages).msgEsc; ((ScreenBase)this).msgMenu = ((ScreenBase)screenUnlocksStages).msgMenu; ((ScreenBase)this).msgCancel = ((ScreenBase)screenUnlocksStages).msgCancel; base.btFirstButton = screenUnlocksStages.btFirstButton; base.pfModeButton = screenUnlocksStages.pfModeButton; base.pfPriceButton = screenUnlocksStages.pfPriceButton; base.pfBuyButton = screenUnlocksStages.pfBuyButton; base.characterBackdrop = screenUnlocksStages.characterBackdrop; base.lbCurrency = screenUnlocksStages.lbCurrency; base.lbName = screenUnlocksStages.lbName; base.lbDescription = screenUnlocksStages.lbDescription; base.imPreview = screenUnlocksStages.imPreview; base.pnBuy = screenUnlocksStages.pnBuy; base.RowYOffset = screenUnlocksStages.RowYOffset; base.RowXOffset = screenUnlocksStages.RowXOffset; base.priceButtons = screenUnlocksStages.priceButtons; base.btStageButtons = screenUnlocksStages.btStageButtons; } public override void OnOpen(ScreenType screenTypePrev) { //IL_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Expected O, but got Unknown //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Expected O, but got Unknown //IL_0133: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_0142: 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_0174: Unknown result type (might be due to invalid IL or missing references) //IL_0179: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Unknown result type (might be due to invalid IL or missing references) base.characterBackdrop.transform.SetParent(OGKPCMDOMPF.screenMenu.tfBackgroundOverlay, true); base.characterBackdrop.transform.SetAsFirstSibling(); LLButton componentInChildren = base.pfBuyButton.GetComponentInChildren(); ((LLControl)componentInChildren).visible = false; base.btStageButtons = (LLButton[])(object)new LLButton[0]; TextHandler.SetText((TMP_Text)(object)base.lbDescription, ""); base.pnBuy.gameObject.SetActive(false); btGames = new List(); LLButton componentInChildren2 = ((Component)((Component)base.btFirstButton).transform.parent).gameObject.GetComponentInChildren(); btGames.Add(componentInChildren2); componentInChildren2.SetText("Set Overview", -1, false); ((LLClickable)componentInChildren2).onHover = (ControlDelegate)delegate { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Invalid comparison between Unknown and I4 AudioHandler.PlayMenuSfx((Sfx)5); if ((int)UIInput.mainCursor.GetState() == 1) { SetSelectedButton(ButtonType.OVERVIEW, -1); } }; ((LLClickable)componentInChildren2).onClick = (ControlDelegate)delegate { SetSelectedButton(ButtonType.OVERVIEW, -1); }; reversed = new List(SetTracker.Instance.CurrentSet.CompletedMatches); reversed.Reverse(); int index = 0; reversed.ForEach(delegate(Match match) { //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Expected O, but got Unknown //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Expected O, but got Unknown GameObject val = Object.Instantiate(base.pfModeButton, ((Component)this).transform, false); val.transform.localPosition = ((Component)base.btFirstButton).transform.parent.localPosition + new Vector3(base.RowXOffset * (float)(index + 1), base.RowYOffset * (float)(index + 1), 0f); LLButton componentInChildren3 = val.GetComponentInChildren(); btGames.Add(componentInChildren3); componentInChildren3.SetText($"Game {match.GameNumber}" + (match.IsTiebreaker ? " Tiebreaker" : ""), -1, false); int mi = index; ((LLClickable)componentInChildren3).onHover = (ControlDelegate)delegate { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Invalid comparison between Unknown and I4 AudioHandler.PlayMenuSfx((Sfx)5); if ((int)UIInput.mainCursor.GetState() == 1) { SetSelectedButton(ButtonType.COMPLETED, mi); } }; ((LLClickable)componentInChildren3).onClick = (ControlDelegate)delegate { SetSelectedButton(ButtonType.COMPLETED, mi); }; index++; }); ((TMP_Text)base.lbName).transform.localPosition = Vector2.op_Implicit(TOP - SPACING_TITLE); ((TMP_Text)base.lbName).alignment = (TextAlignmentOptions)514; UIUtils.CreateText(ref lbInfo, "lbInfo", ((Component)this).transform, TOP + SPACING_TITLE); ((TMP_Text)lbInfo).alignment = (TextAlignmentOptions)258; ((TMP_Text)lbInfo).richText = true; ((TMP_Text)lbInfo).fontSize = 22f; ((LLClickable)base.btFirstButton).OnHover(-1); ((LLSelectionButton)base.btFirstButton).SetSelected(-1); base.btFirstButton.OnClickNoEffects(-1); ((LLClickable)base.btFirstButton).OnHoverOut(-1); } public override void UpdateText() { } public override void GetControls(ref List list, bool vert, LLClickable curFocus, LLCursor cursor) { list.AddRange(btGames.Cast()); } private void SetSelectedButton(ButtonType buttonType, int matchIndex) { //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_0140: Unknown result type (might be due to invalid IL or missing references) //IL_0168: Unknown result type (might be due to invalid IL or missing references) //IL_01d8: Unknown result type (might be due to invalid IL or missing references) //IL_01e3: Unknown result type (might be due to invalid IL or missing references) //IL_0378: Unknown result type (might be due to invalid IL or missing references) //IL_0417: Unknown result type (might be due to invalid IL or missing references) switch (buttonType) { case ButtonType.OVERVIEW: { Set set = SetTracker.Instance.CurrentSet; TextHandler.SetText((TMP_Text)(object)base.lbName, "Set Overview"); string[] array = (from p in Player.EPlayers() where !set.PlayerCharacterLock[Player.op_Implicit(p).nr].IsEmpty select ")(object)SetTracker.Instance.GetPlayerTeam(Player.op_Implicit(p).nr)]) + ">" + StringUtils.GetCharacterSafeName(set.PlayerCharacterLock[Player.op_Implicit(p).nr].character) + "").ToArray(); string[] array2 = (from p in Player.EPlayers() where set.PlayerStockLock[Player.op_Implicit(p).nr] != 0 select $")(object)SetTracker.Instance.GetPlayerTeam(Player.op_Implicit(p).nr)])}>{set.PlayerStockLock[Player.op_Implicit(p).nr]}").ToArray(); Stage stageLock = SetTracker.Instance.CurrentSet.StageLock; TextHandler.SetText((TMP_Text)(object)lbInfo, "Mode: " + Plugin.GetModeName(SetTracker.Instance.ActiveTourneyMode, capitalized: true) + "\nRuleset: " + set.ActiveRuleset.name + "" + $"\n\nGame {set.GameNumber}" + (set.IsTiebreaker ? " Tiebreaker" : "") + "" + $"\nScore: {set.WinCounts[0]} - {set.WinCounts[1]}" + "\n\nCharacter lock: " + ((array.Length != 0) ? Plugin.PrintArray(array, includeBrackets: false) : "none") + "\nStock lock: " + ((array2.Length != 0) ? Plugin.PrintArray(array2, includeBrackets: false) : "none") + "\nStage lock: " + (((int)stageLock != 0) ? StringUtils.GetStageReadableName(stageLock) : "none") + ""); break; } case ButtonType.COMPLETED: { Match match = reversed[matchIndex]; TextHandler.SetText((TMP_Text)(object)base.lbName, $"Game {match.GameNumber}" + (match.IsTiebreaker ? " Tiebreaker" : "")); string[] arr = (from pc in match.PlayerCharacters where !pc.IsEmpty select ")(object)pc.team]) + ">" + StringUtils.GetCharacterSafeName(pc.character) + "").ToArray(); string[] arr2 = (from ps in match.FinalScores where (EnumWrapper)(object)ps.Team != (EnumWrapper)(object)Team.NONE select $")(object)ps.Team])}>{ps.Stocks}").ToArray(); string[] arr3 = (from ps in match.FinalScores where (EnumWrapper)(object)ps.Team != (EnumWrapper)(object)Team.NONE select $")(object)ps.Team])}>{Mathf.RoundToInt(Floatf.ToFloat(Floatf.op_Implicit(ps.Hp)) * 100f)}%").ToArray(); TextHandler.SetText((TMP_Text)(object)lbInfo, "Stage: " + StringUtils.GetStageReadableName(match.PlayedStage) + "\nCharacters: " + Plugin.PrintArray(arr, includeBrackets: false) + "\n\nStocks: " + Plugin.PrintArray(arr2, includeBrackets: false) + "\nHP: " + Plugin.PrintArray(arr3, includeBrackets: false) + "\nTimeout: " + (match.IsTimeout ? "yes" : "no") + "" + string.Format("\n\nWinner: {1}", ((EnumWrapper)(object)match.Winner == (EnumWrapper)(object)Team.NONE) ? "\"yellow\"" : ("#" + ColorUtility.ToHtmlStringRGB(UIUtils.COLOR_TEAM[(int)(EnumWrapper)(object)match.Winner])), match.Winner)); break; } } } } internal class ScreenMenuTourney : ScreenMenuVersus, ICustomScreen, IMenuTitle { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static ControlDelegate <>9__11_0; public static ControlDelegate <>9__11_1; public static ControlDelegate <>9__11_2; public static ControlDelegate <>9__11_3; public static ControlDelegate <>9__11_4; public static ControlDelegate <>9__11_5; internal void b__11_0(int playerNr) { Plugin.Instance.RulesetsMenuOpen = false; Plugin.Instance.SetPreviewMenuOpen = false; SetTracker.Instance.ActiveTourneyMode = TourneyMode.LOCAL_1V1; GameStates.Send((Msg)25, playerNr, -1); } internal void b__11_1(int playerNr) { Plugin.Instance.RulesetsMenuOpen = false; Plugin.Instance.SetPreviewMenuOpen = false; SetTracker.Instance.ActiveTourneyMode = TourneyMode.LOCAL_DOUBLES; GameStates.Send((Msg)26, playerNr, -1); } internal void b__11_2(int playerNr) { Plugin.Instance.RulesetsMenuOpen = false; Plugin.Instance.SetPreviewMenuOpen = false; SetTracker.Instance.ActiveTourneyMode = TourneyMode.LOCAL_CREW; GameStates.Send((Msg)25, playerNr, -1); } internal void b__11_3(int playerNr) { Plugin.Instance.RulesetsMenuOpen = false; Plugin.Instance.SetPreviewMenuOpen = false; SetTracker.Instance.ActiveTourneyMode = TourneyMode.ONLINE_1V1; GameStates.Send((Msg)39, playerNr, -1); } internal void b__11_4(int playerNr) { Plugin.Instance.RulesetsMenuOpen = true; Plugin.Instance.SetPreviewMenuOpen = false; GameStates.Set(GameState.UNLOCKS, false); GameStates.Send((Msg)35, playerNr, -1); } internal void b__11_5(int playerNr) { Plugin.Instance.RulesetsMenuOpen = false; Plugin.Instance.SetPreviewMenuOpen = true; GameStates.Set(GameState.UNLOCKS, false); GameStates.Send((Msg)35, playerNr, -1); } } private static readonly Vector3 OFFSET_BUTTON_1DOWN = Vector2.op_Implicit(new Vector2(-16.3f, -88.8f)); private static readonly Vector3 OFFSET_RIGHTCOL = Vector2.op_Implicit(new Vector2(406.3f, 0f)); internal LLButton btLocal1v1; internal LLButton btLocalDoubles; internal LLButton btLocalCrew; internal LLButton btOnline1v1; internal LLButton btRulesets; internal LLButton btCurrentSet; internal LLButton btEndSet; public string GetCustomTitle() { return "TOURNAMENT"; } public void Init(ScreenMenuVersus screenVanilla) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0027: 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_0033: 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_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) ((ScreenBase)this).screenType = ((ScreenBase)screenVanilla).screenType; ((ScreenBase)this).layer = ((ScreenBase)screenVanilla).layer; ((ScreenBase)this).isActive = ((ScreenBase)screenVanilla).isActive; ((ScreenBase)this).msgEsc = ((ScreenBase)screenVanilla).msgEsc; ((ScreenBase)this).msgMenu = ((ScreenBase)screenVanilla).msgMenu; ((ScreenBase)this).msgCancel = ((ScreenBase)screenVanilla).msgCancel; base.btRoyale = screenVanilla.btRoyale; base.bt1v1 = screenVanilla.bt1v1; base.btTeams = screenVanilla.btTeams; base.btVolley = screenVanilla.btVolley; base.btStrikers = screenVanilla.btStrikers; } public override void OnOpen(ScreenType screenTypePrev) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Expected O, but got Unknown //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Expected O, but got Unknown //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Unknown result type (might be due to invalid IL or missing references) //IL_016b: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Expected O, but got Unknown //IL_01e9: Unknown result type (might be due to invalid IL or missing references) //IL_01ee: Unknown result type (might be due to invalid IL or missing references) //IL_01f8: Unknown result type (might be due to invalid IL or missing references) //IL_01fd: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_01a6: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: Expected O, but got Unknown //IL_0279: Unknown result type (might be due to invalid IL or missing references) //IL_027e: Unknown result type (might be due to invalid IL or missing references) //IL_0288: Unknown result type (might be due to invalid IL or missing references) //IL_028d: Unknown result type (might be due to invalid IL or missing references) //IL_0233: Unknown result type (might be due to invalid IL or missing references) //IL_0238: Unknown result type (might be due to invalid IL or missing references) //IL_023e: Expected O, but got Unknown //IL_0309: Unknown result type (might be due to invalid IL or missing references) //IL_030e: Unknown result type (might be due to invalid IL or missing references) //IL_0318: Unknown result type (might be due to invalid IL or missing references) //IL_031d: Unknown result type (might be due to invalid IL or missing references) //IL_0322: Unknown result type (might be due to invalid IL or missing references) //IL_0327: Unknown result type (might be due to invalid IL or missing references) //IL_0350: Unknown result type (might be due to invalid IL or missing references) //IL_035a: Expected O, but got Unknown //IL_02c3: Unknown result type (might be due to invalid IL or missing references) //IL_02c8: Unknown result type (might be due to invalid IL or missing references) //IL_02ce: Expected O, but got Unknown ((ScreenMenuVersus)this).OnOpen(screenTypePrev); btLocal1v1 = Object.Instantiate(base.btRoyale, ((Component)this).transform); ((Object)btLocal1v1).name = "btLocal1v1"; LLButton obj = btLocal1v1; object obj2 = <>c.<>9__11_0; if (obj2 == null) { ControlDelegate val = delegate(int playerNr) { Plugin.Instance.RulesetsMenuOpen = false; Plugin.Instance.SetPreviewMenuOpen = false; SetTracker.Instance.ActiveTourneyMode = TourneyMode.LOCAL_1V1; GameStates.Send((Msg)25, playerNr, -1); }; <>c.<>9__11_0 = val; obj2 = (object)val; } ((LLClickable)obj).onClick = (ControlDelegate)obj2; btLocal1v1.SetText(Plugin.GetModeName(TourneyMode.LOCAL_1V1), -1, false); btLocalDoubles = Object.Instantiate(base.bt1v1, ((Component)this).transform); ((Object)btLocalDoubles).name = "btLocalDoubles"; LLButton obj3 = btLocalDoubles; object obj4 = <>c.<>9__11_1; if (obj4 == null) { ControlDelegate val2 = delegate(int playerNr) { Plugin.Instance.RulesetsMenuOpen = false; Plugin.Instance.SetPreviewMenuOpen = false; SetTracker.Instance.ActiveTourneyMode = TourneyMode.LOCAL_DOUBLES; GameStates.Send((Msg)26, playerNr, -1); }; <>c.<>9__11_1 = val2; obj4 = (object)val2; } ((LLClickable)obj3).onClick = (ControlDelegate)obj4; btLocalDoubles.SetText(Plugin.GetModeName(TourneyMode.LOCAL_DOUBLES), -1, false); btLocalCrew = Object.Instantiate(base.btTeams, ((Component)this).transform); ((Object)btLocalCrew).name = "btLocalCrew"; LLButton obj5 = btLocalCrew; object obj6 = <>c.<>9__11_2; if (obj6 == null) { ControlDelegate val3 = delegate(int playerNr) { Plugin.Instance.RulesetsMenuOpen = false; Plugin.Instance.SetPreviewMenuOpen = false; SetTracker.Instance.ActiveTourneyMode = TourneyMode.LOCAL_CREW; GameStates.Send((Msg)25, playerNr, -1); }; <>c.<>9__11_2 = val3; obj6 = (object)val3; } ((LLClickable)obj5).onClick = (ControlDelegate)obj6; btLocalCrew.SetText(Plugin.GetModeName(TourneyMode.LOCAL_CREW), -1, false); btOnline1v1 = Object.Instantiate(base.btRoyale, ((Component)this).transform); Transform transform = ((Component)btOnline1v1).transform; transform.localPosition += OFFSET_RIGHTCOL; ((Object)btOnline1v1).name = "btOnline1v1"; LLButton obj7 = btOnline1v1; object obj8 = <>c.<>9__11_3; if (obj8 == null) { ControlDelegate val4 = delegate(int playerNr) { Plugin.Instance.RulesetsMenuOpen = false; Plugin.Instance.SetPreviewMenuOpen = false; SetTracker.Instance.ActiveTourneyMode = TourneyMode.ONLINE_1V1; GameStates.Send((Msg)39, playerNr, -1); }; <>c.<>9__11_3 = val4; obj8 = (object)val4; } ((LLClickable)obj7).onClick = (ControlDelegate)obj8; btOnline1v1.SetText(Plugin.GetModeName(TourneyMode.ONLINE_1V1), -1, false); btRulesets = Object.Instantiate(base.btTeams, ((Component)this).transform); Transform transform2 = ((Component)btRulesets).transform; transform2.localPosition += OFFSET_BUTTON_1DOWN * 1f; ((Object)btRulesets).name = "btRulesets"; LLButton obj9 = btRulesets; object obj10 = <>c.<>9__11_4; if (obj10 == null) { ControlDelegate val5 = delegate(int playerNr) { Plugin.Instance.RulesetsMenuOpen = true; Plugin.Instance.SetPreviewMenuOpen = false; GameStates.Set(GameState.UNLOCKS, false); GameStates.Send((Msg)35, playerNr, -1); }; <>c.<>9__11_4 = val5; obj10 = (object)val5; } ((LLClickable)obj9).onClick = (ControlDelegate)obj10; btRulesets.SetText("rulesets", -1, false); btCurrentSet = Object.Instantiate(base.btTeams, ((Component)this).transform); Transform transform3 = ((Component)btCurrentSet).transform; transform3.localPosition += OFFSET_BUTTON_1DOWN * 2f; ((Object)btCurrentSet).name = "btCurrentSet"; LLButton obj11 = btCurrentSet; object obj12 = <>c.<>9__11_5; if (obj12 == null) { ControlDelegate val6 = delegate(int playerNr) { Plugin.Instance.RulesetsMenuOpen = false; Plugin.Instance.SetPreviewMenuOpen = true; GameStates.Set(GameState.UNLOCKS, false); GameStates.Send((Msg)35, playerNr, -1); }; <>c.<>9__11_5 = val6; obj12 = (object)val6; } ((LLClickable)obj11).onClick = (ControlDelegate)obj12; btCurrentSet.SetText("current set", -1, false); btEndSet = Object.Instantiate(base.btTeams, ((Component)this).transform); Transform transform4 = ((Component)btEndSet).transform; transform4.localPosition += OFFSET_BUTTON_1DOWN * 2f + OFFSET_RIGHTCOL; ((Object)btEndSet).name = "btEndSet"; ((LLClickable)btEndSet).onClick = (ControlDelegate)delegate { Plugin.Instance.RulesetsMenuOpen = false; Plugin.Instance.SetPreviewMenuOpen = false; SetTracker.Instance.ActiveTourneyMode = TourneyMode.NONE; SetTracker.Instance.End(); UpdateButtons(); }; btEndSet.SetText("end set", -1, false); UpdateButtons(); ((LLControl)base.btRoyale).visible = false; ((LLControl)base.bt1v1).visible = false; ((LLControl)base.btTeams).visible = false; ((LLControl)base.btVolley).visible = false; ((LLControl)base.btStrikers).visible = false; } public override void GetControls(ref List list, bool vert, LLClickable curFocus, LLCursor cursor) { list.Add((LLClickable)(object)btLocal1v1); list.Add((LLClickable)(object)btLocalDoubles); list.Add((LLClickable)(object)btLocalCrew); list.Add((LLClickable)(object)btRulesets); list.Add((LLClickable)(object)btCurrentSet); list.Add((LLClickable)(object)btOnline1v1); list.Add((LLClickable)(object)btEndSet); } public override LLClickable GetDefaultFocus(LLCursor cursor) { if (Plugin.Instance.RulesetsMenuOpen) { return (LLClickable)(object)btRulesets; } if (Plugin.Instance.SetPreviewMenuOpen) { return (LLClickable)(object)btCurrentSet; } if (((LLClickable)btLocal1v1).isActive) { return (LLClickable)(object)btLocal1v1; } if (((LLClickable)btLocalDoubles).isActive) { return (LLClickable)(object)btLocalDoubles; } if (((LLClickable)btLocalCrew).isActive) { return (LLClickable)(object)btLocalCrew; } if (((LLClickable)btOnline1v1).isActive) { return (LLClickable)(object)btOnline1v1; } return (LLClickable)(object)btRulesets; } public override bool DirectMove(Vector2 move, LLClickable curFocus, bool shouldMove) { //IL_0010: 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) //IL_0039: 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) if (!shouldMove) { return false; } bool flag = Mathf.Abs(move.y) > Mathf.Abs(move.x); float num = (flag ? Mathf.Sign(move.y) : Mathf.Sign(move.x)); if (flag) { return false; } if ((Object)(object)curFocus == (Object)(object)btLocal1v1 || (Object)(object)curFocus == (Object)(object)btLocalDoubles || (Object)(object)curFocus == (Object)(object)btLocalCrew || (Object)(object)curFocus == (Object)(object)btRulesets) { UIScreen.SetFocus((LLClickable)(object)btOnline1v1); AudioHandler.PlayMenuSfx((Sfx)5); return true; } if ((Object)(object)curFocus == (Object)(object)btOnline1v1) { UIScreen.SetFocus((LLClickable)(object)btLocal1v1); AudioHandler.PlayMenuSfx((Sfx)5); return true; } if ((Object)(object)curFocus == (Object)(object)btCurrentSet) { UIScreen.SetFocus((LLClickable)(object)btEndSet); AudioHandler.PlayMenuSfx((Sfx)5); return true; } if ((Object)(object)curFocus == (Object)(object)btEndSet) { UIScreen.SetFocus((LLClickable)(object)btCurrentSet); AudioHandler.PlayMenuSfx((Sfx)5); return true; } return false; } private void UpdateButtons() { LLButton val = btLocal1v1; TourneyMode activeTourneyMode = SetTracker.Instance.ActiveTourneyMode; bool active = (uint)activeTourneyMode <= 1u; ((LLClickable)val).SetActive(active); LLButton val2 = btLocalDoubles; activeTourneyMode = SetTracker.Instance.ActiveTourneyMode; active = ((activeTourneyMode == TourneyMode.NONE || activeTourneyMode == TourneyMode.LOCAL_DOUBLES) ? true : false); ((LLClickable)val2).SetActive(active); LLButton val3 = btLocalCrew; activeTourneyMode = SetTracker.Instance.ActiveTourneyMode; active = ((activeTourneyMode == TourneyMode.NONE || activeTourneyMode == TourneyMode.LOCAL_CREW) ? true : false); ((LLClickable)val3).SetActive(active); LLButton val4 = btOnline1v1; activeTourneyMode = SetTracker.Instance.ActiveTourneyMode; active = ((activeTourneyMode == TourneyMode.NONE || activeTourneyMode == TourneyMode.ONLINE_1V1) ? true : false); ((LLClickable)val4).SetActive(active); ((LLClickable)btCurrentSet).SetActive(SetTracker.Instance.ActiveTourneyMode != TourneyMode.NONE); ((LLClickable)btEndSet).SetActive(SetTracker.Instance.ActiveTourneyMode != TourneyMode.NONE); UIScreen.SetFocus(((ScreenBase)this).GetDefaultFocus(UIInput.mainCursor)); if (!((LLClickable)btCurrentSet).isActive) { ((LLClickable)btCurrentSet).OnHoverOut(-1); } if (!((LLClickable)btEndSet).isActive) { ((LLClickable)btEndSet).OnHoverOut(-1); } ((LLClickable)btOnline1v1).SetActive(false); } } } namespace TourneyMod.UI.Lobby { internal class ScreenEditScores : ScreenPlayersSettings, ICustomScreen { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static ControlDelegate <>9__43_0; internal void b__43_0(int playerNr) { GameStates.Send((Msg)2, playerNr, -1); } } private static readonly Vector2 POSITION = new Vector2(0f, 40f); private static readonly Vector2 SCALE = new Vector2(400f, 190f); private static readonly Vector2 TOP = new Vector2(0f, SCALE.y / 2f); private static readonly Vector2 CLOSE_POSITION = new Vector2(SCALE.x / 2f - 10f, SCALE.y / 2f - 10f); private static readonly Vector2 CLOSE_SCALE = new Vector2(26f, 26f); private const int CLOSE_FONTSIZE = 18; private static readonly Vector2 SCORE_HEADER_POSITION = new Vector2(TOP.x, TOP.y - 20f); private static readonly Vector2 WINNER_HEADER_POSITION = new Vector2(TOP.x, TOP.y - 100f); private const int HEADER_FONT_SIZE = 24; private static readonly Vector2 SCORE_POSITION = new Vector2(TOP.x, TOP.y - 60f); private const int SCORE_FONT_SIZE = 52; private static readonly Vector2 SCORE_OFFSET = new Vector2(50f, 0f); private static readonly Vector2 BTSCORE_SCALE = new Vector2(32f, 32f); private const int BTSCORE_FONT_SIZE = 28; private static readonly Vector2 BTSCORE_OFFSET0 = new Vector2(0f, 4f); private static readonly Vector2 BTSCORE_OFFSET1 = new Vector2(100f, 0f); private static readonly Vector2 BTSCORE_OFFSET2 = new Vector2(140f, 0f); private static readonly Vector2 WINNER_POSITION = new Vector2(TOP.x, TOP.y - 130f); private static readonly Vector2 WINNER_SCALE = new Vector2(80f, 40f); private static readonly Vector2 WINNER_OFFSET = new Vector2(WINNER_SCALE.x / 2f, 0f); private const int WINNER_FONT_SIZE = 22; private static readonly Color WINNER_COLOR_INACTIVE = new Color(0.5f, 0.5f, 0.5f); private static readonly Vector2 RESET_POSITION = new Vector2(TOP.x, TOP.y - 170f); private static readonly Vector2 RESET_SCALE = new Vector2(150f, 24f); private const int RESET_FONT_SIZE = 18; internal ScreenLobbyTourney screenLobbyTourney; private RectTransform pnEditScores; private LLButton btClose; private TextMeshProUGUI lbScoreHeader; private TextMeshProUGUI lbScoreOverrideRed; private TextMeshProUGUI lbScoreOverrideDash; private TextMeshProUGUI lbScoreOverrideBlue; private LLButton btScoreOverrideUpRed; private LLButton btScoreOverrideDownRed; private LLButton btScoreOverrideUpBlue; private LLButton btScoreOverrideDownBlue; private TextMeshProUGUI lbWinnerHeader; private Image imgLastWinnerRed; private LLButton btLastWinnerRed; private Image imgLastWinnerBlue; private LLButton btLastWinnerBlue; private LLButton btResetSetCount; public void Init(ScreenPlayersSettings screenPlayersSettings) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0027: 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_0033: 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_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) ((ScreenBase)this).screenType = ((ScreenBase)screenPlayersSettings).screenType; ((ScreenBase)this).layer = ((ScreenBase)screenPlayersSettings).layer; ((ScreenBase)this).isActive = ((ScreenBase)screenPlayersSettings).isActive; ((ScreenBase)this).msgEsc = ((ScreenBase)screenPlayersSettings).msgEsc; ((ScreenBase)this).msgMenu = ((ScreenBase)screenPlayersSettings).msgMenu; ((ScreenBase)this).msgCancel = ((ScreenBase)screenPlayersSettings).msgCancel; base.btStocks = screenPlayersSettings.btStocks; base.btTime = screenPlayersSettings.btTime; base.btTag = screenPlayersSettings.btTag; base.btSpeed = screenPlayersSettings.btSpeed; base.btBallType = screenPlayersSettings.btBallType; base.btEnergy = screenPlayersSettings.btEnergy; base.btHpFactor = screenPlayersSettings.btHpFactor; base.btPowerupSelection = screenPlayersSettings.btPowerupSelection; base.btReset = screenPlayersSettings.btReset; base.btBack = screenPlayersSettings.btBack; screenLobbyTourney = Object.FindObjectOfType(); } public override void OnOpen(ScreenType screenTypePrev) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: 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_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_0158: Unknown result type (might be due to invalid IL or missing references) //IL_0196: 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_01d9: Unknown result type (might be due to invalid IL or missing references) //IL_01de: Unknown result type (might be due to invalid IL or missing references) //IL_0206: Unknown result type (might be due to invalid IL or missing references) //IL_0222: Unknown result type (might be due to invalid IL or missing references) //IL_0227: Unknown result type (might be due to invalid IL or missing references) //IL_022c: Unknown result type (might be due to invalid IL or missing references) //IL_0254: Unknown result type (might be due to invalid IL or missing references) //IL_0270: Unknown result type (might be due to invalid IL or missing references) //IL_0275: Unknown result type (might be due to invalid IL or missing references) //IL_027a: Unknown result type (might be due to invalid IL or missing references) //IL_027f: Unknown result type (might be due to invalid IL or missing references) //IL_0284: Unknown result type (might be due to invalid IL or missing references) //IL_0289: Unknown result type (might be due to invalid IL or missing references) //IL_02ce: Unknown result type (might be due to invalid IL or missing references) //IL_02d3: Unknown result type (might be due to invalid IL or missing references) //IL_02d8: Unknown result type (might be due to invalid IL or missing references) //IL_02dd: Unknown result type (might be due to invalid IL or missing references) //IL_02e2: Unknown result type (might be due to invalid IL or missing references) //IL_02e7: Unknown result type (might be due to invalid IL or missing references) //IL_032c: Unknown result type (might be due to invalid IL or missing references) //IL_0331: Unknown result type (might be due to invalid IL or missing references) //IL_0336: Unknown result type (might be due to invalid IL or missing references) //IL_033b: Unknown result type (might be due to invalid IL or missing references) //IL_0340: Unknown result type (might be due to invalid IL or missing references) //IL_0345: Unknown result type (might be due to invalid IL or missing references) //IL_038a: Unknown result type (might be due to invalid IL or missing references) //IL_038f: Unknown result type (might be due to invalid IL or missing references) //IL_0394: Unknown result type (might be due to invalid IL or missing references) //IL_0399: Unknown result type (might be due to invalid IL or missing references) //IL_039e: Unknown result type (might be due to invalid IL or missing references) //IL_03a3: Unknown result type (might be due to invalid IL or missing references) //IL_03e4: Unknown result type (might be due to invalid IL or missing references) //IL_03ee: Expected O, but got Unknown //IL_03fb: Unknown result type (might be due to invalid IL or missing references) //IL_0405: Expected O, but got Unknown //IL_0412: Unknown result type (might be due to invalid IL or missing references) //IL_041c: Expected O, but got Unknown //IL_0429: Unknown result type (might be due to invalid IL or missing references) //IL_0433: Expected O, but got Unknown //IL_0444: Unknown result type (might be due to invalid IL or missing references) //IL_0482: Unknown result type (might be due to invalid IL or missing references) //IL_0487: Unknown result type (might be due to invalid IL or missing references) //IL_048c: Unknown result type (might be due to invalid IL or missing references) //IL_0491: Unknown result type (might be due to invalid IL or missing references) //IL_0496: Unknown result type (might be due to invalid IL or missing references) //IL_049b: Unknown result type (might be due to invalid IL or missing references) //IL_04b8: Unknown result type (might be due to invalid IL or missing references) //IL_04bd: Unknown result type (might be due to invalid IL or missing references) //IL_04c2: Unknown result type (might be due to invalid IL or missing references) //IL_04c7: Unknown result type (might be due to invalid IL or missing references) //IL_04cc: Unknown result type (might be due to invalid IL or missing references) //IL_0506: Unknown result type (might be due to invalid IL or missing references) //IL_050b: Unknown result type (might be due to invalid IL or missing references) //IL_0521: Unknown result type (might be due to invalid IL or missing references) //IL_0526: Unknown result type (might be due to invalid IL or missing references) //IL_052b: Unknown result type (might be due to invalid IL or missing references) //IL_0530: Unknown result type (might be due to invalid IL or missing references) //IL_0535: Unknown result type (might be due to invalid IL or missing references) //IL_053a: Unknown result type (might be due to invalid IL or missing references) //IL_0557: Unknown result type (might be due to invalid IL or missing references) //IL_055c: Unknown result type (might be due to invalid IL or missing references) //IL_0561: Unknown result type (might be due to invalid IL or missing references) //IL_0566: Unknown result type (might be due to invalid IL or missing references) //IL_056b: Unknown result type (might be due to invalid IL or missing references) //IL_05a5: Unknown result type (might be due to invalid IL or missing references) //IL_05aa: Unknown result type (might be due to invalid IL or missing references) //IL_05bc: Unknown result type (might be due to invalid IL or missing references) //IL_05c6: Expected O, but got Unknown //IL_05d3: Unknown result type (might be due to invalid IL or missing references) //IL_05dd: Expected O, but got Unknown //IL_05ee: Unknown result type (might be due to invalid IL or missing references) //IL_05f3: Unknown result type (might be due to invalid IL or missing references) //IL_0634: Unknown result type (might be due to invalid IL or missing references) //IL_063e: Expected O, but got Unknown //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_013c: Unknown result type (might be due to invalid IL or missing references) //IL_0142: Expected O, but got Unknown ((ScreenPlayersSettings)this).OnOpen(screenTypePrev); ((LLControl)base.btStocks).visible = false; ((LLControl)base.btTime).visible = false; ((LLControl)base.btTag).visible = false; ((LLControl)base.btSpeed).visible = false; ((LLControl)base.btBallType).visible = false; ((LLControl)base.btEnergy).visible = false; ((LLControl)base.btHpFactor).visible = false; ((LLControl)base.btPowerupSelection).visible = false; ((LLControl)base.btReset).visible = false; ((LLControl)base.btBack).visible = false; ((Component)((Component)this).transform.Find("Panel")).gameObject.SetActive(false); UIUtils.CreateBorderPanel(ref pnEditScores, "pnEditScores", ((Component)this).transform, POSITION, SCALE, Color.yellow, Color.black, 4); UIUtils.CreateButton(ref btClose, "btClose", (Transform)(object)pnEditScores, CLOSE_POSITION, CLOSE_SCALE); ((TMP_Text)btClose.textMesh).fontSize = 18f; btClose.SetText("X", -1, false); LLButton obj = btClose; object obj2 = <>c.<>9__43_0; if (obj2 == null) { ControlDelegate val = delegate(int playerNr) { GameStates.Send((Msg)2, playerNr, -1); }; <>c.<>9__43_0 = val; obj2 = (object)val; } ((LLClickable)obj).onClick = (ControlDelegate)obj2; UIUtils.CreateText(ref lbScoreHeader, "lbScoreHeader", (Transform)(object)pnEditScores, SCORE_HEADER_POSITION); ((TMP_Text)lbScoreHeader).fontSize = 24f; TextHandler.SetText((TMP_Text)(object)lbScoreHeader, "Score override"); UIUtils.CreateText(ref lbScoreOverrideDash, "lbScoreOverrideDash", (Transform)(object)pnEditScores, SCORE_POSITION); ((TMP_Text)lbScoreOverrideDash).fontSize = 52f; TextHandler.SetText((TMP_Text)(object)lbScoreOverrideDash, "-"); UIUtils.CreateText(ref lbScoreOverrideRed, "lbScoreOverrideRed", (Transform)(object)pnEditScores, SCORE_POSITION - SCORE_OFFSET); ((TMP_Text)lbScoreOverrideRed).fontSize = 52f; ((Graphic)lbScoreOverrideRed).color = UIUtils.COLOR_TEAM[0]; UIUtils.CreateText(ref lbScoreOverrideBlue, "lbScoreOverrideBlue", (Transform)(object)pnEditScores, SCORE_POSITION + SCORE_OFFSET); ((TMP_Text)lbScoreOverrideBlue).fontSize = 52f; ((Graphic)lbScoreOverrideBlue).color = UIUtils.COLOR_TEAM[1]; UIUtils.CreateButton(ref btScoreOverrideUpRed, "btScoreOverrideUpRed", (Transform)(object)pnEditScores, SCORE_POSITION + BTSCORE_OFFSET0 - BTSCORE_OFFSET1, BTSCORE_SCALE); ((TMP_Text)btScoreOverrideUpRed.textMesh).fontSize = 28f; btScoreOverrideUpRed.SetText("+", -1, false); UIUtils.CreateButton(ref btScoreOverrideDownRed, "btScoreOverrideDownRed", (Transform)(object)pnEditScores, SCORE_POSITION + BTSCORE_OFFSET0 - BTSCORE_OFFSET2, BTSCORE_SCALE); ((TMP_Text)btScoreOverrideDownRed.textMesh).fontSize = 28f; btScoreOverrideDownRed.SetText("-", -1, false); UIUtils.CreateButton(ref btScoreOverrideUpBlue, "btScoreOverrideUpBlue", (Transform)(object)pnEditScores, SCORE_POSITION + BTSCORE_OFFSET0 + BTSCORE_OFFSET1, BTSCORE_SCALE); ((TMP_Text)btScoreOverrideUpBlue.textMesh).fontSize = 28f; btScoreOverrideUpBlue.SetText("+", -1, false); UIUtils.CreateButton(ref btScoreOverrideDownBlue, "btScoreOverrideDownBlue", (Transform)(object)pnEditScores, SCORE_POSITION + BTSCORE_OFFSET0 + BTSCORE_OFFSET2, BTSCORE_SCALE); ((TMP_Text)btScoreOverrideDownBlue.textMesh).fontSize = 28f; btScoreOverrideDownBlue.SetText("-", -1, false); ((LLClickable)btScoreOverrideUpRed).onClick = (ControlDelegate)delegate { SetTracker.Instance.CurrentSet.AdjustWinCountOverride(Team.RED, 1); UpdateScores(); }; ((LLClickable)btScoreOverrideDownRed).onClick = (ControlDelegate)delegate { SetTracker.Instance.CurrentSet.AdjustWinCountOverride(Team.RED, -1); UpdateScores(); }; ((LLClickable)btScoreOverrideUpBlue).onClick = (ControlDelegate)delegate { SetTracker.Instance.CurrentSet.AdjustWinCountOverride(Team.BLUE, 1); UpdateScores(); }; ((LLClickable)btScoreOverrideDownBlue).onClick = (ControlDelegate)delegate { SetTracker.Instance.CurrentSet.AdjustWinCountOverride(Team.BLUE, -1); UpdateScores(); }; UIUtils.CreateText(ref lbWinnerHeader, "lbWinnerHeader", (Transform)(object)pnEditScores, WINNER_HEADER_POSITION); ((TMP_Text)lbWinnerHeader).fontSize = 24f; TextHandler.SetText((TMP_Text)(object)lbWinnerHeader, "Last winner override"); UIUtils.CreateImageBorderPanel(ref imgLastWinnerRed, "imgLastWinnerRed", (Transform)(object)pnEditScores, WINNER_POSITION - WINNER_OFFSET, WINNER_SCALE, WINNER_COLOR_INACTIVE, Color.black, 2); UIUtils.CreateButton(ref btLastWinnerRed, "btLastWinnerRed", (Transform)(object)pnEditScores, WINNER_POSITION - WINNER_OFFSET, WINNER_SCALE, Color.clear); ((TMP_Text)btLastWinnerRed.textMesh).fontSize = 22f; btLastWinnerRed.SetText("RED", -1, false); btLastWinnerRed.colDisabled = WINNER_COLOR_INACTIVE; UIUtils.CreateImageBorderPanel(ref imgLastWinnerBlue, "imgLastWinnerBlue", (Transform)(object)pnEditScores, WINNER_POSITION + WINNER_OFFSET, WINNER_SCALE, WINNER_COLOR_INACTIVE, Color.black, 2); UIUtils.CreateButton(ref btLastWinnerBlue, "btLastWinnerBlue", (Transform)(object)pnEditScores, WINNER_POSITION + WINNER_OFFSET, WINNER_SCALE, Color.clear); ((TMP_Text)btLastWinnerBlue.textMesh).fontSize = 22f; btLastWinnerBlue.SetText("BLUE", -1, false); btLastWinnerBlue.colDisabled = WINNER_COLOR_INACTIVE; ((LLClickable)btLastWinnerRed).onClick = (ControlDelegate)delegate { SetTracker.Instance.CurrentSet.SetLastWinnerOverride(Team.RED); UpdateScores(); }; ((LLClickable)btLastWinnerBlue).onClick = (ControlDelegate)delegate { SetTracker.Instance.CurrentSet.SetLastWinnerOverride(Team.BLUE); UpdateScores(); }; UIUtils.CreateButton(ref btResetSetCount, "btResetSetCount", (Transform)(object)pnEditScores, RESET_POSITION, RESET_SCALE); ((TMP_Text)btResetSetCount.textMesh).fontSize = 18f; btResetSetCount.SetText("Reset scores", -1, false); ((LLClickable)btResetSetCount).onClick = (ControlDelegate)delegate { SetTracker.Instance.Reset(); UpdateScores(); }; UpdateScores(); } private void UpdateScores() { //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) screenLobbyTourney.UpdateSetCount(); screenLobbyTourney.UpdateLockIcons(); screenLobbyTourney.UpdateStockDisplays(); TextHandler.SetText((TMP_Text)(object)lbScoreOverrideRed, SetTracker.Instance.CurrentSet.WinCountOverride[0].ToString()); TextHandler.SetText((TMP_Text)(object)lbScoreOverrideBlue, SetTracker.Instance.CurrentSet.WinCountOverride[1].ToString()); ((Graphic)imgLastWinnerRed).color = (((EnumWrapper)(object)SetTracker.Instance.CurrentSet.LastWinnerOverride == (EnumWrapper)(object)Team.RED) ? UIUtils.COLOR_TEAM[0] : WINNER_COLOR_INACTIVE); ((Graphic)imgLastWinnerBlue).color = (((EnumWrapper)(object)SetTracker.Instance.CurrentSet.LastWinnerOverride == (EnumWrapper)(object)Team.BLUE) ? UIUtils.COLOR_TEAM[1] : WINNER_COLOR_INACTIVE); int[] winCounts = SetTracker.Instance.CurrentSet.WinCounts; ((LLClickable)btLastWinnerRed).SetActive(winCounts[0] > 0); ((LLClickable)btLastWinnerBlue).SetActive(winCounts[1] > 0); } } public class ScreenLobby : ScreenPlayers, ICustomScreen { private LLButton[] settingsButtons; internal PlayerTagMenuLobby[] playerTagMenus; public void Init(ScreenPlayers screenPlayers) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0027: 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_0033: 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_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_01bf: Unknown result type (might be due to invalid IL or missing references) //IL_01c4: Unknown result type (might be due to invalid IL or missing references) //IL_01cb: Unknown result type (might be due to invalid IL or missing references) //IL_01d0: Unknown result type (might be due to invalid IL or missing references) ((ScreenBase)this).screenType = ((ScreenBase)screenPlayers).screenType; ((ScreenBase)this).layer = ((ScreenBase)screenPlayers).layer; ((ScreenBase)this).isActive = ((ScreenBase)screenPlayers).isActive; ((ScreenBase)this).msgEsc = ((ScreenBase)screenPlayers).msgEsc; ((ScreenBase)this).msgMenu = ((ScreenBase)screenPlayers).msgMenu; ((ScreenBase)this).msgCancel = ((ScreenBase)screenPlayers).msgCancel; base.btBack = screenPlayers.btBack; base.btStart = screenPlayers.btStart; base.characterButtons = screenPlayers.characterButtons; base.playerSelections = screenPlayers.playerSelections; base.lbCharInfo = screenPlayers.lbCharInfo; base.lbCountdown = screenPlayers.lbCountdown; base.lbGameModeHeader = screenPlayers.lbGameModeHeader; base.lbGameMode = screenPlayers.lbGameMode; base.btGameMode = screenPlayers.btGameMode; base.btOptions = screenPlayers.btOptions; base.btInviteFriends = screenPlayers.btInviteFriends; base.lbStocksHeader = screenPlayers.lbStocksHeader; base.lbTimeHeader = screenPlayers.lbTimeHeader; base.lbSpeedHeader = screenPlayers.lbSpeedHeader; base.lbBallTypeHeader = screenPlayers.lbBallTypeHeader; base.lbEnergyHeader = screenPlayers.lbEnergyHeader; base.lbHpFactorHeader = screenPlayers.lbHpFactorHeader; base.lbPowerupSelectionHeader = screenPlayers.lbPowerupSelectionHeader; base.lbStocks = screenPlayers.lbStocks; base.lbTime = screenPlayers.lbTime; base.lbSpeed = screenPlayers.lbSpeed; base.lbBallType = screenPlayers.lbBallType; base.lbEnergy = screenPlayers.lbEnergy; base.lbHpFactor = screenPlayers.lbHpFactor; base.lbPowerupSelection = screenPlayers.lbPowerupSelection; base.obSettings = screenPlayers.obSettings; base.pfPlayerSelection = screenPlayers.pfPlayerSelection; base.pfCharacterButton = screenPlayers.pfCharacterButton; base.pnCharacterButtons = screenPlayers.pnCharacterButtons; base.pnPlayers = screenPlayers.pnPlayers; base.curCountDown = screenPlayers.curCountDown; base.kCountDown = screenPlayers.kCountDown; base.countDownState = screenPlayers.countDownState; base.nPlayersShown = screenPlayers.nPlayersShown; } public override void OnOpen(ScreenType screenTypePrev) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_008e: 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_0098: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Expected O, but got Unknown //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) ((ScreenPlayers)this).OnOpen(screenTypePrev); Texture2D tex = Assets.LoadTexture("gear.png"); Sprite sprite = UIUtils.ToSprite(tex); settingsButtons = (LLButton[])(object)new LLButton[4]; playerTagMenus = new PlayerTagMenuLobby[4]; for (int j = 0; j < 4; j++) { PlayersSelection val = base.playerSelections[j]; LLButton button = null; UIUtils.CreateImageButton(ref button, sprite, "btSettings", ((Component)val.btPlayerName).transform.parent, Vector2.op_Implicit(((Component)val.btPlayerName).transform.localPosition + new Vector3(0f, 2f, 0f)), new Vector2(20f, 20f)); int i = j; button.soundClick = true; ((LLClickable)button).onClick = (ControlDelegate)delegate(int playerNr) { OnClickSettings(i, playerNr); }; settingsButtons[j] = button; Transform transform = ((Component)val.btPlayerName).transform; transform.localPosition += new Vector3(15f, 0f, 0f); playerTagMenus[j] = PlayerTagMenuLobby.CreateMenu(((Component)val).transform, j); } } internal void OnEject(int playerNr) { PlayerTagMenuLobby playerTagMenuLobby = playerTagMenus[playerNr]; playerTagMenuLobby.Close(); ((ScreenPlayers)this).UpdateTeamButtons(); } private void OnClickSettings(int playerIndex, int playerNr) { if (playerNr == -1 || playerIndex == playerNr) { PlayerTagMenuLobby playerTagMenuLobby = playerTagMenus[playerIndex]; if (((Component)playerTagMenuLobby).gameObject.activeSelf) { playerTagMenuLobby.Close(); } else { playerTagMenuLobby.OpenBrowse(); } ((ScreenPlayers)this).UpdateTeamButtons(); } } } internal class ScreenLobbyTourney : ScreenLobby { private static readonly Vector2 GAME_POSITION = new Vector2(0f, 250f); private const int GAME_FONT_SIZE = 28; private static readonly Vector2 SCORE_POSITION = new Vector2(0f, 204f); private const int SCORE_FONT_SIZE = 52; private static readonly Vector2 SCORE_OFFSET = new Vector2(50f, 0f); private static readonly Vector2 BT_EDITSCORES_SCALE = new Vector2(220f, 26f); private static readonly Vector2 BT_EDITSCORES_POSITION = new Vector2(0f, -346f); private const int BT_EDITSCORES_FONT_SIZE = 18; private static readonly Vector2 BT_RPS_POSITION = new Vector2(0f, -346f); private static readonly Vector2 BT_RPS_OFFSET = new Vector2(280f, 0f); private static readonly Vector2 BT_RPS_SCALE = new Vector2(220f, 26f); private const int BT_RPS_FONT_SIZE = 18; private static readonly Vector2 LOCK_SCALE = new Vector2(128f, 128f); private static readonly Vector2 LOCK_POSITION = new Vector2(0f, 60f); private static readonly Color LOCK_COLOR = Color.white * 0.95f; private static readonly Vector2 STOCKDISPLAY_POSITION = new Vector2(0f, 290f); private static readonly Vector2 TIEBREAKER_POSITION = new Vector2(0f, 140f); private const int TIEBREAKER_FONT_SIZE = 28; private static readonly Vector2 RPS_WINNER_POSITION = new Vector2(0f, 140f); private const int RPS_WINNER_FONT_SIZE = 28; private TextMeshProUGUI lbGame; private TextMeshProUGUI lbScoreRed; private TextMeshProUGUI lbScoreDash; private TextMeshProUGUI lbScoreBlue; private VoteButton btEditScores; private LLButton btRpsRed; private LLButton btRpsBlue; private StockDisplay[] stockDisplays; private Image[] imgsCharacterLock; private TextMeshProUGUI lbTiebreaker; private TextMeshProUGUI lbRpsWinner; public override void OnOpen(ScreenType screenTypePrev) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Unknown result type (might be due to invalid IL or missing references) //IL_0126: Unknown result type (might be due to invalid IL or missing references) //IL_019d: Unknown result type (might be due to invalid IL or missing references) //IL_01a2: Unknown result type (might be due to invalid IL or missing references) //IL_01a7: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: Unknown result type (might be due to invalid IL or missing references) //IL_01f4: Unknown result type (might be due to invalid IL or missing references) //IL_0205: Unknown result type (might be due to invalid IL or missing references) //IL_020a: Unknown result type (might be due to invalid IL or missing references) //IL_0224: Unknown result type (might be due to invalid IL or missing references) //IL_0229: Unknown result type (might be due to invalid IL or missing references) //IL_024e: Unknown result type (might be due to invalid IL or missing references) //IL_0258: Expected O, but got Unknown //IL_0269: Unknown result type (might be due to invalid IL or missing references) //IL_026e: Unknown result type (might be due to invalid IL or missing references) //IL_0273: Unknown result type (might be due to invalid IL or missing references) //IL_0278: Unknown result type (might be due to invalid IL or missing references) //IL_02c0: Unknown result type (might be due to invalid IL or missing references) //IL_02d1: Unknown result type (might be due to invalid IL or missing references) //IL_02d6: Unknown result type (might be due to invalid IL or missing references) //IL_02f0: Unknown result type (might be due to invalid IL or missing references) //IL_02f5: Unknown result type (might be due to invalid IL or missing references) //IL_031a: Unknown result type (might be due to invalid IL or missing references) //IL_0324: Expected O, but got Unknown //IL_0371: Unknown result type (might be due to invalid IL or missing references) //IL_0376: Unknown result type (might be due to invalid IL or missing references) //IL_03b6: Unknown result type (might be due to invalid IL or missing references) //IL_03bb: Unknown result type (might be due to invalid IL or missing references) //IL_03ce: Unknown result type (might be due to invalid IL or missing references) //IL_040e: Unknown result type (might be due to invalid IL or missing references) //IL_0459: Unknown result type (might be due to invalid IL or missing references) base.OnOpen(screenTypePrev); UIUtils.CreateText(ref lbGame, "lbGame", ((Component)this).transform, GAME_POSITION); ((TMP_Text)lbGame).fontSize = 28f; UIUtils.CreateText(ref lbScoreDash, "lbScoreDash", ((Component)this).transform, SCORE_POSITION); ((TMP_Text)lbScoreDash).fontSize = 52f; TextHandler.SetText((TMP_Text)(object)lbScoreDash, "-"); UIUtils.CreateText(ref lbScoreRed, "lbScoreRed", ((Component)this).transform, SCORE_POSITION - SCORE_OFFSET); ((TMP_Text)lbScoreRed).fontSize = 52f; ((Graphic)lbScoreRed).color = UIUtils.COLOR_TEAM[0]; UIUtils.CreateText(ref lbScoreBlue, "lbScoreBlue", ((Component)this).transform, SCORE_POSITION + SCORE_OFFSET); ((TMP_Text)lbScoreBlue).fontSize = 52f; ((Graphic)lbScoreBlue).color = UIUtils.COLOR_TEAM[1]; UIUtils.CreateVoteButton(ref btEditScores, "btEditScores", ((Component)this).transform, BT_EDITSCORES_POSITION, BT_EDITSCORES_SCALE); VoteButton.ActiveVoteButtons.Add(btEditScores); UIUtils.SetButtonBGVisibility((LLButton)(object)btEditScores, visible: false); ((TMP_Text)((LLButton)btEditScores).textMesh).fontSize = 18f; btEditScores.label = "Edit scores"; btEditScores.onVote = OnVoteEditScores; UIUtils.CreateButton(ref btRpsRed, "btRpsRed", ((Component)this).transform, BT_RPS_POSITION - BT_RPS_OFFSET, BT_RPS_SCALE); UIUtils.SetButtonBGVisibility(btRpsRed, visible: false); ((TMP_Text)btRpsRed.textMesh).fontSize = 18f; ((Graphic)btRpsRed.textMesh).color = UIUtils.COLOR_TEAM[(int)(EnumWrapper)(object)Team.RED]; btRpsRed.colDisabled = Color.gray; btRpsRed.colDefault = UIUtils.COLOR_TEAM[(int)(EnumWrapper)(object)Team.RED]; btRpsRed.SetText("Set RPS Winner", -1, false); ((LLClickable)btRpsRed).onClick = (ControlDelegate)delegate { OnClickRps(Team.RED); }; UIUtils.CreateButton(ref btRpsBlue, "btRpsBlue", ((Component)this).transform, BT_RPS_POSITION + BT_RPS_OFFSET, BT_RPS_SCALE); UIUtils.SetButtonBGVisibility(btRpsBlue, visible: false); ((TMP_Text)btRpsBlue.textMesh).fontSize = 18f; ((Graphic)btRpsBlue.textMesh).color = UIUtils.COLOR_TEAM[(int)(EnumWrapper)(object)Team.BLUE]; btRpsBlue.colDisabled = Color.gray; btRpsBlue.colDefault = UIUtils.COLOR_TEAM[(int)(EnumWrapper)(object)Team.BLUE]; btRpsBlue.SetText("Set RPS Winner", -1, false); ((LLClickable)btRpsBlue).onClick = (ControlDelegate)delegate { OnClickRps(Team.BLUE); }; stockDisplays = new StockDisplay[4]; imgsCharacterLock = (Image[])(object)new Image[4]; for (int i = 0; i < 4; i++) { StockDisplay.Create(ref stockDisplays[i], GameSettings.current.stocks, "stockDisplay" + i, ((Component)this).transform, Vector2.zero, Vector2.one); ((Component)stockDisplays[i].rectTransform).gameObject.SetActive(false); UIUtils.CreateImage(ref imgsCharacterLock[i], UIUtils.spriteLock, "imgLock", ((Component)this).transform, Vector2.zero, LOCK_SCALE); ((Graphic)imgsCharacterLock[i]).color = LOCK_COLOR; ((Component)imgsCharacterLock[i]).gameObject.SetActive(false); } UIUtils.CreateText(ref lbTiebreaker, "lbTiebreaker", ((Component)this).transform, TIEBREAKER_POSITION); ((TMP_Text)lbTiebreaker).fontSize = 28f; ((TMP_Text)lbTiebreaker).richText = true; ((TMP_Text)lbTiebreaker).alignment = (TextAlignmentOptions)258; UIUtils.CreateText(ref lbRpsWinner, "lbRpsWinner", ((Component)this).transform, RPS_WINNER_POSITION); ((TMP_Text)lbRpsWinner).fontSize = 28f; ((TMP_Text)lbRpsWinner).richText = true; ((TMP_Text)lbRpsWinner).alignment = (TextAlignmentOptions)258; UpdateSetCount(); } public override void OnClose(ScreenType screenTypeNext) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) VoteButton.ActiveVoteButtons.Remove(btEditScores); ((ScreenPlayers)this).OnClose(screenTypeNext); } public override void DoUpdate() { ((ScreenPlayers)this).DoUpdate(); ((ScreenPlayers)this).ShowCpuButtons(false); UpdateLockIcons(); UpdateStockDisplays(); } internal void UpdateSetCount() { //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_0146: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) int gameNumber = SetTracker.Instance.CurrentSet.GameNumber; int[] winCounts = SetTracker.Instance.CurrentSet.WinCounts; TextHandler.SetText((TMP_Text)(object)lbGame, $"Game {gameNumber}"); TextHandler.SetText((TMP_Text)(object)lbScoreRed, winCounts[0].ToString()); TextHandler.SetText((TMP_Text)(object)lbScoreBlue, winCounts[1].ToString()); bool flag = SetTracker.Instance.CurrentSet.IsGame1 && !SetTracker.Instance.CurrentSet.IsTiebreaker; TextHandler.SetText((TMP_Text)(object)lbTiebreaker, (SetTracker.Instance.CurrentSet.IsTiebreaker && (EnumWrapper)(object)SetTracker.Instance.CurrentSet.LastWinnerOverride == (EnumWrapper)(object)Team.NONE) ? ("Tiebreaker!" + (((int)SetTracker.Instance.CurrentSet.StageLock != 0) ? ("\n" + StringUtils.GetStageReadableName(SetTracker.Instance.CurrentSet.StageLock) + "") : "")) : ""); TextHandler.SetText((TMP_Text)(object)lbRpsWinner, flag ? $"RPS Winner\n)(object)SetTracker.Instance.CurrentSet.RpsWinner])}>{SetTracker.Instance.CurrentSet.RpsWinner}" : ""); ((LLClickable)btRpsRed).SetActive(flag); ((LLClickable)btRpsBlue).SetActive(flag); } internal void UpdateStockDisplays() { Player.ForAll((Action)delegate(Player player) { //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) StockDisplay stockDisplay = stockDisplays[player.nr]; if (!player.IsInMatch) { ((Component)stockDisplay.rectTransform).gameObject.SetActive(false); } else { stockDisplay.rectTransform.anchoredPosition = Vector2.op_Implicit(((Component)((ScreenPlayers)this).playerSelections[player.nr]).transform.localPosition + Vector2.op_Implicit(STOCKDISPLAY_POSITION)); ((Component)stockDisplay.rectTransform).gameObject.SetActive(true); int stocks = GameSettings.current.stocks; stockDisplay.SetMaxStocks(stocks); if ((SetTracker.Instance.CurrentSet.IsGame1 && !SetTracker.Instance.CurrentSet.IsTiebreaker) || (EnumWrapper)(object)SetTracker.Instance.CurrentSet.LastWinnerOverride != (EnumWrapper)(object)Team.NONE) { if (SetTracker.Instance.ActiveTourneyMode == TourneyMode.LOCAL_CREW) { stockDisplay.SetStocks(stocks); } else { ((Component)stockDisplay.rectTransform).gameObject.SetActive(false); } } else { int num = SetTracker.Instance.CurrentSet.PlayerStockLock[player.nr]; if (SetTracker.Instance.ActiveTourneyMode != TourneyMode.LOCAL_CREW && num < 1) { ((Component)stockDisplay.rectTransform).gameObject.SetActive(false); } stockDisplay.SetStocks((num > 0) ? num : stocks); } } }); } internal void UpdateLockIcons() { Player.ForAll((Action)delegate(Player player) { //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_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) Image val = imgsCharacterLock[player.nr]; if (!player.IsInMatch) { ((Component)val).gameObject.SetActive(false); } else { ((Graphic)val).rectTransform.anchoredPosition = Vector2.op_Implicit(((Component)((ScreenPlayers)this).playerSelections[player.nr]).transform.localPosition + Vector2.op_Implicit(LOCK_POSITION)); ((Component)val).gameObject.SetActive(!SetTracker.Instance.CurrentSet.PlayerCharacterLock[player.nr].IsEmpty && (EnumWrapper)(object)SetTracker.Instance.CurrentSet.LastWinnerOverride == (EnumWrapper)(object)Team.NONE); } }); } private void OnVoteEditScores() { Plugin.Instance.ScoreEditMenuOpen = true; GameStates.Send((Msg)13, -1, -1); } private void OnClickRps(Team team) { SetTracker.Instance.CurrentSet.RpsWinner = team; UpdateSetCount(); } } internal class StockDisplay { internal RectTransform rectTransform; private Image imgStocks; private Image imgStocksBackdrop; private int maxStocks; private int stocks; internal static void Create(ref StockDisplay stockDisplay, int maxStocks, string name, Transform parent, Vector2 position, Vector2 scale) { //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_006e: 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) stockDisplay = new StockDisplay(); stockDisplay.rectTransform = LLControl.CreatePanel(parent, name); stockDisplay.imgStocksBackdrop = LLControl.CreateImage((Transform)(object)stockDisplay.rectTransform, JPLELOFJOOH.HPGOLPEOPLN("_spriteStocksBarFill2", maxStocks - 1, false)); stockDisplay.imgStocks = LLControl.CreateImage((Transform)(object)stockDisplay.rectTransform, JPLELOFJOOH.HPGOLPEOPLN("_spriteStocksBarFill", maxStocks - 1, false)); stockDisplay.rectTransform.anchoredPosition = position; ((Transform)stockDisplay.rectTransform).localScale = Vector2.op_Implicit(scale); } internal void SetMaxStocks(int maxStocks) { this.maxStocks = Mathf.Clamp(maxStocks, 1, 10); imgStocksBackdrop.sprite = JPLELOFJOOH.HPGOLPEOPLN("_spriteStocksBarFill2", this.maxStocks - 1, false); } internal void SetStocks(int stocks) { this.stocks = Mathf.Clamp(stocks, 1, maxStocks); if (this.stocks < 1) { ((Component)imgStocks).gameObject.SetActive(false); return; } ((Component)imgStocks).gameObject.SetActive(true); imgStocks.sprite = JPLELOFJOOH.HPGOLPEOPLN("_spriteStocksBarFill", this.stocks - 1, false); } } } namespace TourneyMod.StageStriking { internal class StageBan { internal enum BanReason { COUNTERPICK, DSR, BAN } internal Stage stage; internal BanReason reason; internal Team banTeam; internal StageBan(Stage stage, BanReason reason, Team banTeam) { //IL_0009: 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) this.stage = stage; this.reason = reason; this.banTeam = banTeam; } } internal class StageStrikeTracker { internal static StageStrikeTracker Instance { get; private set; } internal static ManualLogSource Log { get; private set; } internal StrikeInfo CurrentStrikeInfo { get; private set; } internal bool IsTrackingStrikeInfo => CurrentStrikeInfo != null; internal static void Init() { Instance = new StageStrikeTracker(); Log = Logger.CreateLogSource("TM StageStriking"); Log.LogInfo((object)"TourneyMod stage striking initialized"); } internal void Start() { CurrentStrikeInfo = new StrikeInfo(); } internal void End() { if (CurrentStrikeInfo == null) { Log.LogWarning((object)"Tried to end strike info, but there wasn't one active"); } else { CurrentStrikeInfo = null; } } } internal class StrikeInfo { internal enum InteractMode { PICK, BAN } private int banIndex = 0; internal Team ControlStartTeam { get; private set; } internal List StageBans { get; private set; } internal int[] TotalBansRemaining { get; private set; } internal int CurrentBansRemaining { get; private set; } internal InteractMode CurrentInteractMode { get; private set; } internal Team ControllingTeam { get; private set; } internal StrikeInfo() { if (SetTracker.Instance.CurrentSet.IsGame1) { Team val = Ruleset.ConvertPlayerTeam(SetTracker.Instance.CurrentSet.ActiveRuleset.game1FirstTeam); Team rpsWinner = SetTracker.Instance.CurrentSet.RpsWinner; if ((EnumWrapper)(object)rpsWinner == (EnumWrapper)(object)Team.RED) { ControlStartTeam = val; } else { ControlStartTeam = (((EnumWrapper)(object)val == (EnumWrapper)(object)Team.RED) ? Team.BLUE : Team.RED); } } else { Team lastWinner = SetTracker.Instance.CurrentSet.LastWinner; Team val2 = (((EnumWrapper)(object)lastWinner == (EnumWrapper)(object)Team.NONE) ? Team.NONE : (((EnumWrapper)(object)lastWinner == (EnumWrapper)(object)Team.RED) ? Team.BLUE : Team.RED)); ControlStartTeam = ((SetTracker.Instance.CurrentSet.ActiveRuleset.laterGamesFirstTeam == Ruleset.FirstTeam.WINNER) ? lastWinner : val2); } UpdateInteractMode(); StageStrikeTracker.Log.LogInfo((object)string.Format("Striking started with ruleset '{0}', game {1}: {2}", SetTracker.Instance.CurrentSet.ActiveRuleset.Id, SetTracker.Instance.CurrentSet.GameNumber, (SetTracker.Instance.CurrentSet.IsFreePickMode || SetTracker.Instance.CurrentSet.IsFreePickForced) ? "free pick mode active" : $"{ControllingTeam} first {CurrentInteractMode}. bans remaining ({TotalBansRemaining[0]}, {TotalBansRemaining[1]})")); InitBans(); } private void InitBans() { banIndex = 0; StageBans = new List(); if (SetTracker.Instance.CurrentSet.IsFreePickForced || !SetTracker.Instance.IsTrackingSet) { return; } Set currentSet = SetTracker.Instance.CurrentSet; if (currentSet.IsGame1) { SetTracker.Instance.CurrentSet.ActiveRuleset.stagesCounterpick.ForEach(delegate(Stage stage) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) StageBans.Add(new StageBan(stage, StageBan.BanReason.COUNTERPICK, Team.NONE)); }); StageStrikeTracker.Log.LogInfo((object)("Counterpick bans applied: " + Plugin.PrintArray(LinqExtensions.Map((IEnumerable)StageBans, (Func)((StageBan ban) => ban.stage)).ToArray(), includeBrackets: false))); } else { if (SetTracker.Instance.CurrentSet.ActiveRuleset.dsrMode == Ruleset.DsrMode.OFF) { return; } Match[] lastWins = new Match[4]; currentSet.CompletedMatches.ForEach(delegate(Match match) { if (!((EnumWrapper)(object)match.Winner == (EnumWrapper)(object)Team.NONE)) { lastWins[(int)(EnumWrapper)(object)match.Winner] = match; } }); currentSet.CompletedMatches.ForEach(delegate(Match match) { //IL_00aa: Unknown result type (might be due to invalid IL or missing references) if (!((EnumWrapper)(object)match.Winner == (EnumWrapper)(object)Team.NONE)) { Match match2 = lastWins[(int)(EnumWrapper)(object)match.Winner]; StageBan stageBan = StageBans.Find((StageBan ban) => ban.stage == match.PlayedStage); if (SetTracker.Instance.CurrentSet.ActiveRuleset.dsrMode != Ruleset.DsrMode.LAST_WIN || match == match2) { if (stageBan == null) { StageBans.Add(new StageBan(match.PlayedStage, StageBan.BanReason.DSR, match.Winner)); } else if ((EnumWrapper)(object)stageBan.banTeam != (EnumWrapper)(object)match.Winner) { stageBan.banTeam = Team.NONE; } } } }); StageStrikeTracker.Log.LogInfo((object)("DSR bans applied: " + Plugin.PrintArray(LinqExtensions.Map((IEnumerable)StageBans, (Func)((StageBan ban) => string.Format("{0} ({1})", ban.stage, ((EnumWrapper)(object)ban.banTeam == (EnumWrapper)(object)Team.NONE) ? "both" : $"{ban.banTeam}"))).ToArray(), includeBrackets: false))); } } internal Stage PickStage(Stage stage, int playerNumber) { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Expected I4, but got Unknown //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) Team playerTeam = SetTracker.Instance.GetPlayerTeam(playerNumber); GameStates.Send((Msg)66, playerNumber, (int)stage); StageStrikeTracker.Log.LogInfo((object)$"{playerTeam} picks {stage}"); return stage; } internal Stage PickRandomStage(Ruleset.RandomStageMode randomStageMode) { //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Expected I4, but got Unknown //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) List list = new List(); switch (randomStageMode) { case Ruleset.RandomStageMode.ANY: list.AddRange(Ruleset.STAGES_3D); list.AddRange(Ruleset.STAGES_2D); break; case Ruleset.RandomStageMode.ANY_3D: list.AddRange(Ruleset.STAGES_3D); break; case Ruleset.RandomStageMode.ANY_2D: list.AddRange(Ruleset.STAGES_2D); break; case Ruleset.RandomStageMode.ANY_LEGAL: list.AddRange(SetTracker.Instance.CurrentSet.ActiveRuleset.stagesNeutral); list.AddRange(SetTracker.Instance.CurrentSet.ActiveRuleset.stagesCounterpick); break; } if (list.Count == 0) { return (Stage)0; } Stage val = list[Random.RandomRangeInt(0, list.Count)]; GameStates.Send((Msg)66, -1, (int)val); StageStrikeTracker.Log.LogInfo((object)$"Players voted random {randomStageMode}: picked {val}"); return val; } internal void BanStage(Stage stage, int playerNumber) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) Team playerTeam = SetTracker.Instance.GetPlayerTeam(playerNumber); StageBan stageBan = StageBans.Find((StageBan ban) => ban.stage == stage); StageBan item = new StageBan(stage, StageBan.BanReason.BAN, playerTeam); if (stageBan != null) { StageBans.Remove(stageBan); } StageBans.Add(item); banIndex++; UpdateInteractMode(); StageStrikeTracker.Log.LogInfo((object)$"{playerTeam} bans {stage}. bans remaining ({TotalBansRemaining[0]}, {TotalBansRemaining[1]}). {ControllingTeam} next {CurrentInteractMode}"); } private void SwapControllingPlayer() { ControllingTeam = (((EnumWrapper)(object)ControllingTeam == (EnumWrapper)(object)Team.RED) ? Team.BLUE : Team.RED); } internal void ToggleFreePickMode() { SetTracker.Instance.CurrentSet.IsFreePickMode = !SetTracker.Instance.CurrentSet.IsFreePickMode; UpdateInteractMode(); StageStrikeTracker.Log.LogInfo((object)("Free pick mode toggled " + (SetTracker.Instance.CurrentSet.IsFreePickMode ? "ON" : $"OFF: {ControllingTeam} next {CurrentInteractMode}. bans remaining ({TotalBansRemaining[0]}, {TotalBansRemaining[1]})"))); } private void UpdateInteractMode() { ControllingTeam = ControlStartTeam; TotalBansRemaining = new int[4]; if (SetTracker.Instance.CurrentSet.IsFreePickMode || SetTracker.Instance.CurrentSet.IsFreePickForced || (EnumWrapper)(object)ControllingTeam == (EnumWrapper)(object)Team.NONE) { CurrentInteractMode = InteractMode.PICK; return; } int totalWins = SetTracker.Instance.CurrentSet.TotalWins; int num = SetTracker.Instance.CurrentSet.ActiveRuleset.banAmounts.Length; int[] array = SetTracker.Instance.CurrentSet.ActiveRuleset.banAmounts[(totalWins < num) ? totalWins : (num - 1)]; int[] array2 = array; foreach (int num2 in array2) { TotalBansRemaining[(int)(EnumWrapper)(object)ControllingTeam] += num2; SwapControllingPlayer(); } ControllingTeam = ControlStartTeam; int num3 = 0; int[] array3 = array; for (int j = 0; j < array3.Length; j++) { int num5 = (CurrentBansRemaining = array3[j]); if (num5 == 0) { break; } for (int k = 0; k < num5; k++) { if (num3 == banIndex) { CurrentInteractMode = InteractMode.BAN; return; } num3++; TotalBansRemaining[(int)(EnumWrapper)(object)ControllingTeam]--; CurrentBansRemaining--; } SwapControllingPlayer(); } CurrentInteractMode = InteractMode.PICK; } internal bool CheckPlayerInteraction(Stage stage, int playerNumber) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) StageBan stageBan = StageBans.Find((StageBan ban) => ban.stage == stage); return CheckPlayerInteraction(stageBan, playerNumber); } internal bool CheckPlayerInteraction(StageBan stageBan, int playerNumber) { Team playerTeam = SetTracker.Instance.GetPlayerTeam(playerNumber); if (SetTracker.Instance.CurrentSet.IsFreePickMode || SetTracker.Instance.CurrentSet.IsFreePickForced) { return true; } if ((EnumWrapper)(object)playerTeam != (EnumWrapper)(object)ControllingTeam) { return false; } if (stageBan == null) { return true; } if (stageBan.reason != StageBan.BanReason.DSR) { return false; } if ((EnumWrapper)(object)stageBan.banTeam == (EnumWrapper)(object)Team.NONE) { return false; } if ((EnumWrapper)(object)stageBan.banTeam == (EnumWrapper)(object)playerTeam && CurrentInteractMode == InteractMode.PICK) { return false; } if ((EnumWrapper)(object)stageBan.banTeam != (EnumWrapper)(object)playerTeam && CurrentInteractMode == InteractMode.BAN) { return false; } return true; } } } namespace TourneyMod.SetTracking { internal class Match { internal Team Winner; internal Stage PlayedStage { get; private set; } internal PlayerCharacter[] PlayerCharacters { get; private set; } internal PlayerScore[] FinalScores { get; private set; } internal int GameNumber { get; private set; } internal bool IsTimeout { get; private set; } internal bool IsTiebreaker { get; private set; } internal void Start(Stage stage, PlayerCharacter[] playerCharacters) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) PlayedStage = stage; PlayerCharacters = playerCharacters; } internal void End(PlayerScore[] scores, int gameNumber, bool isTimeout, bool isTiebreaker) { FinalScores = scores; Winner = GetWinner(); GameNumber = gameNumber; IsTimeout = isTimeout; IsTiebreaker = isTiebreaker; } private Team GetWinner() { if (FinalScores == null) { return Team.NONE; } int[] array = new int[4]; int[] array2 = new int[4]; for (int i = 0; i < 4; i++) { PlayerScore playerScore = FinalScores[i]; if (!((EnumWrapper)(object)playerScore.Team == (EnumWrapper)(object)Team.NONE)) { array[(int)(EnumWrapper)(object)playerScore.Team]++; if (playerScore.Stocks == 0) { array2[(int)(EnumWrapper)(object)playerScore.Team]++; } } } int num = 0; int num2 = 0; Team result = Team.NONE; for (int j = 0; j < 4; j++) { if (array[j] != 0) { if (array2[j] == array[j]) { num++; continue; } num2++; result = Team.op_Implicit(j); } } if (num == 0 || num2 > 1) { return Team.NONE; } return result; } } internal struct PlayerCharacter { internal static PlayerCharacter EMPTY = new PlayerCharacter((Character)101, (CharacterVariant)0, Team.NONE); internal Character character; internal CharacterVariant variant; internal Team team; internal bool IsEmpty => (EnumWrapper)(object)team == (EnumWrapper)(object)Team.NONE; public PlayerCharacter(Character character, CharacterVariant variant, Team team) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) this.character = character; this.variant = variant; this.team = team; } public override string ToString() { return $"{((object)(Character)(ref character)).ToString()}/{((object)(CharacterVariant)(ref variant)).ToString()}/{team}"; } } internal struct PlayerScore { internal int Stocks; internal Team Team; internal Floatf Hp; public PlayerScore() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) Hp = default(Floatf); Stocks = -1; Team = Team.NONE; } public override string ToString() { return $"({Team}, {Stocks})"; } } public enum PlayerTeam { RED, BLUE, YELLOW, GREEN, NONE } internal class Set { internal PlayerCharacter[] PlayerCharacterLock = new PlayerCharacter[4] { PlayerCharacter.EMPTY, PlayerCharacter.EMPTY, PlayerCharacter.EMPTY, PlayerCharacter.EMPTY }; internal int[] PlayerStockLock = new int[4]; internal Stage StageLock = (Stage)0; internal Team RpsWinner = Team.RED; internal bool IsFreePickMode = false; internal List CompletedMatches { get; private set; } = new List(); internal Match CurrentMatch { get; private set; } internal Ruleset ActiveRuleset { get; private set; } internal bool IsFreePickForced => ActiveRuleset.banAmounts.Length == 0; internal int[] WinCounts { get { int[] winCounts = new int[4]; CompletedMatches.ForEach(delegate(Match match) { Team winner = match.Winner; if (!((EnumWrapper)(object)winner == (EnumWrapper)(object)Team.NONE)) { winCounts[(int)(EnumWrapper)(object)match.Winner]++; } }); for (int i = 0; i < 4; i++) { winCounts[i] += WinCountOverride[i]; } return winCounts; } } internal int TotalWins => WinCounts.Sum(); internal bool IsGame1 => TotalWins == 0; internal int GameNumber => TotalWins + 1; internal Team LastWinner => (!((EnumWrapper)(object)LastWinnerOverride == (EnumWrapper)(object)Team.NONE)) ? LastWinnerOverride : (IsGame1 ? Team.NONE : CompletedMatches.Last().Winner); internal int[] WinCountOverride { get; private set; } internal int TotalOverrideWins => WinCountOverride.Sum(); internal Team LastWinnerOverride { get; private set; } internal bool IsTiebreaker { get; private set; } internal Set(Ruleset ruleset) { //IL_0055: Unknown result type (might be due to invalid IL or missing references) ActiveRuleset = ruleset; WinCountOverride = new int[4]; LastWinnerOverride = Team.NONE; } internal void StartMatch(Stage stage, PlayerCharacter[] playerCharacters) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) SetTracker.Log.LogInfo((object)$"Starting new match: stage {stage}, characters selected {Plugin.PrintArray(playerCharacters, includeBrackets: true)}"); CurrentMatch = new Match(); CurrentMatch.Start(stage, playerCharacters); } internal void EndMatch(PlayerScore[] scores, bool isTimeout) { //IL_0430: Unknown result type (might be due to invalid IL or missing references) //IL_0412: Unknown result type (might be due to invalid IL or missing references) //IL_0417: Unknown result type (might be due to invalid IL or missing references) //IL_017f: Unknown result type (might be due to invalid IL or missing references) //IL_0184: Unknown result type (might be due to invalid IL or missing references) //IL_018b: Unknown result type (might be due to invalid IL or missing references) //IL_0190: Unknown result type (might be due to invalid IL or missing references) //IL_0197: Unknown result type (might be due to invalid IL or missing references) //IL_019c: Unknown result type (might be due to invalid IL or missing references) //IL_01a3: Unknown result type (might be due to invalid IL or missing references) //IL_01a8: Unknown result type (might be due to invalid IL or missing references) //IL_01c5: Unknown result type (might be due to invalid IL or missing references) //IL_01ca: Unknown result type (might be due to invalid IL or missing references) //IL_01cc: Unknown result type (might be due to invalid IL or missing references) //IL_01ce: Unknown result type (might be due to invalid IL or missing references) //IL_0259: Unknown result type (might be due to invalid IL or missing references) //IL_025e: Unknown result type (might be due to invalid IL or missing references) //IL_0233: Unknown result type (might be due to invalid IL or missing references) //IL_0238: Unknown result type (might be due to invalid IL or missing references) //IL_023a: Unknown result type (might be due to invalid IL or missing references) //IL_023f: Unknown result type (might be due to invalid IL or missing references) //IL_0284: Unknown result type (might be due to invalid IL or missing references) //IL_0289: Unknown result type (might be due to invalid IL or missing references) //IL_028b: Unknown result type (might be due to invalid IL or missing references) //IL_028d: Unknown result type (might be due to invalid IL or missing references) //IL_029f: Unknown result type (might be due to invalid IL or missing references) //IL_02a1: Unknown result type (might be due to invalid IL or missing references) //IL_02bf: 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_02af: Unknown result type (might be due to invalid IL or missing references) //IL_02b1: Unknown result type (might be due to invalid IL or missing references) CurrentMatch.End(scores, GameNumber, isTimeout, IsTiebreaker); Team winner = CurrentMatch.Winner; if (isTimeout) { int[] array = new int[4]; for (int i = 0; i < 4; i++) { int stocks = scores[i].Stocks; if (stocks != 0 && !((EnumWrapper)(object)scores[i].Team == (EnumWrapper)(object)Team.NONE)) { array[(int)(EnumWrapper)(object)scores[i].Team] += stocks; } } int num = 0; Team val = Team.NONE; for (int j = 0; j < 4; j++) { int num2 = array[j]; if (num2 != 0) { if (num2 > num) { num = num2; val = Team.op_Implicit(j); } else if (num2 == num) { val = Team.NONE; } } } SetTracker.Log.LogInfo((object)$"Match ended in timeout! Checking stocks {Plugin.PrintArray(scores, includeBrackets: true)}: winner {val}"); if ((EnumWrapper)(object)val != (EnumWrapper)(object)Team.NONE) { winner = val; } else { Floatf[] array2 = (Floatf[])(object)new Floatf[4] { Floatf.zero, Floatf.zero, Floatf.zero, Floatf.zero }; for (int k = 0; k < 4; k++) { Floatf hp = scores[k].Hp; if (!Floatf.Equals(hp, Floatf.zero) && !((EnumWrapper)(object)scores[k].Team == (EnumWrapper)(object)Team.NONE)) { array2[(int)(EnumWrapper)(object)scores[k].Team] = Floatf.Add(array2[(int)(EnumWrapper)(object)scores[k].Team], hp); } } Floatf val2 = Floatf.zero; Team val3 = Team.NONE; for (int l = 0; l < 4; l++) { int num3 = array[l]; if (num3 < num) { continue; } Floatf val4 = array2[l]; if (!Floatf.Equals(val4, Floatf.zero)) { if (Floatf.GreaterThan(val4, val2)) { val2 = val4; val3 = Team.op_Implicit(l); } else if (Floatf.Equals(val4, val2)) { val3 = Team.NONE; } } } SetTracker.Log.LogInfo((object)$"Tie on stocks! Checking hp {Plugin.PrintArray(scores.Select((PlayerScore s) => $"({s.Team}, {Floatf.ToFloat(Floatf.op_Implicit(s.Hp))})").ToArray(), includeBrackets: true)}: winner {val3}"); if ((EnumWrapper)(object)val3 != (EnumWrapper)(object)Team.NONE) { winner = val3; } else { winner = Team.NONE; } } } else { SetTracker.Log.LogInfo((object)("Ending match with scores " + Plugin.PrintArray(scores, includeBrackets: true))); } SetTracker.Log.LogInfo((object)$"Determined match winner: {winner}"); CurrentMatch.Winner = winner; Player.ForAll((Action)delegate(Player player) { PlayerCharacterLock[player.nr] = PlayerCharacter.EMPTY; PlayerStockLock[player.nr] = 0; }); if ((EnumWrapper)(object)CurrentMatch.Winner == (EnumWrapper)(object)Team.NONE) { if (!isTimeout) { return; } SetTracker.Log.LogInfo((object)"Timeout tiebreaker needed!"); Player.ForAllInMatch((Action)delegate(Player player) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) PlayerCharacterLock[player.nr] = new PlayerCharacter(player.CharacterSelected, player.CharacterVariant, player.Team); PlayerStockLock[player.nr] = 2; }); StageLock = CurrentMatch.PlayedStage; IsTiebreaker = true; } else { StageLock = (Stage)0; IsTiebreaker = false; if (ActiveRuleset.winnerCharacterLock || SetTracker.Instance.ActiveTourneyMode == TourneyMode.LOCAL_CREW) { Player.ForAllInMatch((Action)delegate(Player player) { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) PlayerCharacterLock[player.nr] = (((EnumWrapper)(object)player.Team == (EnumWrapper)(object)winner) ? new PlayerCharacter(player.CharacterSelected, player.CharacterVariant, player.Team) : PlayerCharacter.EMPTY); PlayerStockLock[player.nr] = ((SetTracker.Instance.ActiveTourneyMode == TourneyMode.LOCAL_CREW) ? scores[player.nr].Stocks : 0); }); } } LastWinnerOverride = Team.NONE; CompletedMatches.Add(CurrentMatch); CurrentMatch = null; } internal void AdjustWinCountOverride(Team team, int change) { if ((EnumWrapper)(object)team == (EnumWrapper)(object)Team.NONE || (WinCountOverride[(int)(EnumWrapper)(object)team] == 0 && change < 0)) { return; } WinCountOverride[(int)(EnumWrapper)(object)team] += change; if (TotalOverrideWins == 0) { LastWinnerOverride = Team.NONE; } else if (WinCountOverride[(int)(EnumWrapper)(object)team] == 0) { if ((EnumWrapper)(object)team == (EnumWrapper)(object)Team.RED) { LastWinnerOverride = Team.BLUE; } else if ((EnumWrapper)(object)team == (EnumWrapper)(object)Team.BLUE) { LastWinnerOverride = Team.RED; } } else if (change > 0) { LastWinnerOverride = team; } } internal void SetLastWinnerOverride(Team team) { LastWinnerOverride = team; } } internal class SetTracker { internal TourneyMode ActiveTourneyMode = TourneyMode.NONE; internal static SetTracker Instance { get; private set; } internal static ManualLogSource Log { get; private set; } internal Set CurrentSet { get; private set; } internal bool IsTrackingSet => CurrentSet != null; internal bool IsMode1v1 { get { TourneyMode activeTourneyMode = ActiveTourneyMode; if (1 == 0) { } bool result = ((activeTourneyMode == TourneyMode.LOCAL_1V1 || activeTourneyMode == TourneyMode.LOCAL_CREW) ? true : false); if (1 == 0) { } return result; } } internal bool IsModeDoubles { get { TourneyMode activeTourneyMode = ActiveTourneyMode; if (1 == 0) { } bool result = activeTourneyMode == TourneyMode.LOCAL_DOUBLES; if (1 == 0) { } return result; } } internal int NumPlayersInMatch { get { int sum = 0; Player.ForAllInMatch((Action)delegate(Player player) { if (!player.IsAI) { sum++; } }); return sum; } } internal static void Init() { Instance = new SetTracker(); Log = Logger.CreateLogSource("TM SetTracking"); Log.LogInfo((object)"TourneyMod set tracking initialized"); } internal void Start() { Log.LogInfo((object)("Starting new set in tourney mode " + Plugin.GetModeName(ActiveTourneyMode) + ", using ruleset " + Plugin.Instance.SelectedRulesets[ActiveTourneyMode].Id)); CurrentSet = new Set(Plugin.Instance.SelectedRulesets[ActiveTourneyMode]); } internal void End() { if (CurrentSet == null) { Log.LogWarning((object)"Tried to end set, but there wasn't one active"); return; } Log.LogInfo((object)"Ending set"); CurrentSet = null; } internal void Reset() { if (IsTrackingSet) { End(); } Start(); } internal Team GetPlayerTeam(int playerNumber) { if (IsMode1v1) { if (1 == 0) { } Team result = (Team)(playerNumber switch { 0 => Team.RED, 1 => Team.BLUE, _ => Team.NONE, }); if (1 == 0) { } return result; } if (IsModeDoubles) { if (1 == 0) { } Team result; switch (playerNumber) { case 0: case 1: result = Team.RED; break; case 2: case 3: result = Team.BLUE; break; default: result = Team.NONE; break; } if (1 == 0) { } return result; } return Team.NONE; } internal void ApplyGameOptions(GameSettings settings, GameOptions gameOptions) { //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_005e: 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_0078: Unknown result type (might be due to invalid IL or missing references) settings.stocks = gameOptions.stocks; settings.timeInfinite = gameOptions.timeInfinite; settings.time = gameOptions.time; settings.energy = gameOptions.energy; settings.useHP = gameOptions.hpFactor; settings.MinSpeed = gameOptions.minBallSpeed; settings.mMinSpeed = gameOptions.minBallSpeed; settings.ballType = gameOptions.ballType; settings.PowerupSelection = gameOptions.powerupSelection; settings.havePowerups = gameOptions.powerupSelection; } internal void ApplyInfiniteTimer(GameSettings settings) { settings.timeInfinite = true; } } } namespace TourneyMod.Rulesets { public class GameOptions { public readonly int stocks; public readonly bool timeInfinite; public readonly int time; public readonly int energy; public readonly HpFactor hpFactor; public readonly int minBallSpeed; public readonly BallType ballType; public readonly PowerupSelection powerupSelection; public GameOptions(int stocks, bool timeInfinite, int time, int energy, HpFactor hpFactor, int minBallSpeed, BallType ballType, PowerupSelection powerupSelection) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0036: 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) this.stocks = stocks; this.timeInfinite = timeInfinite; this.time = time; this.energy = energy; this.hpFactor = hpFactor; this.minBallSpeed = minBallSpeed; this.ballType = ballType; this.powerupSelection = powerupSelection; base..ctor(); } } public class Ruleset { public enum FirstTeam { WINNER, LOSER } public enum DsrMode { OFF, FULL_SET, LAST_WIN } public enum RandomStageMode { OFF, ANY_3D, ANY_2D, BOTH, ANY, ANY_LEGAL } public readonly string name; public readonly List stagesNeutral; public readonly List stagesCounterpick; public readonly int[][] banAmounts; public readonly PlayerTeam game1FirstTeam; public readonly FirstTeam laterGamesFirstTeam; public readonly DsrMode dsrMode; public readonly RandomStageMode randomStageMode; public readonly bool winnerCharacterLock; public readonly GameOptions GameOptions; public static readonly List STAGES_3D = new List(10) { (Stage)3, (Stage)4, (Stage)5, (Stage)6, (Stage)7, (Stage)8, (Stage)9, (Stage)10, (Stage)11, (Stage)12 }; public static readonly List STAGES_2D = new List(6) { (Stage)20, (Stage)22, (Stage)23, (Stage)24, (Stage)25, (Stage)26 }; public string Id { get; private set; } public bool HasGameOptions => GameOptions != null; public Ruleset(string name, List stagesNeutral, List stagesCounterpick, int[][] banAmounts, PlayerTeam game1FirstTeam, FirstTeam laterGamesFirstTeam, DsrMode dsrMode, RandomStageMode randomStageMode, bool winnerCharacterLock, GameOptions gameOptions) { this.name = name; this.stagesNeutral = stagesNeutral; this.stagesCounterpick = stagesCounterpick; this.banAmounts = banAmounts; this.game1FirstTeam = game1FirstTeam; this.laterGamesFirstTeam = laterGamesFirstTeam; this.dsrMode = dsrMode; this.randomStageMode = randomStageMode; this.winnerCharacterLock = winnerCharacterLock; GameOptions = gameOptions; base..ctor(); } internal void InitId(string id) { if (Id != null) { Plugin.LogGlobal.LogWarning((object)("Failed to set id '" + id + "' to ruleset with existing id '" + Id + "'")); } else { Id = id; } } internal static Team ConvertPlayerTeam(PlayerTeam team) { if (1 == 0) { } Team result = (Team)(team switch { PlayerTeam.RED => Team.RED, PlayerTeam.BLUE => Team.BLUE, PlayerTeam.YELLOW => Team.YELLOW, PlayerTeam.GREEN => Team.GREEN, _ => Team.NONE, }); if (1 == 0) { } return result; } internal static PlayerTeam ConvertTeam(Team team) { if ((EnumWrapper)(object)team == (EnumWrapper)(object)Team.RED) { return PlayerTeam.RED; } if ((EnumWrapper)(object)team == (EnumWrapper)(object)Team.BLUE) { return PlayerTeam.BLUE; } if ((EnumWrapper)(object)team == (EnumWrapper)(object)Team.YELLOW) { return PlayerTeam.YELLOW; } if ((EnumWrapper)(object)team == (EnumWrapper)(object)Team.GREEN) { return PlayerTeam.GREEN; } return PlayerTeam.NONE; } } internal static class RulesetIO { private const string DIRECTORY_NAME_DEFAULT = "rulesets-default"; private const string DIRECTORY_NAME_CUSTOM = "rulesets-custom"; internal static DirectoryInfo RulesetsDirectoryDefault; internal static DirectoryInfo RulesetsDirectoryCustom; internal static Dictionary RulesetsDefault; internal static Dictionary RulesetsCustom; internal static void Init() { string path = Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)Plugin.Instance).Info.Location), "rulesets-default"); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } RulesetsDirectoryDefault = new DirectoryInfo(path); DirectoryInfo modSubFolder = ModdingFolder.GetModSubFolder(((BaseUnityPlugin)Plugin.Instance).Info); string path2 = Path.Combine(modSubFolder.FullName, "rulesets-custom"); if (!Directory.Exists(path2)) { Directory.CreateDirectory(path2); } RulesetsDirectoryCustom = new DirectoryInfo(path2); RulesetsDefault = new Dictionary(); foreach (FileInfo item in from f in RulesetsDirectoryDefault.GetFiles() orderby f.Name select f) { Ruleset ruleset = LoadRulesetFile(item); if (ruleset != null) { if (RulesetsDefault.ContainsKey(ruleset.Id)) { Plugin.LogGlobal.LogWarning((object)("Failed to load default ruleset '" + ruleset.Id + "': ruleset with id '" + ruleset.Id + "' already exists")); } else { Plugin.LogGlobal.LogInfo((object)("Loaded default ruleset: " + ruleset.Id)); RulesetsDefault.Add(ruleset.Id, ruleset); } } } RulesetsCustom = new Dictionary(); foreach (FileInfo item2 in from f in RulesetsDirectoryCustom.GetFiles() orderby f.Name select f) { Ruleset ruleset2 = LoadRulesetFile(item2); if (ruleset2 != null) { if (RulesetsDefault.ContainsKey(ruleset2.Id) || RulesetsCustom.ContainsKey(ruleset2.Id)) { Plugin.LogGlobal.LogWarning((object)("Failed to load custom ruleset '" + ruleset2.Id + "': ruleset with id '" + ruleset2.Id + "' already exists")); } else { Plugin.LogGlobal.LogInfo((object)("Loaded custom ruleset: " + ruleset2.Id)); RulesetsCustom.Add(ruleset2.Id, ruleset2); } } } } private static Ruleset LoadRulesetFile(FileInfo file) { if (!file.Name.Contains(".json")) { return null; } string id = file.Name.Replace(".json", ""); string text = JsonIO.ReadFile(file); Ruleset ruleset = JSONParser.FromJson(text); ruleset.InitId(id); return ruleset; } internal static Ruleset GetRulesetById(string id) { if (RulesetsDefault.ContainsKey(id)) { return RulesetsDefault[id]; } if (RulesetsCustom.ContainsKey(id)) { return RulesetsCustom[id]; } return null; } } } namespace TourneyMod.PlayerTags { public class PlayerTag { internal static readonly PlayerTag DEFAULT = new PlayerTag(isDefault: true); private string name; private bool isEditing; public MovementKeys movementKeys; public Dictionary> inputBindings; internal bool IsDefault { get; private set; } private PlayerTag(bool isDefault) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) IsDefault = isDefault; name = ""; isEditing = false; inputBindings = new Dictionary>(); movementKeys = (MovementKeys)1; } internal PlayerTag() { IsDefault = false; isEditing = false; inputBindings = new Dictionary>(); } internal void SetName(string name) { if (this.name != null) { Plugin.LogGlobal.LogWarning((object)("Failed to set name '" + name + "' for player tag with existing name '" + this.name + "'")); } else { this.name = name; } } internal string GetName() { return name; } internal void SetEditing(bool isEditing) { this.isEditing = isEditing; } internal bool GetEditing() { return isEditing; } internal MovementKeys GetMovementKeys() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Invalid comparison between Unknown and I4 //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) if ((int)movementKeys == 0) { if (!IsDefault) { Plugin.LogGlobal.LogWarning((object)("Tag '" + name + "' keyboard movement keys not found: creating defaults")); } SetMovementKeys((MovementKeys)1); } return movementKeys; } internal void SetMovementKeys(MovementKeys mk) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Unknown result type (might be due to invalid IL or missing references) movementKeys = mk; if (!IsDefault) { PlayerTagIO.SavePlayerTag(this); } } internal List GetBindings(string hardwareName) { List list; if (!inputBindings.ContainsKey(hardwareName)) { if (!IsDefault) { Plugin.LogGlobal.LogWarning((object)("Tag '" + name + "' bindings for hardware '" + hardwareName + "' not found: creating defaults")); } list = InputHandler.GetDefaultConfig(hardwareName); SetBindings(hardwareName, list); } else { list = inputBindings[hardwareName]; } return list; } internal void SetBindings(string hardwareName, List list) { if (inputBindings.ContainsKey(hardwareName)) { inputBindings[hardwareName] = list; } else { inputBindings.Add(hardwareName, list); } if (!IsDefault) { PlayerTagIO.SavePlayerTag(this); Plugin.Instance.UpdateAllWithTag(this); } } } public static class PlayerTagIO { private const string DIRECTORY_NAME = "player-tags"; internal static DirectoryInfo PlayerTagsDirectory; internal static Dictionary PlayerTags; public static void Init() { DirectoryInfo modSubFolder = ModdingFolder.GetModSubFolder(((BaseUnityPlugin)Plugin.Instance).Info); string path = Path.Combine(modSubFolder.FullName, "player-tags"); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } PlayerTagsDirectory = new DirectoryInfo(path); PlayerTags = new Dictionary(); foreach (FileInfo item in from f in PlayerTagsDirectory.GetFiles() orderby f.Name select f) { PlayerTag playerTag = LoadTagFile(item); if (playerTag != null) { if (PlayerTags.ContainsKey(playerTag.GetName().ToLower())) { Plugin.LogGlobal.LogWarning((object)("Failed to load player tag '" + playerTag.GetName() + "': player tag with name '" + PlayerTags[playerTag.GetName().ToLower()].GetName() + "' (case insensitive) already exists")); } else { Plugin.LogGlobal.LogInfo((object)("Loaded player tag: " + playerTag.GetName())); PlayerTags.Add(playerTag.GetName().ToLower(), playerTag); } } } } private static PlayerTag LoadTagFile(FileInfo file) { if (!file.Name.Contains(".json")) { return null; } string name = file.Name.Replace(".json", ""); string text = JsonIO.ReadFile(file); PlayerTag playerTag = JSONParser.FromJson(text); playerTag.SetName(name); return playerTag; } internal static PlayerTag CreatePlayerTag(string name) { if (Utility.IsNullOrWhiteSpace(name)) { return null; } PlayerTag playerTagByName = GetPlayerTagByName(name); if (playerTagByName != null) { Plugin.LogGlobal.LogWarning((object)("Could not create player tag '" + name + "': a tag with name '" + playerTagByName.GetName() + "' (case insensitive) already exists!")); return playerTagByName; } PlayerTag playerTag = new PlayerTag(); playerTag.SetName(name); Plugin.LogGlobal.LogInfo((object)("Created new player tag '" + name + "'")); SavePlayerTag(playerTag); PlayerTags.Add(name.ToLower(), playerTag); return playerTag; } internal static void SavePlayerTag(PlayerTag playerTag) { Plugin.LogGlobal.LogInfo((object)("Saving player tag '" + playerTag.GetName() + "'")); string path = Path.Combine(PlayerTagsDirectory.FullName, playerTag.GetName() + ".json"); string data = JSONWriter.ToJson((object)playerTag); JsonIO.WriteFile(path, data); } internal static PlayerTag GetPlayerTagByName(string name) { if (PlayerTags.ContainsKey(name.ToLower())) { return PlayerTags[name.ToLower()]; } return null; } } } namespace TourneyMod.Patches { internal static class CursorPatch { private struct CursorInfo { internal UIControl control; internal CursorState mainState; internal CursorState[] playerStates; public CursorInfo(UIControl control, CursorState mainState, CursorState[] playerStates) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) this.control = control; this.mainState = mainState; this.playerStates = playerStates; } } [HarmonyPatch(typeof(HPNLMFHPHFD), "KOLLNKIKIKM")] [HarmonyPrefix] private static void OpenStageSelect_Prefix(HPNLMFHPHFD __instance, ref CursorInfo __state) { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) CursorState[] playerStates = (CursorState[])(object)new CursorState[4]; Player.ForAll((Action)delegate(Player player) { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Expected I4, but got Unknown playerStates[player.nr] = (CursorState)(int)player.cursor.GetState(); }); __state = new CursorInfo(UIInput.GetControl(), UIInput.mainCursor.GetState(), playerStates); } [HarmonyPatch(typeof(HPNLMFHPHFD), "KOLLNKIKIKM")] [HarmonyPostfix] private static void OpenStageSelect_Postfix(HPNLMFHPHFD __instance, ref CursorInfo __state) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Invalid comparison between Unknown and I4 //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Invalid comparison between Unknown and I4 //IL_0021: Unknown result type (might be due to invalid IL or missing references) UIInput.SetControl(__state.control); if ((int)__state.control == 3) { UIInput.mainCursor.SetState(__state.mainState); } else if ((int)__state.control == 2) { CursorState[] playerStates = __state.playerStates; Player.ForAll((Action)delegate(Player player) { player.cursor.SetState(playerStates[player.nr]); }); } Cursors.ResetCursorColors(); } [HarmonyPatch(typeof(HPNLMFHPHFD), "IENCHDCADEA")] [HarmonyPrefix] private static void OpenOptions_Prefix(HPNLMFHPHFD __instance, ref CursorInfo __state) { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) CursorState[] playerStates = (CursorState[])(object)new CursorState[4]; Player.ForAll((Action)delegate(Player player) { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Expected I4, but got Unknown playerStates[player.nr] = (CursorState)(int)player.cursor.GetState(); }); __state = new CursorInfo(UIInput.GetControl(), UIInput.mainCursor.GetState(), playerStates); } [HarmonyPatch(typeof(HPNLMFHPHFD), "IENCHDCADEA")] [HarmonyPostfix] private static void OpenOptions_Postfix(HPNLMFHPHFD __instance, ref CursorInfo __state) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Invalid comparison between Unknown and I4 //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Invalid comparison between Unknown and I4 //IL_0021: Unknown result type (might be due to invalid IL or missing references) UIInput.SetControl(__state.control); if ((int)__state.control == 3) { UIInput.mainCursor.SetState(__state.mainState); } else if ((int)__state.control == 2) { CursorState[] playerStates = __state.playerStates; Player.ForAll((Action)delegate(Player player) { player.cursor.SetState(playerStates[player.nr]); }); } Cursors.ResetCursorColors(); } [HarmonyPatch(typeof(UIInput), "HandleCursors")] [HarmonyPostfix] private static void HandleCursors_Postfix() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Invalid comparison between Unknown and I4 if ((int)UIInput.uiControl == 2) { if (!Plugin.Instance.RecolorCursors) { Cursors.ResetCursorColors(); } else { Cursors.UpdateCursorColors(StageStrikeTracker.Instance.CurrentStrikeInfo.ControllingTeam); } } } } internal static class HarmonyPatches { internal static void PatchAll() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown Harmony val = new Harmony("avgduck.plugins.llb.tourneymod"); val.PatchAll(typeof(SetTrackingPatch)); Plugin.LogGlobal.LogInfo((object)"Set tracking patch applied"); val.PatchAll(typeof(PlayerTagPatch)); Plugin.LogGlobal.LogInfo((object)"Player tag patch applied"); val.PatchAll(typeof(ScreenReplacePatch)); Plugin.LogGlobal.LogInfo((object)"Screen replacement patch applied"); val.PatchAll(typeof(StageSelectPatch)); Plugin.LogGlobal.LogInfo((object)"Stage select patch applied"); val.PatchAll(typeof(LobbyPatch)); Plugin.LogGlobal.LogInfo((object)"Lobby patch applied"); val.PatchAll(typeof(CursorPatch)); Plugin.LogGlobal.LogInfo((object)"Cursor patch applied"); val.PatchAll(typeof(ScreenResultsPatch)); Plugin.LogGlobal.LogInfo((object)"Results screen patch applied"); } } internal static class LobbyPatch { [HarmonyPatch(typeof(ScreenPlayers), "ShowCpuButtons")] [HarmonyPrefix] private static void ScreenPlayers_ShowCpuButtons_Prefix(ScreenPlayers __instance, ref bool visible) { ScreenLobbyTourney screenLobbyTourney = __instance as ScreenLobbyTourney; if (!((Object)(object)screenLobbyTourney == (Object)null)) { visible = false; } } [HarmonyPatch(typeof(ScreenPlayers), "UpdateTeamButtons")] [HarmonyPrefix] private static bool ScreenPlayers_UpdateTeamButtons_Prefix(ScreenPlayers __instance) { //IL_0080: Unknown result type (might be due to invalid IL or missing references) ScreenLobby screenLobby = __instance as ScreenLobby; if ((Object)(object)screenLobby == (Object)null) { return true; } ScreenLobbyTourney screenLobbyTourney = __instance as ScreenLobbyTourney; if ((Object)(object)screenLobbyTourney == (Object)null) { if (((ScreenPlayers)screenLobby).playerSelections == null || ((ScreenPlayers)screenLobby).playerSelections.Length < 4) { return false; } for (int i = 0; i < 4; i++) { bool flag = screenLobby.playerTagMenus != null && ((Component)screenLobby.playerTagMenus[i]).gameObject.activeSelf; bool flag2 = NCMFHODLNAJ.BABJPAPBMIP(GameSettings.current.gameMode); ((LLClickable)((ScreenPlayers)screenLobby).playerSelections[i].btTeam).SetActive(flag2 && !flag); ((LLClickable)((ScreenPlayers)screenLobby).playerSelections[i].btSkin).SetActive(!flag); } return false; } PlayersSelection[] playerSelections = __instance.playerSelections; foreach (PlayersSelection val in playerSelections) { ((LLClickable)val.btTeam).SetActive(false); } return false; } [HarmonyPatch(typeof(ALDOKEMAOMB), "MLFHMGNCMNA")] [HarmonyPrefix] private static bool Player_ResetTeam_Prefix(ALDOKEMAOMB __instance) { if (SetTracker.Instance.ActiveTourneyMode == TourneyMode.NONE) { return true; } Player val = Player.op_Implicit(__instance); if (SetTracker.Instance.IsMode1v1) { val.Team = ((val.nr == 0) ? Team.RED : Team.BLUE); } else if (SetTracker.Instance.IsModeDoubles) { val.Team = ((val.nr <= 1) ? Team.RED : Team.BLUE); } return false; } [HarmonyPatch(typeof(HPNLMFHPHFD), "DJHHLDPLFMD")] [HarmonyPrefix] private static bool GameStatesLobby_IsStartEnabled_Prefix(ref bool __result) { if (!SetTracker.Instance.IsModeDoubles) { return true; } int nReady = 0; Player.ForAllInMatch((Action)delegate(Player player) { if (player.selected) { nReady++; } }); __result = nReady == 4; return false; } [HarmonyPatch(typeof(ScreenPlayers), "ShowOptionsButton")] [HarmonyPrefix] private static void ScreenPlayers_ShowOptionsButton_Prefix(ref bool enabled) { if (SetTracker.Instance.IsTrackingSet && SetTracker.Instance.CurrentSet.ActiveRuleset.HasGameOptions) { enabled = false; } } [HarmonyPatch(typeof(HPNLMFHPHFD), "GNCDBOBHOHN")] [HarmonyPrefix] private static void GameStatesLobby_AddPlayer_Prefix(ref ALDOKEMAOMB LGACHGEPNNH) { //IL_0067: Unknown result type (might be due to invalid IL or missing references) Player val = Player.op_Implicit(LGACHGEPNNH); if (SetTracker.Instance.ActiveTourneyMode != 0 && !((EnumWrapper)(object)SetTracker.Instance.CurrentSet.LastWinnerOverride != (EnumWrapper)(object)Team.NONE)) { PlayerCharacter playerCharacter = SetTracker.Instance.CurrentSet.PlayerCharacterLock[val.nr]; if (!playerCharacter.IsEmpty) { val.variant = playerCharacter.variant; } } } [HarmonyPatch(typeof(HPNLMFHPHFD), "BDMIDGAHNLA")] [HarmonyPrefix] private static void GameStatesLobby_UpdatePlayer_Prefix(ref ALDOKEMAOMB LGACHGEPNNH) { //IL_0067: Unknown result type (might be due to invalid IL or missing references) if (SetTracker.Instance.ActiveTourneyMode != 0 && !((EnumWrapper)(object)SetTracker.Instance.CurrentSet.LastWinnerOverride != (EnumWrapper)(object)Team.NONE)) { Player val = Player.op_Implicit(LGACHGEPNNH); PlayerCharacter playerCharacter = SetTracker.Instance.CurrentSet.PlayerCharacterLock[val.nr]; if (!playerCharacter.IsEmpty) { val.CharacterSelected = playerCharacter.character; val.selected = true; } } } [HarmonyPatch(typeof(ScreenPlayers), "AddCharacters")] [HarmonyPostfix] private static void ScreenPlayers_AddCharacters_Postfix(ScreenPlayers __instance) { //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Expected O, but got Unknown PlayersCharacterButton[] characterButtons = __instance.characterButtons; foreach (PlayersCharacterButton val in characterButtons) { ControlDelegate onClick = ((LLClickable)val.btCharacter).onClick; ((LLClickable)val.btCharacter).onClick = (ControlDelegate)delegate(int playerNr) { if (SetTracker.Instance.ActiveTourneyMode == TourneyMode.NONE || playerNr == -1 || SetTracker.Instance.CurrentSet.PlayerCharacterLock[playerNr].IsEmpty || !((EnumWrapper)(object)SetTracker.Instance.CurrentSet.LastWinnerOverride == (EnumWrapper)(object)Team.NONE)) { onClick.Invoke(playerNr); } }; } } [HarmonyPatch(typeof(HPNLMFHPHFD), "BFKBMEJONDL")] [HarmonyPostfix] private static void CloseOptions_Postfix() { Plugin.Instance.ScoreEditMenuOpen = false; } [HarmonyPatch(typeof(HPNLMFHPHFD), "DJHHLDPLFMD")] [HarmonyPatch(typeof(HFAEJNGHDDM), "DJHHLDPLFMD")] [HarmonyPrefix] private static bool GameStatesLobby_IsStartEnabled_Prefix(HPNLMFHPHFD __instance, ref bool __result) { ScreenPlayers iMLMFFIEEAJ = __instance.IMLMFFIEEAJ; ScreenLobby screenLobby = iMLMFFIEEAJ as ScreenLobby; if ((Object)(object)screenLobby == (Object)null) { return true; } for (int i = 0; i < 4; i++) { if (screenLobby.playerTagMenus != null && ((Component)screenLobby.playerTagMenus[i]).gameObject.activeSelf) { __result = false; return false; } } return true; } [HarmonyPatch(typeof(HPNLMFHPHFD), "GNBKBMENOMO")] [HarmonyPostfix] private static void GameStatesLobby_RemovePlayer_Postfix(HPNLMFHPHFD __instance, ALDOKEMAOMB LGACHGEPNNH) { ScreenPlayers iMLMFFIEEAJ = __instance.IMLMFFIEEAJ; ScreenLobby screenLobby = iMLMFFIEEAJ as ScreenLobby; if (!((Object)(object)screenLobby == (Object)null) && screenLobby.playerTagMenus != null) { Player val = Player.op_Implicit(LGACHGEPNNH); screenLobby.OnEject(val.nr); } } [HarmonyPatch(typeof(HPNLMFHPHFD), "BDMIDGAHNLA")] [HarmonyPostfix] private static void GameStatesLobby_UpdatePlayer_Postfix(HPNLMFHPHFD __instance, ALDOKEMAOMB LGACHGEPNNH) { //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_0128: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: 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) ScreenPlayers iMLMFFIEEAJ = __instance.IMLMFFIEEAJ; ScreenLobby screenLobby = iMLMFFIEEAJ as ScreenLobby; if ((Object)(object)screenLobby == (Object)null || screenLobby.playerTagMenus == null) { return; } Player val = Player.op_Implicit(LGACHGEPNNH); PlayerTag playerTag = Plugin.Instance.GetPlayerTag(val.nr); if ((val.IsInMatch || val.IsSpectator) && val.isLocal) { if (playerTag.IsDefault || val.IsAI) { ((ScreenPlayers)screenLobby).SetPlayerName(val.nr, $"PLAYER{val.nr + 1}"); ((ScreenPlayers)screenLobby).playerSelections[val.nr].btPlayerName.colDefault = PlayerTagMenuLobby.COLOR_TAG_DEFAULT; ((Graphic)((ScreenPlayers)screenLobby).playerSelections[val.nr].btPlayerName.textMesh).color = PlayerTagMenuLobby.COLOR_TAG_DEFAULT; } else { ((ScreenPlayers)screenLobby).SetPlayerName(val.nr, playerTag.GetName()); ((ScreenPlayers)screenLobby).playerSelections[val.nr].btPlayerName.colDefault = PlayerTagMenuLobby.COLOR_TAG_CUSTOM; ((Graphic)((ScreenPlayers)screenLobby).playerSelections[val.nr].btPlayerName.textMesh).color = PlayerTagMenuLobby.COLOR_TAG_CUSTOM; } } } [HarmonyPatch(typeof(GameHudPlayerInfo), "SetPlayer")] [HarmonyPostfix] private static void GameHudPlayerInfo_SetPlayer_Postfix(GameHudPlayerInfo __instance, ALDOKEMAOMB player) { Player val = Player.op_Implicit(player); if (!GameSettings.IsOnline) { PlayerTag playerTag = Plugin.Instance.GetPlayerTag(val.nr); if (!playerTag.IsDefault) { TextHandler.SetTextBestFont(__instance.lbName, playerTag.GetName()); } } } } public class PlayerTagPatch { [HarmonyPatch(typeof(HGFCCNMEEEF), "JLGCJFEFDLI")] [HarmonyPostfix] private static void GameStatesOptions_InputConfigAddController_Postfix(Controller GDEMBCKIDMA) { }//IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) [HarmonyPatch(typeof(HGFCCNMEEEF), "PCBBCFNFDJL")] [HarmonyPrefix] private static bool GameStatesOptions_SetupBarsInput_Prefix(HGFCCNMEEEF __instance) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003f: 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_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0061: 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_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0071: 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_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Expected O, but got Unknown //IL_0091: 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_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Expected O, but got Unknown //IL_0159: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Unknown result type (might be due to invalid IL or missing references) //IL_0167: Expected O, but got Unknown //IL_016a: Unknown result type (might be due to invalid IL or missing references) //IL_0184: Unknown result type (might be due to invalid IL or missing references) //IL_018b: Unknown result type (might be due to invalid IL or missing references) //IL_0192: Expected O, but got Unknown //IL_0195: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_01a8: Unknown result type (might be due to invalid IL or missing references) //IL_01af: Expected O, but got Unknown //IL_01b2: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Expected O, but got Unknown ScreenInput screenInput = __instance.CNINOFJOLNP as ScreenInput; if ((Object)(object)screenInput == (Object)null) { return true; } HNEDEAGADKO val = (HNEDEAGADKO)0; HNEDEAGADKO val2 = (HNEDEAGADKO)400; ((ScreenOptions)screenInput).offsetBars = new Vector3(-6.4f, -36f, 0f); ((ScreenOptions)screenInput).posBarNext = ((ScreenOptions)screenInput).posBarNext - ((ScreenOptions)screenInput).offsetBars; PlayerTagMenuOptions.BarStartPos = Vector2.op_Implicit(((ScreenOptions)screenInput).posBarNext); PlayerTagMenuOptions.BarOffset = Vector2.op_Implicit(((ScreenOptions)screenInput).offsetBars); OptionsBarInputConfig val3 = (OptionsBarInputConfig)((ScreenOptions)screenInput).AddBar((OptionsBarType)4, string.Empty, val, (List)null); val3.inputConfigBarType = (InputConfigBarType)1; foreach (int item in InputAction.EConfigurables()) { string inputActionName = TextHandler.GetInputActionName(item); OptionsBarInputConfig val4 = (OptionsBarInputConfig)((ScreenOptions)screenInput).AddBar((OptionsBarType)4, inputActionName, val2, (List)null); val4.inputAction = item; if (item == InputAction.SWING || item == InputAction.BUNT || item == InputAction.JUMP || item == InputAction.GRAB) { OptionsBarInputConfig val5 = (OptionsBarInputConfig)((ScreenOptions)screenInput).AddBar((OptionsBarType)4, string.Empty, val2, (List)null); val5.inputAction = item; val5.altInput = true; } } OptionsBarInputConfig val6 = (OptionsBarInputConfig)((ScreenOptions)screenInput).AddBar((OptionsBarType)4, TextHandler.Get("OPTIONS_MOVEMENT", new string[0]), val, (List)null); val6.inputConfigBarType = (InputConfigBarType)4; CustomOptionsBarInputConfig customOptionsBarInputConfig = screenInput.AddCustomInputConfigBar(CustomInputConfigBarType.TAG_MENU_TOGGLE, "Tag"); OptionsBarInputConfig val7 = (OptionsBarInputConfig)((ScreenOptions)screenInput).AddBar((OptionsBarType)4, string.Empty, val, (List)null); val7.inputConfigBarType = (InputConfigBarType)2; OptionsBarInputConfig val8 = (OptionsBarInputConfig)((ScreenOptions)screenInput).AddBar((OptionsBarType)4, string.Empty, val, (List)null); val8.inputConfigBarType = (InputConfigBarType)3; screenInput.SetupPlayerTagMenu(); return false; } [HarmonyPatch(typeof(HGFCCNMEEEF), "GDOBNEONNII")] [HarmonyPostfix] private static void GameStatesOptions_InitInputConfig_Postfix(HGFCCNMEEEF __instance) { ScreenInput screenInput = __instance.CNINOFJOLNP as ScreenInput; if (!((Object)(object)screenInput == (Object)null)) { screenInput.UpdateBarButtons(); } } [HarmonyPatch(typeof(OptionsBarInputConfig), "AddController")] [HarmonyPrefix] private static bool OptionsBarInputConfig_AddController_Prefix(OptionsBarInputConfig __instance, JBKFDDKLDDG inputConfigController) { CustomOptionsBarInputConfig customOptionsBarInputConfig = __instance as CustomOptionsBarInputConfig; if ((Object)(object)customOptionsBarInputConfig == (Object)null) { return true; } customOptionsBarInputConfig.CustomAddController(inputConfigController); return false; } [HarmonyPatch(typeof(ScreenOptions), "RemoveController")] [HarmonyPostfix] private static void ScreenOptions_RemoveController_Prefix(ScreenOptions __instance, JBKFDDKLDDG inputConfigController) { ScreenInput screenInput = __instance as ScreenInput; if (!((Object)(object)screenInput == (Object)null)) { screenInput.OnRemoveController(inputConfigController); } } [HarmonyPatch(typeof(InputConfigElement), "UpdateLooks")] [HarmonyPrefix] private static bool InputConfigElement_UpdateLooks_Prefix(InputConfigElement __instance) { if (!(__instance is CustomInputConfigElement customInputConfigElement)) { return true; } customInputConfigElement.CustomUpdateLooks(); return false; } [HarmonyPatch(typeof(InputConfigElement), "ButtonClick")] [HarmonyPrefix] private static bool InputConfigElement_ButtonClick_Prefix(InputConfigElement __instance, int playerNr) { if (!(__instance is CustomInputConfigElement customInputConfigElement)) { return true; } customInputConfigElement.CustomButtonClick(playerNr); return false; } [HarmonyPatch(typeof(InputConfigElement), "ButtonClick")] [HarmonyPostfix] private static void InputConfigElement_ButtonClick_Postfix(InputConfigElement __instance) { ScreenInput screenInput = UIScreen.GetScreen((ScreenType)31) as ScreenInput; if ((Object)(object)screenInput != (Object)null) { screenInput.UpdateBarButtons(); } } [HarmonyPatch(typeof(InputHandler), "LoadConfig")] [HarmonyPostfix] private static void InputHandler_LoadConfig_Postfix(Player rePlayer, string hardwareName, ControllerType controllerType) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) Plugin.Instance.LoadTagConfig(rePlayer, hardwareName, controllerType); Plugin.Instance.LoadTagMovementKeys(); } [HarmonyPatch(typeof(JBKFDDKLDDG), "HHBBAKCECEP")] [HarmonyPrefix] private static void InputConfigController_Button1_Prefix(JBKFDDKLDDG __instance, ref bool __state) { __state = __instance.DJFKIGINECC; } [HarmonyPatch(typeof(JBKFDDKLDDG), "HHBBAKCECEP")] [HarmonyPostfix] private static void InputConfigController_Button1_Postfix(JBKFDDKLDDG __instance, bool __state) { //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) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) if (__state) { Controller gDEMBCKIDMA = __instance.GDEMBCKIDMA; PlayerTag playerTag = Plugin.Instance.GetPlayerTag(gDEMBCKIDMA); if (((Controller)(ref gDEMBCKIDMA)).IncludesMouse()) { playerTag.SetMovementKeys(InputHandler.movementKeys); } playerTag.SetBindings(((Controller)(ref gDEMBCKIDMA)).GetHardwareName(), PPHBCKEFJEP.JMNLMPPOEDC(__instance.PIPEFDJDICP)); } } [HarmonyPatch(typeof(JBKFDDKLDDG), "GMCFPNDNNJP")] [HarmonyPrefix] private static void InputConfigController_Button2_Prefix(JBKFDDKLDDG __instance, ref bool __state) { __state = __instance.DJFKIGINECC; } [HarmonyPatch(typeof(JBKFDDKLDDG), "GMCFPNDNNJP")] [HarmonyPostfix] private static void InputConfigController_Button2_Postfix(JBKFDDKLDDG __instance, bool __state) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0033: 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) if (!__state) { Controller gDEMBCKIDMA = __instance.GDEMBCKIDMA; PlayerTag playerTag = Plugin.Instance.GetPlayerTag(gDEMBCKIDMA); if (!((Controller)(ref gDEMBCKIDMA)).IncludesMouse()) { InputHandler.SetMovementKeys(Plugin.Instance.SelectedPlayerTagKeyboard.GetMovementKeys()); } if (((Controller)(ref gDEMBCKIDMA)).IncludesMouse()) { playerTag.SetMovementKeys(InputHandler.movementKeys); } playerTag.SetBindings(((Controller)(ref gDEMBCKIDMA)).GetHardwareName(), PPHBCKEFJEP.JMNLMPPOEDC(__instance.PIPEFDJDICP)); } } } internal static class ScreenReplacePatch { [HarmonyPatch(typeof(JPLELOFJOOH), "HNHBCLJGPCE")] [HarmonyPostfix] private static void Assets_SpawnScreen_Postfix(ref GameObject __result, ScreenType FLMBCGMOCKC) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Invalid comparison between Unknown and I4 //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Invalid comparison between Unknown and I4 //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Invalid comparison between Unknown and I4 //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Invalid comparison between Unknown and I4 //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Invalid comparison between Unknown and I4 //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Invalid comparison between Unknown and I4 //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Invalid comparison between Unknown and I4 //IL_014c: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Invalid comparison between Unknown and I4 //IL_016f: Unknown result type (might be due to invalid IL or missing references) //IL_0172: Invalid comparison between Unknown and I4 //IL_0192: Unknown result type (might be due to invalid IL or missing references) //IL_0195: Invalid comparison between Unknown and I4 if ((int)FLMBCGMOCKC == 3) { ReplaceScreen(ref __result); } else if ((int)FLMBCGMOCKC == 6 && Plugin.Instance.TourneyMenuOpen) { ReplaceScreen(ref __result); } else if ((int)FLMBCGMOCKC == 9 && (Plugin.Instance.RulesetsMenuOpen || Plugin.Instance.SetPreviewMenuOpen)) { Object.Destroy((Object)(object)__result); } else if ((int)FLMBCGMOCKC == 13 && Plugin.Instance.RulesetsMenuOpen) { ReplaceScreen(ref __result); } else if ((int)FLMBCGMOCKC == 13 && Plugin.Instance.SetPreviewMenuOpen) { ReplaceScreen(ref __result); } else if ((int)FLMBCGMOCKC == 31 && (EnumWrapper)(object)GameStates.GetCurrent() == (EnumWrapper)(object)GameState.OPTIONS_INPUT) { ReplaceScreen(ref __result); } else if ((int)FLMBCGMOCKC == 15 && (EnumWrapper)(object)GameStates.GetCurrent() != (EnumWrapper)(object)GameState.LOBBY_TRAINING && (EnumWrapper)(object)GameStates.GetCurrent() != (EnumWrapper)(object)GameState.LOBBY_ONLINE && SetTracker.Instance.IsTrackingSet) { if (SetTracker.Instance.ActiveTourneyMode == TourneyMode.NONE) { ReplaceScreen(ref __result); } else { ReplaceScreen(ref __result); } } else if ((int)FLMBCGMOCKC == 16 && Plugin.Instance.ScoreEditMenuOpen) { ReplaceScreen(ref __result); } else if ((int)FLMBCGMOCKC == 17 && SetTracker.Instance.IsTrackingSet) { ReplaceScreen(ref __result); } else if ((int)FLMBCGMOCKC == 18 && SetTracker.Instance.IsTrackingSet) { ReplaceScreen(ref __result); } } private static void ReplaceScreen(ref GameObject screen) where T1 : ScreenBase where T2 : T1, ICustomScreen { T1 component = screen.GetComponent(); if ((Object)(object)component == (Object)null) { Plugin.LogGlobal.LogError((object)$"Error attempting to replace screen {typeof(T2)} with {typeof(T1)}"); return; } T2 val = screen.AddComponent(); val.Init(component); Object.DestroyImmediate((Object)(object)component); } [HarmonyPatch(typeof(IOGKKINMEFB), "CJAOMBCFJJO")] [HarmonyPostfix] private static void GameStatesMenu_SetMenu_Postfix() { if (UIScreen.GetScreen(1) is IMenuTitle menuTitle) { IOGKKINMEFB.PPGAIOHGPAK.SetTitle(menuTitle.GetCustomTitle()); } } [HarmonyPatch(typeof(OGKPCMDOMPF), "CJAOMBCFJJO")] [HarmonyPostfix] private static void GameStatesUnlocks_SetMenu_Postfix() { if (UIScreen.GetScreen(1) is IMenuTitle menuTitle) { IOGKKINMEFB.PPGAIOHGPAK.SetTitle(menuTitle.GetCustomTitle()); } } [HarmonyPatch(typeof(HPNLMFHPHFD), "GNBKBMENOMO")] [HarmonyPostfix] private static void RemovePlayer_Postfix(ALDOKEMAOMB LGACHGEPNNH) { Player val = Player.op_Implicit(LGACHGEPNNH); VoteButton.RemovePlayer(val.nr); } [HarmonyPatch(typeof(ScreenMenuMain), "Awake")] [HarmonyPrefix] private static bool ScreenMenuMain_Awake_Prefix(ScreenMenuMain __instance) { ScreenMenuMain screenMenuMain = __instance as ScreenMenuMain; if ((Object)(object)screenMenuMain == (Object)null) { return true; } return false; } [HarmonyPatch(typeof(IOGKKINMEFB), "DAHCMIOPGDM")] [HarmonyTranspiler] private static IEnumerable GameStatesMenu_MenuProcessMsg_Transpiler(IEnumerable instructions) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Expected O, but got Unknown //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Expected O, but got Unknown //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Expected O, but got Unknown //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Expected O, but got Unknown CodeMatcher val = new CodeMatcher(instructions, (ILGenerator)null); val.End(); val.MatchBack(false, (CodeMatch[])(object)new CodeMatch[3] { new CodeMatch((OpCode?)OpCodes.Ldloc_S, (object)null, (string)null), new CodeMatch((OpCode?)OpCodes.Ldfld, (object)typeof(ScreenMenuMain).GetField("btVersus"), (string)null), new CodeMatch((OpCode?)OpCodes.Call, (object)null, (string)null) }); CodeInstruction instruction = val.Instruction; val.Advance(3); val.Insert((CodeInstruction[])(object)new CodeInstruction[2] { instruction, Transpilers.EmitDelegate>((Action)delegate(ScreenMenuMain screenMenuMain) { if (Plugin.Instance.TourneyMenuOpen) { ScreenMenuMain screenMenuMain2 = screenMenuMain as ScreenMenuMain; if (!((Object)(object)screenMenuMain2 == (Object)null)) { UIScreen.SetFocus((LLClickable)(object)screenMenuMain2.btTourney); Plugin.Instance.TourneyMenuOpen = false; Plugin.Instance.RulesetsMenuOpen = false; } } }) }); return val.InstructionEnumeration(); } [HarmonyPatch(typeof(OGKPCMDOMPF), "ProcessMsg")] [HarmonyPrefix] private static bool GameStatesUnlocks_ProcessMsg_Prefix(JOFJHDJHJGI OHBPPCEFBHI, Message EIMJOIEPMNA) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //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_002c: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 Msg msg = EIMJOIEPMNA.msg; if (!Plugin.Instance.RulesetsMenuOpen && !Plugin.Instance.SetPreviewMenuOpen) { return true; } if ((int)msg != 2) { return true; } ((ScreenBase)OGKPCMDOMPF.screenMenu).SetActive(true); ((LLClickable)OGKPCMDOMPF.screenMenu.btBack).OnHoverOut(-1); GameStates.ClearMessages(); IOGKKINMEFB.CDAGGNOHLNK((ScreenType)6, (ScreenTransition)2, true, "", "", -1, (string)null, false); return false; } [HarmonyPatch(typeof(IOGKKINMEFB), "CDAGGNOHLNK")] [HarmonyPrefix] private static void GameStatesMenu_JumpTo_Prefix(ref ScreenType FJOFNHPCBPD) { if ((int)FJOFNHPCBPD == 4 && Plugin.Instance.TourneyMenuOpen) { FJOFNHPCBPD = (ScreenType)6; } } } internal static class ScreenResultsPatch { [CompilerGenerated] private sealed class d__2 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public IEnumerator __result; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__2(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { if (<>1__state != 0) { return false; } <>1__state = -1; return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__3 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public IEnumerator __result; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__3(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { if (<>1__state != 0) { return false; } <>1__state = -1; return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [HarmonyPatch(typeof(OEAINNHEMKA), "UpdateState")] [HarmonyPostfix] private static void ResultUpdateState_Postfix(OEAINNHEMKA __instance) { if (SetTracker.Instance.ActiveTourneyMode == TourneyMode.NONE || GameSettings.IsOnline) { return; } PostScreen aPFKDEMGLHJ = __instance.APFKDEMGLHJ; if (!((Object)(object)aPFKDEMGLHJ == (Object)null)) { Player.ForAll((Action)delegate(Player player) { __instance.DABHMHOCDEN(player.nr, (KHMFCILNHHH)2); }); } } [HarmonyPatch(typeof(OEAINNHEMKA), "DABHMHOCDEN")] [HarmonyPostfix] private static void SetRematchChoice_Postfix(OEAINNHEMKA __instance, int BKEOPDPFFPM, KHMFCILNHHH ONPJANKJDJH) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Invalid comparison between Unknown and I4 //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Invalid comparison between Unknown and I4 if (SetTracker.Instance.ActiveTourneyMode != 0 && !GameSettings.IsOnline) { PostScreen aPFKDEMGLHJ = __instance.APFKDEMGLHJ; aPFKDEMGLHJ.SetChoice(BKEOPDPFFPM, ONPJANKJDJH); if (BKEOPDPFFPM == 0 && (int)aPFKDEMGLHJ.resultButtons == 3 && (int)ONPJANKJDJH == 2) { aPFKDEMGLHJ.ShowButtons((NIPJFJKNGHO)2); } } } [HarmonyPatch(typeof(PostScreen), "CFillXpBar")] [HarmonyPostfix] private static IEnumerator CFillXpBar_Wrapper(IEnumerator __result) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__2(0) { __result = __result }; } [HarmonyPatch(typeof(CPNJEILDILH), "PEORFKFKGGGG")] [HarmonyPostfix] private static IEnumerator CShowCurrencyGain_Wrapper(IEnumerator __result) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__3(0) { __result = __result }; } [HarmonyPatch(typeof(PostScreen), "SetResult")] [HarmonyTranspiler] private static IEnumerable PostScreen_SetResult_Transpiler(IEnumerable instructions) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Expected O, but got Unknown //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Expected O, but got Unknown //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Expected O, but got Unknown //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Expected O, but got Unknown //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Expected O, but got Unknown //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Expected O, but got Unknown //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Expected O, but got Unknown CodeMatcher val = new CodeMatcher(instructions, (ILGenerator)null); val.End(); val.MatchBack(false, (CodeMatch[])(object)new CodeMatch[4] { new CodeMatch((OpCode?)OpCodes.Ldloca_S, (object)null, (string)null), new CodeMatch((OpCode?)OpCodes.Ldfld, (object)AccessTools.Field(typeof(OHNHLLIAJEF), "LALEEFJMMLH"), (string)null), new CodeMatch((OpCode?)OpCodes.Call, (object)AccessTools.Method(typeof(JPLELOFJOOH), "OAGHLPGCAOI", (Type[])null, (Type[])null), (string)null), new CodeMatch((OpCode?)OpCodes.Stloc_S, (object)null, (string)null) }); LocalBuilder localBuilder = (LocalBuilder)val.Instruction.operand; val.Advance(3); val.Insert((CodeInstruction[])(object)new CodeInstruction[3] { new CodeInstruction(OpCodes.Ldloca_S, (object)localBuilder), new CodeInstruction(OpCodes.Ldfld, (object)AccessTools.Field(typeof(OHNHLLIAJEF), "CJFLMDNNMIE")), Transpilers.EmitDelegate>((Func)delegate(string characterName, int playerNr) { PlayerTag playerTag = Plugin.Instance.GetPlayerTag(playerNr); return playerTag.IsDefault ? characterName : playerTag.GetName(); }) }); return val.InstructionEnumeration(); } } internal static class SetTrackingPatch { [HarmonyPatch(typeof(DNPFJHMAIBP), "HOGJDNCMNFP")] [HarmonyPrefix] private static void GameStates_Set_Prefix(JOFJHDJHJGI CFDCLPJMFDP) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) GameState val = GameState.op_Implicit(CFDCLPJMFDP); if (((EnumWrapper)(object)val == (EnumWrapper)(object)GameState.LOBBY_LOCAL || (EnumWrapper)(object)val == (EnumWrapper)(object)GameState.LOBBY_ONLINE || (EnumWrapper)(object)val == (EnumWrapper)(object)GameState.LOBBY_TRAINING) && !SetTracker.Instance.IsTrackingSet) { SetTracker.Instance.Start(); } if ((EnumWrapper)(object)val == (EnumWrapper)(object)GameState.MENU && SetTracker.Instance.ActiveTourneyMode == TourneyMode.NONE && SetTracker.Instance.IsTrackingSet) { SetTracker.Instance.End(); } } [HarmonyPatch(typeof(JOMBNFKIHIC), "ADDBHIFLMEI")] [HarmonyPostfix] private static void GameSettings_ResetGameModeSettings_Postfix(JOMBNFKIHIC __instance) { GameSettings settings = GameSettings.op_Implicit(__instance); if (SetTracker.Instance.IsTrackingSet) { if (SetTracker.Instance.CurrentSet.ActiveRuleset.HasGameOptions) { SetTracker.Instance.ApplyGameOptions(settings, SetTracker.Instance.CurrentSet.ActiveRuleset.GameOptions); } if (SetTracker.Instance.ActiveTourneyMode == TourneyMode.LOCAL_CREW) { SetTracker.Instance.ApplyInfiniteTimer(settings); } } } [HarmonyPatch(typeof(PlayerEntity), "Init")] [HarmonyPostfix] private static void PlayerEntity_Init_Postfix(PlayerEntity __instance) { if (SetTracker.Instance.ActiveTourneyMode != 0 && (!SetTracker.Instance.CurrentSet.IsGame1 || SetTracker.Instance.CurrentSet.IsTiebreaker) && !((EnumWrapper)(object)SetTracker.Instance.CurrentSet.LastWinnerOverride != (EnumWrapper)(object)Team.NONE)) { Player val = Player.op_Implicit(((AbilityEntity)__instance).player); int num = SetTracker.Instance.CurrentSet.PlayerStockLock[val.nr]; if (num >= 1) { __instance.playerData.stocks = Mathf.Clamp(num, 1, GameSettings.current.stocks); } } } [HarmonyPatch(typeof(NCMFHODLNAJ), "KHCHLIEACLP")] [HarmonyPrefix] private static void Rules_GameStarted_Prefix() { if (SetTracker.Instance.IsTrackingSet) { GameStart(); } } [HarmonyPatch(typeof(OGONAGCFDPK), "NPNPJAGHINC")] [HarmonyPrefix] private static void GameStatesGame_GameDone_Prefix(bool MKIGJKIBGIH) { if (!MKIGJKIBGIH && SetTracker.Instance.IsTrackingSet) { GameDone(isTimeout: false); } } [HarmonyPatch(typeof(OGONAGCFDPK), "DJILJJJMJGH")] [HarmonyPrefix] private static void GameStatesGame_GameTimeOut_Prefix() { if (SetTracker.Instance.IsTrackingSet) { GameDone(isTimeout: true); } } private static void GameStart() { //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) //IL_006a: Unknown result type (might be due to invalid IL or missing references) Stage oOEPDFABFIP = HPNLMFHPHFD.ELPLKHOLJID.OOEPDFABFIP; PlayerCharacter[] playerCharacters = new PlayerCharacter[4] { PlayerCharacter.EMPTY, PlayerCharacter.EMPTY, PlayerCharacter.EMPTY, PlayerCharacter.EMPTY }; Player.ForAllInMatch((Action)delegate(Player player) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) playerCharacters[player.nr] = new PlayerCharacter(player.CharacterSelected, player.CharacterVariant, player.Team); }); SetTracker.Instance.CurrentSet.StartMatch(oOEPDFABFIP, playerCharacters); } private static void GameDone(bool isTimeout) { PlayerScore[] scores = new PlayerScore[4] { new PlayerScore(), new PlayerScore(), new PlayerScore(), new PlayerScore() }; Player.ForAllInMatch((Action)delegate(Player player) { //IL_004b: 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_0071: 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) if (!GameSettings.current.UsePoints) { PlayerData playerData = player.playerEntity.playerData; scores[player.nr].Stocks = playerData.stocks; scores[player.nr].Team = Team.op_Implicit(((HitableData)playerData).team); scores[player.nr].Hp = Floatf.op_Implicit(((HitableData)playerData).hp); } }); SetTracker.Instance.CurrentSet.EndMatch(scores, isTimeout); } } internal static class StageSelectPatch { [HarmonyPatch(typeof(ScreenPlayersStage), "SelectionDone")] [HarmonyPrefix] private static bool ScreenPlayersStage_SelectionDone_Prefix(ScreenPlayersStage __instance) { if (!(__instance is IStageSelect stageSelect)) { return true; } stageSelect.OnStageSelected(); return false; } } }