Ejemplo n.º 1
0
        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}");
            }
        }
Ejemplo n.º 2
0
        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);
                    }
                }
            }
        }
Ejemplo n.º 3
0
        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());
        }
Ejemplo n.º 4
0
        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());
        }
Ejemplo n.º 5
0
        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;
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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");
            }
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        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));
                }
            }
        }
Ejemplo n.º 10
0
        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);
Ejemplo n.º 13
0
 internal ProjectResourceTags(ProjectResourceImporter projectResourceImporter)
 {
     importerTags = projectResourceImporter.ImporterTags.ToList();
 }
Ejemplo n.º 14
0
 internal ProjectResourceTags(ProjectResourceImporter projectResourceImporter)
 {
     tags = projectResourceImporter.Tags;
 }