using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using HarmonyLib;
using Hikari.Configuration;
using Hikari.Patches;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyTitle("Hikari")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Hikari")]
[assembly: AssemblyCopyright("Copyright © 2023")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("4080f450-bb71-42b7-80c0-2c32ff2dc2fc")]
[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 Hikari
{
[BepInPlugin("junko.konno.Hikari", "Hikari", "0.0.3")]
public class HikariEntry : BaseUnityPlugin
{
private const string modGUID = "junko.konno.Hikari";
private const string modName = "Hikari";
private const string modVersion = "0.0.3";
private readonly Harmony harmony = new Harmony("junko.konno.Hikari");
private static HikariEntry Self;
internal ManualLogSource logger;
private void Awake()
{
if ((Object)(object)Self == (Object)null)
{
Self = this;
}
logger = Logger.CreateLogSource("junko.konno.Hikari");
logger.LogInfo((object)"Konnichiwa Sekai!");
logger.LogInfo((object)"Running on version 0.0.3!");
logger.LogInfo((object)"Loading config.");
Config.Load();
logger.LogInfo((object)"Loaded!");
logger.LogInfo((object)"Applying Patches!");
harmony.PatchAll(typeof(HikariEntry));
harmony.PatchAll(typeof(MetricPatch));
harmony.PatchAll(typeof(HealthDisplay));
harmony.PatchAll(typeof(Crosshair));
logger.LogInfo((object)"Patch applied!");
}
}
}
namespace Hikari.Patches
{
[HarmonyPatch(typeof(HUDManager))]
internal class Crosshair
{
private static GameObject crossHairObject;
private static TextMeshProUGUI crossHairText;
private static RectTransform crossHairTransform;
[HarmonyPatch("Start")]
[HarmonyPrefix]
private static void Start(ref HUDManager __instance)
{
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
//IL_000f: Expected O, but got Unknown
//IL_0092: Unknown result type (might be due to invalid IL or missing references)
//IL_0097: Unknown result type (might be due to invalid IL or missing references)
//IL_00a6: 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_0132: Unknown result type (might be due to invalid IL or missing references)
//IL_0150: 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_0182: Unknown result type (might be due to invalid IL or missing references)
crossHairObject = new GameObject("Hikari.Crosshair.Display");
crossHairObject.AddComponent<RectTransform>();
crossHairText = crossHairObject.AddComponent<TextMeshProUGUI>();
((TMP_Text)crossHairText).font = ((TMP_Text)__instance.weightCounter).font;
((TMP_Text)crossHairText).fontSize = 32f * Config.CrossHairSize;
((TMP_Text)crossHairText).text = Config.CrossHairText;
((TMP_Text)crossHairText).alignment = (TextAlignmentOptions)514;
((Graphic)crossHairText).color = Color32.op_Implicit(new Color32(byte.MaxValue, byte.MaxValue, byte.MaxValue, (byte)(255f * Config.CrossHairAlpha)));
((TMP_Text)crossHairText).outlineColor = Color32.op_Implicit(Color.black);
((TMP_Text)crossHairText).outlineWidth = 32f * Config.CrossHairSize;
((Behaviour)crossHairText).enabled = true;
crossHairTransform = ((TMP_Text)crossHairText).rectTransform;
((Transform)crossHairTransform).SetParent(((Component)((Component)__instance.PTTIcon).transform.parent.parent.parent.Find("PlayerCursor").Find("Cursor")).transform, false);
crossHairTransform.anchoredPosition = new Vector2(0f, 0f);
((Transform)crossHairTransform).localPosition = new Vector3(0f, 0f, 0f);
crossHairTransform.offsetMin = new Vector2(-500f, -500f);
crossHairTransform.offsetMax = new Vector2(500f, 500f);
}
[HarmonyPatch("Update")]
[HarmonyPostfix]
private static void Update(ref HUDManager __instance)
{
if (!((Object)(object)GameNetworkManager.Instance == (Object)null) && !((Object)(object)GameNetworkManager.Instance.localPlayerController == (Object)null) && !((Object)(object)GameNetworkManager.Instance.localPlayerController == (Object)null))
{
((Behaviour)crossHairText).enabled = !GameNetworkManager.Instance.localPlayerController.isPlayerDead;
}
}
}
[HarmonyPatch(typeof(HUDManager))]
internal class HealthDisplay
{
private static TextMeshProUGUI healthText;
private static Color32 ShitsBussin = new Color32((byte)0, byte.MaxValue, (byte)0, byte.MaxValue);
private static Color32 CapBussin = new Color32((byte)160, byte.MaxValue, (byte)0, byte.MaxValue);
private static Color32 MidBussin = new Color32(byte.MaxValue, byte.MaxValue, (byte)0, byte.MaxValue);
private static Color32 AintBussin = new Color32(byte.MaxValue, (byte)0, (byte)0, byte.MaxValue);
[HarmonyPatch("Start")]
[HarmonyPrefix]
private static void Start(ref HUDManager __instance)
{
//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_005b: Unknown result type (might be due to invalid IL or missing references)
//IL_006a: Unknown result type (might be due to invalid IL or missing references)
//IL_006f: Unknown result type (might be due to invalid IL or missing references)
//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
GameObject val = new GameObject("Hikari.Health.Display");
val.AddComponent<RectTransform>();
healthText = val.AddComponent<TextMeshProUGUI>();
((TMP_Text)healthText).font = ((TMP_Text)__instance.weightCounter).font;
((TMP_Text)healthText).fontSize = 16f;
((TMP_Text)healthText).text = "100 HP";
((TMP_Text)healthText).alignment = ((TMP_Text)__instance.weightCounter).alignment;
((Graphic)healthText).color = Color32.op_Implicit(ShitsBussin);
((TMP_Text)healthText).overflowMode = (TextOverflowModes)0;
((Behaviour)healthText).enabled = true;
RectTransform rectTransform = ((TMP_Text)healthText).rectTransform;
((Transform)rectTransform).SetParent(((TMP_Text)__instance.weightCounter).transform, false);
rectTransform.anchoredPosition = new Vector2(30f, 15f);
}
[HarmonyPatch("UpdateHealthUI")]
[HarmonyPostfix]
private static void Update(ref HUDManager __instance, int health, bool hurtPlayer = true)
{
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
//IL_000f: Unknown result type (might be due to invalid IL or missing references)
//IL_0023: 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_003c: Unknown result type (might be due to invalid IL or missing references)
//IL_0041: Unknown result type (might be due to invalid IL or missing references)
//IL_0055: Unknown result type (might be due to invalid IL or missing references)
//IL_005a: Unknown result type (might be due to invalid IL or missing references)
if (health <= 100)
{
((Graphic)healthText).color = Color32.op_Implicit(ShitsBussin);
}
if (health <= 75)
{
((Graphic)healthText).color = Color32.op_Implicit(CapBussin);
}
if (health <= 50)
{
((Graphic)healthText).color = Color32.op_Implicit(MidBussin);
}
if (health < 25)
{
((Graphic)healthText).color = Color32.op_Implicit(AintBussin);
}
((TMP_Text)healthText).text = $"{health} HP";
}
}
[HarmonyPatch(typeof(HUDManager))]
internal class MetricPatch
{
[HarmonyPatch("Update")]
[HarmonyPostfix]
private static void patchMetricPostUpdate(ref HUDManager __instance, ref TextMeshProUGUI ___weightCounter, ref Animator ___weightCounterAnimator)
{
if (!((Object)(object)GameNetworkManager.Instance == (Object)null) && !((Object)(object)GameNetworkManager.Instance.localPlayerController == (Object)null) && !((Object)(object)GameNetworkManager.Instance.localPlayerController == (Object)null) && (Object)(object)___weightCounter != (Object)null && (Object)(object)___weightCounterAnimator != (Object)null)
{
float num = (float)Mathf.RoundToInt(Mathf.Clamp(GameNetworkManager.Instance.localPlayerController.carryWeight - 1f, 0f, 100f) * 105f) / 2.205f;
((TMP_Text)___weightCounter).text = num.ToString("F2") + " kg";
___weightCounterAnimator.SetFloat("weight", num / 130f);
}
}
}
}
namespace Hikari.Configuration
{
internal static class Config
{
private static ConfigFile config;
private static ConfigEntry<string> config_CrossHairText;
private static ConfigEntry<float> config_CrossHairSize;
private static ConfigEntry<float> config_CrossHairAlpha;
public static string CrossHairText => config_CrossHairText.Value;
public static float CrossHairSize => config_CrossHairSize.Value;
public static float CrossHairAlpha => config_CrossHairAlpha.Value;
public static void Load()
{
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
//IL_001a: Expected O, but got Unknown
config = new ConfigFile(Path.Combine(Paths.ConfigPath, "Hikari.cfg"), true);
InternalLoad();
}
public static void InternalLoad()
{
config_CrossHairText = config.Bind<string>("Hikari.Crosshair", "Text", "- + -", "The string for the Crosshair. ( Example: OwO, +, - )");
config_CrossHairSize = config.Bind<float>("Hikari.Crosshair", "Size", 1f, "The scale for the Crosshair. (Default: 1.0)");
config_CrossHairAlpha = config.Bind<float>("Hikari.Crosshair", "Alpha", 1f, "The transparency for the Crosshair. (Default: 1.0)");
}
}
}