private static void LocateDef() { var reg = new AtsRegWork(true); var gam = reg.Read(RegKeys.CURRENT_GAME); switch (gam) { case "ATS": var ofd = new OpenFileDialog { Title = @"Locate the Def SCS File" }; ofd.ShowDialog(); if (!ofd.FileName.FileExists()) { return; } reg.Write(AtsRegKeys.ATS_DEF_SCS_LOCATION, ofd.FileName); break; case "ETS": ofd = new OpenFileDialog { Title = @"Locate the Def SCS File" }; ofd.ShowDialog(); if (!ofd.FileName.FileExists()) { return; } reg.Write(EtsRegKeys.ETS_DEF_SCS_LOCATION, ofd.FileName); break; } }
/// <summary> /// Checks the base hash. /// </summary> public void CheckBaseHash() { var reg = new AtsRegWork(true); var acGam = reg.Read(RegKeys.CURRENT_GAME); string tmp; string hsh; string newHash; switch (acGam) { case "ATS": tmp = reg.Read(AtsRegKeys.ATS_BASE_SCS_LOCATION); if (tmp.IsNullOrEmpty()) { LocateBase(); tmp = reg.Read(AtsRegKeys.ATS_BASE_SCS_LOCATION); } hsh = reg.Read(AtsRegKeys.ATS_BASE_HASH); newHash = Hasher.HashFile(tmp); if (!string.Equals(newHash, hsh, StringComparison.OrdinalIgnoreCase)) { reg.Write(AtsRegKeys.ATS_BASE_HASH, newHash); ExtractBaseFiles(); ExtractDefFiles(); } else { MsgBx.Msg("No Update Necessary", "Up to Date Base Files"); } break; case "ETS": tmp = reg.Read(EtsRegKeys.ETS_BASE_SCS_LOCATION); if (tmp.IsNullOrEmpty()) { LocateBase(); tmp = reg.Read(EtsRegKeys.ETS_BASE_SCS_LOCATION); } hsh = reg.Read(EtsRegKeys.ETS_BASE_HASH); newHash = Hasher.HashFile(tmp); if (!string.Equals(newHash, hsh, StringComparison.OrdinalIgnoreCase)) { reg.Write(EtsRegKeys.ETS_BASE_HASH, newHash); ExtractBaseFiles(); ExtractDefFiles(); } else { MsgBx.Msg("No Update Necessary", "Up to Date Base Files"); } break; } }
private void bLoadSaveGames_Click(object sender, EventArgs e) { var reg = new AtsRegWork(true); var gam = reg.Read(RegKeys.CURRENT_GAME); string savePath; switch (gam) { case "FS15": savePath = reg.Read(Fs15RegKeys.FS15_SAVE_GAMES); if (savePath.IsNullOrEmpty()) { var ofd = new FolderBrowserDialog { Description = @"Navigate to the FS 15 SaveGame folder", ShowNewFolderButton = false }; ofd.ShowDialog(); if (!ofd.SelectedPath.IsNullOrEmpty()) { savePath = ofd.SelectedPath; reg.Write(Fs15RegKeys.FS15_SAVE_GAMES, savePath); } else { return; } } LoadTree(savePath); break; case "FS17": savePath = reg.Read(Fs17RegKeys.FS17_SAVE_GAMES); if (savePath.IsNullOrEmpty()) { var ofd = new FolderBrowserDialog { Description = @"Navigate to the FS 17 SaveGame folder", ShowNewFolderButton = false }; ofd.ShowDialog(); if (!ofd.SelectedPath.IsNullOrEmpty()) { savePath = ofd.SelectedPath; reg.Write(Fs17RegKeys.FS17_SAVE_GAMES, savePath); } else { return; } } LoadTree(savePath); break; } }
private void Form1_FormClosing(object sender, FormClosingEventArgs e) { var gi = new GameInfo(); var reg = new AtsRegWork(true); reg.Write(RegKeys.CURRENT_PROFILE, ""); gi.SetGame(""); }
private void editModToolStripMenuItem_Click(object sender, EventArgs e) { var reg = new AtsRegWork(true); var gam = reg.Read(RegKeys.CURRENT_GAME); Dictionary <string, string> dic = null; const string sortedList = "sortedFileListComplete.xml"; var key = lstAvailableMods.SelectedItem.ToString(); var pth = string.Empty; switch (gam) { case "ATS": dic = Serializer.DeserializeDictionary(reg.Read(AtsRegKeys.ATS_XML) + sortedList); break; case "ETS": dic = Serializer.DeserializeDictionary(reg.Read(EtsRegKeys.ETS_XML) + sortedList); break; case "FS15": dic = Serializer.DeserializeDictionary(reg.Read(Fs15RegKeys.FS15_XML) + sortedList); break; case "FS17": dic = Serializer.DeserializeDictionary(reg.Read(Fs17RegKeys.FS17_XML) + sortedList); break; } if (dic != null && dic.Any(v => string.Equals(v.Key, key, StringComparison.OrdinalIgnoreCase))) { dic.TryGetValue(key, out pth); } reg.Write(RegKeys.CURRENT_ORIGINAL_FILE_EDIT_PATH, pth + "\\" + key); var mt = new ModEdit(); reg.Write(RegKeys.CURRENT_FILE_EDIT, mt.EditMod(lstAvailableMods.SelectedItem.ToString())); var frm = new EditMod(); frm.LoadTree(); frm.ShowDialog(); }
/// <summary> /// Extracts the archive. /// </summary> /// <param name="arcName">Name of the arc.</param> public static void ExtractArchive(string arcName) { var reg = new AtsRegWork(true); var gam = reg.Read(RegKeys.CURRENT_GAME); var extPath = string.Empty; var archive = string.Empty; Dictionary <string, string> dic = null; switch (gam) { case "FS15": extPath = reg.Read(Fs15RegKeys.FS15_WORK); dic = Serializer.DeserializeDictionary( reg.Read(Fs15RegKeys.FS15_XML) + "sortedFileListComplete.xml"); break; case "FS17": extPath = reg.Read(Fs17RegKeys.FS17_WORK); dic = Serializer.DeserializeDictionary( reg.Read(Fs17RegKeys.FS17_XML) + "sortedFileListComplete.xml"); break; } if (dic != null && dic.Any(v => string.Equals(v.Key, arcName, StringComparison.OrdinalIgnoreCase))) { dic.TryGetValue(arcName, out archive); } var folderName = arcName.GetNameNoExtension(); reg.Write(RegKeys.CURRENT_EXTRACTED_FOLDER_PATH, extPath + folderName + "\\"); archive = archive + arcName; if (!archive.FileExists()) { MsgBx.Msg("There was a problem with the path to the Archive", "Process Error"); return; } var line = @" x " + Vars.QuoteMark + archive + Vars.QuoteMark + " -o" + Vars.QuoteMark + extPath + "\\" + folderName + Vars.QuoteMark + @" -r"; ProcessArchive(line); MsgBx.Msg("Files have been extracted", "Archive Extractor"); }
/// <summary> /// Starts the ats. /// </summary> public void StartAts() { var ats = new AtsRegWork(true); var gam = ats.Read(AtsRegKeys.ATS_START_GAME_PATH); if (gam.IsNullOrEmpty()) { var ofd = new OpenFileDialog { CheckFileExists = true, Title = @"Navigate to the American Truck Simulator Exe" }; ofd.ShowDialog(); gam = ofd.FileName; ats.Write(AtsRegKeys.ATS_START_GAME_PATH, ofd.FileName); } Process.Start(gam); }
private static void CreateFolders() { var atsw = new AtsRegWork(true); var ofd = new FolderBrowserDialog { Description = @"Navigate to where you want the top folder for ATS", ShowNewFolderButton = false }; ofd.ShowDialog(); if (!ofd.SelectedPath.FolderExists()) { return; } var pth = ofd.SelectedPath; FolderCreator.CreatePublicFolders(pth + "\\ATSRepo"); atsw.Write(AtsRegKeys.ATS_REPO, pth + "\\ATSRepo\\"); var tmp = pth + "\\ATSRepo\\"; FolderCreator.CreatePublicFolders(tmp + "ATSExtraction"); atsw.Write(AtsRegKeys.ATS_EXTRACTION, tmp + "ATSExtraction"); FolderCreator.CreatePublicFolders(tmp + "ATSProfiles"); atsw.Write(AtsRegKeys.ATS_PROFILES, tmp + "ATSProfiles\\"); FolderCreator.CreatePublicFolders(tmp + "ATSGroups"); atsw.Write(AtsRegKeys.ATS_GROUPS, tmp + "ATSGroups\\"); FolderCreator.CreatePublicFolders(tmp + "ATSXml"); atsw.Write(AtsRegKeys.ATS_XML, tmp + "ATSXml\\"); FolderCreator.CreatePublicFolders(tmp + "ATSWork"); atsw.Write(AtsRegKeys.ATS_WORK, tmp + "ATSWork\\"); ofd = new FolderBrowserDialog { Description = @"Navigate to your ATS Game Mod Folder", ShowNewFolderButton = false }; ofd.ShowDialog(); if (ofd.SelectedPath.FolderExists()) { atsw.Write(AtsRegKeys.ATS_GAME_MOD_FOLDER, ofd.SelectedPath + "\\"); } MsgBx.Msg("All folders have been created for ATS", "Game Intializer"); }
private void lstProfiles_SelectedIndexChanged(object sender, EventArgs e) { if (lstProfiles.SelectedItem.IsNull()) { return; } var reg = new AtsRegWork(true); var gam = reg.Read(RegKeys.CURRENT_GAME); if (gam.IsNullOrEmpty()) { return; } lstProfileMods.Items.Clear(); Dictionary <string, string> lst = null; lblActiveProfile.Text = @"Active Profile: " + lstProfiles.SelectedItem; reg.Write(RegKeys.CURRENT_PROFILE, lstProfiles.SelectedItem); switch (gam) { case "ATS": var prof = new ProfileWorker(); var ats = new AtsLoader(); lst = ats.LoadAtsProfileMods(lstProfiles.SelectedItem.ToString()); prof.SetProfileActive(); break; case "ETS": prof = new ProfileWorker(); var ets = new EtsLoader(); lst = ets.LoadEtsProfileMods(lstProfiles.SelectedItem.ToString()); prof.SetProfileActive(); break; case "FS15": prof = new ProfileWorker(); var fs15 = new Fs15Loader(); lst = fs15.LoadFs15ProfileMods(lstProfiles.SelectedItem.ToString()); prof.SetProfileActive(); break; case "FS17": prof = new ProfileWorker(); var fs17 = new Fs17Loader(); lst = fs17.LoadFs17ProfileMods(lstProfiles.SelectedItem.ToString()); prof.SetProfileActive(); lblProfiles.Text = @"Active Profiles: " + lstProfiles.Items.Count; break; } if (lst == null) { return; } foreach (var v in lst) { lstProfileMods.Items.Add(v.Key); } label2.Text = @"Active Mods: " + lstProfileMods.Items.Count; }
/// <summary> /// Reads the log files. /// </summary> public void ReadLogFiles() { var reg = new AtsRegWork(true); var gam = reg.Read(RegKeys.CURRENT_GAME); var ofd = new OpenFileDialog(); var pth = string.Empty; switch (gam) { case "ATS": pth = reg.Read(AtsRegKeys.ATS_LOG_FILE); if (pth.IsNullOrEmpty()) { ofd.Title = @"Navigate to the ATS Log File, usually in my documents under American Truck Simulator"; ofd.ShowDialog(); if (!ofd.FileName.FileExists()) { return; } reg.Write(AtsRegKeys.ATS_LOG_FILE, ofd.FileName); pth = ofd.FileName; } break; case "ETS": pth = reg.Read(EtsRegKeys.ETS_LOG_FILE); if (pth.IsNullOrEmpty()) { ofd.Title = @"Navigate to the ETS Log File, usually in my documents under Euro Truck Simulator 2"; ofd.ShowDialog(); if (!ofd.FileName.FileExists()) { return; } reg.Write(EtsRegKeys.ETS_LOG_FILE, ofd.FileName); pth = ofd.FileName; } break; case "FS15": pth = reg.Read(Fs15RegKeys.FS15_LOG_FILE); if (pth.IsNullOrEmpty()) { ofd.Title = @"Navigate to the FS15 Log File, usually in my documents/My Games under Farming Simulator 2015"; ofd.ShowDialog(); if (!ofd.FileName.FileExists()) { return; } reg.Write(Fs15RegKeys.FS15_LOG_FILE, ofd.FileName); pth = ofd.FileName; } break; case "FS17": pth = reg.Read(Fs17RegKeys.FS17_LOG_FILE); if (pth.IsNullOrEmpty()) { ofd.Title = @"Navigate to the FS17 Log File, usually in my documents/My Games under Farming Simulator 2017"; ofd.ShowDialog(); if (!ofd.FileName.FileExists()) { return; } reg.Write(Fs17RegKeys.FS17_LOG_FILE, ofd.FileName); pth = ofd.FileName; } break; } if (!pth.FileExists()) { return; } Process.Start(pth); }
/// <summary> /// Extracts the mod SCS. /// </summary> /// <param name="path">The path.</param> /// <returns>System.String.</returns> public static string ExtractModScs(string path) { SevenZipBase.SetLibraryPath(LibraryFilePath); var reg = new AtsRegWork(true); var acGam = reg.Read(RegKeys.CURRENT_GAME); var extractionPath = string.Empty; switch (acGam) { case "ATS": extractionPath = reg.Read(AtsRegKeys.ATS_WORK); break; case "ETS": extractionPath = reg.Read(EtsRegKeys.ETS_WORK); break; } var folderName = path.GetNameNoExtension(); reg.Write(RegKeys.CURRENT_EXTRACTED_FOLDER_PATH, extractionPath + folderName + "\\"); var sbePath = new StringBuilder(); sbePath.Append(extractionPath); sbePath.Append(Path.DirectorySeparatorChar); sbePath.Append(folderName); sbePath.Append(Path.DirectorySeparatorChar); if (folderName.IsNullOrEmpty() || extractionPath.IsNullOrEmpty()) { return("There was a problem with the archive / " + "extraction path, please try again"); } SevenZipExtractor svChecker = null; bool chk; try { svChecker = new SevenZipExtractor(path); chk = svChecker.Check(); } catch (Exception) { svChecker?.Dispose(); return("This archive cannot be extracted, possible encryption or a damaged archive"); } if (chk) { using (var extract = new SevenZipExtractor(path)) { extract.ExtractArchive(sbePath.ToString()); extract.Dispose(); } } else { MsgBx.Msg(@"This archive appears to be password protected, please enter password now", @"Password Error"); var input = Interaction.InputBox("Enter Password", "Enter Password"); using (var pswdExtract = new SevenZipExtractor(path, input)) { try { pswdExtract.ExtractArchive(sbePath.ToString()); pswdExtract.Dispose(); } catch (Exception) { pswdExtract.Dispose(); MsgBx.Msg(@"That password seems to be invalid, I cannot continue", "Invalid Password"); return("Invalid password attempt"); } } } return("All files have been extracted from " + path.GetFileName()); }
/// <summary> /// Extracts the definition files. /// </summary> public void ExtractDefFiles() { var reg = new AtsRegWork(true); var acGam = reg.Read(RegKeys.CURRENT_GAME); string tmp; string hsh; string newHash; switch (acGam) { case "ATS": tmp = reg.Read(AtsRegKeys.ATS_DEF_SCS_LOCATION); if (tmp.IsNullOrEmpty()) { LocateDef(); tmp = reg.Read(AtsRegKeys.ATS_DEF_SCS_LOCATION); } hsh = reg.Read(AtsRegKeys.ATS_DEF_HASH); newHash = Hasher.HashFile(tmp); if (!string.Equals(newHash, hsh, StringComparison.OrdinalIgnoreCase)) { reg.Write(AtsRegKeys.ATS_DEF_HASH, newHash); FileCopy.Source = ScsExtractor; FileCopy.Destination = reg.Read(AtsRegKeys.ATS_EXTRACTION) + ScsExtractor.GetFileName(); FileCopy.DoCopy(); FileCopy.Source = tmp; FileCopy.Destination = reg.Read(AtsRegKeys.ATS_EXTRACTION) + "def.scs"; FileCopy.DoCopy(); ExtractScs(reg.Read(AtsRegKeys.ATS_EXTRACTION), tmp); } break; case "ETS": tmp = reg.Read(EtsRegKeys.ETS_DEF_SCS_LOCATION); if (tmp.IsNullOrEmpty()) { LocateDef(); tmp = reg.Read(EtsRegKeys.ETS_DEF_SCS_LOCATION); } hsh = reg.Read(EtsRegKeys.ETS_DEF_HASH); newHash = Hasher.HashFile(tmp); var fld = reg.Read(EtsRegKeys.ETS_EXTRACTION); if (!string.Equals(newHash, hsh, StringComparison.OrdinalIgnoreCase)) { reg.Write(EtsRegKeys.ETS_DEF_HASH, newHash); FileCopy.Source = ScsExtractor; FileCopy.Destination = fld + ScsExtractor; FileCopy.DoCopy(); FileCopy.Source = tmp; FileCopy.Destination = fld + "def.scs"; FileCopy.DoCopy(); ExtractScs(fld, tmp); } break; } MsgBx.Msg("All base files have been updated", "Base File Extraction"); }