Porytiles
Loading...
Searching...
No Matches
project_tileset_artifact_reader.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <cstddef>
4#include <utility>
5
6#include "gsl/pointers"
18
19namespace porytiles {
20
29 public:
31 std::filesystem::path project_root,
32 std::size_t metatile_attr_size,
33 gsl::not_null<const PngRgbaImageLoader *> png_rgba_loader,
34 gsl::not_null<const PngIndexedImageLoader *> png_indexed_loader,
35 gsl::not_null<const FilePalLoader *> pal_loader,
36 gsl::not_null<const AttributesCsvLoader *> attributes_csv_loader,
37 gsl::not_null<const AnimJsonParser *> anim_json_parser,
38 gsl::not_null<const AnimCodeParser *> anim_code_parser,
39 gsl::not_null<const ProjectTilesetMetadataProvider *> metadata_provider)
40 : project_root_{std::move(project_root)}, metatile_attr_size_{metatile_attr_size},
41 png_rgba_loader_{png_rgba_loader}, png_indexed_loader_{png_indexed_loader}, pal_loader_{pal_loader},
42 attributes_csv_loader_{attributes_csv_loader}, anim_json_parser_{anim_json_parser},
43 anim_code_parser_{anim_code_parser}, metadata_provider_{metadata_provider}
44 {
45 }
46
47 /*
48 * Porymap artifacts
49 */
50 [[nodiscard]] ChainableResult<void> read_metatiles_bin(Tileset &dest, const ArtifactKey &src_key) const override;
51
52 [[nodiscard]] ChainableResult<void>
53 read_metatile_attributes_bin(Tileset &dest, const ArtifactKey &src_key) const override;
54
55 [[nodiscard]] ChainableResult<void> read_tiles_png(Tileset &dest, const ArtifactKey &src_key) const override;
56
57 [[nodiscard]] ChainableResult<void>
58 read_porymap_pal_n(Tileset &dest, const ArtifactKey &src_key, std::size_t index) const override;
59
61 Tileset &dest,
62 const std::string &anim_name,
63 const ArtifactKey &params_key,
64 const std::vector<std::pair<std::string, ArtifactKey>> &frame_keys) const override;
65
66 /*
67 * Porytiles artifacts
68 */
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_pal_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 std::size_t metatile_attr_size_;
93 const PngRgbaImageLoader *png_rgba_loader_;
94 const PngIndexedImageLoader *png_indexed_loader_;
95 const FilePalLoader *pal_loader_;
96 const AttributesCsvLoader *attributes_csv_loader_;
97 const AnimJsonParser *anim_json_parser_;
98 const AnimCodeParser *anim_code_parser_;
99 const ProjectTilesetMetadataProvider *metadata_provider_;
100};
101
102} // 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
ChainableResult< void > read_porytiles_pal_n(Tileset &dest, const ArtifactKey &src_key, std::size_t index) const override
ChainableResult< void > read_porymap_pal_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
ProjectTilesetArtifactReader(std::filesystem::path project_root, std::size_t metatile_attr_size, gsl::not_null< const PngRgbaImageLoader * > png_rgba_loader, gsl::not_null< const PngIndexedImageLoader * > png_indexed_loader, gsl::not_null< const FilePalLoader * > pal_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_metatiles_bin(Tileset &dest, const ArtifactKey &src_key) const override
Provides a pokeemerald project filesystem-based implementation for TilesetMetadataProvider.
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:14