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); }
/// <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)); }