public static Type GetFileType(LotdFileType fileType) { Type type; fileTypeLookup.TryGetValue(fileType, out type); return(type); }
internal static FileData CreateFileData(LotdFileType fileType) { Type type = GetFileType(fileType); if (type == null) { type = typeof(RawFileData); } return(Activator.CreateInstance(type) as FileData); }
public T LoadLocalizedFile <T>() where T : FileData, new() { LotdFileType targetFileType = LotdFile.GetFileType(typeof(T)); T result = new T(); if (!result.IsLocalized) { throw new InvalidOperationException("Attempted to load a file with localization which has none"); } List <LotdFile> files = Root.GetAllFiles(); foreach (LotdFile file in files) { if (file.FileType == LotdFileType.Zib) { ZibData zibData = file.LoadData <ZibData>(); foreach (ZibFile zibFile in zibData.Files.Values) { if (zibFile.FileType == targetFileType) { result.File = null; result.ZibFile = zibFile; result.Load(); } } } else if (file.FileType == targetFileType) { result.File = file; result.ZibFile = null; result.Load(); } } return(result); }
public List <T> LoadFiles <T>() where T : FileData { LotdFileType targetFileType = LotdFile.GetFileType(typeof(T)); List <T> result = new List <T>(); List <LotdFile> files = Root.GetAllFiles(); foreach (LotdFile file in files) { if (file.FileType == LotdFileType.Zib) { ZibData zibData = file.LoadData <ZibData>(); foreach (ZibFile zibFile in zibData.Files.Values) { if (zibFile.FileType == targetFileType) { T data = zibFile.LoadData <T>(); if (data != null) { result.Add(data); } } } } else if (file.FileType == targetFileType) { T data = file.LoadData <T>(); if (data != null) { result.Add(data); } } } return(result); }
private static void AddFileType(LotdFileType fileType, Type type) { fileTypeLookup.Add(fileType, type); fileTypeLookupReverse.Add(type, fileType); }