Пример #1
0
    private bool IsFileValid(string filename)
    {
        bool result = false;

        try
        {
            SaveGame.Header   header;
            SaveGame.GameInfo gameInfo = SaveLoader.LoadHeader(filename, out header);
            result = (gameInfo.saveMajorVersion >= 7);
            return(result);
        }
        catch (Exception ex)
        {
            Debug.LogWarning("Corrupted save file: " + filename + "\n" + ex.ToString());
            return(result);
        }
    }
Пример #2
0
 private Tuple <SaveGame.Header, SaveGame.GameInfo> GetFileInfo(string filename)
 {
     try
     {
         SaveGame.Header   header;
         SaveGame.GameInfo b = SaveLoader.LoadHeader(filename, out header);
         if (b.saveMajorVersion >= 7)
         {
             return(new Tuple <SaveGame.Header, SaveGame.GameInfo>(header, b));
         }
     }
     catch (Exception obj)
     {
         Debug.LogWarning(obj);
         InfoText.text = string.Format(UI.FRONTEND.LOADSCREEN.CORRUPTEDSAVE, filename);
     }
     return(null);
 }
Пример #3
0
    private void AddExistingMod(string filename)
    {
        KButton freeElement = this.saveButtonPool.GetFreeElement(this.saveButtonRoot, true);

        freeElement.ClearOnClick();
        LocText componentInChildren = freeElement.GetComponentInChildren <LocText>();

        System.DateTime lastWriteTime = File.GetLastWriteTime(filename);
        componentInChildren.text = string.Format("{0}\n{1:H:mm:ss}\n" + Localization.GetFileDateFormat(1), Path.GetFileNameWithoutExtension(filename), lastWriteTime);
        freeElement.onClick     += delegate
        {
            this.onClick(filename);
        };
        bool flag = false;

        try
        {
            SaveGame.Header header;
            flag = (SaveLoader.LoadHeader(filename, out header).saveMajorVersion >= 7);
        }
        catch (Exception ex)
        {
            global::Debug.LogWarning("Corrupted save file: " + filename + "\n" + ex.ToString(), null);
        }
        if (flag)
        {
            freeElement.onDoubleClick += delegate
            {
                this.onClick(filename);
                this.DoLoad();
            };
        }
        ImageToggleState component = freeElement.GetComponent <ImageToggleState>();

        component.colorStyleSetting = ((!flag) ? this.invalidSaveFileStyle : this.validSaveFileStyle);
        component.RefreshColorStyle();
        component.SetState(ImageToggleState.State.Inactive);
        component.ResetColor();
        freeElement.transform.SetAsLastSibling();
        this.fileButtonMap.Add(filename, freeElement);
    }
Пример #4
0
    private void DoLoad()
    {
        ReportErrorDialog.MOST_RECENT_SAVEFILE = this.selectedFileName;
        bool flag = true;

        SaveGame.Header   header;
        SaveGame.GameInfo gameInfo = SaveLoader.LoadHeader(this.selectedFileName, out header);
        string            arg      = null;
        string            arg2     = null;

        if (header.buildVersion > 260525u)
        {
            arg  = header.buildVersion.ToString();
            arg2 = 260525u.ToString();
        }
        else if (gameInfo.saveMajorVersion < 7)
        {
            arg  = string.Format("v{0}.{1}", gameInfo.saveMajorVersion, gameInfo.saveMinorVersion);
            arg2 = string.Format("v{0}.{1}", 7, 3);
        }
        if (!flag)
        {
            GameObject          parent    = (!(FrontEndManager.Instance == null)) ? FrontEndManager.Instance.gameObject : GameScreenManager.Instance.ssOverlayCanvas;
            ConfirmDialogScreen component = Util.KInstantiateUI(ScreenPrefabs.Instance.ConfirmDialogScreen.gameObject, parent, true).GetComponent <ConfirmDialogScreen>();
            component.PopupConfirmDialog(string.Format(UI.CRASHSCREEN.LOADFAILED, "Version Mismatch", arg, arg2), null, null, null, null, null, null, null);
        }
        else
        {
            if (Game.Instance != null)
            {
                ModScreen.ForceStopGame();
            }
            SaveLoader.SetActiveSaveFilePath(this.selectedFileName);
            Time.timeScale = 0f;
            App.LoadScene("backend");
            this.Deactivate();
        }
    }
