using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Reflection.Emit;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using GameNetcodeStuff;
using HarmonyLib;
using LethalConfig;
using LethalConfig.ConfigItems;
using LethalConfig.ConfigItems.Options;
using QuickChat.RadialMenu;
using TMPro;
using TerminalApi;
using TerminalApi.Classes;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.InputSystem;
using UnityEngine.InputSystem.LowLevel;
using UnityEngine.UI;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyTitle("QuickChat")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("QuickChat")]
[assembly: AssemblyCopyright("Copyright © 2024")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("5c2f0b6a-7ca6-4131-abbf-3f1d4650154e")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.8.1", FrameworkDisplayName = ".NET Framework 4.8.1")]
[assembly: AssemblyVersion("1.0.0.0")]
internal static class QuickChatExtensions
{
internal static string RemoveWhiteSpace(this string self)
{
return new string(self.Where((char c) => !char.IsWhiteSpace(c)).ToArray());
}
internal static string CapitalizeFirstChar(this string self)
{
if (self == null || self.Length == 0)
{
return self;
}
return self[0].ToString().ToUpper() + self.Substring(1);
}
}
namespace QuickChat
{
[HarmonyPatch(typeof(HUDManager))]
internal class ChatCharacterLimitPatcher
{
public static int CharacterLimit = 9999;
[HarmonyPatch("Start")]
[HarmonyPostfix]
private static void CharacterLimitPatchTMP(ref TMP_InputField ___chatTextField)
{
___chatTextField.characterLimit = 0;
}
[HarmonyPatch("AddPlayerChatMessageServerRpc")]
[HarmonyTranspiler]
private static IEnumerable<CodeInstruction> CharacterLimitPatchServerRPC(IEnumerable<CodeInstruction> instructions)
{
return FindAndReplaceCharacterLimit(new List<CodeInstruction>(instructions)).AsEnumerable();
}
[HarmonyPatch("SubmitChat_performed")]
[HarmonyTranspiler]
private static IEnumerable<CodeInstruction> CharacterLimitPatchSubmitChat(IEnumerable<CodeInstruction> instructions)
{
return FindAndReplaceCharacterLimit(new List<CodeInstruction>(instructions)).AsEnumerable();
}
private static List<CodeInstruction> FindAndReplaceCharacterLimit(List<CodeInstruction> code)
{
for (int i = 0; i < code.Count - 1; i++)
{
if (code[i].opcode == OpCodes.Callvirt && code[i].operand.ToString() == "Int32 get_Length()" && code[i + 1].opcode == OpCodes.Ldc_I4_S)
{
code[i + 1].opcode = OpCodes.Ldc_I4;
code[i + 1].operand = CharacterLimit;
break;
}
}
return code;
}
}
[HarmonyPatch(typeof(HUDManager))]
internal class ChatPatcher
{
internal static Dictionary<string, string> ChatShortcuts = new Dictionary<string, string>();
internal static string Prefix = "/";
internal static bool CaseSensitive = false;
internal static void ChatCommandsGen(string rawShortcuts)
{
string[] array = rawShortcuts.Split(new char[1] { ',' });
ChatShortcuts.Clear();
string[] array2 = array;
for (int i = 0; i < array2.Length; i++)
{
string[] array3 = array2[i].Split(new char[1] { ':' });
if (!Utility.IsNullOrWhiteSpace(array3[0]) && !Utility.IsNullOrWhiteSpace(array3[1]))
{
string text = Prefix + array3[0].RemoveWhiteSpace();
string text2 = array3[1].Trim();
if (!CaseSensitive)
{
text = text.ToLower();
}
Plugin.LogSource.LogDebug((object)("New Chat Shortcut: \"" + text + "\" => \"" + text2 + "\""));
ChatShortcuts.Add(text, text2);
}
}
}
internal static void ChatShortcutsGeneration(int num, List<SimpleShortcut> simpleShortcuts)
{
ChatShortcuts.Clear();
for (int i = 0; i < num; i++)
{
string nameValue = simpleShortcuts[i].nameValue;
string resultValue = simpleShortcuts[i].resultValue;
if (!Utility.IsNullOrWhiteSpace(nameValue) && !Utility.IsNullOrWhiteSpace(resultValue))
{
string text = Prefix + nameValue.RemoveWhiteSpace();
string text2 = resultValue.Trim();
if (!CaseSensitive)
{
text = text.ToLower();
}
Plugin.LogSource.LogDebug((object)("New Chat Shortcut: \"" + text + "\" => \"" + text2 + "\""));
ChatShortcuts.Add(text, text2);
}
}
}
public static string GetChatShortcutsList()
{
string text = string.Empty;
foreach (KeyValuePair<string, string> chatShortcut in ChatShortcuts)
{
int num = ChatShortcuts.Keys.ToList().IndexOf(chatShortcut.Key);
text = text + GetChatShortcutAdvancedFormat(num, chatShortcut.Key, chatShortcut.Value) + "\n";
}
return text;
}
public static string GetChatShortcutAdvancedFormat(int num, string name, string result)
{
return $"{num} - {name} : {result}";
}
[HarmonyPatch("Start")]
[HarmonyPostfix]
private static void StopSelectionOnOpenChatPatch(ref TMP_InputField ___chatTextField)
{
___chatTextField.onFocusSelectAll = false;
}
[HarmonyPatch("AddTextToChatOnServer")]
[HarmonyPrefix]
private static void ChatPatch(ref string chatMessage, ref int playerId)
{
string key = (CaseSensitive ? chatMessage : chatMessage.ToLower());
Plugin.LogSource.LogDebug((object)("Tried to change command " + chatMessage));
if (ChatShortcuts.ContainsKey(key))
{
string text = (chatMessage = ChatShortcuts[key]);
Plugin.LogSource.LogDebug((object)("Found command " + chatMessage + " => " + text));
}
}
[HarmonyPatch("EnableChat_performed")]
[HarmonyPostfix]
private static void PrefixOnChatPatch(ref PlayerControllerB ___localPlayer, ref TMP_InputField ___chatTextField)
{
if (ShortcutHandler.QuickChatPrefixOnChat.Value)
{
___chatTextField.text = ShortcutHandler.QuickChatPrefix.Value;
___chatTextField.MoveToEndOfLine(false, false);
}
}
}
internal class RadialMenuConfig
{
[Serializable]
[CompilerGenerated]
private sealed class <>c
{
public static readonly <>c <>9 = new <>c();
public static EventHandler <>9__9_0;
public static EventHandler <>9__9_1;
public static EventHandler <>9__9_2;
public static EventHandler <>9__10_0;
public static CanModifyDelegate <>9__10_6;
public static EventHandler <>9__10_1;
public static CanModifyDelegate <>9__10_7;
public static EventHandler <>9__10_2;
public static EventHandler <>9__10_3;
public static CanModifyDelegate <>9__10_8;
public static EventHandler <>9__10_4;
public static CanModifyDelegate <>9__10_9;
public static EventHandler <>9__10_5;
internal void <Init>b__9_0(object obj, EventArgs args)
{
//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)
if (RadialMenuManager.RadialMenuLoaded)
{
((Graphic)RadialMenuHUD.RadialMenuHUDBackground).color = Color32.op_Implicit(new Color32((byte)0, (byte)0, (byte)0, (byte)QuickChatRadialMenuBackgroundAlpha.Value));
}
}
internal void <Init>b__9_1(object obj, EventArgs args)
{
if (RadialMenuManager.RadialMenuLoaded)
{
((TMP_Text)RadialMenuHUD.RadialMenuHUDRecentText).fontSizeMin = QuickChatRadialMenuRecentTextMinSize.Value;
}
}
internal void <Init>b__9_2(object obj, EventArgs args)
{
if (RadialMenuManager.RadialMenuLoaded)
{
((TMP_Text)RadialMenuHUD.RadialMenuHUDRecentText).fontSizeMax = QuickChatRadialMenuRecentTextMaxSize.Value;
}
}
internal void <Binds>b__10_0(object obj, EventArgs args)
{
//IL_0047: Unknown result type (might be due to invalid IL or missing references)
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
if (!QuickChatRadialMenuToggleUseMouse.Value)
{
ChangeBinding(RadialMenuInput.RadialMenuToggleAction, ((InputControl)Keyboard.current[QuickChatRadialMenuToggleKey.Value]).path, !QuickChatRadialMenuToggleUseMouse.Value);
}
else
{
ChangeBinding(RadialMenuInput.RadialMenuToggleAction, GetMousePath(QuickChatRadialMenuToggleMouseButton.Value), QuickChatRadialMenuToggleUseMouse.Value);
}
}
internal CanModifyResult <Binds>b__10_6()
{
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
return CanModifyResult.op_Implicit(!QuickChatRadialMenuToggleUseMouse.Value);
}
internal void <Binds>b__10_1(object obj, EventArgs args)
{
//IL_000f: Unknown result type (might be due to invalid IL or missing references)
ChangeBinding(RadialMenuInput.RadialMenuToggleAction, ((InputControl)Keyboard.current[QuickChatRadialMenuToggleKey.Value]).path, !QuickChatRadialMenuToggleUseMouse.Value);
}
internal CanModifyResult <Binds>b__10_7()
{
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
return CanModifyResult.op_Implicit(QuickChatRadialMenuToggleUseMouse.Value);
}
internal void <Binds>b__10_2(object obj, EventArgs args)
{
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
ChangeBinding(RadialMenuInput.RadialMenuToggleAction, GetMousePath(QuickChatRadialMenuToggleMouseButton.Value), QuickChatRadialMenuToggleUseMouse.Value);
}
internal void <Binds>b__10_3(object obj, EventArgs args)
{
//IL_0047: Unknown result type (might be due to invalid IL or missing references)
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
if (!QuickChatRadialMenuGoBackUseMouse.Value)
{
ChangeBinding(RadialMenuInput.RadialMenuGoBackAction, ((InputControl)Keyboard.current[QuickChatRadialMenuGoBackKey.Value]).path, !QuickChatRadialMenuGoBackUseMouse.Value);
}
else
{
ChangeBinding(RadialMenuInput.RadialMenuGoBackAction, GetMousePath(QuickChatRadialMenuGoBackMouseButton.Value), QuickChatRadialMenuGoBackUseMouse.Value);
}
}
internal CanModifyResult <Binds>b__10_8()
{
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
return CanModifyResult.op_Implicit(!QuickChatRadialMenuGoBackUseMouse.Value);
}
internal void <Binds>b__10_4(object obj, EventArgs args)
{
//IL_000f: Unknown result type (might be due to invalid IL or missing references)
ChangeBinding(RadialMenuInput.RadialMenuGoBackAction, ((InputControl)Keyboard.current[QuickChatRadialMenuGoBackKey.Value]).path, !QuickChatRadialMenuGoBackUseMouse.Value);
}
internal CanModifyResult <Binds>b__10_9()
{
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
return CanModifyResult.op_Implicit(QuickChatRadialMenuGoBackUseMouse.Value);
}
internal void <Binds>b__10_5(object obj, EventArgs args)
{
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
ChangeBinding(RadialMenuInput.RadialMenuGoBackAction, GetMousePath(QuickChatRadialMenuGoBackMouseButton.Value), QuickChatRadialMenuGoBackUseMouse.Value);
}
}
internal static ConfigEntry<bool> QuickChatRadialMenuToggleUseMouse;
internal static ConfigEntry<Key> QuickChatRadialMenuToggleKey;
internal static ConfigEntry<MouseButton> QuickChatRadialMenuToggleMouseButton;
internal static ConfigEntry<bool> QuickChatRadialMenuGoBackUseMouse;
internal static ConfigEntry<Key> QuickChatRadialMenuGoBackKey;
internal static ConfigEntry<MouseButton> QuickChatRadialMenuGoBackMouseButton;
internal static ConfigEntry<int> QuickChatRadialMenuBackgroundAlpha;
internal static ConfigEntry<int> QuickChatRadialMenuRecentTextMinSize;
internal static ConfigEntry<int> QuickChatRadialMenuRecentTextMaxSize;
internal static void Init()
{
//IL_002d: 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_0039: Unknown result type (might be due to invalid IL or missing references)
//IL_0040: Expected O, but got Unknown
//IL_0040: Unknown result type (might be due to invalid IL or missing references)
//IL_004b: Expected O, but got Unknown
//IL_0050: Expected O, but got Unknown
//IL_004b: Unknown result type (might be due to invalid IL or missing references)
//IL_0051: Expected O, but got Unknown
//IL_00be: 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_00ca: Unknown result type (might be due to invalid IL or missing references)
//IL_00d1: Expected O, but got Unknown
//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
//IL_00d9: Expected O, but got Unknown
//IL_00de: Expected O, but got Unknown
//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
//IL_00df: Expected O, but got Unknown
//IL_010d: 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: Unknown result type (might be due to invalid IL or missing references)
//IL_0120: Expected O, but got Unknown
//IL_0120: Unknown result type (might be due to invalid IL or missing references)
//IL_0128: Expected O, but got Unknown
//IL_012d: Expected O, but got Unknown
//IL_0128: Unknown result type (might be due to invalid IL or missing references)
//IL_0167: Expected O, but got Unknown
Binds();
QuickChatRadialMenuBackgroundAlpha = Plugin.ConfigF.Bind<int>("Radial Menu Background", "Alpha of Radial Menu background", 100, "The alpha (transparency) of the background when opening the Radial Menu.");
ConfigEntry<int> quickChatRadialMenuBackgroundAlpha = QuickChatRadialMenuBackgroundAlpha;
IntSliderOptions val = new IntSliderOptions
{
RequiresRestart = false
};
((BaseRangeOptions<int>)val).Min = 0;
((BaseRangeOptions<int>)val).Max = 255;
IntSliderConfigItem val2 = new IntSliderConfigItem(quickChatRadialMenuBackgroundAlpha, val);
QuickChatRadialMenuBackgroundAlpha.SettingChanged += delegate
{
//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)
if (RadialMenuManager.RadialMenuLoaded)
{
((Graphic)RadialMenuHUD.RadialMenuHUDBackground).color = Color32.op_Implicit(new Color32((byte)0, (byte)0, (byte)0, (byte)QuickChatRadialMenuBackgroundAlpha.Value));
}
};
QuickChatRadialMenuRecentTextMinSize = Plugin.ConfigF.Bind<int>("Radial Menu Recent Text", "Radial Menu Text Minimum Size", 8, "The minimum size that the recent text can be.");
QuickChatRadialMenuRecentTextMaxSize = Plugin.ConfigF.Bind<int>("Radial Menu Recent Text", "Radial Menu Text Maximum Size", 10, "The maximum size that the recent text can be.");
ConfigEntry<int> quickChatRadialMenuRecentTextMinSize = QuickChatRadialMenuRecentTextMinSize;
IntSliderOptions val3 = new IntSliderOptions
{
RequiresRestart = false
};
((BaseRangeOptions<int>)val3).Min = 1;
((BaseRangeOptions<int>)val3).Max = 24;
IntSliderConfigItem val4 = new IntSliderConfigItem(quickChatRadialMenuRecentTextMinSize, val3);
QuickChatRadialMenuRecentTextMinSize.SettingChanged += delegate
{
if (RadialMenuManager.RadialMenuLoaded)
{
((TMP_Text)RadialMenuHUD.RadialMenuHUDRecentText).fontSizeMin = QuickChatRadialMenuRecentTextMinSize.Value;
}
};
ConfigEntry<int> quickChatRadialMenuRecentTextMaxSize = QuickChatRadialMenuRecentTextMaxSize;
IntSliderOptions val5 = new IntSliderOptions
{
RequiresRestart = false
};
((BaseRangeOptions<int>)val5).Min = 1;
((BaseRangeOptions<int>)val5).Max = 24;
IntSliderConfigItem val6 = new IntSliderConfigItem(quickChatRadialMenuRecentTextMaxSize, val5);
QuickChatRadialMenuRecentTextMaxSize.SettingChanged += delegate
{
if (RadialMenuManager.RadialMenuLoaded)
{
((TMP_Text)RadialMenuHUD.RadialMenuHUDRecentText).fontSizeMax = QuickChatRadialMenuRecentTextMaxSize.Value;
}
};
LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val2);
LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val4);
LethalConfigManager.AddConfigItem((BaseConfigItem)val6);
}
internal static void Binds()
{
//IL_0064: Unknown result type (might be due to invalid IL or missing references)
//IL_006a: Expected O, but got Unknown
//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_00a4: Unknown result type (might be due to invalid IL or missing references)
//IL_00ce: Expected O, but got Unknown
//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
//IL_00be: Unknown result type (might be due to invalid IL or missing references)
//IL_00c4: Expected O, but got Unknown
//IL_00fd: 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)
//IL_0109: Unknown result type (might be due to invalid IL or missing references)
//IL_0133: Expected O, but got Unknown
//IL_011e: 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_0129: Expected O, but got Unknown
//IL_01c1: Unknown result type (might be due to invalid IL or missing references)
//IL_01c7: Expected O, but got Unknown
//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_0201: Unknown result type (might be due to invalid IL or missing references)
//IL_022b: Expected O, but got Unknown
//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_0221: Expected O, but got Unknown
//IL_025b: Unknown result type (might be due to invalid IL or missing references)
//IL_0260: Unknown result type (might be due to invalid IL or missing references)
//IL_0267: Unknown result type (might be due to invalid IL or missing references)
//IL_0291: Expected O, but got Unknown
//IL_027c: Unknown result type (might be due to invalid IL or missing references)
//IL_0281: Unknown result type (might be due to invalid IL or missing references)
//IL_0287: Expected O, but got Unknown
QuickChatRadialMenuToggleUseMouse = Plugin.ConfigF.Bind<bool>("Radial Menu Binds", "Toggle Open & Close Use Mouse", false, "Whether or not you use the mouse to open the radial menu.");
QuickChatRadialMenuToggleKey = Plugin.ConfigF.Bind<Key>("Radial Menu Binds", "Toggle Open & Close Key", (Key)53, "The key used to open and close the radial menu.");
QuickChatRadialMenuToggleMouseButton = Plugin.ConfigF.Bind<MouseButton>("Radial Menu Binds", "Toggle Open & Close Mouse", (MouseButton)2, "The mouse button used to open and close the radial menu.");
BoolCheckBoxConfigItem val = new BoolCheckBoxConfigItem(QuickChatRadialMenuToggleUseMouse, false);
QuickChatRadialMenuToggleUseMouse.SettingChanged += delegate
{
//IL_0047: Unknown result type (might be due to invalid IL or missing references)
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
if (!QuickChatRadialMenuToggleUseMouse.Value)
{
ChangeBinding(RadialMenuInput.RadialMenuToggleAction, ((InputControl)Keyboard.current[QuickChatRadialMenuToggleKey.Value]).path, !QuickChatRadialMenuToggleUseMouse.Value);
}
else
{
ChangeBinding(RadialMenuInput.RadialMenuToggleAction, GetMousePath(QuickChatRadialMenuToggleMouseButton.Value), QuickChatRadialMenuToggleUseMouse.Value);
}
};
ConfigEntry<Key> quickChatRadialMenuToggleKey = QuickChatRadialMenuToggleKey;
EnumDropDownOptions val2 = new EnumDropDownOptions
{
RequiresRestart = false
};
object obj2 = <>c.<>9__10_6;
if (obj2 == null)
{
CanModifyDelegate val3 = () => CanModifyResult.op_Implicit(!QuickChatRadialMenuToggleUseMouse.Value);
<>c.<>9__10_6 = val3;
obj2 = (object)val3;
}
((BaseOptions)val2).CanModifyCallback = (CanModifyDelegate)obj2;
EnumDropDownConfigItem<Key> val4 = new EnumDropDownConfigItem<Key>(quickChatRadialMenuToggleKey, val2);
QuickChatRadialMenuToggleKey.SettingChanged += delegate
{
//IL_000f: Unknown result type (might be due to invalid IL or missing references)
ChangeBinding(RadialMenuInput.RadialMenuToggleAction, ((InputControl)Keyboard.current[QuickChatRadialMenuToggleKey.Value]).path, !QuickChatRadialMenuToggleUseMouse.Value);
};
ConfigEntry<MouseButton> quickChatRadialMenuToggleMouseButton = QuickChatRadialMenuToggleMouseButton;
EnumDropDownOptions val5 = new EnumDropDownOptions
{
RequiresRestart = false
};
object obj3 = <>c.<>9__10_7;
if (obj3 == null)
{
CanModifyDelegate val6 = () => CanModifyResult.op_Implicit(QuickChatRadialMenuToggleUseMouse.Value);
<>c.<>9__10_7 = val6;
obj3 = (object)val6;
}
((BaseOptions)val5).CanModifyCallback = (CanModifyDelegate)obj3;
EnumDropDownConfigItem<MouseButton> val7 = new EnumDropDownConfigItem<MouseButton>(quickChatRadialMenuToggleMouseButton, val5);
QuickChatRadialMenuToggleKey.SettingChanged += delegate
{
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
ChangeBinding(RadialMenuInput.RadialMenuToggleAction, GetMousePath(QuickChatRadialMenuToggleMouseButton.Value), QuickChatRadialMenuToggleUseMouse.Value);
};
QuickChatRadialMenuGoBackUseMouse = Plugin.ConfigF.Bind<bool>("Radial Menu Binds", "Go Back Use Mouse", true, "Whether or not you use the mouse to go back one menu in the radial menu.");
QuickChatRadialMenuGoBackKey = Plugin.ConfigF.Bind<Key>("Radial Menu Binds", "Go Back Key", (Key)32, "The key used to go back one menu in the radial menu.");
QuickChatRadialMenuGoBackMouseButton = Plugin.ConfigF.Bind<MouseButton>("Radial Menu Binds", "Go Back Mouse", (MouseButton)1, "The mouse button used to go back one menu in the radial menu.");
BoolCheckBoxConfigItem val8 = new BoolCheckBoxConfigItem(QuickChatRadialMenuGoBackUseMouse, false);
QuickChatRadialMenuGoBackUseMouse.SettingChanged += delegate
{
//IL_0047: Unknown result type (might be due to invalid IL or missing references)
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
if (!QuickChatRadialMenuGoBackUseMouse.Value)
{
ChangeBinding(RadialMenuInput.RadialMenuGoBackAction, ((InputControl)Keyboard.current[QuickChatRadialMenuGoBackKey.Value]).path, !QuickChatRadialMenuGoBackUseMouse.Value);
}
else
{
ChangeBinding(RadialMenuInput.RadialMenuGoBackAction, GetMousePath(QuickChatRadialMenuGoBackMouseButton.Value), QuickChatRadialMenuGoBackUseMouse.Value);
}
};
ConfigEntry<Key> quickChatRadialMenuGoBackKey = QuickChatRadialMenuGoBackKey;
EnumDropDownOptions val9 = new EnumDropDownOptions
{
RequiresRestart = false
};
object obj4 = <>c.<>9__10_8;
if (obj4 == null)
{
CanModifyDelegate val10 = () => CanModifyResult.op_Implicit(!QuickChatRadialMenuGoBackUseMouse.Value);
<>c.<>9__10_8 = val10;
obj4 = (object)val10;
}
((BaseOptions)val9).CanModifyCallback = (CanModifyDelegate)obj4;
EnumDropDownConfigItem<Key> val11 = new EnumDropDownConfigItem<Key>(quickChatRadialMenuGoBackKey, val9);
QuickChatRadialMenuGoBackKey.SettingChanged += delegate
{
//IL_000f: Unknown result type (might be due to invalid IL or missing references)
ChangeBinding(RadialMenuInput.RadialMenuGoBackAction, ((InputControl)Keyboard.current[QuickChatRadialMenuGoBackKey.Value]).path, !QuickChatRadialMenuGoBackUseMouse.Value);
};
ConfigEntry<MouseButton> quickChatRadialMenuGoBackMouseButton = QuickChatRadialMenuGoBackMouseButton;
EnumDropDownOptions val12 = new EnumDropDownOptions
{
RequiresRestart = false
};
object obj5 = <>c.<>9__10_9;
if (obj5 == null)
{
CanModifyDelegate val13 = () => CanModifyResult.op_Implicit(QuickChatRadialMenuGoBackUseMouse.Value);
<>c.<>9__10_9 = val13;
obj5 = (object)val13;
}
((BaseOptions)val12).CanModifyCallback = (CanModifyDelegate)obj5;
EnumDropDownConfigItem<MouseButton> obj6 = new EnumDropDownConfigItem<MouseButton>(quickChatRadialMenuGoBackMouseButton, val12);
QuickChatRadialMenuGoBackMouseButton.SettingChanged += delegate
{
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
ChangeBinding(RadialMenuInput.RadialMenuGoBackAction, GetMousePath(QuickChatRadialMenuGoBackMouseButton.Value), QuickChatRadialMenuGoBackUseMouse.Value);
};
LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val);
LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val4);
LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val7);
LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val8);
LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val11);
LethalConfigManager.AddConfigItem((BaseConfigItem)(object)obj6);
UpdateBindings();
}
internal static void ChangeBinding(InputAction action, string bindingPathOverride, bool allowChange)
{
if (allowChange && action != null)
{
InputActionRebindingExtensions.ApplyBindingOverride(action, bindingPathOverride, (string)null, (string)null);
}
}
internal static string GetMousePath(MouseButton button)
{
//IL_000c: Unknown result type (might be due to invalid IL or missing references)
//IL_0026: Expected I4, but got Unknown
Mouse current = Mouse.current;
string result = string.Empty;
switch ((int)button)
{
case 0:
result = ((InputControl)current.leftButton).path;
break;
case 1:
result = ((InputControl)current.rightButton).path;
break;
case 2:
result = ((InputControl)current.middleButton).path;
break;
case 3:
result = ((InputControl)current.forwardButton).path;
break;
case 4:
result = ((InputControl)current.backButton).path;
break;
}
return result;
}
internal static void UpdateBindings()
{
//IL_0048: 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_00af: 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)
try
{
if (!QuickChatRadialMenuToggleUseMouse.Value)
{
ChangeBinding(RadialMenuInput.RadialMenuToggleAction, ((InputControl)Keyboard.current[QuickChatRadialMenuToggleKey.Value]).path, !QuickChatRadialMenuToggleUseMouse.Value);
}
else
{
ChangeBinding(RadialMenuInput.RadialMenuToggleAction, GetMousePath(QuickChatRadialMenuToggleMouseButton.Value), QuickChatRadialMenuToggleUseMouse.Value);
}
}
catch
{
}
try
{
if (!QuickChatRadialMenuGoBackUseMouse.Value)
{
ChangeBinding(RadialMenuInput.RadialMenuGoBackAction, ((InputControl)Keyboard.current[QuickChatRadialMenuGoBackKey.Value]).path, !QuickChatRadialMenuGoBackUseMouse.Value);
}
else
{
ChangeBinding(RadialMenuInput.RadialMenuGoBackAction, GetMousePath(QuickChatRadialMenuGoBackMouseButton.Value), QuickChatRadialMenuGoBackUseMouse.Value);
}
}
catch
{
}
}
}
internal class ShortcutHandler
{
internal static ConfigEntry<bool> QuickChatUseAdvanced;
internal static ConfigEntry<bool> QuickChatPrefixOnChat;
internal static ConfigEntry<bool> QuickChatCaseSensitive;
internal static ConfigEntry<string> QuickChatPrefix;
internal static ConfigEntry<int> QuickChatSimpleShortcutsNumber;
internal static ConfigEntry<string> QuickChatShortcutsAdvanced;
internal static List<SimpleShortcut> SimpleShortcuts = new List<SimpleShortcut>();
internal static bool UseAdvanced => QuickChatUseAdvanced.Value;
internal static int SimpleShortcutsNum => QuickChatSimpleShortcutsNumber.Value;
internal static string AdvancedShortcutsRaw => QuickChatShortcutsAdvanced.Value;
internal static void Init()
{
//IL_0086: Unknown result type (might be due to invalid IL or missing references)
//IL_008c: Expected O, but got Unknown
//IL_0092: Unknown result type (might be due to invalid IL or missing references)
//IL_0098: Expected O, but got Unknown
//IL_009e: Unknown result type (might be due to invalid IL or missing references)
//IL_00a4: Expected O, but got Unknown
//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
//IL_00e3: Expected O, but got Unknown
//IL_00de: Unknown result type (might be due to invalid IL or missing references)
//IL_0123: Expected O, but got Unknown
//IL_02ca: Unknown result type (might be due to invalid IL or missing references)
//IL_02cf: Unknown result type (might be due to invalid IL or missing references)
//IL_02db: Expected O, but got Unknown
//IL_02d6: 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_0156: 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_0164: Expected O, but got Unknown
//IL_0164: Unknown result type (might be due to invalid IL or missing references)
//IL_016c: Expected O, but got Unknown
//IL_0171: Expected O, but got Unknown
//IL_016c: Unknown result type (might be due to invalid IL or missing references)
//IL_0176: Expected O, but got Unknown
//IL_0309: Expected O, but got Unknown
//IL_01bc: 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_01cd: Expected O, but got Unknown
//IL_01c8: Unknown result type (might be due to invalid IL or missing references)
//IL_01cf: Expected O, but got Unknown
//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_0240: Expected O, but got Unknown
//IL_023b: Unknown result type (might be due to invalid IL or missing references)
//IL_0272: Expected O, but got Unknown
QuickChatUseAdvanced = Plugin.ConfigF.Bind<bool>("General", "Use Advanced Shortcut Definition", false, "Allows user to define shortcuts with one Text Field (Only one restart required).");
QuickChatPrefixOnChat = Plugin.ConfigF.Bind<bool>("General", "Put Prefix on Chat", false, "Automatically your desired prefix when you open chat.");
QuickChatCaseSensitive = Plugin.ConfigF.Bind<bool>("Shortcuts", "Is Case Sensitive?", false, "Are the shortcuts case sensitive? (Requires shortcut to be UPPERCASE or lowercase depending on definition of shortcut).");
QuickChatPrefix = Plugin.ConfigF.Bind<string>("Shortcuts", "Chat Prefix", "/", "The prefix to use before a shortcut (say the prefix was \"/\": [/SHORTCUT_NAME => MESSAGE].");
BoolCheckBoxConfigItem val = new BoolCheckBoxConfigItem(QuickChatUseAdvanced, true);
BoolCheckBoxConfigItem val2 = new BoolCheckBoxConfigItem(QuickChatPrefixOnChat, false);
BoolCheckBoxConfigItem val3 = new BoolCheckBoxConfigItem(QuickChatCaseSensitive, false);
QuickChatCaseSensitive.SettingChanged += delegate
{
SaveCaseSensitive();
};
TextInputFieldConfigItem val4 = new TextInputFieldConfigItem(QuickChatPrefix, new TextInputFieldOptions
{
RequiresRestart = false
});
QuickChatPrefix.SettingChanged += delegate
{
SaveChatShortcuts(SimpleShortcutsNum, SimpleShortcuts);
};
LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val);
LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val2);
LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val3);
LethalConfigManager.AddConfigItem((BaseConfigItem)val4);
if (!UseAdvanced)
{
QuickChatSimpleShortcutsNumber = Plugin.ConfigF.Bind<int>("Shortcuts", "Simple Shortcuts Amount", 4, "Amount of simple shortcuts (REQUIRES RESTART TO UPDATE).");
ConfigEntry<int> quickChatSimpleShortcutsNumber = QuickChatSimpleShortcutsNumber;
IntInputFieldOptions val5 = new IntInputFieldOptions
{
RequiresRestart = true
};
((BaseRangeOptions<int>)val5).Min = 1;
((BaseRangeOptions<int>)val5).Max = 20;
LethalConfigManager.AddConfigItem((BaseConfigItem)new IntInputFieldConfigItem(quickChatSimpleShortcutsNumber, val5));
for (int i = 0; i < SimpleShortcutsNum; i++)
{
int num = i + 1;
ConfigEntry<string> val6 = Plugin.ConfigF.Bind<string>($"Simple Shortcut {num}", "Name", $"Name{num}", "The Name of the Shortcut that will be changed to the Result on enter.");
TextInputFieldConfigItem val7 = new TextInputFieldConfigItem(val6, new TextInputFieldOptions
{
RequiresRestart = false
});
val6.SettingChanged += delegate
{
SaveChatShortcuts(SimpleShortcutsNum, SimpleShortcuts);
};
ConfigEntry<string> val8 = Plugin.ConfigF.Bind<string>($"Simple Shortcut {num}", "Result", $"Result{num}", "The Result that will be shown after entering the Shortcut.");
TextInputFieldConfigItem val9 = new TextInputFieldConfigItem(val8, new TextInputFieldOptions
{
RequiresRestart = false
});
val8.SettingChanged += delegate
{
SaveChatShortcuts(SimpleShortcutsNum, SimpleShortcuts);
};
LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val7);
LethalConfigManager.AddConfigItem((BaseConfigItem)val9);
SimpleShortcuts.Add(new SimpleShortcut
{
name = val6,
result = val8
});
}
}
else
{
QuickChatShortcutsAdvanced = Plugin.ConfigF.Bind<string>("Shortcuts", "Advanced Chat Shortcuts", "a:My Balls", "Shortcuts in format of [SHORTCUT_NAME : MESSAGE, SHORTCUT_NAME2 : MESSAGE2] without the [].");
TextInputFieldConfigItem val10 = new TextInputFieldConfigItem(QuickChatShortcutsAdvanced, new TextInputFieldOptions
{
RequiresRestart = false
});
QuickChatShortcutsAdvanced.SettingChanged += delegate
{
SaveChatShortcuts(AdvancedShortcutsRaw);
};
LethalConfigManager.AddConfigItem((BaseConfigItem)val10);
}
SaveCaseSensitive();
SaveBasedOnUseAdvanced();
Plugin.LogSource.LogDebug((object)"QuickChat Config Successfully Loaded!");
}
internal static void SaveCaseSensitive()
{
ChatPatcher.CaseSensitive = QuickChatCaseSensitive.Value;
}
internal static void SavePrefix()
{
ChatPatcher.Prefix = QuickChatPrefix.Value;
}
internal static void SaveChatShortcuts(string rawShortcuts)
{
SavePrefix();
ChatPatcher.ChatCommandsGen(rawShortcuts);
}
internal static void SaveChatShortcuts(int num, List<SimpleShortcut> simpleShortcuts)
{
if (simpleShortcuts.Count == 0 || simpleShortcuts == null)
{
SaveChatShortcuts(AdvancedShortcutsRaw);
}
SavePrefix();
ChatPatcher.ChatShortcutsGeneration(num, simpleShortcuts);
}
internal static void SaveBasedOnUseAdvanced()
{
if (UseAdvanced)
{
SaveChatShortcuts(AdvancedShortcutsRaw);
}
else
{
SaveChatShortcuts(SimpleShortcutsNum, SimpleShortcuts);
}
}
internal static string GetConfigType()
{
if (!UseAdvanced)
{
return "Simple";
}
return "Advanced";
}
}
internal class SimpleShortcut
{
internal ConfigEntry<string> name;
internal ConfigEntry<string> result;
internal string nameValue => name.Value;
internal string resultValue => result.Value;
}
[BepInPlugin("alfungy.quickchat", "Quick Chat", "2.1.1")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
public class Plugin : BaseUnityPlugin
{
private readonly Harmony Harmony = new Harmony("alfungy.quickchat");
internal static ManualLogSource LogSource = Logger.CreateLogSource("alfungy.quickchat");
internal static ConfigFile ConfigF;
private void Awake()
{
ConfigF = ((BaseUnityPlugin)this).Config;
LogSource.LogInfo((object)"Quick Chat 2.1.1 has been loaded!");
LethalConfigManager.SkipAutoGen();
RadialMenuConfig.Init();
RadialMenuSetupDefaults.Init();
ShortcutHandler.Init();
TerminalHandler.Init();
Harmony.PatchAll(typeof(ChatPatcher));
Harmony.PatchAll(typeof(ChatCharacterLimitPatcher));
Harmony.PatchAll(typeof(RadialMenuHUD));
Harmony.PatchAll(typeof(RadialMenuInput));
Harmony.PatchAll(typeof(RadialMenuSetupDefaults));
Harmony.PatchAll(typeof(RadialMenuManager));
}
}
internal static class PluginInfo
{
public const string ModGUID = "alfungy.quickchat";
public const string ModName = "Quick Chat";
public const string ModVersion = "2.1.1";
}
[HarmonyPatch(typeof(Terminal))]
internal class TerminalHandler
{
internal static TerminalNode ShortcutHomeNode => TerminalApi.CreateTerminalNode("Welcome to the Quick Chat Shortcuts Page or the Q.C.S.P. for very very long.\nHere you can currently only view your shortcuts.\n\n----------------------------\n\nConfig Type: " + ShortcutHandler.GetConfigType() + "\n\nShortcuts List:\n" + ChatPatcher.GetChatShortcutsList(), false, "");
internal static TerminalNode CurrentNode => TerminalApi.Terminal.currentNode;
internal static Terminal CurrentTerminal => TerminalApi.Terminal;
internal static void Init()
{
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
//IL_0015: 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_002b: 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_0062: Expected O, but got Unknown
TerminalApi.AddCommand("qcview", new CommandInfo
{
Title = "qcview",
Description = "Display all shortcuts",
Category = "Other",
TriggerNode = ShortcutHomeNode,
DisplayTextSupplier = () => ShortcutHomeNode.displayText
}, (string)null, true);
}
}
}
namespace QuickChat.RadialMenu
{
public class RadialMenuHUD
{
public delegate void RadialMenuHUDLoadingEvent();
public delegate void RadialMenuHUDTextEvent(string text);
internal static GameObject RadialMenuHUDObject;
internal static Image RadialMenuHUDBackground;
internal static TextMeshProUGUI RadialMenuHUDRecentText;
internal static Camera RadialMenuHUDCamera;
internal static Vector2 Center => new Vector2((float)(Screen.width / 2), (float)(Screen.height / 2));
public static event RadialMenuHUDLoadingEvent OnHUDPreLoaded;
public static event RadialMenuHUDLoadingEvent OnHUDPostLoaded;
public static event RadialMenuHUDLoadingEvent OnHUDPreUnloaded;
public static event RadialMenuHUDLoadingEvent OnHUDPostUnloaded;
public static event RadialMenuHUDTextEvent OnHUDChatPreviewUpdated;
public static event RadialMenuHUDTextEvent OnHUDRecentTextUpdated;
internal static void Init()
{
//IL_006b: 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_0080: Expected O, but got Unknown
//IL_00a6: 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_00c4: Unknown result type (might be due to invalid IL or missing references)
//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
//IL_011b: Unknown result type (might be due to invalid IL or missing references)
//IL_0120: Unknown result type (might be due to invalid IL or missing references)
//IL_0139: 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_0148: 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_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_0209: 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_0231: Unknown result type (might be due to invalid IL or missing references)
RadialMenuHUD.OnHUDPreLoaded?.Invoke();
Transform val = ((Component)GameObject.Find("Systems").transform.Find("UI")).transform.Find("Canvas");
RadialMenuHUDCamera = ((Component)((Component)GameObject.Find("Systems").transform.Find("UI")).transform.Find("UICamera")).GetComponent<Camera>();
RadialMenuHUDObject = new GameObject
{
name = "QuickChat Container"
};
RadialMenuHUDObject.transform.SetParent(val, false);
RectTransform obj = RadialMenuHUDObject.AddComponent<RectTransform>();
obj.offsetMax = new Vector2(25f, 75f);
obj.offsetMin = new Vector2(0f, 50f);
RadialMenuHUDBackground = new GameObject
{
name = "QuickChat Background"
}.AddComponent<Image>();
((Component)RadialMenuHUDBackground).transform.SetParent(RadialMenuHUDObject.transform, false);
((Component)RadialMenuHUDBackground).transform.SetSiblingIndex(0);
((Graphic)RadialMenuHUDBackground).color = Color32.op_Implicit(new Color32((byte)0, (byte)0, (byte)0, (byte)RadialMenuConfig.QuickChatRadialMenuBackgroundAlpha.Value));
((Graphic)RadialMenuHUDBackground).rectTransform.anchoredPosition = Vector2.op_Implicit(RadialMenuHUDCamera.ScreenToWorldPoint(Vector2.op_Implicit(Center)));
((Graphic)RadialMenuHUDBackground).rectTransform.sizeDelta = new Vector2((float)Screen.width, (float)Screen.height);
RadialMenuHUDRecentText = new GameObject
{
name = "Most Recent Text"
}.AddComponent<TextMeshProUGUI>();
((TMP_Text)RadialMenuHUDRecentText).transform.SetParent(RadialMenuHUDObject.transform, false);
((TMP_Text)RadialMenuHUDRecentText).alignment = (TextAlignmentOptions)514;
((TMP_Text)RadialMenuHUDRecentText).enableWordWrapping = true;
((TMP_Text)RadialMenuHUDRecentText).enableAutoSizing = true;
((TMP_Text)RadialMenuHUDRecentText).fontSizeMin = RadialMenuConfig.QuickChatRadialMenuRecentTextMinSize.Value;
((TMP_Text)RadialMenuHUDRecentText).fontSizeMax = RadialMenuConfig.QuickChatRadialMenuRecentTextMaxSize.Value;
((TMP_Text)RadialMenuHUDRecentText).rectTransform.sizeDelta = new Vector2(350f, 350f);
((TMP_Text)RadialMenuHUDRecentText).rectTransform.anchoredPosition = Vector2.op_Implicit(RadialMenuHUDCamera.ScreenToWorldPoint(Vector2.op_Implicit(Center)));
RadialMenuHUDObject.SetActive(false);
RadialMenuManager.RadialMenuLoaded = true;
RadialMenuHUD.OnHUDPostLoaded?.Invoke();
}
public static void DeInit()
{
RadialMenuHUD.OnHUDPreUnloaded?.Invoke();
RadialMenuManager.RadialMenuLoaded = false;
RadialMenuHUD.OnHUDPostUnloaded?.Invoke();
}
public static void ToggleRadialMenu(bool open, bool modifyInput = true)
{
if (RadialMenuManager.RadialMenuLoaded)
{
if (!open)
{
RadialMenuManager.ResetChatText();
}
PlayerControllerB localPlayerController = GameNetworkManager.Instance.localPlayerController;
RadialMenuHUDObject.SetActive(open);
RadialMenuManager.RadialMenuOpen = open;
if (modifyInput)
{
Cursor.visible = open;
Cursor.lockState = (CursorLockMode)((!open) ? 1 : 0);
localPlayerController.disableLookInput = open;
}
HUDManager.Instance.chatTextField.textComponent.enableWordWrapping = !open;
}
}
public static void UpdateChatPreview(string text)
{
HUDManager.Instance.chatTextField.text = string.Empty;
HUDManager.Instance.chatTextField.MoveToEndOfLine(false, false);
HUDManager.Instance.PingHUDElement(HUDManager.Instance.Chat, 1f, 1f, 1f);
RadialMenuHUD.OnHUDChatPreviewUpdated?.Invoke(text);
}
public static void UpdateChatRecentText(string text)
{
((TMP_Text)RadialMenuHUDRecentText).text = text;
RadialMenuHUD.OnHUDRecentTextUpdated?.Invoke(text);
}
[HarmonyPatch(typeof(QuickMenuManager), "OpenQuickMenu")]
[HarmonyPostfix]
private static void OpenQuickMenuCloseRadialMenuPatch()
{
ToggleRadialMenu(open: false, modifyInput: false);
}
[HarmonyPatch(typeof(QuickMenuManager), "CloseQuickMenu")]
[HarmonyPostfix]
private static void CloseQuickMenuFixLookInputPatch()
{
GameNetworkManager.Instance.localPlayerController.disableLookInput = false;
}
[HarmonyPatch(typeof(PlayerControllerB), "KillPlayer")]
[HarmonyPostfix]
private static void PlayerControllerBKillPlayerCloseRadialMenuPatch()
{
ToggleRadialMenu(open: false, modifyInput: false);
}
}
public class RadialMenuInput
{
public delegate void RadialMenuInputLoadingEvent();
public delegate void RadialMenuInputEvent();
public delegate void RadialMenuToggleInputEvent(bool activated);
internal static InputAction RadialMenuToggleAction = new InputAction("Open", (InputActionType)1, "<Keyboard>/alt", (string)null, (string)null, (string)null);
internal static InputAction RadialMenuGoBackAction = new InputAction("Close", (InputActionType)1, "<Mouse>/rightButton", (string)null, (string)null, (string)null);
public static event RadialMenuInputLoadingEvent OnInputPreLoaded;
public static event RadialMenuInputLoadingEvent OnInputPostLoaded;
public static event RadialMenuInputLoadingEvent OnInputPreUnloaded;
public static event RadialMenuInputLoadingEvent OnInputPostUnloaded;
public static event RadialMenuInputEvent OnInputGoBack;
public static event RadialMenuToggleInputEvent OnInputToggle;
internal static void Init()
{
RadialMenuInput.OnInputPreLoaded?.Invoke();
RadialMenuConfig.UpdateBindings();
RadialMenuToggleAction.Enable();
RadialMenuGoBackAction.Enable();
RadialMenuToggleAction.performed += RadialMenuToggleAction_performed;
RadialMenuGoBackAction.performed += RadialMenuGoBackAction_performed;
Cursor.lockState = (CursorLockMode)1;
RadialMenuInput.OnInputPostLoaded?.Invoke();
}
internal static void DeInit()
{
RadialMenuInput.OnInputPreUnloaded?.Invoke();
RadialMenuToggleAction.Disable();
RadialMenuGoBackAction.Disable();
RadialMenuToggleAction.performed -= RadialMenuToggleAction_performed;
RadialMenuGoBackAction.performed -= RadialMenuGoBackAction_performed;
RadialMenuInput.OnInputPostUnloaded?.Invoke();
}
private static void RadialMenuToggleAction_performed(CallbackContext ctx)
{
PlayerControllerB localPlayerController = GameNetworkManager.Instance.localPlayerController;
if (!localPlayerController.isTypingChat && !localPlayerController.isPlayerDead && !localPlayerController.quickMenuManager.isMenuOpen)
{
RadialMenuManager.RadialMenuOpen = !RadialMenuManager.RadialMenuOpen;
RadialMenuHUD.ToggleRadialMenu(RadialMenuManager.RadialMenuOpen);
RadialMenuInput.OnInputToggle?.Invoke(RadialMenuManager.RadialMenuOpen);
}
}
private static void RadialMenuGoBackAction_performed(CallbackContext ctx)
{
RadialMenuManager.GoBackMenu();
RadialMenuManager.UpdateChat();
RadialMenuInput.OnInputGoBack?.Invoke();
}
[HarmonyPatch(typeof(HUDManager), "CanPlayerScan")]
[HarmonyPrefix]
private static bool PingScanRadialMenuOpenPatch()
{
if (RadialMenuManager.RadialMenuOpen)
{
return false;
}
return true;
}
[HarmonyPatch(typeof(PlayerControllerB), "CanUseItem")]
[HarmonyPrefix]
private static bool ActivateItemRadialMenuOpenPatch()
{
if (RadialMenuManager.RadialMenuOpen)
{
return false;
}
return true;
}
}
public class RadialMenuManager
{
public delegate void RadialMenuMainLoadingEvent();
internal static bool RadialMenuLoaded = false;
internal static bool RadialMenuOpen = false;
public static List<RadialMenu> RadialMenuRegistry { get; private set; } = new List<RadialMenu>();
public static List<RadialMenu> RadialMenuHistory { get; private set; } = new List<RadialMenu>();
public static RadialMenu CurrentMenu { get; private set; }
public static RadialMenu LastMenu
{
get
{
if (RadialMenuHistory.Count <= 0)
{
return null;
}
return RadialMenuHistory.Last();
}
}
public static RadialMenu MainMenu { get; private set; } = new RadialMenu
{
name = "MainMenu"
};
public static List<RadialMenu.RadialButton> RadialButtonHistory { get; private set; } = new List<RadialMenu.RadialButton>();
public static RadialMenu.RadialButton MostRecentButton
{
get
{
if (RadialButtonHistory.Count <= 0)
{
return null;
}
return RadialButtonHistory.Last();
}
}
public static string MostRecentText
{
get
{
if (RadialButtonHistory.Count <= 0)
{
return string.Empty;
}
return RadialButtonHistory.Last().text.Trim();
}
}
public static event RadialMenuMainLoadingEvent OnMainMenuPreRegister;
public static event RadialMenuMainLoadingEvent OnMainMenuPostRegister;
public static event RadialMenuMainLoadingEvent OnReady;
public static event RadialMenuMainLoadingEvent OnPreExit;
public static event RadialMenuMainLoadingEvent OnPostExit;
[HarmonyPatch(typeof(RoundManager), "Awake")]
[HarmonyPostfix]
private static void AwakePatch()
{
RadialMenuHUD.Init();
RadialMenuInput.Init();
RadialMenuManager.OnMainMenuPreRegister?.Invoke();
RegisterRadialMenu(MainMenu);
RadialMenuManager.OnMainMenuPostRegister?.Invoke();
foreach (RadialMenu item in RadialMenuRegistry)
{
item.CreateRadialMenu(RadialMenuHUD.RadialMenuHUDObject.transform);
}
SetCurrentMenu(MainMenu);
RefreshMenu();
RadialMenuManager.OnReady?.Invoke();
}
[HarmonyPatch(typeof(GameNetworkManager), "Disconnect")]
[HarmonyPostfix]
private static void ResetPatch()
{
RadialMenuManager.OnPreExit?.Invoke();
foreach (RadialMenu item in RadialMenuRegistry)
{
item.RemoveRadialMenu();
}
RadialMenuInput.DeInit();
RadialMenuHUD.DeInit();
RadialMenuManager.OnPostExit?.Invoke();
}
public static RadialMenu ConstructAndRegisterRadialMenu(RadialMenu radialMenu)
{
RegisterRadialMenu(radialMenu);
return radialMenu;
}
public static void RegisterRadialMenu(RadialMenu radialMenu)
{
if (!RadialMenuRegistry.Contains(radialMenu))
{
RadialMenuRegistry.Add(radialMenu);
}
}
public static void SetCurrentMenu(RadialMenu menu, bool saveLastToHistory = true)
{
if (CurrentMenu != menu)
{
if (CurrentMenu != null && saveLastToHistory && CurrentMenu.saveToHistory)
{
RadialMenuHistory.Add(CurrentMenu);
}
CurrentMenu = menu;
}
}
public static void GoBackMenu()
{
if (RadialMenuHistory.Count > 0)
{
RadialMenu lastMenu = LastMenu;
RadialMenu currentMenu = CurrentMenu;
if (RadialMenuHistory.Count == RadialButtonHistory.Count)
{
RemoveRadialButtonHistory();
}
SetCurrentMenu(lastMenu, saveLastToHistory: false);
RefreshMenu(currentMenu, lastMenu);
RemoveFromRadialMenuHistory();
}
}
public static void RefreshMenu()
{
RadialMenu lastMenu = LastMenu;
if (lastMenu != null)
{
lastMenu.gameObject.SetActive(false);
}
RadialMenu currentMenu = CurrentMenu;
if (currentMenu != null)
{
currentMenu.gameObject.SetActive(true);
}
}
public static void RefreshMenu(RadialMenu deactivatingMenu, RadialMenu activatingMenu)
{
if (deactivatingMenu != null)
{
deactivatingMenu.gameObject.SetActive(false);
}
if (activatingMenu != null)
{
activatingMenu.gameObject.SetActive(true);
}
}
public static void AddToRadialMenuHistory(RadialMenu radialMenu)
{
RadialMenuHistory.Add(radialMenu);
}
public static void ModifyRadialMenuHistory(RadialMenu radialMenu, int i)
{
RadialMenuHistory.RemoveAt(i);
RadialMenuHistory.Insert(i, radialMenu);
}
public static void RemoveFromRadialMenuHistory()
{
RadialMenuHistory.RemoveAt(RadialMenuHistory.Count - 1);
}
public static void RemoveFromRadialMenuHistory(int i)
{
RadialMenuHistory.RemoveAt(i);
}
public static void AddRadialButtonHistory(RadialMenu.RadialButton radialButton)
{
RadialButtonHistory.Add(radialButton);
UpdateChat();
}
public static void AddRadialButtonHistory(string text)
{
RadialMenu.RadialButton item = new RadialMenu.RadialButton(text);
RadialButtonHistory.Add(item);
UpdateChat();
}
public static void InsertRadialButtonHistory(RadialMenu.RadialButton radialButton, int i)
{
RadialButtonHistory.Insert(i, radialButton);
UpdateChat();
}
public static void InsertRadialButtonHistory(string text, int i)
{
RadialMenu.RadialButton item = new RadialMenu.RadialButton(text);
RadialButtonHistory.Insert(i, item);
UpdateChat();
}
public static void ModifyRadialButtonHistory(RadialMenu.RadialButton radialButton, int i)
{
RadialButtonHistory.RemoveAt(i);
RadialButtonHistory.Insert(i, radialButton);
UpdateChat();
}
public static void ModifyRadialButtonHistory(string text, int i)
{
RadialMenu.RadialButton item = new RadialMenu.RadialButton(text);
RadialButtonHistory.RemoveAt(i);
RadialButtonHistory.Insert(i, item);
UpdateChat();
}
public static void RemoveRadialButtonHistory()
{
if (RadialButtonHistory.Count > 0)
{
RadialButtonHistory.RemoveAt(RadialButtonHistory.Count - 1);
UpdateChat();
}
}
public static void RemoveRadialButtonHistory(int i)
{
if (RadialButtonHistory.Count > 0)
{
RadialButtonHistory.RemoveAt(i);
UpdateChat();
}
}
internal static void UpdateChat()
{
RadialMenuHUD.UpdateChatPreview(JoinChatText().CapitalizeFirstChar());
RadialMenuHUD.UpdateChatRecentText(MostRecentText.CapitalizeFirstChar());
}
internal static string JoinChatText()
{
return GeneralExtensions.Join<RadialMenu.RadialButton>((IEnumerable<RadialMenu.RadialButton>)RadialButtonHistory, (Func<RadialMenu.RadialButton, string>)((RadialMenu.RadialButton radialButton) => radialButton.text), " ").Trim();
}
internal static void ResetChatText()
{
RadialButtonHistory.Clear();
RadialMenuHUD.UpdateChatPreview(string.Empty);
RadialMenuHUD.UpdateChatRecentText(string.Empty);
SetCurrentMenu(MainMenu);
RefreshMenu();
RadialMenuHistory.Clear();
}
internal static void SendChatText()
{
char value = (MostRecentButton.punctuation?.Invoke()).Value;
string self = JoinChatText();
self = self.CapitalizeFirstChar() + value;
PlayerControllerB localPlayerController = GameNetworkManager.Instance.localPlayerController;
HUDManager.Instance.AddTextToChatOnServer(self, (int)localPlayerController.playerClientId);
RadialMenuHUD.ToggleRadialMenu(open: false);
}
}
public class RadialMenu
{
public class RadialButton
{
public delegate void RadialButtonClicked(RadialMenu radialMenu, RadialButton radialButton);
private Sprite m_buttonSprite;
private Color m_buttonColor = Color.white;
private string m_text = string.Empty;
private string m_displayText = string.Empty;
private Func<char> m_punctuation = () => '.';
private Vector2 m_positionOverride = Vector2.zero;
private Vector2 m_sizeDelta = Vector2.one * 75f;
private float m_textSize = 12f;
private Color m_textColor = Color.black;
private TextAlignmentOptions m_textAlignment = (TextAlignmentOptions)514;
public RadialMenu parentRadialMenu;
public Func<RadialMenu> connectingRadialMenu;
public Action<RadialMenu, RadialButton> preRadialButtonClicked;
public Action<RadialMenu, RadialButton> postRadialButtonClicked;
public bool saveToHistory = true;
private bool created;
public GameObject gameObject { get; private set; }
public Transform transform { get; private set; }
public RectTransform rectTransform { get; private set; }
public Image image { get; private set; }
public Button button { get; private set; }
public TextMeshProUGUI textField { get; private set; }
public Sprite buttonSprite
{
get
{
return m_buttonSprite;
}
set
{
if (created && (Object)(object)image != (Object)null)
{
image.sprite = value;
}
m_buttonSprite = value;
}
}
public Color buttonColor
{
get
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
return m_buttonColor;
}
set
{
//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_001c: Unknown result type (might be due to invalid IL or missing references)
if (created && (Object)(object)image != (Object)null)
{
((Graphic)image).color = value;
}
m_buttonColor = value;
}
}
public string text
{
get
{
return m_text;
}
set
{
string text = value.Trim();
if (created && (Object)(object)textField != (Object)null)
{
((TMP_Text)textField).text = ((displayText == string.Empty) ? ("\"" + text + "\"") : displayText);
}
m_text = text;
}
}
public string displayText
{
get
{
return m_displayText;
}
set
{
if (created && (Object)(object)textField != (Object)null)
{
((TMP_Text)textField).text = ((displayText == string.Empty) ? ("\"" + value + "\"") : displayText);
}
m_displayText = value;
}
}
public Func<char> punctuation
{
get
{
return m_punctuation;
}
set
{
m_punctuation = value;
}
}
public Vector2 positionOverride
{
get
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
return m_positionOverride;
}
set
{
//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)
m_positionOverride = value;
if (created && parentRadialMenu != null)
{
parentRadialMenu.EvenlySplitOnUnitCircle();
}
}
}
public Vector2 sizeDelta
{
get
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
return m_sizeDelta;
}
set
{
//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_001c: Unknown result type (might be due to invalid IL or missing references)
if (created && (Object)(object)rectTransform != (Object)null)
{
rectTransform.sizeDelta = value;
}
m_sizeDelta = value;
}
}
public float textSize
{
get
{
return m_textSize;
}
set
{
if (created && (Object)(object)textField != (Object)null)
{
((TMP_Text)textField).fontSize = value;
}
m_textSize = value;
}
}
public Color textColor
{
get
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
return m_textColor;
}
set
{
//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_001c: Unknown result type (might be due to invalid IL or missing references)
if (created && (Object)(object)textField != (Object)null)
{
((Graphic)textField).color = value;
}
m_textColor = value;
}
}
public TextAlignmentOptions textAlignment
{
get
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
return m_textAlignment;
}
set
{
//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_001c: Unknown result type (might be due to invalid IL or missing references)
if (created && (Object)(object)textField != (Object)null)
{
((TMP_Text)textField).alignment = value;
}
m_textAlignment = value;
}
}
private string expressText
{
get
{
if (!(displayText == string.Empty))
{
return displayText;
}
return "\"" + text + "\"";
}
}
public event RadialButtonClicked PreRadialButtonClicked;
public event RadialButtonClicked PostRadialButtonClicked;
internal void QuoteOnQuoteDestroyRadialButton()
{
if (created)
{
created = false;
}
}
internal void CreateTextField()
{
//IL_0000: 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_0012: Expected O, but got Unknown
//IL_0082: 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_00a9: Unknown result type (might be due to invalid IL or missing references)
GameObject val = new GameObject
{
name = expressText
};
val.transform.SetParent(transform, false);
textField = val.AddComponent<TextMeshProUGUI>();
((TMP_Text)textField).text = ((displayText == string.Empty) ? ("\"" + text + "\"") : displayText);
((TMP_Text)textField).fontSize = textSize;
((Graphic)textField).color = textColor;
((TMP_Text)textField).alignment = textAlignment;
((TMP_Text)textField).rectTransform.sizeDelta = sizeDelta;
((TMP_Text)textField).enableWordWrapping = true;
}
internal void SetupRadialButton(RadialMenu parentRadialMenu)
{
//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_0027: Expected O, but got Unknown
//IL_0080: Unknown result type (might be due to invalid IL or missing references)
//IL_00be: Unknown result type (might be due to invalid IL or missing references)
//IL_00c8: Expected O, but got Unknown
//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
if (!created)
{
created = true;
gameObject = new GameObject
{
name = expressText
};
transform = gameObject.transform;
transform.SetParent(parentRadialMenu.transform, false);
this.parentRadialMenu = parentRadialMenu;
CreateTextField();
image = gameObject.AddComponent<Image>();
image.sprite = buttonSprite;
((Graphic)image).color = buttonColor;
button = gameObject.AddComponent<Button>();
((Selectable)button).image = image;
((UnityEvent)button.onClick).AddListener(new UnityAction(OnClick));
text = text.Trim();
Transform obj = ((Component)button).transform;
rectTransform = (RectTransform)(object)((obj is RectTransform) ? obj : null);
rectTransform.sizeDelta = sizeDelta;
}
}
internal void OnClick()
{
preRadialButtonClicked?.Invoke(parentRadialMenu, this);
this.PreRadialButtonClicked?.Invoke(parentRadialMenu, this);
RadialMenu radialMenu = connectingRadialMenu?.Invoke();
RadialMenu currentMenu = RadialMenuManager.CurrentMenu;
if (saveToHistory)
{
RadialMenuManager.AddRadialButtonHistory(this);
}
if (radialMenu == null || radialMenu.radialButtons.Count <= 0)
{
RadialMenuManager.SendChatText();
}
else
{
RadialMenuManager.SetCurrentMenu(radialMenu, RadialMenuManager.LastMenu != currentMenu);
}
RadialMenuManager.RefreshMenu(currentMenu, radialMenu);
postRadialButtonClicked?.Invoke(parentRadialMenu, this);
this.PostRadialButtonClicked?.Invoke(parentRadialMenu, this);
}
public RadialButton()
{
}//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_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_0052: 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_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_0082: Unknown result type (might be due to invalid IL or missing references)
public RadialButton(RadialMenu connectingRadialMenu)
{
//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_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_0052: 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_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_0082: Unknown result type (might be due to invalid IL or missing references)
displayText = connectingRadialMenu.name;
this.connectingRadialMenu = () => connectingRadialMenu;
}
public RadialButton(RadialMenu connectingRadialMenu, Color buttonColor)
{
//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_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_0052: 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_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_0082: 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)
displayText = connectingRadialMenu.name;
this.buttonColor = buttonColor;
this.connectingRadialMenu = () => connectingRadialMenu;
}
public RadialButton(string text)
{
//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_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_0052: 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_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_0082: Unknown result type (might be due to invalid IL or missing references)
this.text = text;
}
public RadialButton(string text, Color buttonColor)
{
//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_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_0052: 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_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_0082: 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)
this.text = text;
this.buttonColor = buttonColor;
}
public RadialButton(string text, char punctuation)
{
//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_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_0052: 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_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_0082: Unknown result type (might be due to invalid IL or missing references)
this.text = text;
displayText = $"\"{text}{punctuation}\"";
this.punctuation = () => punctuation;
}
public RadialButton(string text, string displayText)
{
//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_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_0052: 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_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_0082: Unknown result type (might be due to invalid IL or missing references)
this.text = text;
this.displayText = displayText;
}
public RadialButton(string text, RadialMenu connectingRadialMenu)
{
//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_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_0052: 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_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_0082: Unknown result type (might be due to invalid IL or missing references)
this.text = text;
this.connectingRadialMenu = () => connectingRadialMenu;
}
public RadialButton(string text, string displayText, RadialMenu connectingRadialMenu)
{
//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_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_0052: 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_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_0082: Unknown result type (might be due to invalid IL or missing references)
this.text = text;
this.displayText = displayText;
this.connectingRadialMenu = () => connectingRadialMenu;
}
}
public class UnitCircleOffset
{
public const float RIGHT = 0f;
public const float TOP_RIGHT = (float)Math.PI / 4f;
public const float TOP = (float)Math.PI / 2f;
public const float TOP_LEFT = (float)Math.PI * 3f / 4f;
public const float LEFT = (float)Math.PI;
public const float BOTTOM_LEFT = 3.926991f;
public const float BOTTOM = 4.712389f;
public const float BOTTOM_RIGHT = 5.4977875f;
}
private List<RadialButton> m_radialButtons = new List<RadialButton>();
public string name = "Menu";
public bool saveToHistory = true;
private float m_radialOffset = 4.712389f;
private float m_outwards = 175f;
public GameObject gameObject { get; private set; }
public Transform transform { get; private set; }
public List<RadialButton> radialButtons
{
get
{
return m_radialButtons;
}
set
{
m_radialButtons = value;
UpdateRadialButtons(m_radialButtons);
}
}
public float radialOffset
{
get
{
return m_radialOffset;
}
set
{
m_radialOffset = value;
EvenlySplitOnUnitCircle();
}
}
public float outwards
{
get
{
return m_outwards;
}
set
{
m_outwards = value;
EvenlySplitOnUnitCircle();
}
}
public bool created { get; private set; }
public void AddRadialButton(RadialButton button)
{
radialButtons.Add(button);
}
public void InsertRadialButton(RadialButton button, int i)
{
radialButtons.Insert(i, button);
}
public void UpdateRadialButtons(List<RadialButton> radialButtons)
{
if (created)
{
m_radialButtons.ForEach(delegate(RadialButton button)
{
button.QuoteOnQuoteDestroyRadialButton();
});
}
m_radialButtons.Clear();
m_radialButtons = radialButtons;
UpdateRadialButtons();
}
public void UpdateRadialButtons()
{
if (created)
{
radialButtons.ForEach(delegate(RadialButton button)
{
button.SetupRadialButton(this);
});
EvenlySplitOnUnitCircle();
}
}
public void RemoveRadialButton(int i)
{
radialButtons.RemoveAt(i);
}
internal void EvenlySplitOnUnitCircle()
{
//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_0043: 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_0058: 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_0068: 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_0074: 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)
for (int j = 0; j < radialButtons.Count; j++)
{
RadialButton radialButton = radialButtons[j];
if (radialButton.positionOverride != Vector2.zero)
{
radialButton.rectTransform.anchoredPosition = radialButton.positionOverride;
continue;
}
float x2 = GetPointOnUnitCircle(j);
Vector2 anchoredPosition = Vector2.op_Implicit(RadialMenuHUD.RadialMenuHUDCamera.ScreenToWorldPoint(Vector2.op_Implicit(RadialMenuHUD.Center))) + GetPositionOnUnitCircle(x2) * outwards;
radialButton.rectTransform.anchoredPosition = anchoredPosition;
}
float GetPointOnUnitCircle(int i)
{
return (float)Math.PI * 2f * ((float)i / (float)radialButtons.Count) + radialOffset;
}
static Vector2 GetPositionOnUnitCircle(float x)
{
//IL_000c: Unknown result type (might be due to invalid IL or missing references)
return new Vector2(Mathf.Cos(x), Mathf.Sin(x));
}
}
internal void CreateRadialMenu(Transform parentTransform)
{
//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_0027: Expected O, but got Unknown
if (!created)
{
created = true;
gameObject = new GameObject
{
name = name
};
transform = gameObject.transform;
transform.SetParent(parentTransform, false);
UpdateRadialButtons();
gameObject.SetActive(false);
}
}
internal void RemoveRadialMenu()
{
created = false;
radialButtons.ForEach(delegate(RadialButton button)
{
button.QuoteOnQuoteDestroyRadialButton();
});
}
public RadialMenu(bool autoRegister = true)
{
if (autoRegister)
{
RadialMenuManager.RegisterRadialMenu(this);
}
}
public RadialMenu(string name, bool autoRegister = true)
{
this.name = name;
if (autoRegister)
{
RadialMenuManager.RegisterRadialMenu(this);
}
}
}
public class RadialMenuSetupDefaults
{
public static RadialMenu positionsMenu = new RadialMenu("Positionni");
public static RadialMenu playersMenu = new RadialMenu("Players");
public static RadialMenu monstersMenu2 = new RadialMenu("Monstersi 2")
{
saveToHistory = false,
radialOffset = (float)Math.PI
};
public static RadialMenu monstersMenu = new RadialMenu("Monstersi")
{
radialOffset = 0f
};
public static RadialMenu commandsMenu = new RadialMenu("Commandii");
public static RadialMenu answersMenu = new RadialMenu("Answersi");
public static RadialMenu questionsMenu = new RadialMenu("Questionni");
public static RadialMenu greetingsMenu = new RadialMenu("Emotionsi");
public static RadialMenu observationsMenu = new RadialMenu("Observationni");
public static RadialMenu urgentMenu = new RadialMenu("URGENTSI");
public static RadialMenu defaultMenu = new RadialMenu("Flopsi Quicksi Chat");
public static List<RadialMenu.RadialButton> defaultMenuButtons = new List<RadialMenu.RadialButton>();
internal static void Init()
{
//IL_000b: 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_0035: 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_005f: 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_0089: Unknown result type (might be due to invalid IL or missing references)
//IL_040b: 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_042b: Unknown result type (might be due to invalid IL or missing references)
//IL_0440: Unknown result type (might be due to invalid IL or missing references)
//IL_0455: Unknown result type (might be due to invalid IL or missing references)
//IL_046a: 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_0494: 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_04be: Unknown result type (might be due to invalid IL or missing references)
//IL_04d3: Unknown result type (might be due to invalid IL or missing references)
defaultMenuButtons = new List<RadialMenu.RadialButton>
{
new RadialMenu.RadialButton(observationsMenu, Color.cyan),
new RadialMenu.RadialButton(questionsMenu, Color.yellow),
new RadialMenu.RadialButton(commandsMenu, Color.magenta),
new RadialMenu.RadialButton(urgentMenu, Color.red),
new RadialMenu.RadialButton(answersMenu, Color.green),
new RadialMenu.RadialButton(playersMenu, Color.blue),
new RadialMenu.RadialButton(greetingsMenu, Color.white)
};
positionsMenu.UpdateRadialButtons(new List<RadialMenu.RadialButton>
{
new RadialMenu.RadialButton("thaddar way!", "\"thaddar way!\" (point)")
{
postRadialButtonClicked = delegate
{
PerformEmoteFix(2);
}
},
new RadialMenu.RadialButton("ta the rightsi"),
new RadialMenu.RadialButton("uppa 'head"),
new RadialMenu.RadialButton("atta FireExitsi"),
new RadialMenu.RadialButton("atta Main"),
new RadialMenu.RadialButton("!"),
new RadialMenu.RadialButton("'ere"),
new RadialMenu.RadialButton("ta the leftsi")
});
monstersMenu2.UpdateRadialButtons(new List<RadialMenu.RadialButton>
{
new RadialMenu.RadialButton
{
displayText = "<<LASTSI PAGE>>",
saveToHistory = false,
connectingRadialMenu = () => monstersMenu
},
new RadialMenu.RadialButton("Nutcrackersi", positionsMenu),
new RadialMenu.RadialButton("Coilli", positionsMenu),
new RadialMenu.RadialButton("Jestersi", positionsMenu),
new RadialMenu.RadialButton("Maski", positionsMenu),
new RadialMenu.RadialButton("Giantii", positionsMenu),
new RadialMenu.RadialButton("Birdsi", positionsMenu),
new RadialMenu.RadialButton("Dogsi", positionsMenu)
{
preRadialButtonClicked = delegate
{
RadialMenuManager.ModifyRadialButtonHistory("Theres'an", RadialMenuManager.RadialButtonHistory.Count - 1);
}
},
new RadialMenu.RadialButton("Wormmi", positionsMenu)
{
preRadialButtonClicked = delegate
{
RadialMenuManager.ModifyRadialButtonHistory("Theres'an", RadialMenuManager.RadialButtonHistory.Count - 1);
}
}
});
monstersMenu.UpdateRadialButtons(new List<RadialMenu.RadialButton>
{
new RadialMenu.RadialButton
{
displayText = "<<NEXTTI PAGE>>",
saveToHistory = false,
connectingRadialMenu = () => monstersMenu2
},
new RadialMenu.RadialButton("Snarey Flee", positionsMenu),
new RadialMenu.RadialButton("Spiderri", positionsMenu),
new RadialMenu.RadialButton("Bugsi", positionsMenu),
new RadialMenu.RadialButton("Brackenna", positionsMenu),
new RadialMenu.RadialButton("Thumpersi", positionsMenu),
new RadialMenu.RadialButton("Slimesii", positionsMenu),
new RadialMenu.RadialButton("Ghostii", positionsMenu),
new RadialMenu.RadialButton("Lizardsi", positionsMenu)
});
commandsMenu.UpdateRadialButtons(new List<RadialMenu.RadialButton>
{
new RadialMenu.RadialButton("Followwi me"),
new RadialMenu.RadialButton("Stopsi"),
new RadialMenu.RadialButton("Shhhh!"),
new RadialMenu.RadialButton("Amma go 'head"),
new RadialMenu.RadialButton("Letsi go", "\"Letsi go {direction}\"", positionsMenu)
});
answersMenu.UpdateRadialButtons(new List<RadialMenu.RadialButton>
{
new RadialMenu.RadialButton("Eh?", Color.gray)
{
textColor = Color.white
},
new RadialMenu.RadialButton("Uuhh-", Color.gray),
new RadialMenu.RadialButton("Oi!", Color.gray),
new RadialMenu.RadialButton("Dunno-", Color.gray),
new RadialMenu.RadialButton("Nuh uh!", Color.red),
new RadialMenu.RadialButton("<color=red>ACK!", Color.white),
new RadialMenu.RadialButton("<color=red>AAA?", Color.white),
new RadialMenu.RadialButton("<color=red>AAAAA!!!", Color.white),
new RadialMenu.RadialButton("Yuh?", Color.green),
new RadialMenu.RadialButton("Yuh!", Color.green)
});
questionsMenu.UpdateRadialButtons(new List<RadialMenu.RadialButton>
{
new RadialMenu.RadialButton("Wha was thaddar", '?'),
new RadialMenu.RadialButton("Whosi there", '?'),
new RadialMenu.RadialButton("Are'ya oki", '?'),
new RadialMenu.RadialButton("Did'ja hearsi that", '?'),
new RadialMenu.RadialButton("Are'ya real", '?'),
new RadialMenu.RadialButton("Wha upsi", '?'),
new RadialMenu.RadialButton("Wha", '?')
});
greetingsMenu.UpdateRadialButtons(new List<RadialMenu.RadialButton>
{
new RadialMenu.RadialButton("<color=green>O-O", ' '),
new RadialMenu.RadialButton("<color=green>O-O!", ' '),
new RadialMenu.RadialButton("<color=blue>O~O", ' '),
new RadialMenu.RadialButton("<color=blue>O~O!", ' '),
new RadialMenu.RadialButton("<color=red>>:[", ' '),
new RadialMenu.RadialButton("<color=red>>:]", ' '),
new RadialMenu.RadialButton("<color=blue>o-o", ' '),
new RadialMenu.RadialButton("<color=blue>>~<", ' '),
new RadialMenu.RadialButton("<color=blue>>~<!", ' '),
new RadialMenu.RadialButton("<color=blue>>-<", ' '),
new RadialMenu.RadialButton("<color=blue>>-<!", ' '),
new RadialMenu.RadialButton("<color=blue>;<", ' '),
new RadialMenu.RadialButton("<color=green>;>", ' '),
new RadialMenu.RadialButton("<color=green>>:P", ' '),
new RadialMenu.RadialButton(":o", ' '),
new RadialMenu.RadialButton("<color=red>>:o", ' '),
new RadialMenu.RadialButton(">:D", ' '),
new RadialMenu.RadialButton(">:D", ' '),
new RadialMenu.RadialButton("<color=blue>D;", ' ')
});
observationsMenu.UpdateRadialButtons(new List<RadialMenu.RadialButton>
{
new RadialMenu.RadialButton("More scrapsi", "\"More scrapsi {direction}\"", positionsMenu),
new RadialMenu.RadialButton("Theres'a trappi", "\"Theres'a trappi {direction}\"", positionsMenu),
new RadialMenu.RadialButton("Theresi dead-end", "\"Theresi dead-end {direction}\"", positionsMenu),
new RadialMenu.RadialButton("Theres'a", "\"Theres'a(n) {monster} {direction}\"", monstersMenu),
new RadialMenu.RadialButton("Thaddar'n mimic", '!'),
new RadialMenu.RadialButton("Tha notsi real", '!')
});
urgentMenu.UpdateRadialButtons(new List<RadialMenu.RadialButton>
{
new RadialMenu.RadialButton("<color=red>NUTCRACKERSI", '!'),
new RadialMenu.RadialButton("<color=red>COILLSI", '!'),
new RadialMenu.RadialButton("<color=red>JESTERRI", '!'),
new RadialMenu.RadialButton("<color=red>MASKII", '!'),
new RadialMenu.RadialButton("<color=red>GIANTI", '!'),
new RadialMenu.RadialButton("<color=red>BIRDSII", '!'),
new RadialMenu.RadialButton("<color=red>SNAREY FLEE", '!'),
new RadialMenu.RadialButton("<color=red>SPIDERSI", '!'),
new RadialMenu.RadialButton("<color=red>BUGS-A", '!'),
new RadialMenu.RadialButton("<color=red>BRACKENNA", '!'),
new RadialMenu.RadialButton("<color=red>THUMPERSI", '!'),
new RadialMenu.RadialButton("<color=red>SLIMESII", '!'),
new RadialMenu.RadialButton("<color=red>GHOSTII HAUNTED", '!'),
new RadialMenu.RadialButton("<color=red>LIZARDSI", '!'),
new RadialMenu.RadialButton("<color=red>RUNSI", '!'),
new RadialMenu.RadialButton("<color=red>GO GO", '!'),
new RadialMenu.RadialButton("<color=red>HELPSII", '!')
});
defaultMenu.UpdateRadialButtons(defaultMenuButtons);
foreach (RadialMenu.RadialButton defaultMenuButton in defaultMenuButtons)
{
DisplayTextConfigFromButton(defaultMenuButton, defaultMenuButtons.IndexOf(defaultMenuButton));
ColorConfigFromButton(defaultMenuButton, defaultMenuButtons.IndexOf(defaultMenuButton));
}
RadialMenuManager.MainMenu.AddRadialButton(new RadialMenu.RadialButton(defaultMenu));
RadialMenuManager.OnReady += RadialMenuManager_OnReady;
RadialMenuManager.OnPostExit += RadialMenuManager_OnExit;
}
private static void RadialMenuManager_OnReady()
{
if (!((Object)(object)GameNetworkManager.Instance.localPlayerController == (Object)null))
{
SetupPlayerMenu(GameNetworkManager.Instance.localPlayerController.quickMenuManager);
}
}
private static void RadialMenuManager_OnExit()
{
playersMenu.radialButtons.Clear();
playersMenu.UpdateRadialButtons();
}
private static void PerformEmoteFix(int emoteIndex)
{
PlayerControllerB localPlayerController = GameNetworkManager.Instance.localPlayerController;
localPlayerController.timeSinceStartingEmote = 0f;
localPlayerController.performingEmote = true;
localPlayerController.playerBodyAnimator.SetInteger("emoteNumber", emoteIndex);
localPlayerController.StartPerformingEmoteServerRpc();
}
private static void ColorConfigFromButton(RadialMenu.RadialButton radialButton, int i)
{
//IL_003d: 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_00ab: Unknown result type (might be due to invalid IL or missing references)
//IL_00e2: 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_0106: Unknown result type (might be due to invalid IL or missing references)
//IL_010d: Expected O, but got Unknown
//IL_010d: Unknown result type (might be due to invalid IL or missing references)
//IL_0118: Expected O, but got Unknown
//IL_0118: Unknown result type (might be due to invalid IL or missing references)
//IL_0120: Expected O, but got Unknown
//IL_0129: Unknown result type (might be due to invalid IL or missing references)
//IL_012f: Expected O, but got Unknown
//IL_0151: Unknown result type (might be due to invalid IL or missing references)
//IL_0158: Expected O, but got Unknown
//IL_017a: Unknown result type (might be due to invalid IL or missing references)
//IL_0181: Expected O, but got Unknown
//IL_01a3: Unknown result type (might be due to invalid IL or missing references)
//IL_01da: Expected O, but got Unknown
RadialMenu radialMenu = radialButton.connectingRadialMenu();
ConfigEntry<int>[] colorValues = new ConfigEntry<int>[4]
{
Plugin.ConfigF.Bind<int>(radialMenu.name + " RadialMenu Options", "Color R", ConvertToRGB32(radialButton.buttonColor.r), "The Red of the RadialButton Color"),
Plugin.ConfigF.Bind<int>(radialMenu.name + " RadialMenu Options", "Color G", ConvertToRGB32(radialButton.buttonColor.g), "The Green of the RadialButton Color"),
Plugin.ConfigF.Bind<int>(radialMenu.name + " RadialMenu Options", "Color B", ConvertToRGB32(radialButton.buttonColor.b), "The Blue of the RadialButton Color"),
Plugin.ConfigF.Bind<int>(radialMenu.name + " RadialMenu Options", "Color A", ConvertToRGB32(radialButton.buttonColor.a), "The Alpha (Transparency) of the RadialButton Color")
};
IntSliderOptions val = new IntSliderOptions();
((BaseRangeOptions<int>)val).Min = 0;
((BaseRangeOptions<int>)val).Max = 255;
((BaseOptions)val).RequiresRestart = false;
IntSliderOptions val2 = val;
IntSliderConfigItem val3 = new IntSliderConfigItem(colorValues[0], val2);
colorValues[0].SettingChanged += delegate
{
//IL_0025: 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_003b: 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)
RadialMenu.RadialButton radialButton5 = defaultMenuButtons[i];
radialButton5.buttonColor = new Color(ConvertToRGB(colorValues[0].Value), radialButton5.buttonColor.g, radialButton5.buttonColor.b, radialButton5.buttonColor.a);
};
IntSliderConfigItem val4 = new IntSliderConfigItem(colorValues[1], val2);
colorValues[1].SettingChanged += delegate
{
//IL_0013: 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_003b: 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)
RadialMenu.RadialButton radialButton4 = defaultMenuButtons[i];
radialButton4.buttonColor = new Color(radialButton4.buttonColor.r, ConvertToRGB(colorValues[1].Value), radialButton4.buttonColor.b, radialButton4.buttonColor.a);
};
IntSliderConfigItem val5 = new IntSliderConfigItem(colorValues[2], val2);
colorValues[2].SettingChanged += delegate
{
//IL_0013: 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_003b: 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)
RadialMenu.RadialButton radialButton3 = defaultMenuButtons[i];
radialButton3.buttonColor = new Color(radialButton3.buttonColor.r, radialButton3.buttonColor.g, ConvertToRGB(colorValues[2].Value), radialButton3.buttonColor.a);
};
IntSliderConfigItem val6 = new IntSliderConfigItem(colorValues[3], val2);
colorValues[3].SettingChanged += delegate
{
//IL_0013: 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_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)
RadialMenu.RadialButton radialButton2 = defaultMenuButtons[i];
radialButton2.buttonColor = new Color(radialButton2.buttonColor.r, radialButton2.buttonColor.g, radialButton2.buttonColor.b, ConvertToRGB(colorValues[3].Value));
};
LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val3);
LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val4);
LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val5);
LethalConfigManager.AddConfigItem((BaseConfigItem)val6);
}
private static void DisplayTextConfigFromButton(RadialMenu.RadialButton radialButton, int i)
{
//IL_0050: Unknown result type (might be due to invalid IL or missing references)
//IL_0071: Expected O, but got Unknown
RadialMenu radialMenu = radialButton.connectingRadialMenu();
ConfigEntry<string> displayTextValue = Plugin.ConfigF.Bind<string>(radialMenu.name + " RadialMenu Options", "Display Text", radialButton.displayText, "The Display Text of the Radial Button");
TextInputFieldConfigItem val = new TextInputFieldConfigItem(displayTextValue, false);
displayTextValue.SettingChanged += delegate
{
defaultMenuButtons[i].displayText = displayTextValue.Value;
};
LethalConfigManager.AddConfigItem((BaseConfigItem)val);
}
private static int ConvertToRGB32(float colorValue)
{
return (int)(colorValue * 255f);
}
private static float ConvertToRGB(int colorValue)
{
return (float)colorValue / 255f;
}
[HarmonyPatch(typeof(QuickMenuManager), "AddUserToPlayerList")]
[HarmonyPostfix]
private static void SetupPlayerMenuJoin(QuickMenuManager __instance)
{
SetupPlayerMenu(__instance);
}
[HarmonyPatch(typeof(QuickMenuManager), "RemoveUserFromPlayerList")]
[HarmonyPostfix]
private static void SetupPlayerMenuLeave(QuickMenuManager __instance)
{
SetupPlayerMenu(__instance);
}
private static void SetupPlayerMenu(QuickMenuManager __instance)
{
List<RadialMenu.RadialButton> radialButtons = new List<RadialMenu.RadialButton>();
PlayerListSlot[] playerListSlots = __instance.playerListSlots;
foreach (PlayerListSlot val in playerListSlots)
{
playersMenu.AddRadialButton(new RadialMenu.RadialButton
{
text = ((TMP_Text)val.usernameHeader).text
});
}
playersMenu.UpdateRadialButtons(radialButtons);
}
}
}