34 gsl::not_null<DomainConfig *> domain_config,
35 gsl::not_null<InfraConfig *> infra_config,
36 std::filesystem::path project_root,
37 gsl::not_null<const Schema *> schema,
38 gsl::not_null<const ProviderMap *> providers,
39 gsl::not_null<const TextFormatter *> format,
40 gsl::not_null<const UserDiagnostics *> diag,
41 gsl::not_null<PngRgbaImageSaver *> png_rgba_saver,
42 gsl::not_null<PngIndexedImageSaver *> png_indexed_saver,
43 gsl::not_null<FilePaletteSaver *> palette_saver,
44 gsl::not_null<const AnimJsonParser *> anim_json_parser,
45 gsl::not_null<const AnimCodeGenerator *> anim_code_generator)
46 : domain_config_{domain_config}, infra_config_{infra_config}, project_root_{std::move(project_root)},
47 schema_{schema}, providers_{providers}, format_{format}, diag_{diag}, png_rgba_saver_{png_rgba_saver},
48 png_indexed_saver_{png_indexed_saver}, palette_saver_{palette_saver}, anim_json_parser_{anim_json_parser},
49 anim_code_generator_{anim_code_generator}, metadata_provider_{project_root_, format, diag},
50 metadata_writer_{project_root_, format}
74 const std::string &anim_name,
75 const std::string &frame_name)
override;
95 const std::string &anim_name,
96 const std::string &frame_name)
override;
107 struct StagedDirectory {
108 std::filesystem::path staging_path;
109 std::filesystem::path dest_path;
112 DomainConfig *domain_config_;
113 InfraConfig *infra_config_;
114 std::filesystem::path project_root_;
115 const Schema *schema_;
117 std::filesystem::path transaction_root_;
118 const TextFormatter *format_;
119 const UserDiagnostics *diag_;
120 PngRgbaImageSaver *png_rgba_saver_;
121 PngIndexedImageSaver *png_indexed_saver_;
122 FilePaletteSaver *palette_saver_;
123 const AnimJsonParser *anim_json_parser_;
124 const AnimCodeGenerator *anim_code_generator_;
125 ProjectTilesetMetadataProvider metadata_provider_;
126 ProjectTilesetMetadataWriter metadata_writer_;
129 std::map<std::filesystem::path, StagedDirectory> staged_directories_;
131 std::vector<std::pair<std::filesystem::path, std::filesystem::path>> staged_special_files_;
A type-safe wrapper for artifact keys.
A result type that maintains a chainable sequence of errors for debugging and error reporting.
Provides a filesystem-based implementation for TilesetArtifactWriter.
ChainableResult< void > write_porymap_anim_params(const ArtifactKey &dest_key, const Tileset &src) override
Writes the animation parameters to the Porymap component backing store.
ChainableResult< void > write_metatiles_bin(const ArtifactKey &dest_key, const Tileset &src) override
ChainableResult< void > write_top_png(const ArtifactKey &dest_key, const Tileset &src) override
ChainableResult< void > begin_transaction() override
Begins a new transaction for atomic write operations.
ChainableResult< void > write_porytiles_anim_params(const ArtifactKey &dest_key, const Tileset &src) override
Writes animation parameters to the Porytiles component backing store.
ChainableResult< void > write_tiles_png(const ArtifactKey &dest_key, const Tileset &src) override
ProjectTilesetArtifactWriter(gsl::not_null< DomainConfig * > domain_config, gsl::not_null< InfraConfig * > infra_config, std::filesystem::path project_root, gsl::not_null< const Schema * > schema, gsl::not_null< const ProviderMap * > providers, gsl::not_null< const TextFormatter * > format, gsl::not_null< const UserDiagnostics * > diag, gsl::not_null< PngRgbaImageSaver * > png_rgba_saver, gsl::not_null< PngIndexedImageSaver * > png_indexed_saver, gsl::not_null< FilePaletteSaver * > palette_saver, gsl::not_null< const AnimJsonParser * > anim_json_parser, gsl::not_null< const AnimCodeGenerator * > anim_code_generator)
ChainableResult< void > write_porytiles_palette_n(const ArtifactKey &dest_key, const Tileset &src, std::size_t index) override
ChainableResult< void > write_bottom_png(const ArtifactKey &dest_key, const Tileset &src) override
ChainableResult< void > commit() override
Commits all buffered write operations in the current transaction.
ChainableResult< void > write_middle_png(const ArtifactKey &dest_key, const Tileset &src) override
ChainableResult< void > write_porymap_anim_frame(const ArtifactKey &dest_key, const Tileset &src, const std::string &anim_name, const std::string &frame_name) override
ChainableResult< void > write_metatile_attributes_bin(const ArtifactKey &dest_key, const Tileset &src) override
ChainableResult< void > rollback() override
Rolls back all buffered write operations in the current transaction.
ChainableResult< void > write_porymap_palette_n(const ArtifactKey &dest_key, const Tileset &src, std::size_t index) override
ChainableResult< void > write_porytiles_anim_frame(const ArtifactKey &dest_key, const Tileset &src, const std::string &anim_name, const std::string &frame_name) override
ChainableResult< void > write_attributes_csv(const ArtifactKey &dest_key, const Tileset &src) override
Abstract interface for writing tileset artifacts from a Tileset object to a backing store.
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.