Ejemplo n.º 1
0
        private void GetBackupFiles()
        {
            if (!Directory.Exists(backupFolder))
            {
                DebugLog("Backup folder not found, check options!");
                return;
            }
            string[] backupFiles = Directory.GetFiles(backupFolder);
            backupSaveGames = new List <SnowRunnerSaveGame>();
            Regex r = new Regex(@"^SnowRunner_[0-9]{8}-[0-9]{6}.zip$");
            Match m;

            foreach (string backupFile in backupFiles)
            {
                if (File.Exists(backupFile))
                {
                    string fileName = new FileInfo(backupFile).Name;
                    m = r.Match(fileName);
                    if (m.Success && m.Groups[1].Value != null)
                    {
                        DebugLog("Getting info from zip " + fileName);
                        SnowRunnerSaveGame save = new SnowRunnerSaveGame();
                        save.backupName = fileName;
                        save.saveDate1  = File.GetCreationTime(backupFile);
                        save.saveDate2  = save.saveDate1;
                        save.saveDate3  = save.saveDate1;
                        save.saveDate4  = save.saveDate1;

                        using (ZipInputStream s = new ZipInputStream(File.OpenRead(backupFile)))
                        {
                            ZipEntry theEntry;

                            while ((theEntry = s.GetNextEntry()) != null)
                            {
                                if (theEntry.Name == "CompleteSave.dat")
                                {
                                    StreamReader   sReader      = new StreamReader(s);
                                    JsonTextReader reader       = new JsonTextReader(sReader);
                                    JObject        saveGameData = (JObject)JToken.ReadFrom(reader);
                                    save.rank1       = GetStringFromJObject(saveGameData, "CompleteSave.SslValue.persistentProfileData.rank");
                                    save.experience1 = GetStringFromJObject(saveGameData, "CompleteSave.SslValue.persistentProfileData.experience");
                                    save.money1      = String.Format("{0:n0}", Int32.Parse(GetStringFromJObject(saveGameData, "CompleteSave.SslValue.persistentProfileData.money")));
                                }

                                if (theEntry.Name == "CompleteSave1.dat")
                                {
                                    StreamReader   sReader      = new StreamReader(s);
                                    JsonTextReader reader       = new JsonTextReader(sReader);
                                    JObject        saveGameData = (JObject)JToken.ReadFrom(reader);
                                    save.rank2       = GetStringFromJObject(saveGameData, "CompleteSave1.SslValue.persistentProfileData.rank");
                                    save.experience2 = GetStringFromJObject(saveGameData, "CompleteSave1.SslValue.persistentProfileData.experience");
                                    save.money2      = String.Format("{0:n0}", Int32.Parse(GetStringFromJObject(saveGameData, "CompleteSave1.SslValue.persistentProfileData.money")));
                                }

                                if (theEntry.Name == "CompleteSave2.dat")
                                {
                                    StreamReader   sReader      = new StreamReader(s);
                                    JsonTextReader reader       = new JsonTextReader(sReader);
                                    JObject        saveGameData = (JObject)JToken.ReadFrom(reader);
                                    save.rank3       = GetStringFromJObject(saveGameData, "CompleteSave2.SslValue.persistentProfileData.rank");
                                    save.experience3 = GetStringFromJObject(saveGameData, "CompleteSave2.SslValue.persistentProfileData.experience");
                                    save.money3      = String.Format("{0:n0}", Int32.Parse(GetStringFromJObject(saveGameData, "CompleteSave2.SslValue.persistentProfileData.money")));
                                }

                                if (theEntry.Name == "CompleteSave3.dat")
                                {
                                    StreamReader   sReader      = new StreamReader(s);
                                    JsonTextReader reader       = new JsonTextReader(sReader);
                                    JObject        saveGameData = (JObject)JToken.ReadFrom(reader);
                                    save.rank4       = GetStringFromJObject(saveGameData, "CompleteSave3.SslValue.persistentProfileData.rank");
                                    save.experience4 = GetStringFromJObject(saveGameData, "CompleteSave3.SslValue.persistentProfileData.experience");
                                    save.money4      = String.Format("{0:n0}", Int32.Parse(GetStringFromJObject(saveGameData, "CompleteSave3.SslValue.persistentProfileData.money")));
                                }
                            }
                            s.Close();
                        }

                        backupSaveGames.Add(save);
                    }
                }
            }
            backupSaveGames = backupSaveGames.OrderBy(sel => sel.backupName, new OrdinalStringComparer()).ToList();
            treeViewBackups.BeginUpdate();
            treeViewBackups.Nodes.Clear();
            unselectableBackupNodes.Clear();
            for (int i = 0; i < backupSaveGames.Count; i++)
            {
                TreeNode newParentNode = treeViewBackups.Nodes.Add(String.Format("{0}", backupSaveGames[i].backupName));

                if (backupSaveGames[i].rank1 != null)
                {
                    TreeNode newSlotNode  = newParentNode.Nodes.Add("Save Slot 1");
                    TreeNode newChildNode = newSlotNode.Nodes.Add(String.Format("Rank: {0}", backupSaveGames[i].rank1));
                    unselectableBackupNodes.Add(newChildNode);
                    newChildNode = newSlotNode.Nodes.Add(String.Format("Money: {0:n0}", backupSaveGames[i].money1));
                    unselectableBackupNodes.Add(newChildNode);
                    newChildNode = newSlotNode.Nodes.Add(String.Format("Experience: {0:n0}", backupSaveGames[i].experience1));
                    unselectableBackupNodes.Add(newSlotNode);
                }

                if (backupSaveGames[i].rank2 != null)
                {
                    TreeNode newSlotNode  = newParentNode.Nodes.Add("Save Slot 2");
                    TreeNode newChildNode = newSlotNode.Nodes.Add(String.Format("Rank: {0}", backupSaveGames[i].rank2));
                    unselectableBackupNodes.Add(newChildNode);
                    newChildNode = newSlotNode.Nodes.Add(String.Format("Money: {0:n0}", backupSaveGames[i].money2));
                    unselectableBackupNodes.Add(newChildNode);
                    newChildNode = newSlotNode.Nodes.Add(String.Format("Experience: {0:n0}", backupSaveGames[i].experience2));
                    unselectableBackupNodes.Add(newSlotNode);
                }

                if (backupSaveGames[i].rank3 != null)
                {
                    TreeNode newSlotNode  = newParentNode.Nodes.Add("Save Slot 3");
                    TreeNode newChildNode = newSlotNode.Nodes.Add(String.Format("Rank: {0}", backupSaveGames[i].rank3));
                    unselectableBackupNodes.Add(newChildNode);
                    newChildNode = newSlotNode.Nodes.Add(String.Format("Money: {0:n0}", backupSaveGames[i].money3));
                    unselectableBackupNodes.Add(newChildNode);
                    newChildNode = newSlotNode.Nodes.Add(String.Format("Experience: {0:n0}", backupSaveGames[i].experience3));
                    unselectableBackupNodes.Add(newSlotNode);
                }

                if (backupSaveGames[i].rank4 != null)
                {
                    TreeNode newSlotNode  = newParentNode.Nodes.Add("Save Slot 4");
                    TreeNode newChildNode = newSlotNode.Nodes.Add(String.Format("Rank: {0}", backupSaveGames[i].rank4));
                    unselectableBackupNodes.Add(newChildNode);
                    newChildNode = newSlotNode.Nodes.Add(String.Format("Money: {0:n0}", backupSaveGames[i].money4));
                    unselectableBackupNodes.Add(newChildNode);
                    newChildNode = newSlotNode.Nodes.Add(String.Format("Experience: {0:n0}", backupSaveGames[i].experience4));
                    unselectableBackupNodes.Add(newSlotNode);
                }
            }
            treeViewBackups.EndUpdate();
        }
