using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using BepInEx.Core.Logging.Interpolation;
using BepInEx.Logging;
using BepInEx.Unity.IL2CPP;
using Il2CppInterop.Runtime.InteropTypes;
using Il2CppSystem.Collections.Generic;
using Microsoft.CodeAnalysis;
using SCTCommon;
using UnityEngine;
using UnityEngine.Localization;
using UnityEngine.Localization.Settings;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")]
[assembly: AssemblyCompany("SCTHud.Value")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("SCTHud.Value")]
[assembly: AssemblyTitle("SCTHud.Value")]
[assembly: AssemblyVersion("1.0.0.0")]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
[CompilerGenerated]
[Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace System.Runtime.CompilerServices
{
[CompilerGenerated]
[Embedded]
[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
internal sealed class RefSafetyRulesAttribute : Attribute
{
public readonly int Version;
public RefSafetyRulesAttribute(int P_0)
{
Version = P_0;
}
}
}
namespace SCTCommon
{
internal static class Il2CppUtil
{
public static bool IsPlayer(Driller driller)
{
if (driller != null)
{
return (Object)(object)((Il2CppObjectBase)driller).TryCast<Player>() != (Object)null;
}
return false;
}
public static string Guid(BasePlugin plugin)
{
return MetadataHelper.GetMetadata((object)plugin).GUID;
}
public static IEnumerable<PluginInfo> Plugins()
{
if (IL2CPPChainloader.Instance == null)
{
yield break;
}
foreach (PluginInfo value in ((BaseChainloader<BasePlugin>)(object)IL2CPPChainloader.Instance).Plugins.Values)
{
yield return value;
}
}
}
internal static class Safe
{
private static readonly ManualLogSource Log = Logger.CreateLogSource("SCT Safe");
private static readonly HashSet<string> Reported = new HashSet<string>();
public static void Run(string where, Action action)
{
try
{
action();
}
catch (Exception e)
{
Report(where, e);
}
}
public static bool Prefix(string where, Func<bool> prefix)
{
try
{
return prefix();
}
catch (Exception e)
{
Report(where, e);
return true;
}
}
private static void Report(string where, Exception e)
{
//IL_0028: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Expected O, but got Unknown
if (Reported.Add(where + e.GetType().Name + e.Message))
{
bool flag = default(bool);
BepInExErrorLogInterpolatedStringHandler val = new BepInExErrorLogInterpolatedStringHandler(33, 4, ref flag);
if (flag)
{
((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(where);
((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" : ");
((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(e.GetType().Name);
((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" : ");
((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(e.Message);
((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" (ignoré, le jeu continue)\n");
((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(e.StackTrace);
}
Log.LogError(val);
}
}
}
internal static class Vanilla
{
private const string Key = "sct.vanilla";
public static bool Active
{
get
{
object data = AppDomain.CurrentDomain.GetData("sct.vanilla");
bool flag = default(bool);
int num;
if (data is bool)
{
flag = (bool)data;
num = 1;
}
else
{
num = 0;
}
return (byte)((uint)num & (flag ? 1u : 0u)) != 0;
}
}
public static void Set(bool active)
{
AppDomain.CurrentDomain.SetData("sct.vanilla", active);
}
}
internal static class Lang
{
public static bool IsFrench
{
get
{
try
{
Locale selectedLocale = LocalizationSettings.SelectedLocale;
return ((selectedLocale != null) ? selectedLocale.Identifier.Code : null)?.StartsWith("fr", StringComparison.OrdinalIgnoreCase) ?? false;
}
catch (Exception)
{
return false;
}
}
}
public static string Pick(string fr, string en)
{
if (!IsFrench)
{
return en;
}
return fr;
}
}
internal enum ColorVision
{
Normal,
Protanopia,
Deuteranopia,
Tritanopia
}
internal static class Palette
{
public const string VisionKey = "sct.colorblind.vision";
public const string RedundantKey = "sct.colorblind.redundant";
private static readonly Color Black = C(0);
private static readonly Color Orange = C(15113984);
private static readonly Color SkyBlue = C(5682409);
private static readonly Color Green = C(40563);
private static readonly Color Yellow = C(15787074);
private static readonly Color Blue = C(29362);
private static readonly Color Vermillion = C(13983232);
private static readonly Color Purple = C(13400487);
private static readonly Color White = C(16777215);
private static readonly Color Grey = C(7237230);
public static ColorVision Vision
{
get
{
object data = AppDomain.CurrentDomain.GetData("sct.colorblind.vision");
if (data is int)
{
return (ColorVision)(int)data;
}
return ColorVision.Normal;
}
}
public static bool Adapted => Vision != ColorVision.Normal;
public static bool Redundant
{
get
{
if (Adapted)
{
object data = AppDomain.CurrentDomain.GetData("sct.colorblind.redundant");
bool flag = default(bool);
int num;
if (data is bool)
{
flag = (bool)data;
num = 1;
}
else
{
num = 0;
}
return num == 0 || flag;
}
return false;
}
}
private static bool RedGreen
{
get
{
if (Vision != ColorVision.Protanopia)
{
return Vision == ColorVision.Deuteranopia;
}
return true;
}
}
public static Color Good(Color usual)
{
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_0014: Unknown result type (might be due to invalid IL or missing references)
//IL_000e: Unknown result type (might be due to invalid IL or missing references)
if (Adapted)
{
if (!RedGreen)
{
return Green;
}
return SkyBlue;
}
return usual;
}
public static Color Bad(Color usual)
{
//IL_000d: 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)
if (Adapted)
{
return Vermillion;
}
return usual;
}
public static Color Warning(Color usual)
{
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_0014: Unknown result type (might be due to invalid IL or missing references)
//IL_000e: Unknown result type (might be due to invalid IL or missing references)
if (Adapted)
{
if (!RedGreen)
{
return Orange;
}
return Yellow;
}
return usual;
}
public static Color Danger(Color usual)
{
//IL_001f: Unknown result type (might be due to invalid IL or missing references)
//IL_0019: Unknown result type (might be due to invalid IL or missing references)
//IL_0013: Unknown result type (might be due to invalid IL or missing references)
if (Adapted)
{
if (!RedGreen)
{
return C(16719904);
}
return Vermillion;
}
return usual;
}
public static Color Accent(Color usual)
{
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_0014: Unknown result type (might be due to invalid IL or missing references)
//IL_000e: Unknown result type (might be due to invalid IL or missing references)
if (Adapted)
{
if (!RedGreen)
{
return Purple;
}
return SkyBlue;
}
return usual;
}
public static string GoodHex(string usual = "80ff80")
{
//IL_0009: Unknown result type (might be due to invalid IL or missing references)
//IL_000e: Unknown result type (might be due to invalid IL or missing references)
if (!Adapted)
{
return usual;
}
return Hex(Good(White));
}
public static string BadHex(string usual = "ff8080")
{
//IL_0009: Unknown result type (might be due to invalid IL or missing references)
//IL_000e: Unknown result type (might be due to invalid IL or missing references)
if (!Adapted)
{
return usual;
}
return Hex(Bad(White));
}
public static string WarningHex(string usual = "ffcc66")
{
//IL_0009: Unknown result type (might be due to invalid IL or missing references)
//IL_000e: Unknown result type (might be due to invalid IL or missing references)
if (!Adapted)
{
return usual;
}
return Hex(Warning(White));
}
public static Color Ore(ResourceType type, Color usual)
{
//IL_0012: Unknown result type (might be due to invalid IL or missing references)
//IL_0014: Unknown result type (might be due to invalid IL or missing references)
//IL_004e: Expected I4, but got Unknown
//IL_0007: 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)
//IL_0065: Unknown result type (might be due to invalid IL or missing references)
//IL_006b: 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_0050: 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_0059: 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_0074: Unknown result type (might be due to invalid IL or missing references)
//IL_0094: 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_00a8: Unknown result type (might be due to invalid IL or missing references)
//IL_009d: Unknown result type (might be due to invalid IL or missing references)
//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
if (!Adapted)
{
return usual;
}
bool flag = Vision == ColorVision.Tritanopia;
switch (type - 2)
{
case 9:
return Grey;
case 0:
if (!flag)
{
return Blue;
}
return Vermillion;
case 2:
return Orange;
case 4:
return White;
case 6:
if (!flag)
{
return Yellow;
}
return C(16756912);
case 8:
return SkyBlue;
case 10:
if (!flag)
{
return Purple;
}
return Blue;
case 11:
if (!flag)
{
return Green;
}
return C(8323072);
case 12:
if (!flag)
{
return Vermillion;
}
return Black;
default:
return usual;
}
}
public static Color Tier(int level, Color usual)
{
//IL_000b: 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)
//IL_0061: Unknown result type (might be due to invalid IL or missing references)
//IL_0066: 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_0072: Unknown result type (might be due to invalid IL or missing references)
//IL_0079: Unknown result type (might be due to invalid IL or missing references)
//IL_007e: 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_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Unknown result type (might be due to invalid IL or missing references)
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_003a: 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_0046: 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)
if (!Adapted || level <= 0)
{
return usual;
}
Color[] array = (Color[])(object)((Vision != ColorVision.Tritanopia) ? new Color[4] { Blue, Orange, White, Yellow } : new Color[4] { SkyBlue, Vermillion, White, Purple });
return array[Mathf.Clamp(level, 1, array.Length) - 1];
}
public static Color Marker(int index, Color usual)
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_005d: Unknown result type (might be due to invalid IL or missing references)
//IL_0062: Unknown result type (might be due to invalid IL or missing references)
//IL_0069: 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_0075: 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_0086: 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_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_0019: 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_0025: 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_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_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)
//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_00a8: Unknown result type (might be due to invalid IL or missing references)
if (!Adapted)
{
return usual;
}
Color[] array = (Color[])(object)((Vision != ColorVision.Tritanopia) ? new Color[5] { Yellow, SkyBlue, Orange, White, Purple } : new Color[5]
{
Vermillion,
White,
SkyBlue,
C(16756912),
Green
});
return array[Math.Abs(index) % array.Length];
}
public static float Blink(float speed = 3f)
{
if (!Redundant)
{
return 1f;
}
return 0.45f + 0.55f * Mathf.Abs(Mathf.Sin(Time.unscaledTime * speed));
}
public static string Hex(Color c)
{
//IL_000b: 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_004f: Unknown result type (might be due to invalid IL or missing references)
return $"{Mathf.RoundToInt(Mathf.Clamp01(c.r) * 255f):X2}{Mathf.RoundToInt(Mathf.Clamp01(c.g) * 255f):X2}{Mathf.RoundToInt(Mathf.Clamp01(c.b) * 255f):X2}";
}
private static Color C(int rgb)
{
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
return new Color((float)((rgb >> 16) & 0xFF) / 255f, (float)((rgb >> 8) & 0xFF) / 255f, (float)(rgb & 0xFF) / 255f);
}
}
}
namespace SCTHud
{
internal static class GameData
{
public static int Value(ResourceType type)
{
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
//IL_0015: Unknown result type (might be due to invalid IL or missing references)
Dictionary<ResourceType, int> resourceValues = ComputerManager.ResourceValues;
if (resourceValues == null || !resourceValues.ContainsKey(type))
{
return 0;
}
return resourceValues[type];
}
}
internal static class ImGui
{
public static GUIStyle TextureStyle(Texture2D texture)
{
//IL_0000: Unknown result type (might be due to invalid IL or missing references)
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_0010: Expected O, but got Unknown
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
//IL_001b: Expected O, but got Unknown
//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_0026: Expected O, but got Unknown
//IL_0026: Unknown result type (might be due to invalid IL or missing references)
//IL_0033: Expected O, but got Unknown
GUIStyle val = new GUIStyle
{
border = new RectOffset(),
padding = new RectOffset(),
margin = new RectOffset()
};
val.normal.background = texture;
return val;
}
public static void DrawTexture(Rect rect, GUIStyle textureStyle)
{
//IL_0000: Unknown result type (might be due to invalid IL or missing references)
GUI.Box(rect, "", textureStyle);
}
public static GUIStyle BoxStyle(int fontSize, TextAnchor alignment)
{
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: 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_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_0025: 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_003d: 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_0055: Unknown result type (might be due to invalid IL or missing references)
//IL_006b: Unknown result type (might be due to invalid IL or missing references)
//IL_0077: Unknown result type (might be due to invalid IL or missing references)
//IL_0082: Expected O, but got Unknown
GUIStyle box = GUI.skin.box;
GUIStyle val = new GUIStyle
{
alignment = alignment,
richText = true,
fontSize = fontSize,
border = box.border,
padding = box.padding,
margin = box.margin,
wordWrap = box.wordWrap
};
val.normal.background = box.normal.background;
val.normal.textColor = box.normal.textColor;
return val;
}
}
}
namespace SCTHud.Value
{
[BepInPlugin("sct.hud.value", "SCT HUD - Valeur", "2.1.0")]
public class ValueHudPlugin : BasePlugin
{
public const string Guid = "sct.hud.value";
public const string Name = "SCT HUD - Valeur";
public const string Version = "2.1.0";
internal static ManualLogSource Logger;
internal static ConfigEntry<bool> Enabled;
public override void Load()
{
//IL_003c: Unknown result type (might be due to invalid IL or missing references)
//IL_0042: Expected O, but got Unknown
Logger = ((BasePlugin)this).Log;
Enabled = ((BasePlugin)this).Config.Bind<bool>("Valeur", "Enabled", true, "Affiche la valeur en points de l'inventaire et du conteneur, et ce qu'il manque pour le quota.");
((BasePlugin)this).AddComponent<ValueHud>();
ManualLogSource log = ((BasePlugin)this).Log;
bool flag = default(bool);
BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(8, 2, ref flag);
if (flag)
{
((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>("SCT HUD - Valeur");
((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" ");
((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>("2.1.0");
((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" chargé");
}
log.LogInfo(val);
}
}
internal class ValueHud : MonoBehaviour
{
private const float RefreshInterval = 0.5f;
private static readonly ResourceType[] Resources = (ResourceType[])Enum.GetValues(typeof(ResourceType));
private float _nextRefresh;
private string _text;
private GUIStyle _style;
public ValueHud(IntPtr ptr)
: base(ptr)
{
}
private void Update()
{
//IL_004d: Unknown result type (might be due to invalid IL or missing references)
//IL_0053: Expected O, but got Unknown
if (Time.unscaledTime < _nextRefresh)
{
return;
}
_nextRefresh = Time.unscaledTime + 0.5f;
try
{
_text = (ValueHudPlugin.Enabled.Value ? Build() : null);
}
catch (Exception ex)
{
_text = null;
ManualLogSource logger = ValueHudPlugin.Logger;
bool flag = default(bool);
BepInExWarningLogInterpolatedStringHandler val = new BepInExWarningLogInterpolatedStringHandler(16, 1, ref flag);
if (flag)
{
((BepInExLogInterpolatedStringHandler)val).AppendLiteral("HUD de valeur : ");
((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(ex.Message);
}
logger.LogWarning(val);
}
}
private static string Build()
{
//IL_0032: Unknown result type (might be due to invalid IL or missing references)
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_0042: 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_0094: Unknown result type (might be due to invalid IL or missing references)
Game instance = Game.Instance;
if ((Object)(object)instance == (Object)null || (Object)(object)instance.player == (Object)null)
{
return null;
}
int num = 0;
ResourceType[] resources = Resources;
foreach (ResourceType val in resources)
{
num += GameData.Value(val) * instance.player.GetResourceQuantity(val);
}
int num2 = 0;
if ((Object)(object)instance.mainContainer != (Object)null)
{
List<ResourceTypeQuantity> outputStorage = ((Build)instance.mainContainer)._outputStorage;
for (int j = 0; j < outputStorage.Count; j++)
{
num2 += GameData.Value(outputStorage[j].resourceType) * outputStorage[j].quantity;
}
}
string text = Lang.Pick($"Inventaire : {num} pts", $"Inventory: {num} pts") + "\n" + Lang.Pick($"Conteneur : {num2} pts", $"Container: {num2} pts");
PersistentSaveData persistentSaveData = instance._persistentSaveData;
if (persistentSaveData.CurrentQuotaTarget > 0)
{
int num3 = persistentSaveData.CurrentQuotaTarget - persistentSaveData.CurrentQuotaProgress - num2;
text = text + "\n" + ((num3 <= 0) ? Lang.Pick("<color=#" + Palette.GoodHex() + ">Quota atteint</color>", "<color=#" + Palette.GoodHex() + ">Quota reached</color>") : (Lang.Pick($"Quota : encore {num3} pts", $"Quota: {num3} pts to go") + ((num >= num3) ? Lang.Pick(" <color=#" + Palette.GoodHex() + ">(à déposer)</color>", " <color=#" + Palette.GoodHex() + ">(deposit it)</color>") : "")));
}
return text;
}
private void OnGUI()
{
//IL_003c: Unknown result type (might be due to invalid IL or missing references)
if (!string.IsNullOrEmpty(_text))
{
if (_style == null)
{
_style = ImGui.BoxStyle(13, (TextAnchor)0);
}
GUI.Box(new Rect(10f, (float)(Screen.height - 80), 230f, 70f), _text, _style);
}
}
}
}