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;
            }
        }
Esempio n. 3
0
        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;
            }
        }
Esempio n. 4
0
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            var gi  = new GameInfo();
            var reg = new AtsRegWork(true);

            reg.Write(RegKeys.CURRENT_PROFILE, "");
            gi.SetGame("");
        }
Esempio n. 5
0
        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();
        }
Esempio n. 6
0
        /// <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");
        }
Esempio n. 7
0
        /// <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);
        }
Esempio n. 8
0
        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");
        }
Esempio n. 9
0
        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;
        }
Esempio n. 10
0
        /// <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);
        }
Esempio n. 11
0
        /// <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");
        }