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