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();
            }));
        }
Exemple #8
0
 /// <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"));
 }