public MixedGameStructure(FileCollection collection, IEnumerable <string> pathes) : base(collection) { Dictionary <string, string> files = new Dictionary <string, string>(); Dictionary <string, string> assemblies = new Dictionary <string, string>(); HashSet <string> dataPathes = new HashSet <string>(); foreach (string path in pathes) { if (FileMultiStream.Exists(path)) { string name = FileMultiStream.GetFileName(path); files.Add(name, path); string directory = Path.GetDirectoryName(path); dataPathes.Add(directory); } else if (DirectoryUtils.Exists(path)) { DirectoryInfo directory = new DirectoryInfo(DirectoryUtils.ToLongPath(path)); CollectFromDirectory(directory, files, assemblies, dataPathes); } else { throw new Exception($"Neither file nor directory at '{path}' exists"); } } DataPathes = dataPathes.ToArray(); Files = files; Assemblies = assemblies; SetScriptingBackend(); Name = Files.First().Key; }
protected void CollectGameFiles(DirectoryInfo root, IDictionary <string, string> files) { string filePath = Path.Combine(root.FullName, GlobalGameManagerName); if (FileMultiStream.Exists(filePath)) { AddFile(files, GlobalGameManagerName, filePath); } else { filePath = Path.Combine(root.FullName, MainDataName); if (FileMultiStream.Exists(filePath)) { AddFile(files, MainDataName, filePath); } } foreach (FileInfo levelFile in root.EnumerateFiles()) { string levelName = FileMultiStream.GetFileName(levelFile.Name); if (s_levelName.IsMatch(levelName)) { AddFile(files, levelName, levelFile.FullName); } } }
public void Load(IEnumerable <string> pathes) { List <string> toProcess = new List <string>(); toProcess.AddRange(pathes); if (CheckPC(toProcess)) { } else if (CheckAndroid(toProcess)) { } CheckMixed(toProcess); if (PlatformStructure != null) { foreach (string filePath in PlatformStructure.FetchFiles()) { string fileName = FileMultiStream.GetFileName(filePath); if (m_knownFiles.Add(fileName)) { FileCollection.Load(filePath); } } } foreach (string filePath in MixedStructure.FetchFiles()) { string fileName = FileMultiStream.GetFileName(filePath); if (m_knownFiles.Add(fileName)) { FileCollection.Load(filePath); } } }
private void LoadFiles(IEnumerable <string> filePathes) { foreach (string filePath in filePathes) { string fileName = FileMultiStream.GetFileName(filePath); LoadFile(filePath, fileName); } }
private void AddFile(string path) { string name = FileMultiStream.GetFileName(path); m_files.Add(name, path); string directory = Path.GetDirectoryName(path); m_knownDirectories.Add(directory); }
private static void LoadFiles(AssetCollection collection, IEnumerable <string> filePathes) { List <string> processed = new List <string>(); foreach (string path in filePathes) { string filePath = FileMultiStream.GetFilePath(path); if (processed.Contains(filePath)) { continue; } string fileName = FileMultiStream.GetFileName(path); using (Stream stream = FileMultiStream.OpenRead(path)) { collection.Read(stream, filePath, fileName); } processed.Add(filePath); } }