public static AddAllMatchingFiles ( IList |
||
list | IList |
|
fileMask | string | |
return | void |
/// <summary> /// Creates a list of game resources as a list of tuples. /// </summary> /// <returns> /// - first tuple's element is resource's name, /// - second is real file path /// </returns> private Tuple <string, string>[] ConstructFileListForDataFile(CompileMessages errors) { List <string> files = new List <string>(); Environment.CurrentDirectory = Factory.AGSEditor.CurrentGame.DirectoryPath; Utilities.AddAllMatchingFiles(files, "preload.pcx"); Utilities.AddAllMatchingFiles(files, AGSEditor.SPRITE_INDEX_FILE_NAME); foreach (AudioClip clip in Factory.AGSEditor.CurrentGame.RootAudioClipFolder.GetAllAudioClipsFromAllSubFolders()) { if (clip.BundlingType == AudioFileBundlingType.InGameEXE) { files.Add(clip.CacheFileName); } } Utilities.AddAllMatchingFiles(files, "flic*.fl?"); Utilities.AddAllMatchingFiles(files, AGSEditor.COMPILED_DTA_FILE_NAME); Utilities.AddAllMatchingFiles(files, "agsfnt*.ttf"); Utilities.AddAllMatchingFiles(files, "agsfnt*.wfn"); Utilities.AddAllMatchingFiles(files, AGSEditor.SPRITE_FILE_NAME); foreach (UnloadedRoom room in Factory.AGSEditor.CurrentGame.RootRoomFolder.AllItemsFlat) { if (File.Exists(room.FileName)) { files.Add(room.FileName); } } Utilities.AddAllMatchingFiles(files, "*.ogv"); // Regular files are registered under their filenames (w/o dir) return(files .Select(f => new Tuple <string, string>(Path.GetFileName(f), f)) // Also add custom user files (if any) .Concat(ConstructCustomFileListForDataFile(errors)) .ToArray()); }
private string[] ConstructFileListForDataFile() { List <string> files = new List <string>(); Environment.CurrentDirectory = Factory.AGSEditor.CurrentGame.DirectoryPath; Utilities.AddAllMatchingFiles(files, "preload.pcx"); Utilities.AddAllMatchingFiles(files, AGSEditor.SPRITE_INDEX_FILE_NAME); foreach (AudioClip clip in Factory.AGSEditor.CurrentGame.RootAudioClipFolder.GetAllAudioClipsFromAllSubFolders()) { if (clip.BundlingType == AudioFileBundlingType.InGameEXE) { files.Add(clip.CacheFileName); } } Utilities.AddAllMatchingFiles(files, "flic*.fl?"); Utilities.AddAllMatchingFiles(files, AGSEditor.COMPILED_DTA_FILE_NAME); Utilities.AddAllMatchingFiles(files, "agsfnt*.ttf"); Utilities.AddAllMatchingFiles(files, "agsfnt*.wfn"); Utilities.AddAllMatchingFiles(files, AGSEditor.SPRITE_FILE_NAME); foreach (UnloadedRoom room in Factory.AGSEditor.CurrentGame.RootRoomFolder.AllItemsFlat) { if (File.Exists(room.FileName)) { files.Add(room.FileName); } } Utilities.AddAllMatchingFiles(files, "*.ogv"); return(files.ToArray()); }
/// <summary> /// /// <summary> /// Creates a list of custom game resources as a list of tuples. /// </summary> /// <returns> /// - first tuple's element is resource's name, /// - second is real file path /// </returns> private Tuple <string, string>[] ConstructCustomFileListForDataFile(CompileMessages errors) { string userOpt = Factory.AGSEditor.CurrentGame.Settings.CustomDataDir; if (string.IsNullOrEmpty(userOpt)) { return(Enumerable.Empty <Tuple <string, string> >().ToArray()); } string curDir = Factory.AGSEditor.CurrentGame.DirectoryPath; string[] restrictedDirs = Factory.AGSEditor.RestrictedGameDirectories. Select(d => Path.Combine(curDir, d)).ToArray(); List <string> userFiles = new List <string>(); string[] user_dirs = userOpt.Split(','); Array.Sort(user_dirs); List <string> usedCustomDirs = new List <string>(); foreach (var dir in user_dirs) { // don't allow absolute paths if (Path.IsPathRooted(dir)) { errors.Add(new CompileWarning( string.Format("Cannot use absolute path as a custom data source: {0}", dir))); continue; } // don't allow paths with "." or ".." in them if (Utilities.DoesPathContainDotDirs(dir)) { errors.Add(new CompileWarning( string.Format("Cannot use path containing '.' or '..' as a custom data source: {0}", dir))); continue; } // don't allow paths that match or inside restricted folders, // or folders that were already used to make a list of assets string testDir = Path.Combine(curDir, dir); if (Utilities.PathIsSameOrNestedAmong(testDir, restrictedDirs)) { errors.Add(new CompileWarning( string.Format("Cannot use restricted location as a custom data source: {0}", dir))); continue; } if (Utilities.PathIsSameOrNestedAmong(testDir, usedCustomDirs)) { continue; // don't report, simply skip } Utilities.AddAllMatchingFiles(userFiles, dir, "*", true, SearchOption.AllDirectories); usedCustomDirs.Add(Path.Combine(curDir, dir)); } // User files are registered under their relative paths return(userFiles.Select(f => new Tuple <string, string>(f, f)).ToArray()); }
private void ConstructBasicFileListForTemplate(List <string> filesToInclude, List <string> filesToDeleteAfterwards) { Utilities.AddAllMatchingFiles(filesToInclude, "*.ico"); Utilities.AddAllMatchingFiles(filesToInclude, AGSEditor.GAME_FILE_NAME); Utilities.AddAllMatchingFiles(filesToInclude, AGSEditor.SPRITE_FILE_NAME); Utilities.AddAllMatchingFiles(filesToInclude, "preload.pcx"); Utilities.AddAllMatchingFiles(filesToInclude, AudioClip.AUDIO_CACHE_DIRECTORY + @"\*.*"); Utilities.AddAllMatchingFiles(filesToInclude, @"Speech\*.*"); Utilities.AddAllMatchingFiles(filesToInclude, "flic*.fl?"); Utilities.AddAllMatchingFiles(filesToInclude, "agsfnt*.ttf"); Utilities.AddAllMatchingFiles(filesToInclude, "agsfnt*.wfn"); Utilities.AddAllMatchingFiles(filesToInclude, "*.crm"); Utilities.AddAllMatchingFiles(filesToInclude, "*.asc"); Utilities.AddAllMatchingFiles(filesToInclude, "*.ash"); Utilities.AddAllMatchingFiles(filesToInclude, "*.txt"); Utilities.AddAllMatchingFiles(filesToInclude, "*.trs"); Utilities.AddAllMatchingFiles(filesToInclude, "*.pdf"); Utilities.AddAllMatchingFiles(filesToInclude, "*.ogv"); if (GetFilesForInclusionInTemplate != null) { List <string> extraFiles = new List <string>(); GetFilesForInclusionInTemplate(extraFiles); foreach (string fullFileName in extraFiles) { string baseFileName = Path.GetFileName(fullFileName); if (Path.GetDirectoryName(fullFileName).ToLower() != Directory.GetCurrentDirectory().ToLower()) { File.Copy(fullFileName, baseFileName, true); filesToDeleteAfterwards.Add(baseFileName); } filesToInclude.Add(baseFileName); } } }