private MapMetaData GenerateMetaData(List <string> filesCopied)
        {
            MapMetaData metaData = new MapMetaData()
            {
                AssetName          = AssetToImport != null ? AssetToImport.ID : "",
                CustomName         = "",
                IsHiddenByUser     = false,
                FilePaths          = filesCopied,
                OriginalImportPath = !IsZipFileImport ? PathToFileOrFolder : ""
            };

            // find valid map files
            foreach (string filePath in filesCopied.Where(f => f.EndsWith(".umap")))
            {
                if (MapListItem.HasGameMode(filePath))
                {
                    MapListItem map = new MapListItem(filePath);
                    metaData.MapFileDirectory = map.DirectoryPath;
                    metaData.MapName          = map.MapName;
                    break;
                }
            }

            if (metaData.AssetName == "")
            {
                metaData.AssetName = metaData.MapName;
            }

            if (AssetToImport != null && File.Exists(AssetToImport?.PathToDownloadedImage))
            {
                metaData.PathToImage = AssetToImport.PathToDownloadedImage;
            }
            else if (filesCopied.Any(f => f.Contains("preview.")))
            {
                // check files copied for a preview image
                metaData.PathToImage = filesCopied.Where(f => f.Contains("preview.")).FirstOrDefault();
            }

            return(metaData);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Recursively searches folders for a .umap file that has the valid Session gamemode and returns the name of it
        /// </summary>
        public static string GetMapFileNameFromFolder(string folder)
        {
            foreach (string fileName in Directory.GetFiles(folder))
            {
                if (fileName.EndsWith(".umap") && MapListItem.HasGameMode(fileName))
                {
                    FileInfo fileInfo = new FileInfo(fileName);
                    return(fileInfo.Name);
                }
            }

            foreach (string dir in Directory.GetDirectories(folder))
            {
                string mapName = GetMapFileNameFromFolder(dir);
                if (mapName != "")
                {
                    return(mapName);
                }
            }

            return("");
        }
        public void Test_HasGameMode_InvalidMap_ReturnsFalse()
        {
            string pathToInvalidMap = Path.Combine(TestPaths.ToTestFilesFolder, "Mock_Map_Files", "testmap_invalid.umap");

            Assert.IsFalse(MapListItem.HasGameMode(pathToInvalidMap));
        }