using System; using System.Reflection; using System.Runtime.CompilerServices; using BepInEx; using BepInEx.Configuration; using UnityEngine; [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: AssemblyVersion("0.0.0.0")] namespace SailwindQuickSave; [BepInPlugin("com.roy.sailwind.quicksave", "QuickSave", "1.0.0")] public class QuickSavePlugin : BaseUnityPlugin { private ConfigEntry hotkey; private ConfigEntry compressed; private ConfigEntry showMessage; private string message = ""; private float messageTimer; private GUIStyle style; private void Awake() { //IL_001b: 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) hotkey = ((BaseUnityPlugin)this).Config.Bind("General", "QuicksaveKey", new KeyboardShortcut((KeyCode)286, Array.Empty()), "Hotkey that triggers a save. Any UnityEngine KeyCode works (F5, F9, K...). Modifiers supported, e.g. 'K + LeftControl'."); compressed = ((BaseUnityPlugin)this).Config.Bind("General", "CompressedSave", true, "Save in compressed format (same as the game's autosave). Leave true unless you have a reason not to."); showMessage = ((BaseUnityPlugin)this).Config.Bind("General", "ShowOnScreenMessage", true, "Show a brief on-screen confirmation when quicksaving."); ((BaseUnityPlugin)this).Logger.LogInfo((object)string.Concat("QuickSave loaded. Press ", hotkey.Value, " to save.")); } private void Update() { //IL_0028: 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) if (messageTimer > 0f) { messageTimer -= Time.deltaTime; } KeyboardShortcut value = hotkey.Value; if (((KeyboardShortcut)(ref value)).IsDown()) { TrySave(); } } private void TrySave() { SaveLoadManager instance = SaveLoadManager.instance; if ((Object)(object)instance == (Object)null || !SaveLoadManager.readyToSave) { Show("Can't save right now (still loading)"); return; } if (GameState.sleeping || GameState.recovering) { Show("Can't save while sleeping"); return; } if (Object.op_Implicit((Object)(object)GameState.inBed)) { Show("Can't save while in bed"); return; } if (Object.op_Implicit((Object)(object)GameState.currentShipyard)) { Show("Can't save at the shipyard"); return; } instance.SaveGame(compressed.Value); ((BaseUnityPlugin)this).Logger.LogInfo((object)"Quicksave triggered."); Show("Game saved"); } private void Show(string msg) { ((BaseUnityPlugin)this).Logger.LogInfo((object)msg); if (showMessage.Value) { message = msg; messageTimer = 2.5f; } } private void OnGUI() { //IL_00a2: 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_0105: Unknown result type (might be due to invalid IL or missing references) //IL_010f: 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_0027: Expected O, but got Unknown if (!(messageTimer <= 0f)) { if (style == null) { style = new GUIStyle(); style.fontSize = 22; style.fontStyle = (FontStyle)1; style.alignment = (TextAnchor)4; } float num = Mathf.Clamp01(messageTimer / 0.5f); Rect val = default(Rect); ((Rect)(ref val))..ctor(0f, (float)Screen.height * 0.08f, (float)Screen.width, 30f); style.normal.textColor = new Color(0f, 0f, 0f, 0.75f * num); GUI.Label(new Rect(((Rect)(ref val)).x + 1f, ((Rect)(ref val)).y + 1f, ((Rect)(ref val)).width, ((Rect)(ref val)).height), message, style); style.normal.textColor = new Color(1f, 0.95f, 0.75f, num); GUI.Label(val, message, style); } } }