Ejemplo n.º 1
0
        public static bool Copy(string sourceFolder, string destinationFolder, bool copySubFolders)
        {
            if (!Directory.Exists(sourceFolder))
            {
                return(false);
            }

            var flag = false;

            foreach (var sourceFile in Directory.GetFiles(sourceFolder, "*.*", copySubFolders ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly))
            {
                var modFile     = IOUtils.NormalizePath(sourceFile.Replace(sourceFolder, destinationFolder));
                var modFilePath = Path.GetDirectoryName(modFile);

                if (!Directory.Exists(modFilePath))
                {
                    Directory.CreateDirectory(modFilePath);
                }

                if (Path.GetFileNameWithoutExtension(sourceFile).Contains("PrimalGameData"))
                {
                    flag = true;
                }

                Copy(sourceFile, modFilePath);
            }

            return(flag);
        }
Ejemplo n.º 2
0
        public static string GetSteamWorkshopFile(bool isSotF)
        {
            if (isSotF)
            {
                return(IOUtils.NormalizePath(Path.Combine(Config.Default.DataDir, Config.Default.SteamCmdDir, Config.Default.SteamWorkshopFolderRelativePath, Config.Default.ArkSteamWorkshopFile_SotF)));
            }

            return(IOUtils.NormalizePath(Path.Combine(Config.Default.DataDir, Config.Default.SteamCmdDir, Config.Default.SteamWorkshopFolderRelativePath, Config.Default.ArkSteamWorkshopFile)));
        }
Ejemplo n.º 3
0
        public static string GetSteamManifestFile(string installDirectory, bool isSotF)
        {
            if (isSotF)
            {
                return(IOUtils.NormalizePath(Path.Combine(installDirectory, Config.Default.SteamManifestFolderRelativePath, Config.Default.ArkSteamManifestFile_SotF)));
            }

            return(IOUtils.NormalizePath(Path.Combine(installDirectory, Config.Default.SteamManifestFolderRelativePath, Config.Default.ArkSteamManifestFile)));
        }
Ejemplo n.º 4
0
        public static string GetModCachePath(string modId, bool isSotF)
        {
            if (isSotF)
            {
                return(IOUtils.NormalizePath(Path.Combine(Config.Default.DataDir, Config.Default.SteamCmdDir, Config.Default.ArkSteamWorkshopFolderRelativePath_SotF, modId)));
            }

            return(IOUtils.NormalizePath(Path.Combine(Config.Default.DataDir, Config.Default.SteamCmdDir, Config.Default.ArkSteamWorkshopFolderRelativePath, modId)));
        }
 public static string GetLogFolder() => IOUtils.NormalizePath(Path.Combine(Config.Default.DataDir, Config.Default.LogsDir));
 public static string GetSteamCmdFile() => IOUtils.NormalizePath(Path.Combine(Config.Default.DataDir, Config.Default.SteamCmdDir, Config.Default.SteamCmdExe));
Ejemplo n.º 7
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 = IOUtils.NormalizePath(Path.Combine(modSourceFolder, "mod.info"));
            var list     = new List <string>();

            ParseBaseInformation(fileName, list);

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

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

            if (ParseMetaInformation(fileName, metaInformation))
            {
                modSourceFolder = IOUtils.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 = IOUtils.NormalizePath(Path.Combine(sourceFolder, Config.Default.LastUpdatedTimeFile));
            if (File.Exists(fileName))
            {
                progressCallback?.Invoke(0, "Copying mod version file.");

                var tempFile = IOUtils.NormalizePath(fileName.Replace(sourceFolder, destinationFolder));
                File.Copy(fileName, tempFile, true);
            }
        }
Ejemplo n.º 8
0
 public static string GetModPath(string installDirectory, string modId) => IOUtils.NormalizePath(Path.Combine(installDirectory, Config.Default.ServerModsRelativePath, modId));
Ejemplo n.º 9
0
 public static string GetLatestModTimeFile(string installDirectory, string modId) => IOUtils.NormalizePath(Path.Combine(installDirectory, Config.Default.ServerModsRelativePath, modId, Config.Default.LastUpdatedTimeFile));
Ejemplo n.º 10
0
 public static string GetLatestModCacheTimeFile(string modId, bool isSotF) => IOUtils.NormalizePath(Path.Combine(ModUtils.GetModCachePath(modId, isSotF), Config.Default.LastUpdatedTimeFile));