public static void _prepare(this SaveSlotButton self, GameManager gameManager) { self.ChangeSaveFileState(SaveFileStates.OperationInProgress); Platform.Current.IsSaveSlotInUse((int)self.saveSlot + 1, delegate(bool fileExists) { if (!fileExists) { self.ChangeSaveFileState(SaveFileStates.Empty); return; } gameManager.GetSaveStatsForSlot((int)self.saveSlot + 1, delegate(SaveStats saveStats) { if (saveStats == null) { self.ChangeSaveFileState(SaveFileStates.Corrupted); } else { self.SetAttr("saveStats", saveStats); self.ChangeSaveFileState(SaveFileStates.LoadedStats); } }); }); }
public void InitSlots() { gameObject.SetActive(true); content.CleanUp(); if (slotType != SlotButtonType.Load) { CreateNewSaveButton(); } foreach (string item in Directory.GetFiles(FilePath.SavedFolder)) { int i = item.LastIndexOf('/') + 1; string s = item.Substring(i); if (s.EndsWith(FilePath.SaveExt)) { SaveSlotButton t = CreateButtn(item, s); // FilePath.SaveFolder + s should give us the absolute filepath to a save file // Maybe we'll just store that in a button //Here's where we can do load stuff or save stuff? } } content.AdjustContentLength(); }
private static void ChangeSaveFileState(this SaveSlotButton self, SaveFileStates nextSaveFileState) { self.saveFileState = nextSaveFileState; if (self.isActiveAndEnabled) { self.ShowRelevantModeForSaveFileState(); } }
public void NewSave() { string fp = BuildSavePath(Globals.campaign.fileName); int i = fp.LastIndexOf('/') + 1; string s = fp.Substring(i); SaveSlotButton t = CreateButtn(BuildSavePath(Globals.campaign.fileName), s); t.button.onClick.Invoke(); }
public SaveSlotButton CreateButtn(string filePath, string label) { SaveSlotButton t = Instantiate <SaveSlotButton>(prefab, content.contentTransform); t.slotNumber = filePath; t.ChangeText(label); t.panel = this; content.AddToList(t); t.button.onClick.AddListener(delegate { SaveGame(filePath); }); return(t); }
public void CreateNewSaveButton() { string fp = BuildSavePath(Globals.campaign.fileName); string label = fp; // we can change this later to be SaveSlotButton t = Instantiate <SaveSlotButton>(prefab, content.contentTransform); content.AddToList(t); t.ChangeText("-New Save-"); t.button.onClick.AddListener(delegate { NewSave(); }); //TODO actully save the file with the path }
private static IEnumerator GoToResumeMenu(UIManager s, SaveSlotButton button, MenuPage resumePage) { InputHandler.Instance.StopUIInput(); yield return(s.HideSaveProfileMenu()); ReflectionHelper.CallMethod(s, "SetMenuState", MainMenuState.PLAY_MODE_MENU); transitionPage.Show(); loadingLabel.Show(); yield return(null); yield return(LoadGameAndDoAction(button.GetSaveSlotIndex(), () => { insideResumeMenu = true; loadingLabel.Hide(); transitionPage.Hide(); InputHandler.Instance.StartUIInput(); resumePage.Show(); })); }
/// <summary> /// Начинает игру с загруженным сохранением /// </summary> /// <param name="button">Нажатая кнопка сохранения</param> public void MakeSave(SaveSlotButton button) { GameManager.Instance.SaveGame(button); ActivateSaveMenu(); }
private IEnumerator SaveSlotButton_AnimateToSlotState(On.UnityEngine.UI.SaveSlotButton.orig_AnimateToSlotState orig, SaveSlotButton self, SlotState nextState) { yield return(orig(self, nextState)); //probably a better way to wait for the transition to end but good enough TM yield return(new WaitForSeconds(0.8f)); string filepath = Application.persistentDataPath + GetLockFilename((int)self.saveSlot); if (File.Exists(filepath)) { self.clearSaveButton.alpha = 0; self.clearSaveButton.interactable = false; self.clearSaveButton.gameObject.SetActive(false); self.StartCoroutine(_uim.FadeOutCanvasGroup(self.clearSaveButton)); } yield break; }
private void SaveSlotButton_OnSelect(On.UnityEngine.UI.SaveSlotButton.orig_OnSelect orig, SaveSlotButton self, UnityEngine.EventSystems.BaseEventData eventData) { _selectedSaveSlot = self; orig(self, eventData); }
private static void SaveSlotButton_OnSubmit(On.UnityEngine.UI.SaveSlotButton.orig_OnSubmit orig, SaveSlotButton self, UnityEngine.EventSystems.BaseEventData eventData) { if (self.saveFileState == SaveSlotButton.SaveFileStates.LoadedStats && self.GetSaveStats().permadeathMode != 2) { try { Settings s = MenuChangerMod.instance.ManuallyLoadSettings <MenuChangerMod, Settings>(self.GetSaveSlotIndex()); if (s != null && s.resumeKey != null && _resumePages.TryGetValue(s.resumeKey, out MenuPage page) && page is MenuPage) { self.ForceDeselect(); UIManager.instance.StartCoroutine(GoToResumeMenu(UIManager.instance, self, page)); return; } } catch (Exception e) { MenuChangerMod.instance.LogError($"Unable to manually load settings from menu!\n{e}"); } } else if (self.saveFileState == SaveSlotButton.SaveFileStates.Empty) { GameManager.instance.profileID = self.GetSaveSlotIndex(); UIManager.instance.UIGoToPlayModeMenu(); self.ForceDeselect(); return; } orig(self, eventData); }
private static int GetSaveSlotIndex(this SaveSlotButton button) { return((int)typeof(SaveSlotButton) .GetProperty("SaveSlotIndex", BindingFlags.NonPublic | BindingFlags.Instance) .GetValue(button)); }
private static SaveStats GetSaveStats(this SaveSlotButton button) { return(ReflectionHelper.GetField <SaveSlotButton, SaveStats>(button, "saveStats")); }