34 std::filesystem::path project_root,
35 gsl::not_null<const Schema *> schema,
36 gsl::not_null<const ProviderMap *> provider_map,
37 gsl::not_null<const PngRgbaImageLoader *> png_rgba_loader,
38 gsl::not_null<const PngIndexedImageLoader *> png_indexed_loader,
39 gsl::not_null<const FilePaletteLoader *> palette_loader,
40 gsl::not_null<const AttributesCsvLoader *> attributes_csv_loader,
41 gsl::not_null<const AnimJsonParser *> anim_json_parser,
42 gsl::not_null<const AnimCodeParser *> anim_code_parser,
43 gsl::not_null<const ProjectTilesetMetadataProvider *> metadata_provider)
44 : project_root_{std::move(project_root)}, schema_{schema}, provider_map_{provider_map},
45 png_rgba_loader_{png_rgba_loader}, png_indexed_loader_{png_indexed_loader}, palette_loader_{palette_loader},
46 attributes_csv_loader_{attributes_csv_loader}, anim_json_parser_{anim_json_parser},
47 anim_code_parser_{anim_code_parser}, metadata_provider_{metadata_provider}
64 const std::string &anim_name,
66 const std::vector<std::pair<std::string, ArtifactKey>> &frame_keys)
const override;
82 const std::string &anim_name,
84 const std::optional<ArtifactKey> &key_frame_key,
85 const std::vector<std::pair<std::string, ArtifactKey>> &frame_keys)
const override;
91 const std::filesystem::path project_root_;
Parses C code to extract tileset animation parameters using callback chain discovery.
Parses and writes animation configuration JSON files (anim.json).
A type-safe wrapper for artifact keys.
A service that loads metatile attributes from a CSV file.
A result type that maintains a chainable sequence of errors for debugging and error reporting.
A service interface that loads a fixed-length Palette from a given file.
An image loader that reads PNG files to create an Image with an index pixel type.
An image loader that reads PNG files to create an Image with an Rgba32 pixel type.
Provides a filesystem-based implementation for TilesetArtifactReader.
ChainableResult< void > read_metatile_attributes_bin(Tileset &dest, const ArtifactKey &src_key) const override
ChainableResult< void > read_top_png(Tileset &dest, const ArtifactKey &src_key) const override
ProjectTilesetArtifactReader(std::filesystem::path project_root, gsl::not_null< const Schema * > schema, gsl::not_null< const ProviderMap * > provider_map, gsl::not_null< const PngRgbaImageLoader * > png_rgba_loader, gsl::not_null< const PngIndexedImageLoader * > png_indexed_loader, gsl::not_null< const FilePaletteLoader * > palette_loader, gsl::not_null< const AttributesCsvLoader * > attributes_csv_loader, gsl::not_null< const AnimJsonParser * > anim_json_parser, gsl::not_null< const AnimCodeParser * > anim_code_parser, gsl::not_null< const ProjectTilesetMetadataProvider * > metadata_provider)
ChainableResult< void > read_porymap_palette_n(Tileset &dest, const ArtifactKey &src_key, std::size_t index) const override
ChainableResult< void > read_attributes_csv(Tileset &dest, const ArtifactKey &src_key) const override
ChainableResult< void > read_middle_png(Tileset &dest, const ArtifactKey &src_key) const override
ChainableResult< void > read_porytiles_anim(Tileset &dest, const std::string &anim_name, const ArtifactKey ¶ms_key, const std::optional< ArtifactKey > &key_frame_key, const std::vector< std::pair< std::string, ArtifactKey > > &frame_keys) const override
ChainableResult< void > read_bottom_png(Tileset &dest, const ArtifactKey &src_key) const override
ChainableResult< void > read_porymap_anim(Tileset &dest, const std::string &anim_name, const ArtifactKey ¶ms_key, const std::vector< std::pair< std::string, ArtifactKey > > &frame_keys) const override
ChainableResult< void > read_porytiles_primary_anim_references(Tileset &dest, const ArtifactKey ¶ms_key) const override
ChainableResult< void > read_tiles_png(Tileset &dest, const ArtifactKey &src_key) const override
ChainableResult< void > read_metatiles_bin(Tileset &dest, const ArtifactKey &src_key) const override
ChainableResult< void > read_porytiles_palette_n(Tileset &dest, const ArtifactKey &src_key, std::size_t index) const override
A validated metatile attribute layout: an ordered set of non-overlapping fields.
Abstract interface for reading tileset artifacts from a backing store into a Tileset object.
A complete tileset containing both Porytiles and Porymap components.
std::map< std::string, std::unique_ptr< EnumMapProvider >, std::less<> > ProviderMap
Maps schema field names to the provider that names that field's values.