Пример #5
0
    private static void DoLoad(string filename)
    {
        ReportErrorDialog.MOST_RECENT_SAVEFILE = filename;
        bool flag = true;

        SaveGame.Header   header;
        SaveGame.GameInfo gameInfo = SaveLoader.LoadHeader(filename, out header);
        string            arg      = null;
        string            arg2     = null;

        if (header.buildVersion > 365655)
        {
            arg  = header.buildVersion.ToString();
            arg2 = 365655.ToString();
        }
        else if (gameInfo.saveMajorVersion < 7)
        {
            arg  = $"v{gameInfo.saveMajorVersion}.{gameInfo.saveMinorVersion}";
            arg2 = $"v{7}.{11}";
        }
        if (!flag)
        {
            GameObject          parent    = (!((UnityEngine.Object)FrontEndManager.Instance == (UnityEngine.Object)null)) ? FrontEndManager.Instance.gameObject : GameScreenManager.Instance.ssOverlayCanvas;
            ConfirmDialogScreen component = Util.KInstantiateUI(ScreenPrefabs.Instance.ConfirmDialogScreen.gameObject, parent, true).GetComponent <ConfirmDialogScreen>();
            component.PopupConfirmDialog(string.Format(UI.CRASHSCREEN.LOADFAILED, "Version Mismatch", arg, arg2), null, null, null, null, null, null, null, null, true);
        }
        else
        {
            if ((UnityEngine.Object)Game.Instance != (UnityEngine.Object)null)
            {
                ForceStopGame();
            }
            SaveLoader.SetActiveSaveFilePath(filename);
            Time.timeScale = 0f;
            App.LoadScene("backend");
        }
    }
    private void RefreshResumeButton()
    {
        string latestSaveFile = SaveLoader.GetLatestSaveFile();
        bool   flag           = !string.IsNullOrEmpty(latestSaveFile) && File.Exists(latestSaveFile);

        if (flag)
        {
            try
            {
                if (GenericGameSettings.instance.demoMode)
                {
                    flag = false;
                }
                System.DateTime   lastWriteTime = File.GetLastWriteTime(latestSaveFile);
                SaveFileEntry     value         = default(SaveFileEntry);
                SaveGame.Header   header        = default(SaveGame.Header);
                SaveGame.GameInfo gameInfo      = default(SaveGame.GameInfo);
                if (!saveFileEntries.TryGetValue(latestSaveFile, out value) || value.timeStamp != lastWriteTime)
                {
                    gameInfo = SaveLoader.LoadHeader(latestSaveFile, out header);
                    SaveFileEntry saveFileEntry = default(SaveFileEntry);
                    saveFileEntry.timeStamp  = lastWriteTime;
                    saveFileEntry.header     = header;
                    saveFileEntry.headerData = gameInfo;
                    value = saveFileEntry;
                    saveFileEntries[latestSaveFile] = value;
                }
                else
                {
                    header   = value.header;
                    gameInfo = value.headerData;
                }
                if (header.buildVersion > 365655 || gameInfo.saveMajorVersion < 7)
                {
                    flag = false;
                }
                string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(latestSaveFile);
                if (!string.IsNullOrEmpty(gameInfo.baseName))
                {
                    Button_ResumeGame.GetComponentsInChildren <LocText>()[1].text = string.Format(UI.FRONTEND.MAINMENU.RESUMEBUTTON_BASENAME, gameInfo.baseName, gameInfo.numberOfCycles + 1);
                }
                else
                {
                    Button_ResumeGame.GetComponentsInChildren <LocText>()[1].text = fileNameWithoutExtension;
                }
            }
            catch (Exception obj)
            {
                Debug.LogWarning(obj);
                flag = false;
            }
        }
        if ((UnityEngine.Object)Button_ResumeGame != (UnityEngine.Object)null && (UnityEngine.Object)Button_ResumeGame.gameObject != (UnityEngine.Object)null)
        {
            Button_ResumeGame.gameObject.SetActive(flag);
        }
        else
        {
            Debug.LogWarning("Why is the resume game button null?");
        }
    }
Пример #7
0
 private void SetSelectedGame(string filename)
 {
     if (string.IsNullOrEmpty(filename) || !File.Exists(filename))
     {
         global::Debug.LogError("The filename provided is not valid.", null);
     }
     else
     {
         KButton kButton = (this.selectedFileName == null) ? null : this.fileButtonMap[this.selectedFileName];
         if (kButton != null)
         {
             kButton.GetComponent <ImageToggleState>().SetState(ImageToggleState.State.Inactive);
         }
         this.selectedFileName = filename;
         kButton = this.fileButtonMap[this.selectedFileName];
         kButton.GetComponent <ImageToggleState>().SetState(ImageToggleState.State.Active);
         this.moreInfoButton.gameObject.SetActive(false);
         try
         {
             SaveGame.Header   header;
             SaveGame.GameInfo gameInfo = SaveLoader.LoadHeader(filename, out header);
             string            format   = UI.FRONTEND.LOADSCREEN.SAVEDETAILS;
             string            text     = string.Format("{0:H:mm:ss}\n" + Localization.GetFileDateFormat(0), File.GetLastWriteTime(filename));
             string            text2    = Path.GetFileName(filename);
             if (gameInfo.isAutoSave)
             {
                 text2 += UI.FRONTEND.LOADSCREEN.AUTOSAVEWARNING;
             }
             string text3 = string.Format(format, new object[]
             {
                 text2,
                 text,
                 gameInfo.baseName,
                 gameInfo.numberOfDuplicants.ToString(),
                 gameInfo.numberOfCycles.ToString()
             });
             this.saveDetails.text = text3;
             if (ModScreen.IsSaveFileFromUnsupportedFutureBuild(header))
             {
                 this.saveDetails.text          = string.Format(UI.FRONTEND.LOADSCREEN.SAVE_TOO_NEW, filename, header.buildVersion, 260525u);
                 this.loadButton.isInteractable = false;
                 this.loadButton.GetComponent <ImageToggleState>().SetState(ImageToggleState.State.Disabled);
             }
             else if (gameInfo.saveMajorVersion < 7)
             {
                 this.saveDetails.text = string.Format(UI.FRONTEND.LOADSCREEN.UNSUPPORTED_SAVE_VERSION, new object[]
                 {
                     filename,
                     gameInfo.saveMajorVersion,
                     gameInfo.saveMinorVersion,
                     7,
                     3
                 });
                 this.loadButton.isInteractable = false;
                 this.loadButton.GetComponent <ImageToggleState>().SetState(ImageToggleState.State.Disabled);
             }
             else if (!this.loadButton.isInteractable)
             {
                 this.loadButton.isInteractable = true;
                 this.loadButton.GetComponent <ImageToggleState>().SetState(ImageToggleState.State.Inactive);
             }
         }
         catch (Exception obj)
         {
             global::Debug.LogWarning(obj, null);
             this.saveDetails.text = string.Format(UI.FRONTEND.LOADSCREEN.CORRUPTEDSAVE, filename);
             if (this.loadButton.isInteractable)
             {
                 this.loadButton.isInteractable = false;
                 this.loadButton.GetComponent <ImageToggleState>().SetState(ImageToggleState.State.Disabled);
             }
         }
     }
 }
