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(); }
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(); } }