Esempio n. 1
0
        public static void CopyMod(string sourceFolder, string destinationFolder, string modId, ProgressDelegate progressCallback)
        {
            if (string.IsNullOrWhiteSpace(sourceFolder) || !Directory.Exists(sourceFolder))
            {
                throw new DirectoryNotFoundException($"Source folder was not found.\r\n{sourceFolder}");
            }

            var modSourceFolder = sourceFolder;

            progressCallback?.Invoke(0, "Reading mod base information.");

            var fileName = Updater.NormalizePath(Path.Combine(modSourceFolder, "mod.info"));
            var list     = new List <string>();

            ParseBaseInformation(fileName, list);

            progressCallback?.Invoke(0, "Reading mod meta information.");

            fileName = Updater.NormalizePath(Path.Combine(modSourceFolder, "modmeta.info"));
            var metaInformation = new Dictionary <string, string>();

            if (ParseMetaInformation(fileName, metaInformation))
            {
                modSourceFolder = Updater.NormalizePath(Path.Combine(modSourceFolder, "WindowsNoEditor"));
            }

            var modFile = $"{destinationFolder}.mod";

            progressCallback?.Invoke(0, "Deleting existing mod files.");

            // delete the server mod folder and mod file.
            if (Directory.Exists(destinationFolder))
            {
                Directory.Delete(destinationFolder, true);
            }
            if (File.Exists(modFile))
            {
                File.Delete(modFile);
            }

            progressCallback?.Invoke(0, "Copying mod files.");

            // update the mod files from the cache.
            var flag = Copy(modSourceFolder, destinationFolder, true);

            if (metaInformation.Count == 0 && flag)
            {
                metaInformation["ModType"] = "1";
            }

            progressCallback?.Invoke(0, "Creating mod file.");

            // create the mod file.
            WriteModFile(modFile, modId, metaInformation, list);

            // copy the last updated file.
            fileName = Updater.NormalizePath(Path.Combine(sourceFolder, Config.Default.LastUpdatedTimeFile));
            if (File.Exists(fileName))
            {
                progressCallback?.Invoke(0, "Copying mod version file.");

                var tempFile = Updater.NormalizePath(fileName.Replace(sourceFolder, destinationFolder));
                File.Copy(fileName, tempFile, true);
            }
        }
Esempio n. 2
0
 public static string GetLatestModTimeFile(string installDirectory, string modId) => Updater.NormalizePath(Path.Combine(installDirectory, Config.Default.ServerModsRelativePath, modId, Config.Default.LastUpdatedTimeFile));
Esempio n. 3
0
 public static string GetModPath(string installDirectory, string modId) => Updater.NormalizePath(Path.Combine(installDirectory, Config.Default.ServerModsRelativePath, modId));
Esempio n. 4
0
 public static string GetLatestModCacheTimeFile(string modId, bool isSotF) => Updater.NormalizePath(Path.Combine(ModUtils.GetModCachePath(modId, isSotF), Config.Default.LastUpdatedTimeFile));