using System;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using ABLoader;
using BepInEx;
using Configgy;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = "")]
[assembly: AssemblyCompany("CRuSUI")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("Replaces the ULTRAKILL HUD with a recreation of the Cruelty Squad one.")]
[assembly: AssemblyTitle("CRuSUI")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
public class HealthPulsator : MonoBehaviour
{
public float freq_timer = 0.03f;
public Texture[] tex;
private int cur_tex = 0;
private float cur_timer = 0f;
private void Update()
{
cur_timer += Time.deltaTime;
if (cur_timer > freq_timer)
{
cur_timer = 0f;
cur_tex++;
if (cur_tex > tex.Length - 1)
{
cur_tex = 0;
}
}
((Component)this).GetComponent<RawImage>().texture = tex[cur_tex];
}
}
public class SquadUIReferences : MonoBehaviour
{
public RawImage border;
public RawImage health;
public RawImage ammo_ind;
public TextMeshProUGUI health_text;
public Texture border1;
public Texture border2;
public Texture border3;
public Texture border4;
}
namespace CRuSUI
{
[BepInPlugin("com.ssar.crusui", "Cruelty Squad UI", "1.0.0")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
public class Plugin : BaseUnityPlugin
{
[Configgable("", "Is on Death mode", 0, null)]
public static ConfigToggle death = new ConfigToggle(true);
private GameObject crus_ui;
private SquadUIReferences shared_ui_ref;
private HealthPulsator shared_hp;
private float rot_spd = 0f;
private void Awake()
{
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Expected O, but got Unknown
ConfigBuilder val = new ConfigBuilder("com.ssar.crusui", "Cruelty Squad UI");
val.BuildAll();
}
private void SetLife(bool on)
{
Texture[] array = null;
if (on)
{
AssetBundle val = Loader.LoadBundle("crus-death-tex");
array = val.LoadAllAssets<Texture>();
}
else
{
AssetBundle val2 = Loader.LoadBundle("crus-life-tex");
array = val2.LoadAllAssets<Texture>();
}
shared_hp.tex = array;
}
private void Start()
{
//IL_0057: Unknown result type (might be due to invalid IL or missing references)
//IL_005d: Expected O, but got Unknown
//IL_0101: Unknown result type (might be due to invalid IL or missing references)
//IL_010b: Expected O, but got Unknown
//IL_0118: Unknown result type (might be due to invalid IL or missing references)
//IL_0122: Expected O, but got Unknown
//IL_012f: Unknown result type (might be due to invalid IL or missing references)
//IL_0139: Expected O, but got Unknown
//IL_0146: Unknown result type (might be due to invalid IL or missing references)
//IL_0150: Expected O, but got Unknown
AssetBundle val = Loader.LoadBundle("crus");
Texture[] array = null;
if (((ConfigValueElement<bool>)(object)death).Value)
{
AssetBundle val2 = Loader.LoadBundle("crus-death-tex");
array = val2.LoadAllAssets<Texture>();
}
else
{
AssetBundle val3 = Loader.LoadBundle("crus-life-tex");
array = val3.LoadAllAssets<Texture>();
}
GameObject val4 = (GameObject)val.LoadAsset("CRUSUI.prefab");
GameObject val5 = Object.Instantiate<GameObject>(val4);
SquadUIReferences squadUIReferences = ((Component)val5.transform.Find("Canvas")).gameObject.AddComponent<SquadUIReferences>();
squadUIReferences.border = ((Component)((Component)squadUIReferences).transform.Find("Border")).GetComponent<RawImage>();
squadUIReferences.health = ((Component)((Component)squadUIReferences).transform.Find("h")).GetComponent<RawImage>();
squadUIReferences.ammo_ind = ((Component)((Component)squadUIReferences).transform.Find("ammo")).GetComponent<RawImage>();
squadUIReferences.health_text = ((Component)((Component)squadUIReferences).transform.Find("h_text")).GetComponent<TextMeshProUGUI>();
squadUIReferences.border1 = (Texture)val.LoadAsset("border.png");
squadUIReferences.border2 = (Texture)val.LoadAsset("border2.png");
squadUIReferences.border3 = (Texture)val.LoadAsset("border3.png");
squadUIReferences.border4 = (Texture)val.LoadAsset("border4.png");
shared_ui_ref = squadUIReferences;
(shared_hp = ((Component)squadUIReferences.health).gameObject.AddComponent<HealthPulsator>()).tex = array;
crus_ui = val5;
Object.DontDestroyOnLoad((Object)(object)val5);
ConfigToggle obj = death;
((ConfigValueElement<bool>)(object)obj).OnValueChanged = (Action<bool>)Delegate.Combine(((ConfigValueElement<bool>)(object)obj).OnValueChanged, new Action<bool>(SetLife));
}
private void Update()
{
//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
if (!Object.op_Implicit((Object)(object)crus_ui))
{
return;
}
if (Object.op_Implicit((Object)(object)MonoSingleton<NewMovement>.Instance) && SceneHelper.CurrentScene != "Main Menu")
{
crus_ui.SetActive(true);
MonoSingleton<NewMovement>.Instance.screenHud.GetComponent<HudController>().gunCanvas.SetActive(false);
((Component)MonoSingleton<NewMovement>.Instance.screenHud.transform.Find("StyleCanvas")).gameObject.SetActive(false);
int num = MonoSingleton<NewMovement>.Instance.hp;
if (((ConfigValueElement<bool>)(object)death).Value)
{
num += 250;
}
((TMP_Text)shared_ui_ref.health_text).text = Convert.ToString(MonoSingleton<NewMovement>.Instance.hp);
((Graphic)shared_ui_ref.health).color = Color.HSVToRGB((float)num * 0.01f * 0.25f, 1f, 1f);
if (MonoSingleton<InputManager>.Instance.InputSource.Fire1.IsPressed || MonoSingleton<InputManager>.Instance.InputSource.Fire2.WasPerformedThisFrame || MonoSingleton<InputManager>.Instance.InputSource.Punch.WasPerformedThisFrame)
{
rot_spd -= 2f;
}
((Component)shared_ui_ref.ammo_ind).transform.Rotate(0f, 0f, rot_spd * 57.29578f);
int @int = MonoSingleton<PrefsManager>.Instance.GetInt("difficulty", 0);
if (@int == 3)
{
shared_ui_ref.border.texture = shared_ui_ref.border2;
}
else if (@int > 3)
{
shared_ui_ref.border.texture = shared_ui_ref.border4;
}
else if (@int >= 1)
{
shared_ui_ref.border.texture = shared_ui_ref.border1;
}
else
{
shared_ui_ref.border.texture = shared_ui_ref.border3;
}
shared_hp.freq_timer = 1f / (float)Mathf.Clamp(100 - MonoSingleton<NewMovement>.Instance.hp, 24, 100);
rot_spd = Mathf.Lerp(rot_spd, 0f, 0.1f);
}
else
{
crus_ui.SetActive(false);
}
}
}
public class PluginData
{
public const string GUID = "com.ssar.crusui";
public const string Name = "Cruelty Squad UI";
public const string Version = "1.0.0";
}
public static class MyPluginInfo
{
public const string PLUGIN_GUID = "CRuSUI";
public const string PLUGIN_NAME = "Replaces the ULTRAKILL HUD with a recreation of the Cruelty Squad one.";
public const string PLUGIN_VERSION = "1.0.0";
}
}
namespace ABLoader
{
public static class Loader
{
public static AssetBundle LoadBundle(string name)
{
string location = Assembly.GetExecutingAssembly().Location;
return AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(location), name));
}
}
}