Ejemplo n.º 2
0
        private void GetSaveGameInfo()
        {
            if (!Directory.Exists(saveGamePath))
            {
                try
                {
                    DirectoryInfo di = Directory.CreateDirectory(saveGamePath);
                    DebugLog("Save game path was not found so it was created: " + saveGamePath);
                }
                catch (Exception ex)
                {
                    DebugLog("Unable to create save game directory " + saveGamePath);
                    DebugLog(ex.Message);
                }
                return;
            }

            SnowRunnerSaveGame saveGame = new SnowRunnerSaveGame();

            // save slot 1
            string jsonFile = saveGamePath + Path.DirectorySeparatorChar + "CompleteSave.dat";

            saveGame.saveDate1 = File.GetLastWriteTime(jsonFile);
            if (File.Exists(jsonFile))
            {
                using (StreamReader file = File.OpenText(jsonFile))
                {
                    using (JsonTextReader reader = new JsonTextReader(file))
                    {
                        JObject saveGameData = (JObject)JToken.ReadFrom(reader);

                        labelSaveDate1.Text   = saveGame.saveDate1.ToString("MM/dd/yyyy hh:mm tt");
                        labelRank1.Text       = GetStringFromJObject(saveGameData, "CompleteSave.SslValue.persistentProfileData.rank");
                        labelExperience1.Text = GetStringFromJObject(saveGameData, "CompleteSave.SslValue.persistentProfileData.experience");
                        labelMoney1.Text      = String.Format("{0:n0}", Int32.Parse(GetStringFromJObject(saveGameData, "CompleteSave.SslValue.persistentProfileData.money")));
                    }
                }
            }

            // save slot 2
            jsonFile           = saveGamePath + Path.DirectorySeparatorChar + "CompleteSave1.dat";
            saveGame.saveDate2 = File.GetLastWriteTime(jsonFile);
            if (File.Exists(jsonFile))
            {
                using (StreamReader file = File.OpenText(jsonFile))
                {
                    using (JsonTextReader reader = new JsonTextReader(file))
                    {
                        JObject saveGameData = (JObject)JToken.ReadFrom(reader);

                        labelSaveDate2.Text   = saveGame.saveDate2.ToString("MM/dd/yyyy hh:mm tt");
                        labelRank2.Text       = GetStringFromJObject(saveGameData, "CompleteSave1.SslValue.persistentProfileData.rank");
                        labelExperience2.Text = GetStringFromJObject(saveGameData, "CompleteSave1.SslValue.persistentProfileData.experience");
                        labelMoney2.Text      = String.Format("{0:n0}", Int32.Parse(GetStringFromJObject(saveGameData, "CompleteSave1.SslValue.persistentProfileData.money")));
                    }
                }
            }

            // save slot 3
            jsonFile           = saveGamePath + Path.DirectorySeparatorChar + "CompleteSave2.dat";
            saveGame.saveDate3 = File.GetLastWriteTime(jsonFile);
            if (File.Exists(jsonFile))
            {
                using (StreamReader file = File.OpenText(jsonFile))
                {
                    using (JsonTextReader reader = new JsonTextReader(file))
                    {
                        JObject saveGameData = (JObject)JToken.ReadFrom(reader);

                        labelSaveDate3.Text   = saveGame.saveDate3.ToString("MM/dd/yyyy hh:mm tt");
                        labelRank3.Text       = GetStringFromJObject(saveGameData, "CompleteSave2.SslValue.persistentProfileData.rank");
                        labelExperience3.Text = GetStringFromJObject(saveGameData, "CompleteSave2.SslValue.persistentProfileData.experience");
                        labelMoney3.Text      = String.Format("{0:n0}", Int32.Parse(GetStringFromJObject(saveGameData, "CompleteSave2.SslValue.persistentProfileData.money")));
                    }
                }
            }

            // save slot 4
            jsonFile           = saveGamePath + Path.DirectorySeparatorChar + "CompleteSave3.dat";
            saveGame.saveDate4 = File.GetLastWriteTime(jsonFile);
            if (File.Exists(jsonFile))
            {
                using (StreamReader file = File.OpenText(jsonFile))
                {
                    using (JsonTextReader reader = new JsonTextReader(file))
                    {
                        JObject saveGameData = (JObject)JToken.ReadFrom(reader);

                        labelSaveDate4.Text   = saveGame.saveDate4.ToString("MM/dd/yyyy hh:mm tt");
                        labelRank4.Text       = GetStringFromJObject(saveGameData, "CompleteSave3.SslValue.persistentProfileData.rank");
                        labelExperience4.Text = GetStringFromJObject(saveGameData, "CompleteSave3.SslValue.persistentProfileData.experience");
                        labelMoney4.Text      = String.Format("{0:n0}", Int32.Parse(GetStringFromJObject(saveGameData, "CompleteSave3.SslValue.persistentProfileData.money")));
                    }
                }
            }

            DateTime latest = GetLatestZipDate();

            //DebugLog("latest: " + latest.ToString());
            //DebugLog("saveDate: " + saveGame.saveDate.ToString());
            if (latest.CompareTo(saveGame.saveDate1) >= 0)
            {
                labelSaveDateLabel1.ForeColor = System.Drawing.Color.Green;
                labelSaveDate1.ForeColor      = System.Drawing.Color.Green;
            }
            else
            {
                labelSaveDateLabel1.ForeColor = new System.Drawing.Color();
                labelSaveDate1.ForeColor      = new System.Drawing.Color();
            }
        }