Porytiles
Loading...
Searching...
No Matches
project_tileset_artifact_reader.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <utility>
4
5#include "gsl/pointers"
19
20namespace porytiles {
21
32 public:
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}
48 {
49 }
50
51 // Porymap artifacts
52 [[nodiscard]] ChainableResult<void> read_metatiles_bin(Tileset &dest, const ArtifactKey &src_key) const override;
53
54 [[nodiscard]] ChainableResult<void>
55 read_metatile_attributes_bin(Tileset &dest, const ArtifactKey &src_key) const override;
56
57 [[nodiscard]] ChainableResult<void> read_tiles_png(Tileset &dest, const ArtifactKey &src_key) const override;
58
59 [[nodiscard]] ChainableResult<void>
60 read_porymap_palette_n(Tileset &dest, const ArtifactKey &src_key, std::size_t index) const override;
61
63 Tileset &dest,
64 const std::string &anim_name,
65 const ArtifactKey &params_key,
66 const std::vector<std::pair<std::string, ArtifactKey>> &frame_keys) const override;
67
68 // Porytiles artifacts
69 [[nodiscard]] ChainableResult<void> read_bottom_png(Tileset &dest, const ArtifactKey &src_key) const override;
70
71 [[nodiscard]] ChainableResult<void> read_middle_png(Tileset &dest, const ArtifactKey &src_key) const override;
72
73 [[nodiscard]] ChainableResult<void> read_top_png(Tileset &dest, const ArtifactKey &src_key) const override;
74
75 [[nodiscard]] ChainableResult<void> read_attributes_csv(Tileset &dest, const ArtifactKey &src_key) const override;
76
77 [[nodiscard]] ChainableResult<void>
78 read_porytiles_palette_n(Tileset &dest, const ArtifactKey &src_key, std::size_t index) const override;
79
81 Tileset &dest,
82 const std::string &anim_name,
83 const ArtifactKey &params_key,
84 const std::optional<ArtifactKey> &key_frame_key,
85 const std::vector<std::pair<std::string, ArtifactKey>> &frame_keys) const override;
86
87 [[nodiscard]] ChainableResult<void>
88 read_porytiles_primary_anim_references(Tileset &dest, const ArtifactKey &params_key) const override;
89
90 private:
91 const std::filesystem::path project_root_;
92 const Schema *schema_;
93 const ProviderMap *provider_map_;
94 const PngRgbaImageLoader *png_rgba_loader_;
95 const PngIndexedImageLoader *png_indexed_loader_;
96 const FilePaletteLoader *palette_loader_;
97 const AttributesCsvLoader *attributes_csv_loader_;
98 const AnimJsonParser *anim_json_parser_;
99 const AnimCodeParser *anim_code_parser_;
100 const ProjectTilesetMetadataProvider *metadata_provider_;
101};
102
103} // namespace porytiles
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 &params_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 &params_key, const std::vector< std::pair< std::string, ArtifactKey > > &frame_keys) const override
ChainableResult< void > read_porytiles_primary_anim_references(Tileset &dest, const ArtifactKey &params_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
Provides a pokeemerald project filesystem-based implementation for TilesetMetadataProvider.
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.
Definition tileset.hpp:12
std::map< std::string, std::unique_ptr< EnumMapProvider >, std::less<> > ProviderMap
Maps schema field names to the provider that names that field's values.