public override void ProcessImport(ProjectResourceImporter projectResource) { string metaPath = $"{projectResource.ArchiveEntry.FullName}{options.MetaFileSuffix}"; var metaFile = new FileInfo(metaPath); if (metaFile.Exists) { JsonMetaFileModel metaFileModel; var serializer = new JsonSerializer(); using (var file = metaFile.OpenText()) using (var reader = new JsonTextReader(file)) { metaFileModel = serializer.Deserialize <JsonMetaFileModel>(reader); } if (metaFileModel.Tags != null) { foreach (string tag in metaFileModel.Tags) { projectResource.ImporterTags.Add(tag); } } } else if (!options.IsMetaFilesOptional) { Console.WriteLine($"Missing meta file for {projectResource.ArchiveEntry.FullName}"); } }
public override void ProcessImport(ProjectResourceImporter importer) { if (importer.ArchiveEntry.FullName.Contains("buildings")) { importer.ImporterTags.Add("type-building"); var loaded = Load <BuildingTemplate>(importer); importer.Dependencies.Register(loaded.PackIdentifier); if (loaded.Recipe != null) { var alreadyRegistered = new List <string>(); foreach (string resource in loaded.Recipe) { if (string.IsNullOrEmpty(resource)) { continue; } if (!alreadyRegistered.Contains(resource)) { importer.Dependencies.Register(resource); alreadyRegistered.Add(resource); } } } } else if (importer.ArchiveEntry.FullName.Contains("resources")) { importer.ImporterTags.Add("type-resource"); } else if (importer.ArchiveEntry.FullName.Contains("building-packs")) { importer.ImporterTags.Add("type-buildingpack"); } else if (importer.ArchiveEntry.FullName.Contains("gamerules")) { importer.ImporterTags.Add("type-gamerules"); var loaded = Load <GameRulesTemplate>(importer); var alreadyRegistered = new List <string>(); foreach (string resource in loaded.SharedCards.Concat(loaded.PlayerCards)) { if (string.IsNullOrEmpty(resource)) { continue; } if (!alreadyRegistered.Contains(resource)) { importer.Dependencies.Register(resource); alreadyRegistered.Add(resource); } } } }
public ProjectResource ImportResource(ProjectExplorer projectExplorer, FileInfo fileInfo, string projectKey) { var resourceImporter = new ProjectResourceImporter(projectExplorer, fileInfo, projectKey); foreach (var importer in ImportProcessors) { importer.ProcessImport(resourceImporter); } return(resourceImporter.Import()); }
public ProjectResource ImportResource(ProjectExplorer projectExplorer, ProjectDirectory directory, IArchiveFile archiveEntry, string projectKey) { var resourceImporter = new ProjectResourceImporter(projectExplorer, directory, archiveEntry, projectKey); foreach (var importer in processors) { importer.ProcessImport(resourceImporter); } return(resourceImporter.Import()); }
internal ProjectResource(ProjectResourceImporter projectResourceImporter) { Tags = new ProjectResourceTags(projectResourceImporter); FileInfo = projectResourceImporter.FileInfo; Explorer = projectResourceImporter.ProjectExplorer; FullName = projectResourceImporter.ProjectKey; Name = FileInfo.Name; Extension = FileInfo.Extension; UncompressedSize = FileInfo.Length; }
internal ProjectResource(ProjectResourceImporter projectResourceImporter) { Entry = projectResourceImporter.FileInfo; Name = Entry.Name; UncompressedSize = Entry.Length; CompressedSize = UncompressedSize; Explorer = projectResourceImporter.ProjectExplorer; FullName = projectResourceImporter.ProjectKey; Tags = new ProjectResourceTags(projectResourceImporter); }
public override void ProcessImport(ProjectResourceImporter projectResource) { // TODO: Should be changed to use directory APIs. if (projectResource.FileInfo.FullName.Contains("buildings")) { projectResource.Tags.Add("type-building"); } else if (projectResource.FileInfo.FullName.Contains("resources")) { projectResource.Tags.Add("type-resource"); } }
private static TModel Load <TModel>(ProjectResourceImporter importer) where TModel : IResourceModel { var serializer = new JsonSerializer(); using var file = importer.ArchiveEntry.OpenRead(); using var sr = new StreamReader(file); using var reader = new JsonTextReader(sr); var model = serializer.Deserialize <TModel>(reader); model.Identifier = importer.ProjectKey; return(model); }
public override void ProcessImport(ProjectResourceImporter projectResource) { if (projectResource.ArchiveEntry.Extension == ".png") { using var stream = projectResource.ArchiveEntry.OpenRead(); using var bitmap = new Bitmap(stream); Console.WriteLine(projectResource.ArchiveEntry.Name); foreach (var propItem in bitmap.PropertyItems) { string sTag = ""; switch (propItem.Type) { case 1: sTag = Encoding.Unicode.GetString(propItem.Value); break; case 2: sTag = Encoding.ASCII.GetString(propItem.Value); break; case 3: sTag = BitConverter.ToUInt16(propItem.Value, 0).ToString(); break; case 4: sTag = BitConverter.ToUInt32(propItem.Value, 0).ToString(); break; } string sItem = sTag.Replace("\0", string.Empty); string name = "0x" + propItem.Id.ToString("x"); Console.WriteLine(name + ", " + propItem.Type + ", " + sItem); } foreach (var property in bitmap.PropertyItems) { // projectResource.ImporterTags.Add(Encoding.UTF8.GetString(property.Value)); } } }
internal ProjectResource(ProjectDirectory directory, ProjectResourceImporter projectResourceImporter) { Explorer = projectResourceImporter.ProjectExplorer; Content = new ProjectResourceContent(projectResourceImporter.ArchiveEntry); Directory = directory; Tags = new ProjectResourceTags(projectResourceImporter); FullName = projectResourceImporter.ProjectKey; Name = projectResourceImporter.ArchiveEntry.Name; Extension = projectResourceImporter.ArchiveEntry.Extension; UncompressedSize = projectResourceImporter.ArchiveEntry.UncompressedSize; Dependencies = new ProjectResourceDependencies(Explorer); Dependants = new ProjectResourceDependencies(Explorer); foreach (var importerDependency in projectResourceImporter.Dependencies) { Dependencies.dependencies.Add( new ProjectResourceDependency(Explorer, importerDependency.Resource, importerDependency.Metadata)); } }
public override void ProcessImport(ProjectResourceImporter projectResource) { projectResource.Tags.Add("basic-tag"); }
public abstract void ProcessImport(ProjectResourceImporter importer);
internal ProjectResourceTags(ProjectResourceImporter projectResourceImporter) { importerTags = projectResourceImporter.ImporterTags.ToList(); }
internal ProjectResourceTags(ProjectResourceImporter projectResourceImporter) { tags = projectResourceImporter.Tags; }