/// <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; } }
/// <summary> /// Loads the ats mod choice. /// </summary> /// <param name="chc">The CHC.</param> /// <returns></returns> public string LoadAtsModChoice(string chc) { var ats = new AtsRegWork(true); var fnd = string.Empty; var dic = Serializer.DeserializeDictionary(ats.Read(AtsRegKeys.ATS_XML) + "sortedFileListComplete.xml"); if (dic.Any(v => string.Equals(v.Key, chc, StringComparison.OrdinalIgnoreCase))) { dic.TryGetValue(chc, out fnd); } return(fnd + chc); }
private static void ExtractBaseFiles() { var reg = new AtsRegWork(true); var acGam = reg.Read(RegKeys.CURRENT_GAME); string tmp; switch (acGam) { case "ATS": var fld = reg.Read(AtsRegKeys.ATS_EXTRACTION); tmp = reg.Read(AtsRegKeys.ATS_BASE_SCS_LOCATION); FileCopy.Source = ScsExtractor; FileCopy.Destination = fld + ScsExtractor.GetFileName(); FileCopy.DoCopy(); FileCopy.Source = tmp; FileCopy.Destination = fld + "base.scs"; FileCopy.DoCopy(); ExtractScs(fld, tmp); break; case "ETS": tmp = reg.Read(EtsRegKeys.ETS_BASE_SCS_LOCATION); fld = reg.Read(EtsRegKeys.ETS_EXTRACTION); FileCopy.Source = ScsExtractor; FileCopy.Destination = fld + ScsExtractor.GetFileName(); FileCopy.DoCopy(); FileCopy.Source = tmp; FileCopy.Destination = fld + "base.scs"; FileCopy.DoCopy(); ExtractScs(fld, tmp); break; } }
/// <summary> /// Loads the ats profile mods. /// </summary> /// <param name="prof">The PTH.</param> /// <returns></returns> public Dictionary <string, string> LoadAtsProfileMods(string prof) { var ats = new AtsRegWork(true); var pro = ats.Read(AtsRegKeys.ATS_PROFILES) + prof + "\\" + prof + ".xml"; if (!pro.FileExists()) { return(null); } var dic = Serializer.DeserializeDictionary(pro); return(dic); }
private static string GetLocation() { var gi = new GameInfo(); var tmp = gi.GetGame(); if (tmp.IsNullOrEmpty()) { return(null); } var pth = string.Empty; switch (tmp) { case "ATS": var atsp = new AtsRegWork(true); pth = atsp.Read(AtsRegKeys.ATS_GROUPS); break; case "ETS": var etsp = new EtsRegWork(true); pth = etsp.Read(EtsRegKeys.ETS_GROUPS); break; case "FS15": var fs15 = new Fs15RegWork(true); pth = fs15.Read(Fs15RegKeys.FS15_GROUPS); break; case "FS17": var fs17 = new Fs17RegWork(true); pth = fs17.Read(Fs17RegKeys.FS17_GROUPS); break; } var lst = GetFilesFolders.GetFolders(pth, "*.*"); var frm = new ModMover(); foreach (var f in lst) { frm.lstModMove.Items.Add(f); } frm.ShowDialog(); var fld = frm.lstModMove.SelectedItem.ToString(); frm.Close(); return(fld); }
private void checkForBaseFilesUpdateToolStripMenuItem_Click(object sender, EventArgs e) { var reg = new AtsRegWork(true); var gam = reg.Read(RegKeys.CURRENT_GAME); switch (gam) { case "ATS": case "ETS": var bs = new BaseFileExtractor(); bs.CheckBaseHash(); break; } }
private void LoadProfileMods() { var reg = new AtsRegWork(true); var gam = reg.Read(RegKeys.CURRENT_GAME); if (lstSortMods.SelectedItem.IsNull()) { return; } var chc = lstSortMods.SelectedItem.ToString(); lstAvailableMods.Items.Clear(); IEnumerable <string> lst = null; switch (gam) { case "ATS": var ats = new AtsLoader(); lst = ats.LoadAtsGroupMods(chc); break; case "ETS": var ets = new EtsLoader(); lst = ets.LoadEtsGroupMods(chc); break; case "FS15": var fs15 = new Fs15Loader(); lst = fs15.LoadFs15GroupMods(chc); break; case "FS17": var fs17 = new Fs17Loader(); lst = fs17.LoadFs17GroupMods(chc); break; } if (lst == null) { return; } foreach (var v in lst) { lstAvailableMods.Items.Add(v.GetFileName()); } CheckModCount(); }
private void bAddNewProfile_Click(object sender, EventArgs e) { var reg = new AtsRegWork(true); var gam = reg.Read(RegKeys.CURRENT_GAME); if (txtAddProfile.Text.IsNullOrEmpty()) { return; } var prof = new ProfileWorker(); prof.AddNewProfile(txtAddProfile.Text); txtAddProfile.Text = string.Empty; lblProfiles.Text = @"Active Profiles: " + lstProfiles.Items.Count; GameLoader(gam); }
/// <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); }
/// <summary> /// Removes the mod. /// </summary> /// <param name="key">The key.</param> /// <returns></returns> public Dictionary <string, string> ProfileRemoveMod(string key) { var reg = new AtsRegWork(true); var gam = reg.Read(RegKeys.CURRENT_GAME); var profile = reg.Read(RegKeys.CURRENT_PROFILE); var modPath = string.Empty; switch (gam) { case "ATS": modPath = reg.Read(AtsRegKeys.ATS_PROFILES) + profile + "\\" + profile + XML_EXT; break; case "ETS": modPath = reg.Read(EtsRegKeys.ETS_PROFILES) + profile + "\\" + profile + XML_EXT; break; case "FS15": modPath = reg.Read(Fs15RegKeys.FS15_PROFILES) + profile + "\\" + profile + XML_EXT; break; case "FS17": modPath = reg.Read(Fs17RegKeys.FS17_PROFILES) + profile + "\\" + profile + XML_EXT; break; } var dic = Serializer.DeserializeDictionary(modPath); if (dic.Any(v => string.Equals(v.Key, key, StringComparison.OrdinalIgnoreCase))) { var mod = reg.Read(Fs17RegKeys.FS17_PROFILES) + profile + "\\" + key; dic.Remove(key); DeleteFiles.DeleteFilesOrFolders(mod); var ls = new ListCreator(); ls.CreateSortedLists(); ls.SortedFileListComplete(); MsgBx.Msg("Operation completed successfully", "Mod Remover"); } Serializer.SerializeDictionary(modPath, dic); return(dic); }
/// <summary> /// Initializes the ats. /// </summary> public void InitializeAts() { var atsw = new AtsRegWork(true); var tmp = atsw.Read(AtsRegKeys.ATS_REPO); if (!tmp.IsNullOrEmpty()) { return; } var diag = MessageBox.Show(@"Do you want me to setup American Truck Simulator?", @"ATS Init", MessageBoxButtons.YesNo); if (diag != DialogResult.Yes) { return; } CreateFolders(); }
private void DeleteRepoMod(string pth) { var reg = new AtsRegWork(true); var gam = reg.Read(RegKeys.CURRENT_GAME); var dic = Serializer.DeserializeDictionary(pth); var lc = new ListCreator(); var key = lstAvailableMods.SelectedItem.ToString(); string pt; if (!dic.Any(v => string.Equals(v.Key, key, StringComparison.OrdinalIgnoreCase))) { return; } dic.TryGetValue(key, out pt); var mPth = pt + key; DeleteFiles.DeleteFilesOrFolders(mPth); lstAvailableMods.Items.Remove(key); lc.CreateSortedLists(); lc.SortedFileListComplete(); switch (gam) { case "ETS": EtsLoad(); break; case "ATS": AtsLoad(); break; case "FS15": Fs15Load(); break; case "FS17": Fs17Load(); CheckModCount(); break; } }
public string GetMapName(string saveGame) { var reg = new AtsRegWork(true); var gam = reg.Read(RegKeys.CURRENT_GAME); var tmp = string.Empty; switch (gam) { case "FS15": break; case "FS17": var xdoc = new XmlDocument(); if (!saveGame.FolderExists()) { return(string.Empty); } xdoc.Load(saveGame + "\\careerSavegame.xml"); var nodes = xdoc.SelectNodes("careerSavegame/settings/savegameName"); if (nodes == null) { return(string.Empty); } foreach (XmlNode node in nodes) { if (node.Name != "savegameName") { continue; } tmp = node.InnerText; break; } break; } return(tmp); }
/// <summary> /// Copy the mods to profile /// </summary> /// <returns></returns> public Dictionary <string, string> CopyProfileMods() { var reg = new AtsRegWork(true); var gam = reg.Read(RegKeys.CURRENT_GAME); var ofd = new FolderBrowserDialog { Description = @"Navigate to mods", ShowNewFolderButton = false }; ofd.ShowDialog(); if (!ofd.SelectedPath.FolderExists()) { return(null); } IEnumerable <string> lst = null; switch (gam) { case "ATS": lst = GetFilesFolders.GetFiles(ofd.SelectedPath, "*.scs"); break; case "ETS": lst = GetFilesFolders.GetFiles(ofd.SelectedPath, "*.scs"); break; case "FS15": lst = GetFilesFolders.GetFiles(ofd.SelectedPath, "*.zip"); break; case "FS17": lst = GetFilesFolders.GetFiles(ofd.SelectedPath, "*.zip"); break; } return(CreateLinks(lst)); }
/// <summary> /// Adds the new profile. /// </summary> /// <param name="nam">The nam.</param> public void AddNewProfile(string nam) { var gi = new GameInfo(); var gam = gi.GetGame(); if (gam.IsNullOrEmpty()) { return; } var pth = string.Empty; switch (gam) { case "ATS": var atsp = new AtsRegWork(true); pth = atsp.Read(AtsRegKeys.ATS_PROFILES) + nam; break; case "ETS": var etsp = new EtsRegWork(true); pth = etsp.Read(EtsRegKeys.ETS_PROFILES) + nam; break; case "FS15": var fs15 = new Fs15RegWork(true); pth = fs15.Read(Fs15RegKeys.FS15_PROFILES) + nam; break; case "FS17": var fs17 = new Fs17RegWork(true); pth = fs17.Read(Fs17RegKeys.FS17_PROFILES) + nam; break; } FolderCreator.CreatePublicFolders(pth); }
/// <summary> /// Removes a Profile /// </summary> /// <returns></returns> public IEnumerable <string> ProfileRemove() { var reg = new AtsRegWork(true); var gam = reg.Read(RegKeys.CURRENT_GAME); var profile = reg.Read(RegKeys.CURRENT_PROFILE); string proPath; IEnumerable <string> proList = null; switch (gam) { case "ATS": var ldr = new AtsLoader(); proPath = reg.Read(AtsRegKeys.ATS_PROFILES) + profile; DeleteFiles.DeleteFilesOrFolders(proPath); proList = ldr.LoadAtsProfiles(); break; case "ETS": var edr = new EtsLoader(); proPath = reg.Read(EtsRegKeys.ETS_PROFILES) + profile; DeleteFiles.DeleteFilesOrFolders(proPath); proList = edr.LoadEtsProfiles(); break; case "FS15": proPath = reg.Read(Fs15RegKeys.FS15_PROFILES) + profile; var fs15 = new Fs15Loader(); DeleteFiles.DeleteFilesOrFolders(proPath); proList = fs15.LoadFs15Profiles(); break; case "FS17": proPath = reg.Read(Fs17RegKeys.FS17_PROFILES) + profile; var fs17 = new Fs15Loader(); DeleteFiles.DeleteFilesOrFolders(proPath); proList = fs17.LoadFs15Profiles(); break; } return(proList); }
private void toolStripMenuItem1_Click(object sender, EventArgs e) { var reg = new AtsRegWork(true); var gam = reg.Read(RegKeys.CURRENT_GAME); var cProf = reg.Read(RegKeys.CURRENT_PROFILE); if (gam.IsNullOrEmpty() || cProf.IsNullOrEmpty()) { MsgBx.Msg("You need to have a Profile / Game active", "Process Error"); return; } string tmp; string profPath; Dictionary <string, string> lst = null; lstProfileMods.Items.Clear(); switch (gam) { case "ATS": var ats = new AtsLoader(); var atsp = new AtsRegWork(true); var prof = new ProfileWorker(); tmp = ats.LoadAtsModChoice(lstAvailableMods.SelectedItem.ToString()); profPath = atsp.Read(AtsRegKeys.ATS_GAME_MOD_FOLDER) + tmp.GetFileName(); prof.BuildProfileList(lstAvailableMods.SelectedItem.ToString()); SymLinks.CreateSymLink(profPath, tmp, 0); lst = ats.LoadAtsProfileMods(reg.Read(RegKeys.CURRENT_PROFILE)); break; case "ETS": var ets = new EtsLoader(); var etsp = new EtsRegWork(true); prof = new ProfileWorker(); tmp = ets.LoadEtsModChoice(lstAvailableMods.SelectedItem.ToString()); profPath = etsp.Read(EtsRegKeys.ETS_GAME_MOD_FOLDER) + tmp.GetFileName(); prof.BuildProfileList(lstAvailableMods.SelectedItem.ToString()); SymLinks.CreateSymLink(profPath, tmp, 0); lst = ets.LoadEtsProfileMods(reg.Read(RegKeys.CURRENT_PROFILE)); break; case "FS15": var fs15 = new Fs15Loader(); var fs15P = new Fs15RegWork(true); tmp = fs15.LoadFs15ModChoice(lstAvailableMods.SelectedItem.ToString()); profPath = fs15P.Read(Fs15RegKeys.FS15_PROFILES) + reg.Read(RegKeys.CURRENT_PROFILE) + "\\" + tmp.GetFileName(); prof = new ProfileWorker(); prof.BuildProfileList(lstAvailableMods.SelectedItem.ToString()); SymLinks.CreateSymLink(profPath, tmp, 0); lst = fs15.LoadFs15ProfileMods(reg.Read(RegKeys.CURRENT_PROFILE)); break; case "FS17": var fs17 = new Fs17Loader(); var fs17P = new Fs17RegWork(true); tmp = fs17.LoadFs17ModChoice(lstAvailableMods.SelectedItem.ToString()); profPath = fs17P.Read(Fs17RegKeys.FS17_PROFILES) + reg.Read(RegKeys.CURRENT_PROFILE) + "\\" + tmp.GetFileName(); prof = new ProfileWorker(); prof.BuildProfileList(lstAvailableMods.SelectedItem.ToString()); SymLinks.CreateSymLink(profPath, tmp, 0); lst = fs17.LoadFs17ProfileMods(reg.Read(RegKeys.CURRENT_PROFILE)); break; } if (lst == null) { return; } foreach (var v in lst) { lstProfileMods.Items.Add(v.Key); } CheckModCount(); label2.Text = @"Active Mods: " + lstProfileMods.Items.Count; // MsgBx.Msg("Profile Link Created", "Linker"); }
/// <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()); }
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> /// Loads the tree. /// </summary> /// <param name="path">The path.</param> public void LoadTree(string path = null) { var reg = new AtsRegWork(true); tree.Nodes.Clear(); tree.ImageList = imageList1; var dir = reg.Read(RegKeys.CURRENT_EXTRACTED_FOLDER_PATH); if (path != null) { dir = path; } if (dir.IsNullOrEmpty() && path.IsNullOrEmpty()) { return; } var stack = new Stack <TreeNode>(); var rootDirectory = new DirectoryInfo(dir); var node = new TreeNode(rootDirectory.FullName) { Tag = rootDirectory, ImageIndex = 4 }; stack.Push(node); while (stack.Count > 0) { var currentNode = stack.Pop(); var directoryInfo = (DirectoryInfo)currentNode.Tag; foreach ( var childDirectoryNode in directoryInfo.EnumerateDirectories() .Select(directory => new TreeNode(directory.Name) { Tag = directory, ImageIndex = 0 })) { if (childDirectoryNode.Text == @"mods" || childDirectoryNode.Text == @"music" || childDirectoryNode.Text == @"pdlc" || childDirectoryNode.Text == @"pending_downloads" || childDirectoryNode.Text == @"savegameBackup" || childDirectoryNode.Text == @"shader_cache" || childDirectoryNode.Text == @"screenshots" || childDirectoryNode.Text == @"vehicleSort") { continue; } currentNode.Nodes.Add(childDirectoryNode); stack.Push(childDirectoryNode); } foreach (var file in directoryInfo.GetFiles()) { var ext = file.Extension; switch (ext) { case ".scs": currentNode.Nodes.Add(new TreeNode(file.Name, 9, 9)); break; case ".xml": currentNode.Nodes.Add(new TreeNode(file.Name, 6, 6)); break; case ".tobj": currentNode.Nodes.Add(new TreeNode(file.Name, 3, 3)); break; case ".dds": currentNode.Nodes.Add(new TreeNode(file.Name, 7, 7)); break; case ".jpg": currentNode.Nodes.Add(new TreeNode(file.Name, 7, 7)); break; case ".png": currentNode.Nodes.Add(new TreeNode(file.Name, 7, 7)); break; case ".bmp": currentNode.Nodes.Add(new TreeNode(file.Name, 7, 7)); break; case ".mat": currentNode.Nodes.Add(new TreeNode(file.Name, 10, 10)); break; case ".sii": currentNode.Nodes.Add(new TreeNode(file.Name, 13, 13)); break; case ".zip": currentNode.Nodes.Add(new TreeNode(file.Name, 8, 8)); break; case ".gdm": case ".grle": case "": case ".dat": case ".gmss": case ".cache": break; case ".pmc": case ".pmd": case ".pmg": case ".pma": currentNode.Nodes.Add(new TreeNode(file.Name, 5, 5)); break; case ".ogg": currentNode.Nodes.Add(new TreeNode(file.Name, 12, 12)); break; default: currentNode.Nodes.Add(new TreeNode(file.Name, 3, 3)); break; } } } tree.Nodes.Add(node); }
/// <summary> /// Loads the favorites. /// </summary> public static Dictionary <string, string> LoadFavorites(string mke) { var fs17 = new Fs17Loader(); var reg = new AtsRegWork(true); var gam = reg.Read(RegKeys.CURRENT_GAME); var cProf = reg.Read(RegKeys.CURRENT_PROFILE); if (gam.IsNullOrEmpty() || cProf.IsNullOrEmpty()) { MsgBx.Msg("You need to have a Profile / Game active", "Process Error"); return(null); } var dic = new Dictionary <string, string>() ; switch (mke) { case "Claas": dic = Serializer.DeserializeDictionary(reg.Read(Fs17RegKeys.FS17_GROUPS) + @"\claas.xml"); break; case "Krone": dic = Serializer.DeserializeDictionary(reg.Read(Fs17RegKeys.FS17_GROUPS) + @"\krone.xml"); break; case "NewHolland": dic = Serializer.DeserializeDictionary(reg.Read(Fs17RegKeys.FS17_GROUPS) + @"\newholland.xml"); break; case "JohnDeere": dic = Serializer.DeserializeDictionary(reg.Read(Fs17RegKeys.FS17_GROUPS) + @"\johndeere.xml"); break; case "MasseyFerguson": dic = Serializer.DeserializeDictionary(reg.Read(Fs17RegKeys.FS17_GROUPS) + @"\masseyferguson.xml"); break; case "Fendt": dic = Serializer.DeserializeDictionary(reg.Read(Fs17RegKeys.FS17_GROUPS) + @"\fendt.xml"); break; case "Case": dic = Serializer.DeserializeDictionary(reg.Read(Fs17RegKeys.FS17_GROUPS) + @"\case.xml"); break; case "Plows": dic = Serializer.DeserializeDictionary(reg.Read(Fs17RegKeys.FS17_GROUPS) + @"\plows.xml"); break; case "Cultivators": dic = Serializer.DeserializeDictionary(reg.Read(Fs17RegKeys.FS17_GROUPS) + @"\cultivators.xml"); break; case "Placeables": dic = Serializer.DeserializeDictionary(reg.Read(Fs17RegKeys.FS17_GROUPS) + @"\placeables.xml"); break; case "Specials": dic = Serializer.DeserializeDictionary(reg.Read(Fs17RegKeys.FS17_GROUPS) + @"\specials.xml"); break; case "TractorsOther": dic = Serializer.DeserializeDictionary(reg.Read(Fs17RegKeys.FS17_GROUPS) + @"\tractorsOther.xml"); break; case "Balers": dic = Serializer.DeserializeDictionary(reg.Read(Fs17RegKeys.FS17_GROUPS) + @"\balers.xml"); break; case "Trailers": dic = Serializer.DeserializeDictionary(reg.Read(Fs17RegKeys.FS17_GROUPS) + @"\trailers.xml"); break; case "Tools": dic = Serializer.DeserializeDictionary(reg.Read(Fs17RegKeys.FS17_GROUPS) + @"\tools.xml"); break; } var lnkPth = reg.Read(Fs17RegKeys.FS17_PROFILES) + cProf + "\\"; foreach (var v in dic) { var tmp = lnkPth + v.Key; if (tmp.FileExists()) { continue; } var org = v.Value + v.Key; if (!org.FileExists()) { continue; } //CreateSymbolicLink(tmp, org, SymbolicLink.File); //SymLinks.CreateSymLink(tmp, org, 0); // FileCopyMove.FileCopy(org, tmp); CreateHardLink(tmp, org, IntPtr.Zero); } var lc = new ListCreator(); lc.CreateSortedLists(); var lst = fs17.LoadFs17ProfileMods(reg.Read(RegKeys.CURRENT_PROFILE)); return(lst); }
/// <summary> /// Sets the cheat values. /// </summary> public void SetCheatValues(string saveGame) { var reg = new AtsRegWork(true); var gam = reg.Read(RegKeys.CURRENT_GAME); switch (gam) { case "FS15": var pth = saveGame; if (!pth.FileExists()) { return; } var xmlFile = XDocument.Load(pth + "\\careerSavegame.xml"); var query = from c in xmlFile.Elements("careerSavegame") select c; foreach (var element in query) { var xAttribute = element.Attribute("money"); if (xAttribute != null) { xAttribute.Value = MONEY; } var attribute = element.Attribute("isPlantWitheringEnabled"); if (attribute != null) { attribute.Value = WITHER; } } xmlFile.Save(pth + "\\careerSavegame.xml"); MsgBx.Msg("Money / Wither Cheat Applied to " + saveGame.GetLastFolderName(), "Cheat"); break; case "FS17": var xdoc = new XmlDocument(); xdoc.Load(saveGame + "\\careerSavegame.xml"); var nodes = xdoc.SelectNodes("careerSavegame/statistics/money"); if (nodes == null) { return; } foreach (XmlNode node in nodes) { if (node.Name != "money") { continue; } var amt = node.InnerText; var cash = Convert.ToInt32(amt); var done = cash + Convert.ToInt32(MONEY); node.InnerText = done.ToString(); break; } xdoc.Save(saveGame + "\\careerSavegame.xml"); MsgBx.Msg("Money Cheat Applied to " + saveGame.GetLastFolderName(), "Money Cheat"); break; } }
/// <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); }
public void OrganizeMaps() { var mapLst = new List <string> { "map", "Map" }; var reg = new AtsRegWork(true); var gam = reg.Read(RegKeys.CURRENT_GAME); if (gam.IsNullOrEmpty()) { MsgBx.Msg("Mod Sorting is Game specific, you need to choose a game", "Game Error"); return; } SetSearchLists(); string tmp; IEnumerable <string> lst; switch (gam) { case "ATS": tmp = reg.Read(AtsRegKeys.ATS_REPO); lst = GetFilesFolders.GetFiles(tmp, "*.scs"); if (lst.IsNull()) { return; } foreach (var v in lst) { foreach (var t in _srchLstTs) { if (!v.Contains(t, StringComparison.OrdinalIgnoreCase)) { continue; } FolderCreator.CreatePublicFolders(reg.Read(AtsRegKeys.ATS_GROUPS) + t); FileCopyMove.FileCopy(v, reg.Read(AtsRegKeys.ATS_GROUPS) + t + "\\" + v.GetFileName(), true); } } break; case "ETS": var ets = new EtsRegWork(true); tmp = ets.Read(EtsRegKeys.ETS_REPO); lst = GetFilesFolders.GetFiles(tmp, "*.scs"); if (lst.IsNull()) { return; } foreach (var v in lst) { foreach (var t in _srchLstTs) { if (!v.Contains(t, StringComparison.OrdinalIgnoreCase)) { continue; } FolderCreator.CreatePublicFolders(ets.Read(EtsRegKeys.ETS_GROUPS) + t); FileCopyMove.FileCopy(v, ets.Read(EtsRegKeys.ETS_GROUPS) + t + "\\" + v.GetFileName(), true); } } break; case "FS15": var fs15 = new Fs15RegWork(true); tmp = fs15.Read(Fs15RegKeys.FS15_REPO); lst = GetFilesFolders.GetFiles(tmp, "*.zip"); if (lst.IsNull()) { return; } foreach (var v in lst) { foreach (var t in _srchLstFs) { if (!v.Contains(t, StringComparison.OrdinalIgnoreCase)) { continue; } FolderCreator.CreatePublicFolders(fs15.Read(Fs15RegKeys.FS15_GROUPS) + t); FileCopyMove.FileCopy(v, fs15.Read(Fs15RegKeys.FS15_GROUPS) + t + "\\" + v.GetFileName(), true); } } break; case "FS17": var fs17 = new Fs17RegWork(true); var bypass = new SortingBypass(); var byPassDat = bypass.GetBypassList(); tmp = fs17.Read(Fs17RegKeys.FS17_GROUPS); var fldLst = GetFilesFolders.GetFolders(tmp, "*.*"); var chkList = new List <string>(); var enu = fldLst.ToList(); foreach (var v in enu) { var chk = v.GetLastFolderName(); if (byPassDat.ContainsKey(chk)) { continue; } chkList.Add(v); } if (chkList.IsNull()) { return; } foreach (var v in chkList) { lst = GetFilesFolders.GetFiles(v + "\\", "*.zip"); foreach (var f in lst) { foreach (var t in mapLst) { if (!f.Contains(t, StringComparison.OrdinalIgnoreCase)) { continue; } var src = tmp + "\\" + "Map" + "\\" + f.GetFileName(); if (src.FileExists()) { continue; } FileCopyMove.FileCopy(f, src, true); } } } break; } var lstCreate = new ListCreator(); lstCreate.CreateSortedLists(); lstCreate.SortedFileListComplete(); MsgBx.Msg("Map Sorting Complete", "Map Sorter"); }
private static Dictionary <string, string> CreateLinks(IEnumerable <string> lst) { var reg = new AtsRegWork(true); var pf = new ProfileWorker(); var gam = reg.Read(RegKeys.CURRENT_GAME); var profile = reg.Read(RegKeys.CURRENT_PROFILE); var pth = string.Empty; var dic = new Dictionary <string, string>(); var linkPath = string.Empty; switch (gam) { case "ATS": pth = reg.Read(AtsRegKeys.ATS_PROFILES) + profile + "\\" + profile + ".xml"; linkPath = reg.Read(AtsRegKeys.ATS_GAME_MOD_FOLDER); break; case "ETS": pth = reg.Read(EtsRegKeys.ETS_PROFILES) + profile + "\\" + profile + ".xml"; linkPath = reg.Read(EtsRegKeys.ETS_GAME_MOD_FOLDER); break; case "FS15": pth = reg.Read(Fs15RegKeys.FS15_PROFILES) + profile + "\\" + profile + ".xml"; linkPath = reg.Read(Fs15RegKeys.FS15_PROFILES) + profile + "\\"; break; case "FS17": pth = reg.Read(Fs17RegKeys.FS17_PROFILES) + profile + "\\" + profile + ".xml"; linkPath = reg.Read(Fs17RegKeys.FS17_PROFILES) + profile + "\\"; break; } if (pth.FileExists()) { dic = Serializer.DeserializeDictionary(pth); foreach (var v in lst) { var file = v.GetFileName(); var pt = Path.GetDirectoryName(v) + "\\"; SymLinks.CreateSymLink(linkPath + file, v, 0); dic.Add(file, pt); } Serializer.SerializeDictionary(pth, dic); } else if (!pth.FileExists()) { foreach (var v in lst) { var file = v.GetFileName(); var pt = Path.GetDirectoryName(v) + "\\"; SymLinks.CreateSymLink(linkPath + file, v, 0); dic.Add(file, pt); } Serializer.SerializeDictionary(pth, dic); } pf.SetProfileActive(); return(dic); }
/// <summary> /// Makes the sorted list. /// </summary> public void SortedFileListComplete() { var dic = new Dictionary <string, string>(); var gi = new GameInfo(); var tmp = gi.GetGame(); if (tmp.IsNullOrEmpty()) { return; } IEnumerable <string> lst = null; var path = string.Empty; switch (tmp) { case "ATS": var atsP = new AtsRegWork(true); path = atsP.Read(AtsRegKeys.ATS_XML) + "sortedFileListComplete.xml"; FolderPath = atsP.Read(AtsRegKeys.ATS_GROUPS); lst = GetFilesFolders.GetFilesRecursive(FolderPath, "*.scs"); break; case "ETS": var etsP = new EtsRegWork(true); path = etsP.Read(EtsRegKeys.ETS_XML) + "sortedFileListComplete.xml"; FolderPath = etsP.Read(EtsRegKeys.ETS_GROUPS); lst = GetFilesFolders.GetFilesRecursive(FolderPath, "*.scs"); break; case "FS15": var fs15 = new Fs15RegWork(true); path = fs15.Read(Fs15RegKeys.FS15_XML) + "sortedFileListComplete.xml"; FolderPath = fs15.Read(Fs15RegKeys.FS15_GROUPS); lst = GetFilesFolders.GetFilesRecursive(FolderPath, "*.zip"); break; case "FS17": var fs17 = new Fs17RegWork(true); path = fs17.Read(Fs17RegKeys.FS17_XML) + "sortedFileListComplete.xml"; FolderPath = fs17.Read(Fs17RegKeys.FS17_GROUPS); lst = GetFilesFolders.GetFilesRecursive(FolderPath, "*.zip"); break; } if (lst.IsNull()) { return; } Debug.Assert(lst != null, nameof(lst) + " != null"); foreach (var v in lst) { var file = v.GetFileName(); var pth = Path.GetDirectoryName(v); if (dic.ContainsKey(file)) { continue; } dic.Add(file, pth + "\\"); } Serializer.SerializeDictionary(path, dic); MsgBx.Msg("List Creation Completed", "List Creator"); }
/// <summary> /// Browses the folders. /// </summary> /// <param name="fold">The fold.</param> public static void BrowseFolders(string fold) { var reg = new AtsRegWork(true); var gam = reg.Read(RegKeys.CURRENT_GAME); const string modList = "sortedFileListComplete.xml"; var pth = string.Empty; switch (fold) { case "repo": switch (gam) { case "ATS": pth = reg.Read(AtsRegKeys.ATS_REPO); break; case "ETS": pth = reg.Read(EtsRegKeys.ETS_REPO); break; case "FS15": pth = reg.Read(Fs15RegKeys.FS15_REPO); break; case "FS17": pth = reg.Read(Fs17RegKeys.FS17_REPO); break; } break; case "profiles": switch (gam) { case "ATS": pth = reg.Read(AtsRegKeys.ATS_PROFILES); break; case "ETS": pth = reg.Read(EtsRegKeys.ETS_PROFILES); break; case "FS15": pth = reg.Read(Fs15RegKeys.FS15_PROFILES); break; case "FS17": pth = reg.Read(Fs17RegKeys.FS17_PROFILES); break; } break; case "groups": switch (gam) { case "ATS": pth = reg.Read(AtsRegKeys.ATS_GROUPS); break; case "ETS": pth = reg.Read(AtsRegKeys.ATS_GROUPS); break; case "FS15": pth = reg.Read(Fs15RegKeys.FS15_GROUPS); break; case "FS17": pth = reg.Read(Fs17RegKeys.FS17_GROUPS); break; } break; case "work": switch (gam) { case "ATS": pth = reg.Read(AtsRegKeys.ATS_WORK); break; case "ETS": pth = reg.Read(EtsRegKeys.ETS_WORK); break; case "FS15": pth = reg.Read(Fs15RegKeys.FS15_WORK); break; case "FS17": pth = reg.Read(Fs17RegKeys.FS17_WORK); break; } break; case "list": switch (gam) { case "ATS": pth = reg.Read(AtsRegKeys.ATS_XML) + modList; break; case "ETS": pth = reg.Read(EtsRegKeys.ETS_XML) + modList; break; case "FS15": pth = reg.Read(Fs15RegKeys.FS15_XML) + modList; break; case "FS17": pth = reg.Read(Fs17RegKeys.FS17_XML) + modList; break; } break; case "fav": switch (gam) { case "FS17": pth = reg.Read(Fs17RegKeys.FS17_GROUPS) + "BypassSorting.xml"; break; } break; } Process.Start(pth); }
private static void DoCleanUp() { var reg = new AtsRegWork(true); var gam = reg.Read(RegKeys.CURRENT_GAME); string tmp; IEnumerable <string> lst; switch (gam) { case "ATS": tmp = reg.Read(AtsRegKeys.ATS_REPO); lst = GetFilesFolders.GetFiles(tmp, "*.scs"); FolderCreator.CreatePublicFolders(reg.Read(AtsRegKeys.ATS_GROUPS) + "misc"); foreach (var v in lst) { FileCopyMove.FileCopy(v, reg.Read(AtsRegKeys.ATS_GROUPS) + "misc" + "\\" + v.GetFileName(), true); } break; case "ETS": var ets = new EtsRegWork(true); tmp = ets.Read(EtsRegKeys.ETS_REPO); lst = GetFilesFolders.GetFiles(tmp, "*.scs"); FolderCreator.CreatePublicFolders(ets.Read(EtsRegKeys.ETS_GROUPS) + "misc"); foreach (var t in lst) { FileCopyMove.FileCopy(t, ets.Read(EtsRegKeys.ETS_GROUPS) + "misc" + "\\" + t.GetFileName(), true); } break; case "FS15": var fs15 = new Fs15RegWork(true); tmp = fs15.Read(Fs15RegKeys.FS15_REPO); lst = GetFilesFolders.GetFiles(tmp, "*.zip"); FolderCreator.CreatePublicFolders(fs15.Read(Fs15RegKeys.FS15_GROUPS) + "misc"); foreach (var v in lst) { FileCopyMove.FileCopy(v, fs15.Read(Fs15RegKeys.FS15_GROUPS) + "misc" + "\\" + v.GetFileName(), true); } break; case "FS17": var fs17 = new Fs17RegWork(true); tmp = fs17.Read(Fs17RegKeys.FS17_REPO); lst = GetFilesFolders.GetFiles(tmp, "*.zip"); FolderCreator.CreatePublicFolders(fs17.Read(Fs17RegKeys.FS17_GROUPS) + "misc"); foreach (var v in lst) { FileCopyMove.FileCopy(v, fs17.Read(Fs17RegKeys.FS17_GROUPS) + "misc" + "\\" + v.GetFileName(), true); } break; } var lstCreate = new ListCreator(); lstCreate.CreateSortedLists(); lstCreate.SortedFileListComplete(); MsgBx.Msg("Mod Sorting Complete", "Mod Sorter"); }
/// <summary> /// Creates the sorted lists. /// </summary> public void CreateSortedLists() { var gi = new GameInfo(); var tmp = gi.GetGame(); if (tmp.IsNullOrEmpty()) { return; } var src = string.Empty; var pth = string.Empty; var cProf = string.Empty; switch (tmp) { case "ATS": var atsp = new AtsRegWork(true); pth = atsp.Read(AtsRegKeys.ATS_GROUPS); src = "*.scs"; break; case "ETS": var etsp = new EtsRegWork(true); pth = etsp.Read(EtsRegKeys.ETS_GROUPS); src = "*.scs"; break; case "FS15": var fs15 = new Fs15RegWork(true); pth = fs15.Read(Fs15RegKeys.FS15_GROUPS); src = "*.zip"; break; case "FS17": var fs17 = new Fs17RegWork(true); pth = fs17.Read(Fs17RegKeys.FS17_GROUPS); cProf = fs17.Read(Fs17RegKeys.FS17_PROFILES); src = "*.zip"; break; } var foldList = GetFilesFolders.GetFolders(pth, "*.*"); var profList = GetFilesFolders.GetFolders(cProf, "*.*"); foreach (var v in foldList) { var lst = GetFilesFolders.GetFiles(v, src); var dic = new Dictionary <string, string>(); foreach (var t in lst) { if (CheckPath(t)) { continue; } var file = t.GetFileName(); var ph = Path.GetDirectoryName(t); if (dic.ContainsKey(file)) { continue; } dic.Add(file, ph + "\\"); } var nam = v.GetLastFolderName(); Serializer.SerializeDictionary(v + "\\" + nam + ".xml", dic); } foreach (var v in profList) { var lst = GetFilesFolders.GetFiles(v, src); var dic = new Dictionary <string, string>(); foreach (var t in lst) { if (CheckPath(t)) { continue; } var file = t.GetFileName(); var ph = Path.GetDirectoryName(t); if (dic.ContainsKey(file)) { continue; } dic.Add(file, ph + "\\"); } var nam = v.GetLastFolderName(); Serializer.SerializeDictionary(v + "\\" + nam + ".xml", dic); } }
/// <summary> /// Sorts the mods. /// </summary> public void SortMods() { SetSearchLists(); var reg = new AtsRegWork(true); var gam = reg.Read(RegKeys.CURRENT_GAME); if (gam.IsNullOrEmpty()) { MsgBx.Msg("Mod Sorting is Game specific, you need to choose a game", "Game Error"); return; } string tmp; IEnumerable <string> lst; switch (gam) { case "ATS": tmp = reg.Read(AtsRegKeys.ATS_REPO); lst = GetFilesFolders.GetFiles(tmp, "*.scs"); if (lst.IsNull()) { return; } foreach (var v in lst) { foreach (var t in _srchLstTs) { if (!v.Contains(t, StringComparison.OrdinalIgnoreCase)) { continue; } FolderCreator.CreatePublicFolders(reg.Read(AtsRegKeys.ATS_GROUPS) + t); FileCopyMove.FileCopy(v, reg.Read(AtsRegKeys.ATS_GROUPS) + t + "\\" + v.GetFileName(), true); } } break; case "ETS": var ets = new EtsRegWork(true); tmp = ets.Read(EtsRegKeys.ETS_REPO); lst = GetFilesFolders.GetFiles(tmp, "*.scs"); if (lst.IsNull()) { return; } foreach (var v in lst) { foreach (var t in _srchLstTs) { if (!v.Contains(t, StringComparison.OrdinalIgnoreCase)) { continue; } FolderCreator.CreatePublicFolders(ets.Read(EtsRegKeys.ETS_GROUPS) + t); FileCopyMove.FileCopy(v, ets.Read(EtsRegKeys.ETS_GROUPS) + t + "\\" + v.GetFileName(), true); } } break; case "FS15": var fs15 = new Fs15RegWork(true); tmp = fs15.Read(Fs15RegKeys.FS15_REPO); lst = GetFilesFolders.GetFiles(tmp, "*.zip"); if (lst.IsNull()) { return; } foreach (var v in lst) { foreach (var t in _srchLstFs) { if (!v.Contains(t, StringComparison.OrdinalIgnoreCase)) { continue; } FolderCreator.CreatePublicFolders(fs15.Read(Fs15RegKeys.FS15_GROUPS) + t); FileCopyMove.FileCopy(v, fs15.Read(Fs15RegKeys.FS15_GROUPS) + t + "\\" + v.GetFileName(), true); } } break; case "FS17": var fs17 = new Fs17RegWork(true); tmp = fs17.Read(Fs17RegKeys.FS17_REPO); lst = GetFilesFolders.GetFiles(tmp, "*.zip"); if (lst.IsNull()) { return; } foreach (var v in lst) { foreach (var t in _srchLstFs) { if (!v.Contains(t, StringComparison.OrdinalIgnoreCase)) { continue; } FolderCreator.CreatePublicFolders(fs17.Read(Fs17RegKeys.FS17_GROUPS) + t); FileCopyMove.FileCopy(v, fs17.Read(Fs17RegKeys.FS17_GROUPS) + t + "\\" + v.GetFileName(), true); } } break; } DoCleanUp(); }