using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using EmotesAPI;
using HG.Reflection;
using On.RoR2.UI;
using RiskOfOptions;
using RiskOfOptions.OptionConfigs;
using RiskOfOptions.Options;
using RoR2;
using RoR2.UI;
using TMPro;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.Events;
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: OptIn]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("CustomEmotesAdvancedPicker")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("CustomEmotesAdvancedPicker")]
[assembly: AssemblyTitle("CustomEmotesAdvancedPicker")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
namespace CustomEmotesAdvancedPicker;
[Serializable]
[BepInPlugin("com.brynzananas.customemotesadvancedpicker", "Custom Emotes Advanced Picker", "1.3.0")]
[BepInDependency("com.bepis.r2api", "5.0.10")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
public class Main : BaseUnityPlugin
{
public class NewPicker : MonoBehaviour
{
private TextMeshProUGUI currentEmoteText;
public bool edit = false;
public bool addingEmote = false;
private void OnEnable()
{
BoneMapper localMapper = CustomEmotesAPI.localMapper;
currentEmoteText = ((Component)((Component)this).transform.Find("CurrentEmotePanel/text")).GetComponent<TextMeshProUGUI>();
if ((Object)(object)localMapper != (Object)null)
{
((TMP_Text)currentEmoteText).text = "Current Emote: \n" + localMapper.currentClipName;
}
ScrollRect component = ((Component)((Component)this).transform.Find("AllEmotesPanel")).GetComponent<ScrollRect>();
component.scrollSensitivity = Sensivity.Value;
component = ((Component)((Component)this).transform.Find("CustomEmotesPanel")).GetComponent<ScrollRect>();
component.scrollSensitivity = Sensivity.Value;
}
private void OnDisable()
{
//IL_00bc: 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_0096: Unknown result type (might be due to invalid IL or missing references)
if (HoldAndRelease.Value)
{
if (Object.op_Implicit((Object)(object)selected))
{
try
{
CustomEmotesAPI.PlayAnimation(((Object)selected).name, -2);
}
catch
{
}
}
else if (!continueEmote)
{
try
{
CustomEmotesAPI.PlayAnimation("none", -2);
}
catch
{
}
}
}
if (Object.op_Implicit((Object)(object)selected))
{
((Graphic)selected.GetComponent<Image>()).color = inactiveColorConfig.Value;
selected.transform.localScale = Vector3.one;
}
((Graphic)((Component)((Component)this).transform.Find("CurrentEmotePanel")).GetComponent<Image>()).color = inactiveColorConfig.Value;
continueEmote = false;
if (Object.op_Implicit((Object)(object)dragged))
{
Object.Destroy((Object)(object)dragged);
}
}
private void Update()
{
//IL_0044: 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_004d: 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_008e: 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_00b4: Unknown result type (might be due to invalid IL or missing references)
BoneMapper localMapper = CustomEmotesAPI.localMapper;
if ((Object)(object)localMapper != (Object)null)
{
((TMP_Text)currentEmoteText).text = "Current Emote: \n" + localMapper.currentClipName;
}
Transform val = ((Component)this).transform.Find("CustomEmotesPanel");
KeyboardShortcut value = AddCurrentEmoteConfig.Value;
if (Input.GetKeyDown(((KeyboardShortcut)(ref value)).MainKey) && Object.op_Implicit((Object)(object)localMapper) && localMapper.currentClipName != "none")
{
AddCurrentEmote();
}
value = SwitchList.Value;
if (Input.GetKeyDown(((KeyboardShortcut)(ref value)).MainKey))
{
SwitchListMethod();
}
value = BindCurrentEmoteConfig.Value;
if (Input.GetKeyDown(((KeyboardShortcut)(ref value)).MainKey))
{
BindCurrentEmoteMethod();
}
}
}
public class EmoteClick : MonoBehaviour, IPointerClickHandler, IEventSystemHandler, IPointerEnterHandler, IPointerExitHandler, IBeginDragHandler, IDragHandler, IDropHandler, IEndDragHandler
{
private string text;
private Image image;
public NewPicker hudComponent;
public int index;
public bool change = false;
private GameObject allPanel;
private GameObject customPanel;
public Canvas canvas;
public Transform previousTransform;
private RectTransform rectTransform;
private bool isDragging = false;
private GameObject keyPicker;
public void OnPointerClick(PointerEventData eventData)
{
//IL_000f: Unknown result type (might be due to invalid IL or missing references)
//IL_0015: Invalid comparison between Unknown and I4
//IL_014f: Unknown result type (might be due to invalid IL or missing references)
//IL_0155: Invalid comparison between Unknown and I4
//IL_00fb: 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_0195: Invalid comparison between Unknown and I4
//IL_01a4: 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_0205: Invalid comparison between Unknown and I4
//IL_01ee: Unknown result type (might be due to invalid IL or missing references)
//IL_0287: 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)
if (hudComponent.addingEmote && (int)eventData.button == 0)
{
if (PreventDupicates.Value)
{
string[] array = GetConfigString().Split("*");
if (array.Length != 0 && array.Contains(((Object)((Component)this).gameObject).name))
{
GameObject val = Object.Instantiate<GameObject>(Effect, trueHud.transform);
((TMP_Text)val.GetComponent<TextMeshProUGUI>()).text = "Emote " + ((Object)((Component)this).gameObject).name + " has been already added";
return;
}
}
GameObject val2 = Object.Instantiate<GameObject>(((Component)this).gameObject, customPanel.transform.Find("scroll"));
((Object)val2).name = ((Object)((Component)this).gameObject).name;
CustomEmotes.Value = GenerateCustomEmotesString();
((Graphic)val2.GetComponent<Image>()).color = inactiveColorConfig.Value;
GameObject val3 = Object.Instantiate<GameObject>(Effect, trueHud.transform);
((TMP_Text)val3.GetComponent<TextMeshProUGUI>()).text = "Added " + ((Object)((Component)this).gameObject).name;
return;
}
if (hudComponent.addingEmote && (int)eventData.button == 1)
{
try
{
CustomEmotesAPI.PlayAnimation(((Object)((Component)this).gameObject).name, -2);
return;
}
catch
{
return;
}
}
if (((Input.GetKey((KeyCode)323) && (int)eventData.button == 1) || (Input.GetKey((KeyCode)324) && (int)eventData.button == 0)) && !change && !isDragging && !hudComponent.edit)
{
keybindEmotes[((Object)((Component)this).gameObject).name].Value = new KeyboardShortcut((KeyCode)0, Array.Empty<KeyCode>());
}
else if ((int)eventData.button == 1 && !change && !isDragging && !hudComponent.edit && !keyPicker.activeSelf)
{
keyPicker.GetComponent<AddKeybind>().emote = ((Object)((Component)this).gameObject).name;
keyPicker.GetComponent<AddKeybind>().emoteOrNot = true;
keyPicker.SetActive(true);
}
else if (Input.GetKey((KeyCode)324) && (int)eventData.button == 0 && !change && !isDragging && hudComponent.edit)
{
GameObject val4 = Object.Instantiate<GameObject>(Effect, trueHud.transform);
((TMP_Text)val4.GetComponent<TextMeshProUGUI>()).text = "Removed " + ((Object)((Component)this).gameObject).name;
Object.Destroy((Object)(object)((Component)this).gameObject);
}
else if ((int)eventData.button == 0 && !change && !isDragging)
{
try
{
CustomEmotesAPI.PlayAnimation(((Object)((Component)this).gameObject).name, -2);
}
catch
{
}
if (CloseMenu.Value)
{
trueHud.SetActive(false);
ToggleCursor();
}
}
}
private void OnDestroy()
{
CustomEmotes.Value = GenerateCustomEmotesString();
}
public void OnPointerEnter(PointerEventData eventData)
{
//IL_0017: 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)
selected = ((Component)this).gameObject;
((Graphic)image).color = activeColorConfig.Value;
((Component)this).transform.localScale = new Vector3(1.1f, 1.1f, 1.1f);
}
public void OnPointerExit(PointerEventData eventData)
{
//IL_0012: 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)
selected = null;
((Graphic)image).color = inactiveColorConfig.Value;
((Component)this).transform.localScale = Vector3.one;
}
private void Start()
{
text = ((TMP_Text)((Component)((Component)this).transform.Find("EmoteName")).GetComponent<TextMeshProUGUI>()).text;
image = ((Component)this).GetComponent<Image>();
hudComponent = trueHud.GetComponent<NewPicker>();
canvas = trueHud.GetComponent<Canvas>();
allPanel = ((Component)trueHud.transform.Find("AllEmotesPanel")).gameObject;
customPanel = ((Component)trueHud.transform.Find("CustomEmotesPanel")).gameObject;
rectTransform = ((Component)this).GetComponent<RectTransform>();
keyPicker = ((Component)trueHud.transform.Find("KeybindingEmote")).gameObject;
}
private void Update()
{
}
public void OnBeginDrag(PointerEventData eventData)
{
//IL_000f: Unknown result type (might be due to invalid IL or missing references)
//IL_0015: Invalid comparison between Unknown and I4
if (hudComponent.edit && (int)eventData.button <= 0)
{
previousTransform = ((Component)this).transform.parent;
index = ((Component)this).transform.GetSiblingIndex();
((Component)this).transform.SetParent(((Component)canvas).transform);
((Component)this).transform.SetAsLastSibling();
((Graphic)((Component)this).GetComponent<Image>()).raycastTarget = false;
Debug.Log((object)((Graphic)((Component)this).GetComponent<Image>()).raycastTarget);
isDragging = true;
dragged = ((Component)this).gameObject;
}
}
public void OnDrag(PointerEventData eventData)
{
//IL_000f: Unknown result type (might be due to invalid IL or missing references)
//IL_0015: Invalid comparison between Unknown and I4
//IL_0027: Unknown result type (might be due to invalid IL or missing references)
//IL_002d: 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)
if (hudComponent.edit && (int)eventData.button <= 0)
{
RectTransform obj = rectTransform;
obj.anchoredPosition += eventData.delta / canvas.scaleFactor;
}
}
public void OnDrop(PointerEventData eventData)
{
if (hudComponent.edit)
{
Debug.Log((object)((Component)this).gameObject);
Debug.Log((object)eventData.pointerDrag);
eventData.pointerDrag.GetComponent<EmoteClick>().change = true;
eventData.pointerDrag.transform.SetParent(((Component)this).transform.parent);
eventData.pointerDrag.transform.SetSiblingIndex(((Component)this).transform.GetSiblingIndex());
eventData.pointerDrag.GetComponent<EmoteClick>().isDragging = false;
CustomEmotes.Value = GenerateCustomEmotesString();
}
}
public void OnEndDrag(PointerEventData eventData)
{
//IL_000f: Unknown result type (might be due to invalid IL or missing references)
//IL_0015: Invalid comparison between Unknown and I4
//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)
if (!hudComponent.edit || (int)eventData.button > 0)
{
return;
}
List<RaycastResult> list = new List<RaycastResult>();
((BaseRaycaster)((Component)hudComponent).gameObject.GetComponent<GraphicRaycaster>()).Raycast(eventData, list);
foreach (RaycastResult item in list)
{
RaycastResult current = item;
Debug.Log((object)((RaycastResult)(ref current)).gameObject);
}
if (!change)
{
((Component)this).transform.SetParent(previousTransform);
((Component)this).transform.SetSiblingIndex(index);
}
change = false;
((Graphic)((Component)this).GetComponent<Image>()).raycastTarget = true;
isDragging = false;
dragged = null;
}
}
public class ContinueEmote : MonoBehaviour, IPointerEnterHandler, IEventSystemHandler, IPointerExitHandler, IPointerClickHandler
{
private Image image;
private void Start()
{
image = ((Component)this).GetComponent<Image>();
}
public void OnPointerEnter(PointerEventData eventData)
{
//IL_0012: Unknown result type (might be due to invalid IL or missing references)
continueEmote = true;
((Graphic)image).color = activeColorConfig.Value;
}
public void OnPointerExit(PointerEventData eventData)
{
//IL_0012: Unknown result type (might be due to invalid IL or missing references)
continueEmote = false;
((Graphic)image).color = inactiveColorConfig.Value;
}
public void OnPointerClick(PointerEventData eventData)
{
CustomEmotesAPI.PlayAnimation("none", -2);
trueHud.SetActive(false);
ToggleCursor();
}
}
public class CreatePanel : MonoBehaviour, IPointerClickHandler, IEventSystemHandler
{
private GameObject allPanel;
private GameObject customPanel;
public void OnPointerClick(PointerEventData eventData)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Invalid comparison between Unknown and I4
if ((int)eventData.button == 1)
{
((Component)trueHud.transform.Find("KeybindingEmote")).GetComponent<AddKeybind>().emote = "CreateNewPanel";
((Component)trueHud.transform.Find("KeybindingEmote")).GetComponent<AddKeybind>().emoteOrNot = false;
((Component)trueHud.transform.Find("KeybindingEmote")).gameObject.SetActive(true);
}
else
{
SwitchListMethod();
}
}
private void Start()
{
allPanel = ((Component)trueHud.transform.Find("AllEmotesPanel")).gameObject;
customPanel = ((Component)trueHud.transform.Find("CustomEmotesPanel")).gameObject;
}
private void Update()
{
}
}
public class AddOrDelete : MonoBehaviour, IPointerClickHandler, IEventSystemHandler, IDropHandler
{
private GameObject allPanel;
private GameObject customPanel;
public void OnDrop(PointerEventData eventData)
{
if (Object.op_Implicit((Object)(object)eventData.pointerDrag.GetComponent<EmoteClick>()))
{
Object.Destroy((Object)(object)eventData.pointerDrag);
CustomEmotes.Value = GenerateCustomEmotesString();
}
}
public void OnPointerClick(PointerEventData eventData)
{
((Component)trueHud.transform).GetComponent<NewPicker>().addingEmote = true;
allPanel.SetActive(true);
customPanel.SetActive(false);
((Component)trueHud.transform).GetComponent<NewPicker>().edit = false;
((TMP_Text)((Component)trueHud.transform.Find("CreateNewPanel/text")).GetComponent<TextMeshProUGUI>()).text = "Click to end adding emotes";
}
private void Start()
{
allPanel = ((Component)trueHud.transform.Find("AllEmotesPanel")).gameObject;
customPanel = ((Component)trueHud.transform.Find("CustomEmotesPanel")).gameObject;
}
private void Update()
{
}
}
public class AddedEffect : MonoBehaviour
{
private RectTransform rectTransform;
private float timer = 0f;
private TextMeshProUGUI text;
private void Start()
{
rectTransform = ((Component)this).GetComponent<RectTransform>();
text = ((Component)this).GetComponent<TextMeshProUGUI>();
}
private void Update()
{
//IL_0008: 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_0022: 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)
RectTransform obj = rectTransform;
obj.anchoredPosition += new Vector2(0f, 60f * Time.deltaTime);
timer += Time.deltaTime;
((Graphic)text).color = new Color(1f, 1f, 1f, 1f - timer);
if (timer > 1f)
{
Object.Destroy((Object)(object)((Component)this).gameObject);
}
}
}
public class AddKeybind : MonoBehaviour, IPointerClickHandler, IEventSystemHandler
{
private RectTransform rectTransform;
private float timer = 0f;
private TextMeshProUGUI text;
public string emote;
public bool emoteOrNot;
private KeyCode keyToBind;
private void OnEnable()
{
if (emoteOrNot)
{
((TMP_Text)((Component)((Component)this).transform.Find("text")).GetComponent<TextMeshProUGUI>()).text = "Press a button to bind \"" + emote + "\" emote to it";
}
else
{
((TMP_Text)((Component)((Component)this).transform.Find("text")).GetComponent<TextMeshProUGUI>()).text = "Press a button to bind \"" + emote + "\" keybind";
}
}
private void Update()
{
//IL_002f: 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_0036: 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_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_0051: 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_006a: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Invalid comparison between Unknown and I4
//IL_0153: 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_009c: 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_01ae: 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_01c0: 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_0109: 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_01de: 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)
if (!Input.anyKeyDown)
{
return;
}
foreach (KeyCode value in Enum.GetValues(typeof(KeyCode)))
{
if (!Input.GetKey(value))
{
continue;
}
keyToBind = value;
if ((int)value == 323 || (int)value == 324)
{
break;
}
if ((int)value == 27)
{
if (emoteOrNot)
{
keybindEmotes[emote].Value = new KeyboardShortcut((KeyCode)0, Array.Empty<KeyCode>());
}
else
{
switch (emote)
{
case "CreateNewPanel":
SwitchList.Value = new KeyboardShortcut((KeyCode)0, Array.Empty<KeyCode>());
break;
case "AddCurrentEmote":
AddCurrentEmoteConfig.Value = new KeyboardShortcut((KeyCode)0, Array.Empty<KeyCode>());
break;
case "BindEmotePanel":
BindCurrentEmoteConfig.Value = new KeyboardShortcut((KeyCode)0, Array.Empty<KeyCode>());
break;
}
}
}
else if (emoteOrNot)
{
keybindEmotes[emote].Value = new KeyboardShortcut(value, Array.Empty<KeyCode>());
}
else
{
switch (emote)
{
case "CreateNewPanel":
SwitchList.Value = new KeyboardShortcut(value, Array.Empty<KeyCode>());
break;
case "AddCurrentEmote":
AddCurrentEmoteConfig.Value = new KeyboardShortcut(value, Array.Empty<KeyCode>());
break;
case "BindEmotePanel":
BindCurrentEmoteConfig.Value = new KeyboardShortcut(value, Array.Empty<KeyCode>());
break;
}
}
((Component)this).gameObject.SetActive(false);
break;
}
}
public void OnPointerClick(PointerEventData eventData)
{
foreach (GameObject item in eventData.hovered)
{
if (((Object)item).name.Contains("cancel"))
{
((Component)this).gameObject.SetActive(false);
}
}
}
}
public class HighlightEmote : MonoBehaviour, IPointerEnterHandler, IEventSystemHandler
{
private Image Image;
private float timer = 0f;
public void OnPointerEnter(PointerEventData eventData)
{
Object.Destroy((Object)(object)this);
}
private void OnDestroy()
{
//IL_0007: 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)
((Component)this).transform.localScale = Vector3.one;
((Graphic)Image).color = inactiveColorConfig.Value;
}
private void Start()
{
//IL_0018: 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)
Image = ((Component)this).GetComponent<Image>();
((Graphic)Image).color = activeColorConfig.Value;
((Component)this).transform.localScale = new Vector3(1.25f, 1.25f, 1.25f);
}
private void Update()
{
//IL_0007: 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_0027: 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)
//IL_004a: 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_0063: Unknown result type (might be due to invalid IL or missing references)
//IL_0073: 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)
//IL_007f: 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_008b: 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_00a8: Unknown result type (might be due to invalid IL or missing references)
//IL_00ad: 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)
Vector3 val = Vector3.MoveTowards(new Vector3(((Graphic)Image).color.r, ((Graphic)Image).color.g, ((Graphic)Image).color.b), new Vector3(inactiveColorConfig.Value.r, inactiveColorConfig.Value.g, inactiveColorConfig.Value.b), 0.5f * Time.deltaTime);
((Graphic)Image).color = new Color(val.x, val.y, val.z);
((Component)this).transform.localScale = Vector3.MoveTowards(((Component)this).transform.localScale, Vector3.one, 0.5f * Time.deltaTime);
timer += Time.deltaTime;
if (timer > 1f)
{
Object.Destroy((Object)(object)this);
}
}
}
public class SettingsComponent : MonoBehaviour, IPointerClickHandler, IEventSystemHandler
{
public void OnPointerClick(PointerEventData eventData)
{
if (((Object)eventData.hovered[0].transform.parent).name.Contains("EnableDuplicates") || ((Object)eventData.hovered[0]).name.Contains("EnableDuplicates"))
{
if (PreventDupicates.Value)
{
PreventDupicates.Value = false;
}
else
{
PreventDupicates.Value = true;
}
}
if (((Object)eventData.hovered[0].transform.parent).name.Contains("CloseAfterSelection") || ((Object)eventData.hovered[0]).name.Contains("CloseAfterSelection"))
{
if (CloseMenu.Value)
{
CloseMenu.Value = false;
}
else
{
CloseMenu.Value = true;
}
}
}
}
public class BindCurrentEmote : MonoBehaviour, IPointerClickHandler, IEventSystemHandler
{
private GameObject keyPicker;
public void OnPointerClick(PointerEventData eventData)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Invalid comparison between Unknown and I4
if ((int)eventData.button == 1)
{
((Component)trueHud.transform.Find("KeybindingEmote")).GetComponent<AddKeybind>().emote = "BindEmotePanel";
((Component)trueHud.transform.Find("KeybindingEmote")).GetComponent<AddKeybind>().emoteOrNot = false;
((Component)trueHud.transform.Find("KeybindingEmote")).gameObject.SetActive(true);
}
else
{
BindCurrentEmoteMethod();
}
}
}
public class AddCurrentEmoteComponent : MonoBehaviour, IPointerClickHandler, IEventSystemHandler
{
public void OnPointerClick(PointerEventData eventData)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Invalid comparison between Unknown and I4
if ((int)eventData.button == 1)
{
((Component)trueHud.transform.Find("KeybindingEmote")).GetComponent<AddKeybind>().emote = "AddCurrentEmote";
((Component)trueHud.transform.Find("KeybindingEmote")).GetComponent<AddKeybind>().emoteOrNot = false;
((Component)trueHud.transform.Find("KeybindingEmote")).gameObject.SetActive(true);
}
else
{
AddCurrentEmote();
}
}
}
public class DoIReallyNeedToAddAnotherComponent : MonoBehaviour, IPointerClickHandler, IEventSystemHandler
{
public void OnPointerClick(PointerEventData eventData)
{
GameObject gameObject = ((Component)trueHud.transform.Find("DOCUMENTATION!!!")).gameObject;
if (!gameObject.activeSelf)
{
gameObject.SetActive(true);
}
else
{
gameObject.SetActive(false);
}
}
}
public const string ModGuid = "com.brynzananas.customemotesadvancedpicker";
public const string ModName = "Custom Emotes Advanced Picker";
public const string ModVer = "1.3.0";
public static AssetBundle UnityAssets;
public static GameObject HudObject;
public static GameObject EmoteObject;
public static GameObject Effect;
public static Material FontMaterial;
public static Material FontMaterial2;
public static Vector3 mousePosition;
public static GameObject selected;
public static GameObject dragged;
public static Sprite inactiveSprite;
public static Sprite activeSprite;
public static Color activeColor = new Color(1f, 0.8f, 0f);
public static Color inactiveColor = Color.white;
public static bool continueEmote = false;
public static ConfigEntry<KeyboardShortcut> NewEmoteMenu;
public static ConfigEntry<KeyboardShortcut> CustomRandomEmote;
public static ConfigEntry<KeyboardShortcut> BindCurrentEmoteConfig;
public static ConfigEntry<KeyboardShortcut> AddCurrentEmoteConfig;
public static ConfigEntry<KeyboardShortcut> SwitchList;
public static ConfigEntry<bool> CloseMenu;
public static ConfigEntry<bool> HoldAndRelease;
public static ConfigEntry<float> Sensivity;
public static ConfigEntry<string> CustomEmotes;
public static ConfigEntry<bool> PreventDupicates;
public static ConfigEntry<bool> Sort;
public static ConfigEntry<Color> activeColorConfig;
public static ConfigEntry<Color> inactiveColorConfig;
public static ConfigEntry<Color> textColor;
public static ConfigEntry<Color> outlineColor;
public static ConfigEntry<Color> textColorKey;
public static ConfigEntry<Color> outlineColorKey;
public static ConfigEntry<Color> backgroundColor;
public static ConfigEntry<int> Scale;
public static ConfigEntry<float> TextScale;
public static ConfigEntry<bool> ShowButton1;
public static ConfigEntry<bool> ShowButton2;
public static ConfigEntry<bool> ShowButton3;
public static ConfigEntry<bool> ShowButton4;
public static ConfigEntry<bool> ShowSettings;
public static Dictionary<ConfigEntry<KeyboardShortcut>, string> emoteKeybinds = new Dictionary<ConfigEntry<KeyboardShortcut>, string>();
public static Dictionary<string, ConfigEntry<KeyboardShortcut>> keybindEmotes = new Dictionary<string, ConfigEntry<KeyboardShortcut>>();
public static GameObject trueHud;
private HUD MenuHud = null;
public ChatBox chatBox;
public static PluginInfo PInfo { get; private set; }
public void Awake()
{
//IL_0018: 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_006e: Unknown result type (might be due to invalid IL or missing references)
//IL_0099: Unknown result type (might be due to invalid IL or missing references)
//IL_00c7: 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_0239: Unknown result type (might be due to invalid IL or missing references)
//IL_025d: 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_02b4: 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_0310: Unknown result type (might be due to invalid IL or missing references)
//IL_05cf: Unknown result type (might be due to invalid IL or missing references)
//IL_05d9: Expected O, but got Unknown
//IL_05eb: Unknown result type (might be due to invalid IL or missing references)
//IL_05f5: Expected O, but got Unknown
//IL_05f0: Unknown result type (might be due to invalid IL or missing references)
//IL_05fa: Expected O, but got Unknown
//IL_0600: Unknown result type (might be due to invalid IL or missing references)
//IL_060a: Expected O, but got Unknown
//IL_0610: Unknown result type (might be due to invalid IL or missing references)
//IL_061a: Expected O, but got Unknown
//IL_0620: Unknown result type (might be due to invalid IL or missing references)
//IL_062a: Expected O, but got Unknown
//IL_0630: Unknown result type (might be due to invalid IL or missing references)
//IL_063a: Expected O, but got Unknown
//IL_0640: Unknown result type (might be due to invalid IL or missing references)
//IL_064a: Expected O, but got Unknown
//IL_0650: Unknown result type (might be due to invalid IL or missing references)
//IL_065a: Expected O, but got Unknown
//IL_0660: Unknown result type (might be due to invalid IL or missing references)
//IL_066a: Expected O, but got Unknown
//IL_0670: Unknown result type (might be due to invalid IL or missing references)
//IL_067a: Expected O, but got Unknown
//IL_0680: Unknown result type (might be due to invalid IL or missing references)
//IL_068a: Expected O, but got Unknown
//IL_0690: Unknown result type (might be due to invalid IL or missing references)
//IL_069a: Expected O, but got Unknown
//IL_06a0: Unknown result type (might be due to invalid IL or missing references)
//IL_06a5: Unknown result type (might be due to invalid IL or missing references)
//IL_06ac: Unknown result type (might be due to invalid IL or missing references)
//IL_06b9: Expected O, but got Unknown
//IL_06b4: Unknown result type (might be due to invalid IL or missing references)
//IL_06be: Expected O, but got Unknown
//IL_06c4: Unknown result type (might be due to invalid IL or missing references)
//IL_06c9: Unknown result type (might be due to invalid IL or missing references)
//IL_06d4: Unknown result type (might be due to invalid IL or missing references)
//IL_06e4: Expected O, but got Unknown
//IL_06df: Unknown result type (might be due to invalid IL or missing references)
//IL_06e9: Expected O, but got Unknown
//IL_06ef: Unknown result type (might be due to invalid IL or missing references)
//IL_06f9: Expected O, but got Unknown
//IL_06ff: Unknown result type (might be due to invalid IL or missing references)
//IL_0709: Expected O, but got Unknown
//IL_070f: Unknown result type (might be due to invalid IL or missing references)
//IL_0719: Expected O, but got Unknown
//IL_071f: Unknown result type (might be due to invalid IL or missing references)
//IL_0729: Expected O, but got Unknown
//IL_072f: Unknown result type (might be due to invalid IL or missing references)
//IL_0739: Expected O, but got Unknown
//IL_073f: Unknown result type (might be due to invalid IL or missing references)
//IL_0749: Expected O, but got Unknown
//IL_074f: Unknown result type (might be due to invalid IL or missing references)
//IL_0759: Expected O, but got Unknown
//IL_075f: Unknown result type (might be due to invalid IL or missing references)
//IL_0769: Expected O, but got Unknown
//IL_076f: Unknown result type (might be due to invalid IL or missing references)
//IL_0779: Expected O, but got Unknown
//IL_077f: Unknown result type (might be due to invalid IL or missing references)
//IL_0789: Expected O, but got Unknown
//IL_078f: Unknown result type (might be due to invalid IL or missing references)
//IL_0799: Expected O, but got Unknown
//IL_079f: Unknown result type (might be due to invalid IL or missing references)
//IL_07a9: Expected O, but got Unknown
NewEmoteMenu = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>("General", "New Emote Picker", new KeyboardShortcut((KeyCode)104, Array.Empty<KeyCode>()), "Displays the new emote picker");
CustomRandomEmote = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>("General", "Random Emote", new KeyboardShortcut((KeyCode)106, Array.Empty<KeyCode>()), "Plays random emote from your custom emote list");
BindCurrentEmoteConfig = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>("General", "Bind Current Emote", new KeyboardShortcut((KeyCode)118, Array.Empty<KeyCode>()), "Start binding current emote");
AddCurrentEmoteConfig = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>("General", "Add Current Emote", new KeyboardShortcut((KeyCode)98, Array.Empty<KeyCode>()), "Adds current emote to custom emote list");
SwitchList = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>("General", "Switch List", new KeyboardShortcut((KeyCode)325, Array.Empty<KeyCode>()), "Switch between lists");
CloseMenu = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "Close Menu After Selecting", true, "Close menu after selecting emote?");
HoldAndRelease = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "Hold And Release", false, "Pick emote by holding and releasing the button");
Sensivity = ((BaseUnityPlugin)this).Config.Bind<float>("General", "Scroll Sensivity", 48f, "Control scroll sensivity");
PreventDupicates = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "Prevent Adding Duplicates", true, "Prevents emote addition to the custom emote list if it's already there");
Sort = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "Sort Emotes", true, "Sorts emotes in all emotes panel. Needs restart if hud has been already built");
CustomEmotes = ((BaseUnityPlugin)this).Config.Bind<string>("General", "Custom Emotes List", "", "Do not try to edit it here!");
Scale = ((BaseUnityPlugin)this).Config.Bind<int>("UI", "Scale", 8, "Control the scale of emote list slot");
TextScale = ((BaseUnityPlugin)this).Config.Bind<float>("UI", "Text Scale", 30f, "Control the scale of emote list maximum text size");
inactiveColorConfig = ((BaseUnityPlugin)this).Config.Bind<Color>("UI", "Slot Color", new Color(0.8f, 0.8f, 0.8f), "Control the color of emote list slot");
activeColorConfig = ((BaseUnityPlugin)this).Config.Bind<Color>("UI", "Active Slot Color", new Color(1f, 0.8f, 0f), "Control the color of active emote list slot");
textColor = ((BaseUnityPlugin)this).Config.Bind<Color>("UI", "Text Color", Color.white, "Control the color of text");
outlineColor = ((BaseUnityPlugin)this).Config.Bind<Color>("UI", "Outline Color", Color.black, "Control the color of text outline");
textColorKey = ((BaseUnityPlugin)this).Config.Bind<Color>("UI", "Second Text Color", new Color(1f, 0.8f, 0f), "Control the color of text for keybinds");
outlineColorKey = ((BaseUnityPlugin)this).Config.Bind<Color>("UI", "Second Outline Color", Color.black, "Control the color of text outline for keybinds");
backgroundColor = ((BaseUnityPlugin)this).Config.Bind<Color>("UI", "Background Color", new Color(0f, 0f, 0f, 0.8f), "Control the color of background");
ShowButton1 = ((BaseUnityPlugin)this).Config.Bind<bool>("UI", "Show Switch List button?", true, "");
ShowButton2 = ((BaseUnityPlugin)this).Config.Bind<bool>("UI", "Show Current Emote button?", true, "");
ShowButton3 = ((BaseUnityPlugin)this).Config.Bind<bool>("UI", "Show Add Current Emote button?", true, "");
ShowButton4 = ((BaseUnityPlugin)this).Config.Bind<bool>("UI", "Show Bind Current Emote button?", true, "");
ShowSettings = ((BaseUnityPlugin)this).Config.Bind<bool>("UI", "Show Settings?", true, "");
PInfo = ((BaseUnityPlugin)this).Info;
UnityAssets = AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(PInfo.Location), "assetbundles", "customemotesadvancedpicker"));
HudObject = UnityAssets.LoadAsset<GameObject>("Assets/CustomEmotes/EmotePicker.prefab");
EmoteObject = UnityAssets.LoadAsset<GameObject>("Assets/CustomEmotes/Emote.prefab");
activeSprite = UnityAssets.LoadAsset<Sprite>("Assets/CustomEmotes/texUICheckboxes_1.png");
inactiveSprite = UnityAssets.LoadAsset<Sprite>("Assets/CustomEmotes/texUICheckboxes_0.png");
Effect = UnityAssets.LoadAsset<GameObject>("Assets/CustomEmotes/AddedEffect.prefab");
FontMaterial = UnityAssets.LoadAsset<Material>("Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Roboto-Bold SDF.asset");
FontMaterial2 = UnityAssets.LoadAsset<Material>("Assets/CustomEmotes/Font2.asset");
Effect.AddComponent<AddedEffect>();
HudObject.AddComponent<NewPicker>();
EmoteObject.AddComponent<EmoteClick>();
((Component)HudObject.transform.Find("CurrentEmotePanel")).gameObject.AddComponent<ContinueEmote>();
((Component)HudObject.transform.Find("CreateNewPanel")).gameObject.AddComponent<CreatePanel>();
((LayoutGroup)((Component)HudObject.transform.Find("CustomEmotesPanel/scroll")).gameObject.GetComponent<GridLayoutGroup>()).childAlignment = (TextAnchor)4;
((Component)HudObject.transform.Find("CustomEmotesPanel/AddAndDelete")).gameObject.AddComponent<AddOrDelete>();
((LayoutGroup)((Component)HudObject.transform.Find("AllEmotesPanel/scroll")).gameObject.GetComponent<GridLayoutGroup>()).childAlignment = (TextAnchor)4;
((Component)HudObject.transform.Find("KeybindingEmote")).gameObject.AddComponent<AddKeybind>();
((Component)HudObject.transform.Find("Settings")).gameObject.AddComponent<SettingsComponent>();
((Component)HudObject.transform.Find("BindEmotePanel")).gameObject.AddComponent<BindCurrentEmote>();
((Component)HudObject.transform.Find("AddCurrentEmote")).gameObject.AddComponent<AddCurrentEmoteComponent>();
HUD.Awake += new hook_Awake(AwakeMyHud);
ModSettingsManager.AddOption((BaseOption)new GenericButtonOption("Open Emote List", "General", new UnityAction(ConfigOpen)));
ModSettingsManager.AddOption((BaseOption)new KeyBindOption(NewEmoteMenu));
ModSettingsManager.AddOption((BaseOption)new KeyBindOption(CustomRandomEmote));
ModSettingsManager.AddOption((BaseOption)new KeyBindOption(BindCurrentEmoteConfig));
ModSettingsManager.AddOption((BaseOption)new KeyBindOption(AddCurrentEmoteConfig));
ModSettingsManager.AddOption((BaseOption)new KeyBindOption(SwitchList));
ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(CloseMenu));
ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(HoldAndRelease));
ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(Sensivity));
ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(PreventDupicates));
ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(Sort));
ModSettingsManager.AddOption((BaseOption)new IntSliderOption(Scale, new IntSliderConfig
{
min = 1,
max = 40
}));
ModSettingsManager.AddOption((BaseOption)new SliderOption(TextScale, new SliderConfig
{
min = 12f,
max = 64f
}));
ModSettingsManager.AddOption((BaseOption)new ColorOption(inactiveColorConfig));
ModSettingsManager.AddOption((BaseOption)new ColorOption(activeColorConfig));
ModSettingsManager.AddOption((BaseOption)new ColorOption(textColor));
ModSettingsManager.AddOption((BaseOption)new ColorOption(outlineColor));
ModSettingsManager.AddOption((BaseOption)new ColorOption(textColorKey));
ModSettingsManager.AddOption((BaseOption)new ColorOption(outlineColorKey));
ModSettingsManager.AddOption((BaseOption)new ColorOption(backgroundColor));
ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(ShowButton1));
ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(ShowButton2));
ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(ShowButton3));
ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(ShowButton4));
ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(ShowSettings));
PreventDupicates.SettingChanged += PreventDupicates_SettingChanged;
CloseMenu.SettingChanged += PreventDupicates_SettingChanged;
inactiveColorConfig.SettingChanged += GoThrough;
textColor.SettingChanged += RecolorMaterial;
outlineColor.SettingChanged += RecolorMaterial;
textColorKey.SettingChanged += RecolorMaterial;
outlineColorKey.SettingChanged += RecolorMaterial;
backgroundColor.SettingChanged += BindCurrentEmoteConfig_SettingChanged;
Scale.SettingChanged += GoThrough;
ShowButton1.SettingChanged += ShowDocumentation_SettingChanged;
ShowButton2.SettingChanged += ShowDocumentation_SettingChanged;
ShowButton3.SettingChanged += ShowDocumentation_SettingChanged;
ShowButton4.SettingChanged += ShowDocumentation_SettingChanged;
ShowSettings.SettingChanged += ShowDocumentation_SettingChanged;
BindCurrentEmoteConfig.SettingChanged += BindCurrentEmoteConfig_SettingChanged;
TextScale.SettingChanged += GoThrough;
SwitchList.SettingChanged += BindCurrentEmoteConfig_SettingChanged;
ModSettingsManager.SetModIcon(UnityAssets.LoadAsset<Sprite>("Assets/CustomEmotes/menu-icon.png"));
}
private void BindCurrentEmoteConfig_SettingChanged(object sender, EventArgs e)
{
//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_0039: Unknown result type (might be due to invalid IL or missing references)
//IL_003e: 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_0075: 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)
//IL_007d: 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_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_00ee: Unknown result type (might be due to invalid IL or missing references)
if (Object.op_Implicit((Object)(object)trueHud))
{
TextMeshProUGUI component = ((Component)trueHud.transform.Find("CreateNewPanel/keytext")).GetComponent<TextMeshProUGUI>();
KeyboardShortcut value = SwitchList.Value;
KeyCode mainKey = ((KeyboardShortcut)(ref value)).MainKey;
((TMP_Text)component).text = ((object)(KeyCode)(ref mainKey)).ToString();
TextMeshProUGUI component2 = ((Component)trueHud.transform.Find("BindEmotePanel/keytext")).GetComponent<TextMeshProUGUI>();
value = BindCurrentEmoteConfig.Value;
mainKey = ((KeyboardShortcut)(ref value)).MainKey;
((TMP_Text)component2).text = ((object)(KeyCode)(ref mainKey)).ToString();
TextMeshProUGUI component3 = ((Component)trueHud.transform.Find("AddCurrentEmote/keytext")).GetComponent<TextMeshProUGUI>();
value = AddCurrentEmoteConfig.Value;
mainKey = ((KeyboardShortcut)(ref value)).MainKey;
((TMP_Text)component3).text = ((object)(KeyCode)(ref mainKey)).ToString();
((Graphic)((Component)trueHud.transform.Find("background")).GetComponent<Image>()).color = backgroundColor.Value;
}
}
private void ShowDocumentation_SettingChanged(object sender, EventArgs e)
{
if (Object.op_Implicit((Object)(object)trueHud))
{
DoI(new string[5] { "CurrentEmotePanel", "CreateNewPanel", "Settings", "BindEmotePanel", "AddCurrentEmote" }, new ConfigEntry<bool>[5] { ShowButton2, ShowButton1, ShowSettings, ShowButton4, ShowButton3 });
}
void DoI(string[] paths, ConfigEntry<bool>[] configs)
{
for (int i = 0; i < paths.Length; i++)
{
((Component)trueHud.transform.Find(paths[i])).gameObject.SetActive(configs[i].Value);
}
ShowButton1.SettingChanged += ShowDocumentation_SettingChanged;
}
}
private void ConfigOpen()
{
if (!Object.op_Implicit((Object)(object)trueHud))
{
BuildUI();
}
trueHud.SetActive(true);
}
private void RecolorMaterial(object sender, EventArgs e)
{
//IL_0010: 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_0044: 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)
FontMaterial.SetColor("_FaceColor", textColor.Value);
FontMaterial.SetColor("_OutlineColor", outlineColor.Value);
FontMaterial2.SetColor("_FaceColor", textColorKey.Value);
FontMaterial2.SetColor("_OutlineColor", outlineColorKey.Value);
}
private void BuildUI()
{
//IL_0356: 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_035f: 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_037b: Unknown result type (might be due to invalid IL or missing references)
//IL_0395: Unknown result type (might be due to invalid IL or missing references)
//IL_039b: Unknown result type (might be due to invalid IL or missing references)
//IL_03f2: Unknown result type (might be due to invalid IL or missing references)
//IL_03f7: Unknown result type (might be due to invalid IL or missing references)
//IL_0403: Unknown result type (might be due to invalid IL or missing references)
//IL_0408: Unknown result type (might be due to invalid IL or missing references)
//IL_041b: Unknown result type (might be due to invalid IL or missing references)
//IL_0414: 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_0438: Unknown result type (might be due to invalid IL or missing references)
//IL_043d: Unknown result type (might be due to invalid IL or missing references)
//IL_0441: Unknown result type (might be due to invalid IL or missing references)
//IL_0446: Unknown result type (might be due to invalid IL or missing references)
//IL_0453: Unknown result type (might be due to invalid IL or missing references)
//IL_0463: Unknown result type (might be due to invalid IL or missing references)
//IL_0469: 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_047e: Unknown result type (might be due to invalid IL or missing references)
//IL_048a: Unknown result type (might be due to invalid IL or missing references)
//IL_048f: Unknown result type (might be due to invalid IL or missing references)
//IL_04a2: 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_04b2: Unknown result type (might be due to invalid IL or missing references)
//IL_01e7: Unknown result type (might be due to invalid IL or missing references)
//IL_0215: Unknown result type (might be due to invalid IL or missing references)
//IL_021f: Expected O, but got Unknown
if (Object.op_Implicit((Object)(object)trueHud))
{
return;
}
GameObject val = Object.Instantiate<GameObject>(HudObject);
List<string> list = new List<string>();
string[] array = CustomEmotes.Value.Split("*");
foreach (KeyValuePair<string, CustomAnimationClip> animClip in BoneMapper.animClips)
{
list.Add(animClip.Key);
}
if (Sort.Value)
{
list.Sort();
}
foreach (string item in list)
{
GameObject val2 = Object.Instantiate<GameObject>(EmoteObject);
string text = item;
while (text.Contains("\\"))
{
text = text.Replace("\\", "");
}
((Object)val2).name = text;
((TMP_Text)((Component)val2.transform.Find("EmoteName")).GetComponent<TextMeshProUGUI>()).text = text;
val2.transform.SetParent(val.transform.Find("AllEmotesPanel/scroll"));
string text2 = text;
while (text.Contains("'"))
{
text = text.Replace("'", "");
}
while (text.Contains("\""))
{
text = text.Replace("\"", "");
}
while (text.Contains("["))
{
text = text.Replace("[", "");
}
while (text.Contains("]"))
{
text = text.Replace("]", "");
}
ConfigEntry<KeyboardShortcut> val3 = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>("Emote Keybinds", text, new KeyboardShortcut((KeyCode)0, Array.Empty<KeyCode>()), "Keybind to play " + text);
val3.SettingChanged += EmoteConfig_SettingChanged;
ModSettingsManager.AddOption((BaseOption)new KeyBindOption(val3));
emoteKeybinds.Add(val3, text2);
keybindEmotes.Add(text2, val3);
}
if (array.Length != 0)
{
string[] array2 = array;
foreach (string text3 in array2)
{
if (text3 != null && text3 != "")
{
GameObject val4 = Object.Instantiate<GameObject>(EmoteObject);
string text4 = text3;
while (text4.Contains("\\"))
{
text4 = text4.Replace("\\", "");
}
((Object)val4).name = text4;
((TMP_Text)((Component)val4.transform.Find("EmoteName")).GetComponent<TextMeshProUGUI>()).text = text4;
val4.transform.SetParent(val.transform.Find("CustomEmotesPanel/scroll"));
}
}
}
val.SetActive(false);
trueHud = val;
Object.DontDestroyOnLoad((Object)(object)trueHud);
KeyboardShortcut value = keybindEmotes["none"].Value;
KeyCode mainKey = ((KeyboardShortcut)(ref value)).MainKey;
keybindEmotes["none"].Value = new KeyboardShortcut((KeyCode)27, Array.Empty<KeyCode>());
keybindEmotes["none"].Value = new KeyboardShortcut(mainKey, Array.Empty<KeyCode>());
bool value2 = PreventDupicates.Value;
if (PreventDupicates.Value)
{
PreventDupicates.Value = false;
}
else
{
PreventDupicates.Value = true;
}
PreventDupicates.Value = value2;
Color value3 = inactiveColorConfig.Value;
inactiveColorConfig.Value = ((inactiveColorConfig.Value == Color.white) ? Color.black : Color.white);
inactiveColorConfig.Value = value3;
value = BindCurrentEmoteConfig.Value;
mainKey = ((KeyboardShortcut)(ref value)).MainKey;
BindCurrentEmoteConfig.Value = new KeyboardShortcut((KeyCode)27, Array.Empty<KeyCode>());
BindCurrentEmoteConfig.Value = new KeyboardShortcut(mainKey, Array.Empty<KeyCode>());
value3 = textColor.Value;
textColor.Value = ((textColor.Value == Color.white) ? Color.black : Color.white);
textColor.Value = value3;
}
private void GoThrough(object sender, EventArgs e)
{
if (Object.op_Implicit((Object)(object)trueHud))
{
DoIt(trueHud.transform.Find("CustomEmotesPanel/scroll"));
DoIt(trueHud.transform.Find("AllEmotesPanel/scroll"));
ColorIt(new string[13]
{
"AllEmotesPanel", "CustomEmotesPanel", "AllEmotesPanel/scrollbar/Sliding Area/Handle", "AllEmotesPanel/scrollbar", "CustomEmotesPanel/scrollbar/Sliding Area/Handle", "CustomEmotesPanel/scrollbar", "KeybindingEmote", "Settings", "BindEmotePanel", "AddCurrentEmote",
"CustomEmotesPanel/AddAndDelete", "CreateNewPanel", "CurrentEmotePanel"
});
}
static void ColorIt(string[] paths)
{
//IL_0027: Unknown result type (might be due to invalid IL or missing references)
foreach (string text in paths)
{
((Graphic)((Component)trueHud.transform.Find(text)).GetComponent<Image>()).color = inactiveColorConfig.Value;
}
}
static void DoIt(Transform transform)
{
//IL_0027: 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_004b: Expected O, but got Unknown
//IL_0057: Unknown result type (might be due to invalid IL or missing references)
//IL_0080: Unknown result type (might be due to invalid IL or missing references)
//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
float num = (float)Scale.Value / 4f;
((Component)transform).GetComponent<GridLayoutGroup>().cellSize = new Vector2(80f * num, 40f * num);
foreach (Transform item in transform)
{
Transform val = item;
((Graphic)((Component)val).GetComponent<Image>()).color = inactiveColorConfig.Value;
val.Find("EmoteName").localScale = new Vector3(num / 2f, num / 2f, 1f);
val.Find("EmoteKey").localScale = new Vector3(num / 2f, num / 2f, 1f);
((TMP_Text)((Component)val.Find("EmoteName")).GetComponent<TextMeshProUGUI>()).fontSizeMax = TextScale.Value;
((TMP_Text)((Component)val.Find("EmoteKey")).GetComponent<TextMeshProUGUI>()).fontSizeMax = TextScale.Value / 1.5f;
}
}
}
private void PreventDupicates_SettingChanged(object sender, EventArgs e)
{
if (Object.op_Implicit((Object)(object)trueHud))
{
((Component)trueHud.transform.Find("Settings/EnableDuplicates/Image")).GetComponent<Image>().sprite = (PreventDupicates.Value ? inactiveSprite : activeSprite);
((Component)trueHud.transform.Find("Settings/CloseAfterSelection/Image")).GetComponent<Image>().sprite = (CloseMenu.Value ? activeSprite : inactiveSprite);
}
}
public void Update()
{
//IL_014d: 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_0156: 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_00a1: 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_01e3: Unknown result type (might be due to invalid IL or missing references)
//IL_01e8: Unknown result type (might be due to invalid IL or missing references)
//IL_01ec: 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_026b: Unknown result type (might be due to invalid IL or missing references)
//IL_026f: Unknown result type (might be due to invalid IL or missing references)
//IL_0275: Invalid comparison between Unknown and I4
//IL_0285: 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)
//IL_028e: Unknown result type (might be due to invalid IL or missing references)
int cursorOpenerCount = MPEventSystemManager.primaryEventSystem.cursorOpenerCount;
if (Input.GetKeyDown((KeyCode)27) && Object.op_Implicit((Object)(object)trueHud) && trueHud.activeSelf)
{
trueHud.SetActive(false);
if (Object.op_Implicit((Object)(object)Run.instance) && cursorOpenerCount > 0)
{
ToggleCursor();
}
}
if (PauseManager.isPaused || !Object.op_Implicit((Object)(object)Run.instance))
{
return;
}
KeyboardShortcut value;
if (HoldAndRelease.Value)
{
value = NewEmoteMenu.Value;
if (Input.GetKey(((KeyboardShortcut)(ref value)).MainKey))
{
if (!trueHud.activeSelf)
{
if (RequestChatBox())
{
return;
}
trueHud.SetActive(true);
if (cursorOpenerCount <= 0)
{
ToggleCursor();
}
}
}
else if (trueHud.activeSelf)
{
if (RequestChatBox())
{
return;
}
trueHud.SetActive(false);
if (cursorOpenerCount > 0)
{
ToggleCursor();
}
}
}
else
{
value = NewEmoteMenu.Value;
if (Input.GetKeyDown(((KeyboardShortcut)(ref value)).MainKey))
{
if (trueHud.activeSelf)
{
if (RequestChatBox())
{
return;
}
trueHud.SetActive(false);
if (cursorOpenerCount > 0)
{
ToggleCursor();
}
}
else
{
if (RequestChatBox())
{
return;
}
trueHud.SetActive(true);
if (cursorOpenerCount <= 0)
{
ToggleCursor();
}
}
}
}
value = CustomRandomEmote.Value;
if (Input.GetKeyDown(((KeyboardShortcut)(ref value)).MainKey))
{
string[] array = CustomEmotes.Value.Split("*");
int num = Random.RandomRangeInt(0, array.Length - 1);
CustomEmotesAPI.PlayAnimation(array[num], -2);
}
if (!Input.anyKeyDown)
{
return;
}
List<string> list = new List<string>();
foreach (KeyValuePair<ConfigEntry<KeyboardShortcut>, string> emoteKeybind in emoteKeybinds)
{
value = emoteKeybind.Key.Value;
if ((int)((KeyboardShortcut)(ref value)).MainKey > 0)
{
value = emoteKeybind.Key.Value;
if (Input.GetKeyDown(((KeyboardShortcut)(ref value)).MainKey))
{
list.Add(emoteKeybind.Value);
}
}
}
if (list.Count == 1)
{
CustomEmotesAPI.PlayAnimation(list[0], -2);
}
else if (list.Count > 1)
{
int index = Random.RandomRangeInt(0, list.Count);
CustomEmotesAPI.PlayAnimation(list[index], -2);
}
}
public bool RequestChatBox()
{
if ((Object)(object)chatBox == (Object)null)
{
chatBox = ((Component)((Component)MenuHud).transform).GetComponentInChildren<ChatBox>();
}
if (Object.op_Implicit((Object)(object)chatBox) && chatBox.showInput)
{
return true;
}
return false;
}
public static string GetConfigString()
{
string text = CustomEmotes.Value;
while (text.Contains("\\"))
{
text = text.Replace("\\", "");
}
return text;
}
public static int ToggleCursor()
{
MPEventSystem primaryEventSystem = MPEventSystemManager.primaryEventSystem;
primaryEventSystem.cursorOpenerCount += ((primaryEventSystem.cursorOpenerCount <= 0) ? 1 : (-1));
primaryEventSystem.cursorOpenerForGamepadCount += ((primaryEventSystem.cursorOpenerForGamepadCount <= 0) ? 1 : (-1));
return primaryEventSystem.cursorOpenerCount;
}
public static void SaveCursorPosition()
{
//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)
mousePosition = Input.mousePosition;
}
private void AwakeMyHud(orig_Awake orig, HUD self)
{
orig.Invoke(self);
MenuHud = self;
BuildUI();
}
private void EmoteConfig_SettingChanged(object sender, EventArgs e)
{
//IL_0039: Unknown result type (might be due to invalid IL or missing references)
//IL_003f: Expected O, but got Unknown
//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_0059: 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_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0061: Invalid comparison between Unknown and I4
if (!Object.op_Implicit((Object)(object)trueHud))
{
return;
}
foreach (Transform item in trueHud.transform.Find("AllEmotesPanel/scroll"))
{
Transform val = item;
KeyboardShortcut value = keybindEmotes[((Object)val).name].Value;
KeyCode mainKey = ((KeyboardShortcut)(ref value)).MainKey;
if ((int)mainKey == 0)
{
((Component)val.Find("EmoteKey")).gameObject.SetActive(false);
((TMP_Text)((Component)val.Find("EmoteKey")).gameObject.GetComponent<TextMeshProUGUI>()).text = "Key";
}
else
{
((Component)val.Find("EmoteKey")).gameObject.SetActive(true);
((TMP_Text)((Component)val.Find("EmoteKey")).gameObject.GetComponent<TextMeshProUGUI>()).text = ((object)(KeyCode)(ref mainKey)).ToString();
}
}
}
public static void SwitchListMethod()
{
//IL_0109: 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)
if (((Component)trueHud.transform).GetComponent<NewPicker>().addingEmote)
{
AllEmotesPanel().SetActive(false);
CustomEmotesPanel().SetActive(true);
trueHud.GetComponent<NewPicker>().edit = true;
trueHud.GetComponent<NewPicker>().addingEmote = false;
PanelText().text = "Switch to all emotes panel";
return;
}
if (AllEmotesPanel().activeSelf)
{
AllEmotesPanel().SetActive(false);
CustomEmotesPanel().SetActive(true);
trueHud.GetComponent<NewPicker>().edit = true;
PanelText().text = "Switch to all emotes panel";
}
else
{
AllEmotesPanel().SetActive(true);
CustomEmotesPanel().SetActive(false);
trueHud.GetComponent<NewPicker>().edit = false;
PanelText().text = "Switch to custom emotes panel";
}
if (Object.op_Implicit((Object)(object)selected))
{
((Graphic)selected.GetComponent<Image>()).color = inactiveColorConfig.Value;
selected.transform.localScale = Vector3.one;
}
static GameObject AllEmotesPanel()
{
return ((Component)trueHud.transform.Find("AllEmotesPanel")).gameObject;
}
static GameObject CustomEmotesPanel()
{
return ((Component)trueHud.transform.Find("CustomEmotesPanel")).gameObject;
}
static TMP_Text PanelText()
{
return (TMP_Text)(object)((Component)trueHud.transform.Find("CreateNewPanel/text")).GetComponent<TextMeshProUGUI>();
}
}
public static string GenerateCustomEmotesString()
{
//IL_002a: Unknown result type (might be due to invalid IL or missing references)
//IL_0030: Expected O, but got Unknown
string text = "";
foreach (Transform item in trueHud.transform.Find("CustomEmotesPanel/scroll"))
{
Transform val = item;
text = text + ((Object)((Component)val).gameObject).name + "*";
}
return text;
}
public static void BindCurrentEmoteMethod()
{
if (Object.op_Implicit((Object)(object)CustomEmotesAPI.localMapper))
{
if (!BindEmotePanel().activeSelf)
{
BindEmotePanel().GetComponent<AddKeybind>().emote = CustomEmotesAPI.localMapper.currentClipName;
BindEmotePanel().GetComponent<AddKeybind>().emoteOrNot = true;
BindEmotePanel().SetActive(true);
}
else
{
BindEmotePanel().SetActive(false);
}
}
static GameObject BindEmotePanel()
{
return ((Component)trueHud.transform.Find("KeybindingEmote")).gameObject;
}
}
public static void AddCurrentEmote()
{
//IL_0139: Unknown result type (might be due to invalid IL or missing references)
//IL_0167: 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)
if (!Object.op_Implicit((Object)(object)CustomEmotesAPI.localMapper))
{
return;
}
BoneMapper localMapper = CustomEmotesAPI.localMapper;
if (PreventDupicates.Value)
{
string[] array = GetConfigString().Split("*");
if (array.Length != 0 && array.Contains(localMapper.currentClipName))
{
GameObject val = Object.Instantiate<GameObject>(Effect, trueHud.transform);
((TMP_Text)val.GetComponent<TextMeshProUGUI>()).text = "Emote " + localMapper.currentClipName + " has been already added";
GameObject gameObject = ((Component)trueHud.transform.Find("CustomEmotesPanel/scroll/" + localMapper.currentClipName)).gameObject;
if (gameObject.activeInHierarchy)
{
gameObject.AddComponent<HighlightEmote>();
}
return;
}
}
GameObject val2 = Object.Instantiate<GameObject>(EmoteObject, trueHud.transform.Find("CustomEmotesPanel/scroll"));
float num = (float)Scale.Value / 4f;
val2.transform.Find("EmoteName").localScale = new Vector3(num / 2f, num / 2f, 1f);
val2.transform.Find("EmoteKey").localScale = new Vector3(num / 2f, num / 2f, 1f);
((Graphic)val2.GetComponent<Image>()).color = inactiveColorConfig.Value;
((Object)val2).name = localMapper.currentClipName;
((TMP_Text)((Component)val2.transform.Find("EmoteName")).GetComponent<TextMeshProUGUI>()).text = localMapper.currentClipName;
GameObject val3 = Object.Instantiate<GameObject>(Effect, trueHud.transform);
((TMP_Text)val3.GetComponent<TextMeshProUGUI>()).text = "Added " + localMapper.currentClipName;
CustomEmotes.Value = GenerateCustomEmotesString();
}
}