Пример #8
0
 private void SetSelectedGame(string filename, string savename)
 {
     if (string.IsNullOrEmpty(filename) || !File.Exists(filename))
     {
         Debug.LogError("The filename provided is not valid.");
         deleteButton.isInteractable = false;
     }
     else
     {
         deleteButton.isInteractable = true;
         KButton kButton = (selectedFileName == null) ? null : fileButtonMap[selectedFileName];
         if ((UnityEngine.Object)kButton != (UnityEngine.Object)null)
         {
             kButton.GetComponent <ImageToggleState>().SetState(ImageToggleState.State.Inactive);
         }
         selectedFileName = filename;
         FileName.text    = Path.GetFileName(selectedFileName);
         kButton          = fileButtonMap[selectedFileName];
         kButton.GetComponent <ImageToggleState>().SetState(ImageToggleState.State.Active);
         try
         {
             SaveGame.Header   header;
             SaveGame.GameInfo gameInfo = SaveLoader.LoadHeader(filename, out header);
             string            fileName = Path.GetFileName(filename);
             if (gameInfo.isAutoSave)
             {
                 fileName = fileName + "\n" + UI.FRONTEND.LOADSCREEN.AUTOSAVEWARNING;
             }
             CyclesSurvivedValue.text  = gameInfo.numberOfCycles.ToString();
             DuplicantsAliveValue.text = gameInfo.numberOfDuplicants.ToString();
             InfoText.text             = string.Empty;
             if (IsSaveFileFromUnsupportedFutureBuild(header))
             {
                 InfoText.text             = string.Format(UI.FRONTEND.LOADSCREEN.SAVE_TOO_NEW, filename, header.buildVersion, 365655u);
                 loadButton.isInteractable = false;
                 loadButton.GetComponent <ImageToggleState>().SetState(ImageToggleState.State.Disabled);
             }
             else if (gameInfo.saveMajorVersion < 7)
             {
                 InfoText.text             = string.Format(UI.FRONTEND.LOADSCREEN.UNSUPPORTED_SAVE_VERSION, filename, gameInfo.saveMajorVersion, gameInfo.saveMinorVersion, 7, 11);
                 loadButton.isInteractable = false;
                 loadButton.GetComponent <ImageToggleState>().SetState(ImageToggleState.State.Disabled);
             }
             else if (!loadButton.isInteractable)
             {
                 loadButton.isInteractable = true;
                 loadButton.GetComponent <ImageToggleState>().SetState(ImageToggleState.State.Inactive);
             }
             if (InfoText.text == string.Empty && gameInfo.isAutoSave)
             {
                 InfoText.text = UI.FRONTEND.LOADSCREEN.AUTOSAVEWARNING;
             }
         }
         catch (Exception obj)
         {
             Debug.LogWarning(obj);
             InfoText.text = string.Format(UI.FRONTEND.LOADSCREEN.CORRUPTEDSAVE, filename);
             if (loadButton.isInteractable)
             {
                 loadButton.isInteractable = false;
                 loadButton.GetComponent <ImageToggleState>().SetState(ImageToggleState.State.Disabled);
             }
             deleteButton.isInteractable = false;
         }
         try
         {
             Sprite sprite    = RetireColonyUtility.LoadColonyPreview(selectedFileName, savename);
             Image  component = previewImageRoot.GetComponent <Image>();
             component.sprite = sprite;
             component.color  = ((!(bool)sprite) ? Color.black : Color.white);
         }
         catch (Exception obj2)
         {
             Debug.Log(obj2);
         }
     }
 }