Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of Gamble Boot v1.0.0
GambleBoot.dll
Decompiled 5 months agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using UnityEngine; [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.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("Omniscye")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("GambleBoot")] [assembly: AssemblyTitle("GambleBoot")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.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 Omniscye.BootGamble { [BepInPlugin("Omniscye.BootGamble", "BootGamble", "1.0.0")] public class BootGamble : BaseUnityPlugin { public const string PluginGuid = "Omniscye.BootGamble"; public const string PluginName = "BootGamble"; public const string PluginVersion = "1.0.0"; internal static ConfigEntry<bool> CEnabled; internal static ConfigEntry<int> CPulls; internal static ConfigEntry<float> CVolume; internal static ConfigEntry<float> CStartChance; internal static ConfigEntry<bool> CRunOnlyOncePerLaunch; internal static BootGamble Instance { get; private set; } internal static ManualLogSource Logger => Instance._logger; private ManualLogSource _logger => ((BaseUnityPlugin)this).Logger; internal Harmony? Harmony { get; set; } private void Awake() { //IL_0108: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Expected O, but got Unknown Instance = this; ((Component)this).gameObject.transform.parent = null; ((Object)((Component)this).gameObject).hideFlags = (HideFlags)61; CEnabled = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "Enabled", true, "Enable the boot gambling gate."); CPulls = ((BaseUnityPlugin)this).Config.Bind<int>("General", "Pulls", 10, "Number of spins before the game force-closes."); CVolume = ((BaseUnityPlugin)this).Config.Bind<float>("Audio", "Volume", 0.7f, "Master volume for slot sounds (0.0–1.0)."); CStartChance = ((BaseUnityPlugin)this).Config.Bind<float>("Tuning", "JackpotChance", 0.35f, "Chance per symbol to be 7 (0.0–1.0)."); CRunOnlyOncePerLaunch = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "RunOncePerLaunch", true, "If true, gate runs only once per launch."); Patch(); if (CEnabled.Value && (!GambleGate.HasRunThisLaunch || !CRunOnlyOncePerLaunch.Value)) { GameObject val = new GameObject("Omniscye.BootGamble.Controller"); ((Object)val).hideFlags = (HideFlags)61; Object.DontDestroyOnLoad((Object)(object)val); val.AddComponent<GambleGate>(); } Logger.LogInfo((object)$"{((BaseUnityPlugin)this).Info.Metadata.GUID} v{((BaseUnityPlugin)this).Info.Metadata.Version} loaded."); } internal void Patch() { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Expected O, but got Unknown //IL_0026: Expected O, but got Unknown if (Harmony == null) { Harmony val = new Harmony(((BaseUnityPlugin)this).Info.Metadata.GUID); Harmony val2 = val; Harmony = val; } Harmony.PatchAll(); } } internal class GambleGate : MonoBehaviour { [CompilerGenerated] private sealed class <QuitAfterDelay>d__58 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public float seconds; public GambleGate <>4__this; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <QuitAfterDelay>d__58(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Expected O, but got Unknown switch (<>1__state) { default: return false; case 0: <>1__state = -1; <>2__current = (object)new WaitForSecondsRealtime(seconds); <>1__state = 1; return true; case 1: <>1__state = -1; BootGamble.Logger.LogWarning((object)"BootGamble: No spins left → Force quitting."); Application.Quit(); return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class <ResumeAfterDelay>d__57 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public float seconds; public GambleGate <>4__this; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <ResumeAfterDelay>d__57(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Expected O, but got Unknown //IL_0058: Unknown result type (might be due to invalid IL or missing references) switch (<>1__state) { default: return false; case 0: <>1__state = -1; <>2__current = (object)new WaitForSecondsRealtime(seconds); <>1__state = 1; return true; case 1: <>1__state = -1; Time.timeScale = <>4__this._prevTimeScale; Cursor.lockState = <>4__this._prevCursorLock; Cursor.visible = <>4__this._prevCursorVisible; Object.Destroy((Object)(object)((Component)<>4__this).gameObject); return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } private bool _active; private static bool _hasRunThisLaunch; private float _prevTimeScale; private int _pullsRemaining; private bool _justWon; private bool _quitting; private bool _spinning; private string _statusMessage = ""; private float _spinStartTime; private float _nextSymbolChangeTime; private readonly float[] _reelStopDelays = new float[3] { 0.7f, 1.3f, 1.9f }; private readonly bool[] _reelStopped = new bool[3]; private readonly Random _rng = new Random(); private const int GridSize = 3; private const string WinSymbol = "7"; private static readonly string[] LoserSymbols = new string[6] { "\ud83c\udf52", "\ud83c\udf4b", "\ud83c\udf4a", "\ud83c\udf47", "\ud83d\udd14", "BAR" }; private static readonly string[] SpinningSymbols = new string[7] { "\ud83c\udf52", "\ud83c\udf4b", "\ud83c\udf4a", "\ud83c\udf47", "\ud83d\udd14", "BAR", "7" }; private readonly string[,] _currentSymbols = new string[3, 3]; private readonly string[,] _targetSymbols = new string[3, 3]; private AudioSource _audio = null; private AudioClip _sndSpin = null; private AudioClip _sndClunk = null; private AudioClip _sndWin = null; private AudioClip _sndFail = null; private Texture2D _windowBg = null; private GUIStyle _title = null; private GUIStyle _statusStyle = null; private GUIStyle _cellOn = null; private GUIStyle _cellOff = null; private GUIStyle _label = null; private GUIStyle _button = null; private GUIStyle _bevelLight = null; private GUIStyle _bevelDark = null; private Rect _windowRect = new Rect(0f, 0f, 960f, 1000f); private bool _stylesBuilt; private int _cachedSkinId = -1; private bool _centered; private bool _prevCursorVisible; private CursorLockMode _prevCursorLock; internal static bool HasRunThisLaunch => _hasRunThisLaunch; private void Start() { //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) _hasRunThisLaunch = true; _pullsRemaining = Mathf.Max(1, BootGamble.CPulls.Value); _prevTimeScale = Time.timeScale; Time.timeScale = 0f; _active = true; _prevCursorVisible = Cursor.visible; _prevCursorLock = Cursor.lockState; Cursor.lockState = (CursorLockMode)0; Cursor.visible = true; _audio = ((Component)this).gameObject.AddComponent<AudioSource>(); _audio.spatialBlend = 0f; _audio.playOnAwake = false; _audio.volume = Mathf.Clamp01(BootGamble.CVolume.Value); BuildAudio(); CreateWindowBg(); InitializeGrid(); BootGamble.Logger.LogInfo((object)$"GambleGate: ultimate slot active • spins={_pullsRemaining} • 7 chance={BootGamble.CStartChance.Value:0.00} • volume={_audio.volume:0.00}"); } private void Update() { //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: 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_0079: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) if (!_active) { return; } Cursor.lockState = (CursorLockMode)0; Cursor.visible = true; if (_justWon || _quitting) { float num = Mathf.Sin(Time.realtimeSinceStartup * 12f) * 0.5f + 0.5f; _statusStyle.normal.textColor = (_justWon ? Color.Lerp(new Color(1f, 0.2f, 0f), Color.yellow, num) : Color.Lerp(new Color(0.4f, 0f, 0f), new Color(0.8f, 0f, 0f), num)); } if (!_spinning) { return; } float realtimeSinceStartup = Time.realtimeSinceStartup; float num2 = realtimeSinceStartup - _spinStartTime; bool flag = true; for (int i = 0; i < 3; i++) { if (_reelStopped[i]) { continue; } flag = false; if (num2 >= _reelStopDelays[i]) { _reelStopped[i] = true; for (int j = 0; j < 3; j++) { _currentSymbols[j, i] = _targetSymbols[j, i]; } _audio.PlayOneShot(_sndClunk); } else if (realtimeSinceStartup >= _nextSymbolChangeTime) { _nextSymbolChangeTime = realtimeSinceStartup + 0.07f; for (int k = 0; k < 3; k++) { _currentSymbols[k, i] = SpinningSymbols[_rng.Next(SpinningSymbols.Length)]; } } } if (flag) { _spinning = false; if (CheckWin()) { _justWon = true; _statusMessage = "★★★ JACKPOT ★★★"; _audio.PlayOneShot(_sndWin); ((MonoBehaviour)this).StartCoroutine(ResumeAfterDelay(4f)); } else if (_pullsRemaining <= 0) { _quitting = true; _statusMessage = "GAME OVER"; _audio.PlayOneShot(_sndFail); ((MonoBehaviour)this).StartCoroutine(QuitAfterDelay(3.5f)); } } } private void CreateWindowBg() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown //IL_002f: 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_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_0057: Unknown result type (might be due to invalid IL or missing references) _windowBg = new Texture2D(1, 256); for (int i = 0; i < 256; i++) { float num = (float)i / 255f; Color val = Color.Lerp(new Color(0.02f, 0.02f, 0.08f), new Color(0.15f, 0f, 0.2f), num); _windowBg.SetPixel(0, i, val); } _windowBg.Apply(); } private void BuildAudio() { _sndSpin = CreateSpinSound(); _sndClunk = CreateClunkSound(); AudioClip val = Sine(523f, 0.15f); AudioClip val2 = Sine(659f, 0.15f); AudioClip val3 = Sine(880f, 0.15f); AudioClip val4 = Sine(1319f, 0.2f); AudioClip val5 = Sine(1760f, 0.4f); _sndWin = Concat(val, val2, val3, val4, val5); AudioClip val6 = Sine(300f, 0.3f); AudioClip val7 = Sine(200f, 0.4f); AudioClip val8 = Sine(100f, 0.6f); _sndFail = Concat(val6, val7, val8); } private AudioClip CreateSpinSound() { int num = 44100; float num2 = 2.3f; int num3 = Mathf.CeilToInt((float)num * num2); float[] array = new float[num3]; for (int i = 0; i < num3; i++) { float num4 = (float)i / (float)num; float num5 = 1400f - num4 * 700f; array[i] = Mathf.Sin(num4 * num5 * 0.12f) * (1f - num4 / num2) * 0.8f; array[i] += (float)(_rng.NextDouble() * 2.0 - 1.0) * 0.25f * (1f - num4 / num2); } AudioClip val = AudioClip.Create("slot_spin", num3, 1, num, false); val.SetData(array, 0); return val; } private AudioClip CreateClunkSound() { int num = 44100; float num2 = 0.22f; int num3 = Mathf.CeilToInt((float)num * num2); float[] array = new float[num3]; for (int i = 0; i < num3; i++) { float num4 = (float)i / (float)num; array[i] = Mathf.Sin(180f * num4 * MathF.PI * 2f) * Mathf.Exp((0f - num4) * 10f) + (float)_rng.NextDouble() * 0.3f * Mathf.Exp((0f - num4) * 6f); } AudioClip val = AudioClip.Create("clunk", num3, 1, num, false); val.SetData(array, 0); return val; } private static AudioClip Sine(float hz, float seconds) { int num = 44100; int num2 = Mathf.CeilToInt((float)num * seconds); float[] array = new float[num2]; float num3 = MathF.PI * 2f * hz / (float)num; float num4 = 0f; for (int i = 0; i < num2; i++) { array[i] = Mathf.Sin(num4) * 0.9f; num4 += num3; } AudioClip val = AudioClip.Create($"tone_{hz:0}", num2, 1, num, false); val.SetData(array, 0); return val; } private static AudioClip Concat(params AudioClip[] clips) { if (clips.Length == 0) { return Sine(440f, 0.01f); } int frequency = clips[0].frequency; int channels = clips[0].channels; int num = 0; foreach (AudioClip val in clips) { num += val.samples * channels; } float[] array = new float[num]; int num2 = 0; foreach (AudioClip val2 in clips) { float[] array2 = new float[val2.samples * channels]; val2.GetData(array2, 0); Array.Copy(array2, 0, array, num2, array2.Length); num2 += array2.Length; } AudioClip val3 = AudioClip.Create("combined", num / channels, channels, frequency, false); val3.SetData(array, 0); return val3; } private void InitializeGrid() { for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { _currentSymbols[i, j] = ""; } } } private void GenerateTargetGrid() { for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { _targetSymbols[i, j] = ((_rng.NextDouble() < (double)BootGamble.CStartChance.Value) ? "7" : LoserSymbols[_rng.Next(LoserSymbols.Length)]); } } } private bool CheckWin() { for (int i = 0; i < 3; i++) { if (_targetSymbols[i, 0] == "7" && _targetSymbols[i, 1] == "7" && _targetSymbols[i, 2] == "7") { return true; } } for (int j = 0; j < 3; j++) { if (_targetSymbols[0, j] == "7" && _targetSymbols[1, j] == "7" && _targetSymbols[2, j] == "7") { return true; } } if (_targetSymbols[0, 0] == "7" && _targetSymbols[1, 1] == "7" && _targetSymbols[2, 2] == "7") { return true; } if (_targetSymbols[0, 2] == "7" && _targetSymbols[1, 1] == "7" && _targetSymbols[2, 0] == "7") { return true; } return false; } private void BuildStyles(GUISkin skin) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0016: 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_0026: 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_004b: Expected O, but got Unknown //IL_0052: 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_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0068: 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_0076: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Expected O, but got Unknown //IL_008d: 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_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Expected O, but got Unknown //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_0100: Expected O, but got Unknown //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Expected O, but got Unknown //IL_013f: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_014d: Unknown result type (might be due to invalid IL or missing references) //IL_0155: Unknown result type (might be due to invalid IL or missing references) //IL_015d: Unknown result type (might be due to invalid IL or missing references) //IL_0163: Unknown result type (might be due to invalid IL or missing references) //IL_016e: Unknown result type (might be due to invalid IL or missing references) //IL_0185: Unknown result type (might be due to invalid IL or missing references) //IL_0195: Unknown result type (might be due to invalid IL or missing references) //IL_019b: Unknown result type (might be due to invalid IL or missing references) //IL_01a6: Unknown result type (might be due to invalid IL or missing references) //IL_01bd: Unknown result type (might be due to invalid IL or missing references) //IL_01d2: Expected O, but got Unknown //IL_01d3: 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_01f4: Unknown result type (might be due to invalid IL or missing references) //IL_0209: Expected O, but got Unknown //IL_020a: Unknown result type (might be due to invalid IL or missing references) //IL_020f: Unknown result type (might be due to invalid IL or missing references) //IL_022b: Unknown result type (might be due to invalid IL or missing references) //IL_0240: Expected O, but got Unknown GUIStyle val = new GUIStyle(skin.label) { fontSize = 52, alignment = (TextAnchor)4, fontStyle = (FontStyle)1 }; val.normal.textColor = new Color(1f, 0.85f, 0.2f); _title = val; GUIStyle val2 = new GUIStyle(skin.label) { fontSize = 84, alignment = (TextAnchor)4, fontStyle = (FontStyle)1 }; val2.normal.textColor = Color.red; _statusStyle = val2; GUIStyle val3 = new GUIStyle(skin.label) { fontSize = 26, alignment = (TextAnchor)4 }; val3.normal.textColor = new Color(0.8f, 0.9f, 1f); _label = val3; GUIStyle val4 = new GUIStyle(skin.box); val4.normal.background = MakeTex(4, 4, new Color(1f, 0.15f, 0.05f)); _cellOn = val4; GUIStyle val5 = new GUIStyle(skin.box); val5.normal.background = MakeTex(4, 4, new Color(0.08f, 0.08f, 0.22f)); _cellOff = val5; GUIStyle val6 = new GUIStyle(skin.button) { fontSize = 42, alignment = (TextAnchor)4, fontStyle = (FontStyle)1 }; val6.normal.textColor = Color.white; val6.normal.background = MakeTex(4, 4, new Color(0.9f, 0.05f, 0.05f)); val6.hover.textColor = Color.yellow; val6.hover.background = MakeTex(4, 4, new Color(1f, 0.2f, 0.1f)); _button = val6; GUIStyle val7 = new GUIStyle(); val7.normal.background = MakeTex(2, 2, new Color(1f, 1f, 1f, 0.55f)); _bevelLight = val7; GUIStyle val8 = new GUIStyle(); val8.normal.background = MakeTex(2, 2, new Color(0f, 0f, 0f, 0.6f)); _bevelDark = val8; _stylesBuilt = true; _cachedSkinId = ((Object)skin).GetInstanceID(); } private static Texture2D MakeTex(int width, int height, Color col) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Expected O, but got Unknown //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) Texture2D val = new Texture2D(width, height, (TextureFormat)4, false); Color[] array = (Color[])(object)new Color[width * height]; for (int i = 0; i < array.Length; i++) { array[i] = col; } val.SetPixels(array); val.Apply(); return val; } private Rect Centered(Rect r) { //IL_0039: 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_003d: Unknown result type (might be due to invalid IL or missing references) ((Rect)(ref r)).x = ((float)Screen.width - ((Rect)(ref r)).width) * 0.5f; ((Rect)(ref r)).y = ((float)Screen.height - ((Rect)(ref r)).height) * 0.5f; return r; } private void OnGUI() { //IL_0073: 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_0093: Expected O, but got Unknown //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_0054: 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) if (_active) { if (!_stylesBuilt || _cachedSkinId != ((Object)GUI.skin).GetInstanceID()) { BuildStyles(GUI.skin); } if (!_centered) { _windowRect = Centered(_windowRect); _centered = true; } _windowRect = GUILayout.Window(((Object)this).GetInstanceID(), _windowRect, new WindowFunction(DrawWindow), "", Array.Empty<GUILayoutOption>()); } } private void DrawWindow(int id) { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_03a1: Unknown result type (might be due to invalid IL or missing references) //IL_03a6: Unknown result type (might be due to invalid IL or missing references) //IL_03d5: Unknown result type (might be due to invalid IL or missing references) //IL_03bf: Unknown result type (might be due to invalid IL or missing references) //IL_03da: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Unknown result type (might be due to invalid IL or missing references) //IL_0134: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_019c: Unknown result type (might be due to invalid IL or missing references) //IL_0597: Unknown result type (might be due to invalid IL or missing references) //IL_059c: Unknown result type (might be due to invalid IL or missing references) //IL_05c5: Unknown result type (might be due to invalid IL or missing references) //IL_01cb: Unknown result type (might be due to invalid IL or missing references) //IL_01d0: Unknown result type (might be due to invalid IL or missing references) //IL_01e1: Unknown result type (might be due to invalid IL or missing references) //IL_01e9: Unknown result type (might be due to invalid IL or missing references) //IL_01f1: Unknown result type (might be due to invalid IL or missing references) //IL_0220: Unknown result type (might be due to invalid IL or missing references) //IL_020a: Unknown result type (might be due to invalid IL or missing references) //IL_042a: Unknown result type (might be due to invalid IL or missing references) //IL_043b: Unknown result type (might be due to invalid IL or missing references) //IL_0440: 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: Expected O, but got Unknown //IL_022d: Expected O, but got Unknown //IL_02ef: 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_0292: Unknown result type (might be due to invalid IL or missing references) //IL_0297: Unknown result type (might be due to invalid IL or missing references) //IL_02ac: Unknown result type (might be due to invalid IL or missing references) //IL_02bc: Expected O, but got Unknown GUI.DrawTexture(new Rect(0f, 0f, ((Rect)(ref _windowRect)).width, ((Rect)(ref _windowRect)).height), (Texture)(object)_windowBg, (ScaleMode)0); GUILayout.Space(20f); GUILayout.Label("\ud83c\udfb0\ud83c\udfb0\ud83c\udfb0 BOOT SLOT \ud83c\udfb0\ud83c\udfb0\ud83c\udfb0", _title, Array.Empty<GUILayoutOption>()); GUILayout.Space(15f); GUILayout.Label("Land three 7's on any payline to launch the game", _label, Array.Empty<GUILayoutOption>()); GUILayout.Label("(rows • columns • both diagonals count)", _label, Array.Empty<GUILayoutOption>()); GUILayout.Space(40f); GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>()); GUILayout.FlexibleSpace(); GUILayout.BeginVertical(Array.Empty<GUILayoutOption>()); for (int i = 0; i < 3; i++) { GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>()); GUILayout.FlexibleSpace(); for (int j = 0; j < 3; j++) { string text = _currentSymbols[i, j]; bool flag = text == "7"; GUIStyle val = (flag ? _cellOn : _cellOff); GUILayout.Box("", val, (GUILayoutOption[])(object)new GUILayoutOption[2] { GUILayout.Width(220f), GUILayout.Height(160f) }); Rect lastRect = GUILayoutUtility.GetLastRect(); GUI.Box(new Rect(((Rect)(ref lastRect)).x - 7f, ((Rect)(ref lastRect)).y - 7f, ((Rect)(ref lastRect)).width, ((Rect)(ref lastRect)).height), "", _bevelDark); GUI.Box(new Rect(((Rect)(ref lastRect)).x + 7f, ((Rect)(ref lastRect)).y + 7f, ((Rect)(ref lastRect)).width, ((Rect)(ref lastRect)).height), "", _bevelLight); if (!string.IsNullOrEmpty(text)) { GUIStyle val2 = new GUIStyle(_label) { fontSize = (flag ? 120 : 90), alignment = (TextAnchor)4, fontStyle = (FontStyle)1 }; val2.normal.textColor = (flag ? new Color(1f, 1f, 0.3f) : new Color(1f, 1f, 1f)); GUIStyle val3 = val2; if (flag) { for (int k = -5; k <= 5; k++) { for (int l = -5; l <= 5; l++) { if (Mathf.Abs(k) + Mathf.Abs(l) <= 6) { Rect val4 = new Rect(((Rect)(ref lastRect)).x + (float)k, ((Rect)(ref lastRect)).y + (float)l, ((Rect)(ref lastRect)).width, ((Rect)(ref lastRect)).height); GUIStyle val5 = new GUIStyle(val3); val5.normal.textColor = new Color(0.9f, 0f, 0f); GUI.Label(val4, text, val5); } } } } GUI.Label(lastRect, text, val3); } if (j < 2) { GUILayout.Space(35f); } } GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); if (i < 2) { GUILayout.Space(35f); } } GUILayout.EndVertical(); GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); GUILayout.Space(40f); if (!string.IsNullOrEmpty(_statusMessage)) { GUILayout.Label(_statusMessage, _statusStyle, Array.Empty<GUILayoutOption>()); Rect lastRect2 = GUILayoutUtility.GetLastRect(); Color textColor = (_justWon ? new Color(1f, 0.9f, 0f) : new Color(0.1f, 0f, 0f)); for (int m = -6; m <= 6; m++) { for (int n = -6; n <= 6; n++) { if (m * m + n * n <= 50) { Rect val6 = new Rect(((Rect)(ref lastRect2)).x + (float)m, ((Rect)(ref lastRect2)).y + (float)n, ((Rect)(ref lastRect2)).width, ((Rect)(ref lastRect2)).height); string statusMessage = _statusMessage; GUIStyle val7 = new GUIStyle(_statusStyle); val7.normal.textColor = textColor; GUI.Label(val6, statusMessage, val7); } } } GUILayout.Space(30f); } GUILayout.Label($"Spins remaining: {_pullsRemaining}", _label, Array.Empty<GUILayoutOption>()); GUILayout.Space(30f); GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>()); GUILayout.FlexibleSpace(); GUI.enabled = _pullsRemaining > 0 && !_spinning && !_justWon && !_quitting; if (GUILayout.Button("PULL LEVER!", _button, (GUILayoutOption[])(object)new GUILayoutOption[2] { GUILayout.Width(420f), GUILayout.Height(100f) })) { _pullsRemaining--; GenerateTargetGrid(); Array.Clear(_reelStopped, 0, 3); _spinStartTime = Time.realtimeSinceStartup; _nextSymbolChangeTime = 0f; _spinning = true; _statusMessage = ""; _audio.PlayOneShot(_sndSpin); } GUI.enabled = true; Rect lastRect3 = GUILayoutUtility.GetLastRect(); GUI.Box(new Rect(((Rect)(ref lastRect3)).x + 10f, ((Rect)(ref lastRect3)).y + 10f, ((Rect)(ref lastRect3)).width, ((Rect)(ref lastRect3)).height), "", _bevelDark); GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); GUILayout.Space(30f); GUILayout.Label("No mercy. Spin or the game force-closes forever.", _label, Array.Empty<GUILayoutOption>()); GUI.DragWindow(); } [IteratorStateMachine(typeof(<ResumeAfterDelay>d__57))] private IEnumerator ResumeAfterDelay(float seconds) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <ResumeAfterDelay>d__57(0) { <>4__this = this, seconds = seconds }; } [IteratorStateMachine(typeof(<QuitAfterDelay>d__58))] private IEnumerator QuitAfterDelay(float seconds) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <QuitAfterDelay>d__58(0) { <>4__this = this, seconds = seconds }; } private void OnDestroy() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) if (_active) { Time.timeScale = _prevTimeScale; Cursor.lockState = _prevCursorLock; Cursor.visible = _prevCursorVisible; } } } }