using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Configuration;
using HarmonyLib;
using UnityEngine;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("EmoteWheel")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("EmoteWheel")]
[assembly: AssemblyCopyright("Copyright © 2024")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("b404dec9-2569-4583-8089-1bae71ce6300")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace EmoteWheel;
[BepInPlugin("com.Playboy.EmoteWheel", "EmoteWheel", "1.0.0")]
public class Main : BaseUnityPlugin
{
[HarmonyPatch(/*Could not decode attribute arguments.*/)]
private class Patch_Shop_1
{
public static FieldInfo m_CategoryItemDicFieldInfo = typeof(ShopHandler).GetField("m_CategoryItemDic", BindingFlags.Instance | BindingFlags.NonPublic);
private static void Postfix(ref ShopHandler __instance)
{
//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_0082: Unknown result type (might be due to invalid IL or missing references)
//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
//IL_0103: Unknown result type (might be due to invalid IL or missing references)
if (instance.emoteShopItems.Count > 0)
{
return;
}
Dictionary<ShopItemCategory, List<ShopItem>> categoryItemDic = GetCategoryItemDic(__instance);
if (!categoryItemDic.TryGetValue((ShopItemCategory)4, out var value))
{
Debug.Log((object)"EMOTE ITEMS NOT FOUND");
}
if (!categoryItemDic.TryGetValue((ShopItemCategory)5, out var value2))
{
Debug.Log((object)"EMOTE 2 ITEMS NOT FOUND");
}
foreach (ShopItem item in value)
{
instance.emoteShopItems.Add(item);
}
foreach (ShopItem item2 in value2)
{
instance.emoteShopItems.Add(item2);
}
for (int i = 0; i < instance.emoteShopItems.Count; i++)
{
instance.emoteShopIcons.Add(SpriteToTexture2D(instance.emoteShopItems[i].Item.icon));
}
}
public static Texture2D SpriteToTexture2D(Sprite sprite)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_0023: Unknown result type (might be due to invalid IL or missing references)
//IL_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_0057: Unknown result type (might be due to invalid IL or missing references)
//IL_005c: Unknown result type (might be due to invalid IL or missing references)
//IL_0065: Unknown result type (might be due to invalid IL or missing references)
//IL_006b: Expected O, but got Unknown
//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_0081: Unknown result type (might be due to invalid IL or missing references)
//IL_0086: Unknown result type (might be due to invalid IL or missing references)
//IL_0090: Unknown result type (might be due to invalid IL or missing references)
//IL_0095: Unknown result type (might be due to invalid IL or missing references)
//IL_009f: Unknown result type (might be due to invalid IL or missing references)
//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
Rect rect = sprite.rect;
if (((Rect)(ref rect)).width == (float)((Texture)sprite.texture).width)
{
rect = sprite.rect;
if (((Rect)(ref rect)).height == (float)((Texture)sprite.texture).height)
{
return sprite.texture;
}
}
rect = sprite.rect;
int num = (int)((Rect)(ref rect)).width;
rect = sprite.rect;
Texture2D val = new Texture2D(num, (int)((Rect)(ref rect)).height);
Texture2D texture = sprite.texture;
rect = sprite.rect;
int num2 = (int)((Rect)(ref rect)).x;
rect = sprite.rect;
int num3 = (int)((Rect)(ref rect)).y;
rect = sprite.rect;
int num4 = (int)((Rect)(ref rect)).width;
rect = sprite.rect;
Color[] pixels = texture.GetPixels(num2, num3, num4, (int)((Rect)(ref rect)).height);
val.SetPixels(pixels);
val.Apply();
return val;
}
public static Dictionary<ShopItemCategory, List<ShopItem>> GetCategoryItemDic(ShopHandler inst)
{
if (m_CategoryItemDicFieldInfo == null)
{
Debug.Log((object)"m_CategoryItemDicFieldInfo not found.");
return null;
}
return (Dictionary<ShopItemCategory, List<ShopItem>>)m_CategoryItemDicFieldInfo.GetValue(inst);
}
}
private static Main instance;
public static Harmony harmony;
public const string PLAYERPREFS_KEY_SELECTEDINDEX = "emoteWheelMod_Index";
public float radius = 200f;
public float iconSize = 50f;
public float gapAngle = 5f;
public List<ShopItem> emoteShopItems = new List<ShopItem>();
public List<Texture2D> emoteShopIcons = new List<Texture2D>();
public int selectedIndex = 0;
public float selectedIndexRaw = 0f;
private Texture2D backgroundCircle;
public int circleRadius = 250;
public ConfigEntry<KeyCode> emoteWheelKeybind { get; set; }
private void Awake()
{
//IL_000c: Unknown result type (might be due to invalid IL or missing references)
//IL_0016: Expected O, but got Unknown
//IL_0040: 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_005a: Unknown result type (might be due to invalid IL or missing references)
instance = this;
harmony = new Harmony("Playboy.EmoteWheel");
harmony.PatchAll();
emoteWheelKeybind = ((BaseUnityPlugin)this).Config.Bind<KeyCode>("Hotkeys", "Emote Wheel", (KeyCode)99, (ConfigDescription)null);
Color grey = Color.grey;
grey.a = 0.4f;
backgroundCircle = CreateCircleTexture(circleRadius, grey);
selectedIndex = PlayerPrefs.GetInt("emoteWheelMod_Index", 0);
selectedIndexRaw = selectedIndex;
}
private void OnGUI()
{
//IL_001d: Unknown result type (might be due to invalid IL or missing references)
//IL_0064: Unknown result type (might be due to invalid IL or missing references)
//IL_0049: Unknown result type (might be due to invalid IL or missing references)
//IL_0131: Unknown result type (might be due to invalid IL or missing references)
//IL_0132: Unknown result type (might be due to invalid IL or missing references)
//IL_0169: Unknown result type (might be due to invalid IL or missing references)
//IL_01af: Unknown result type (might be due to invalid IL or missing references)
//IL_01b0: Unknown result type (might be due to invalid IL or missing references)
//IL_01b2: Unknown result type (might be due to invalid IL or missing references)
//IL_01c3: Unknown result type (might be due to invalid IL or missing references)
//IL_01cd: Unknown result type (might be due to invalid IL or missing references)
//IL_01d2: Unknown result type (might be due to invalid IL or missing references)
//IL_01d7: Unknown result type (might be due to invalid IL or missing references)
//IL_01db: Unknown result type (might be due to invalid IL or missing references)
//IL_01e2: Unknown result type (might be due to invalid IL or missing references)
//IL_01fa: Unknown result type (might be due to invalid IL or missing references)
//IL_027b: Unknown result type (might be due to invalid IL or missing references)
//IL_027c: Unknown result type (might be due to invalid IL or missing references)
//IL_027e: Unknown result type (might be due to invalid IL or missing references)
//IL_0280: Unknown result type (might be due to invalid IL or missing references)
//IL_0282: Unknown result type (might be due to invalid IL or missing references)
//IL_0284: Unknown result type (might be due to invalid IL or missing references)
//IL_028b: Unknown result type (might be due to invalid IL or missing references)
//IL_0290: Unknown result type (might be due to invalid IL or missing references)
//IL_0292: Unknown result type (might be due to invalid IL or missing references)
//IL_0294: Unknown result type (might be due to invalid IL or missing references)
//IL_029b: Unknown result type (might be due to invalid IL or missing references)
//IL_02a0: Unknown result type (might be due to invalid IL or missing references)
//IL_02a3: Unknown result type (might be due to invalid IL or missing references)
//IL_02a5: Unknown result type (might be due to invalid IL or missing references)
//IL_02a7: Unknown result type (might be due to invalid IL or missing references)
//IL_02c1: Unknown result type (might be due to invalid IL or missing references)
//IL_02c8: Expected O, but got Unknown
//IL_02d8: Unknown result type (might be due to invalid IL or missing references)
//IL_030a: Unknown result type (might be due to invalid IL or missing references)
//IL_0318: Unknown result type (might be due to invalid IL or missing references)
//IL_031d: Unknown result type (might be due to invalid IL or missing references)
//IL_022e: Unknown result type (might be due to invalid IL or missing references)
//IL_0230: 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_0262: Unknown result type (might be due to invalid IL or missing references)
if ((Object)(object)Player.localPlayer == (Object)null)
{
return;
}
if (Input.GetKeyUp(emoteWheelKeybind.Value))
{
Player.localPlayer.refs.emotes.PlayEmote(emoteShopItems[selectedIndex].Item);
}
else
{
if (!Input.GetKey(emoteWheelKeybind.Value))
{
return;
}
float axis = Input.GetAxis("Mouse ScrollWheel");
axis *= 1.5f;
selectedIndexRaw -= axis;
int count = emoteShopItems.Count;
int num = Mathf.RoundToInt(selectedIndexRaw) % count;
if (num < 0)
{
num += count;
}
if (num != selectedIndex)
{
selectedIndex = num;
PlayerPrefs.SetInt("emoteWheelMod_Index", selectedIndex);
}
Vector2 val = default(Vector2);
((Vector2)(ref val))..ctor((float)(Screen.width / 2), (float)(Screen.height / 2));
int count2 = emoteShopIcons.Count;
float num2 = 360f / (float)count2 - gapAngle;
float num3 = -90f;
Vector2 val2 = val;
int num4 = circleRadius * 2;
Rect val3 = default(Rect);
((Rect)(ref val3))..ctor((float)(Screen.width / 2 - circleRadius), (float)(Screen.height / 2 - circleRadius), (float)num4, (float)num4);
GUI.DrawTexture(val3, (Texture)(object)backgroundCircle);
Vector2 val4 = default(Vector2);
Rect val6 = default(Rect);
for (int i = 0; i < count2; i++)
{
((Vector2)(ref val4))..ctor(Mathf.Cos(num3 * ((float)Math.PI / 180f)) * radius, Mathf.Sin(num3 * ((float)Math.PI / 180f)) * radius);
Vector2 val5 = val + val4 - new Vector2(iconSize, iconSize) * 0.5f;
((Rect)(ref val6))..ctor(val5.x, val5.y, iconSize, iconSize);
GUI.DrawTexture(val6, (Texture)(object)emoteShopIcons[i]);
num3 += num2 + gapAngle;
if (i == selectedIndex)
{
Vector2 val7 = val5;
val7.x += iconSize / 2f;
val7.y += iconSize / 2f;
val2 = val7;
}
}
Vector2 val8 = val;
Vector2 val9 = val2;
val9 = Vector2.Lerp(val8, val9, 0.75f);
val8 = Vector2.Lerp(val8, val9, 0.4f);
DrawLine(val8, val9, Color.black, 3f);
GUIStyle val10 = new GUIStyle(GUI.skin.label);
val10.alignment = (TextAnchor)4;
val10.normal.textColor = Color.black;
val10.fontSize = 24;
Rect val11 = default(Rect);
((Rect)(ref val11))..ctor(0f, 0f, (float)Screen.width, (float)Screen.height);
Rect val12 = val11;
ShopItem val13 = emoteShopItems[selectedIndex];
GUI.Label(val12, ((ShopItem)(ref val13)).DisplayName, val10);
}
}
private Texture2D CreateCircleTexture(int radius, Color color)
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_000d: Expected O, but got Unknown
//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_0056: Unknown result type (might be due to invalid IL or missing references)
//IL_0057: Unknown result type (might be due to invalid IL or missing references)
Texture2D val = new Texture2D(2 * radius, 2 * radius);
((Texture)val).filterMode = (FilterMode)0;
Color[] array = (Color[])(object)new Color[4 * radius * radius];
for (int i = 0; i < 2 * radius; i++)
{
for (int j = 0; j < 2 * radius; j++)
{
int num = i - radius;
int num2 = j - radius;
if (num * num + num2 * num2 <= radius * radius)
{
array[i + j * 2 * radius] = color;
}
else
{
array[i + j * 2 * radius] = Color.clear;
}
}
}
val.SetPixels(array);
val.Apply();
return val;
}
private void DrawLine(Vector2 pointA, Vector2 pointB, Color color, float width)
{
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
//IL_0009: Expected O, but got Unknown
//IL_000c: Unknown result type (might be due to invalid IL or missing references)
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
//IL_001c: Unknown result type (might be due to invalid IL or missing references)
//IL_0021: 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_0028: Unknown result type (might be due to invalid IL or missing references)
//IL_0042: Unknown result type (might be due to invalid IL or missing references)
//IL_0047: Unknown result type (might be due to invalid IL or missing references)
//IL_0049: Unknown result type (might be due to invalid IL or missing references)
//IL_004e: Unknown result type (might be due to invalid IL or missing references)
//IL_0050: 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_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0065: Unknown result type (might be due to invalid IL or missing references)
//IL_006e: Unknown result type (might be due to invalid IL or missing references)
//IL_007a: Unknown result type (might be due to invalid IL or missing references)
//IL_0082: Unknown result type (might be due to invalid IL or missing references)
Texture2D val = new Texture2D(1, 1);
val.SetPixel(0, 0, color);
val.Apply();
Vector2 val2 = pointB - pointA;
float num = Mathf.Atan2(val2.y, val2.x) * 57.29578f;
float magnitude = ((Vector2)(ref val2)).magnitude;
Matrix4x4 matrix = GUI.matrix;
Color color2 = GUI.color;
GUI.color = color;
GUIUtility.RotateAroundPivot(num, pointA);
GUI.DrawTexture(new Rect(pointA.x, pointA.y, magnitude, width), (Texture)(object)val);
GUI.matrix = matrix;
GUI.color = color2;
}
}