38 gsl::not_null<DomainConfig *> domain_config,
39 gsl::not_null<InfraConfig *> infra_config,
40 std::filesystem::path project_root,
42 std::size_t metatile_attr_size,
43 gsl::not_null<const TextFormatter *> format,
44 gsl::not_null<const UserDiagnostics *> diag,
45 gsl::not_null<PngRgbaImageSaver *> png_rgba_saver,
46 gsl::not_null<PngIndexedImageSaver *> png_indexed_saver,
47 gsl::not_null<FilePalSaver *> pal_saver,
48 gsl::not_null<const AnimJsonParser *> anim_json_parser,
49 gsl::not_null<const AnimCodeGenerator *> anim_code_generator,
50 gsl::not_null<const BehaviorMapProvider *> behavior_map,
53 : domain_config_{domain_config}, infra_config_{infra_config}, project_root_{std::move(project_root)},
54 base_game_{base_game}, metatile_attr_size_{metatile_attr_size}, format_{format}, diag_{diag},
55 png_rgba_saver_{png_rgba_saver}, png_indexed_saver_{png_indexed_saver}, pal_saver_{pal_saver},
56 anim_json_parser_{anim_json_parser}, anim_code_generator_{anim_code_generator}, behavior_map_{behavior_map},
57 terrain_map_{terrain_map}, encounter_map_{encounter_map}, metadata_provider_{project_root_, format, diag},
58 metadata_writer_{project_root_, format}
84 const std::string &anim_name,
85 const std::string &frame_name)
override;
107 const std::string &anim_name,
108 const std::string &frame_name)
override;
121 struct StagedDirectory {
122 std::filesystem::path staging_path;
123 std::filesystem::path dest_path;
126 DomainConfig *domain_config_;
127 InfraConfig *infra_config_;
128 std::filesystem::path project_root_;
130 const std::size_t metatile_attr_size_;
131 std::filesystem::path transaction_root_;
132 const TextFormatter *format_;
133 const UserDiagnostics *diag_;
134 PngRgbaImageSaver *png_rgba_saver_;
135 PngIndexedImageSaver *png_indexed_saver_;
136 FilePalSaver *pal_saver_;
137 const AnimJsonParser *anim_json_parser_;
138 const AnimCodeGenerator *anim_code_generator_;
139 const BehaviorMapProvider *behavior_map_;
140 const TerrainTypeMapProvider *terrain_map_;
141 const EncounterTypeMapProvider *encounter_map_;
142 ProjectTilesetMetadataProvider metadata_provider_;
143 ProjectTilesetMetadataWriter metadata_writer_;
146 std::map<std::filesystem::path, StagedDirectory> staged_directories_;
148 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.
Abstract interface for providing two-way metatile encounter type mappings.
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_porymap_pal_n(const ArtifactKey &dest_key, const Tileset &src, std::size_t index) override
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, BaseGame base_game, std::size_t metatile_attr_size, 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< FilePalSaver * > pal_saver, gsl::not_null< const AnimJsonParser * > anim_json_parser, gsl::not_null< const AnimCodeGenerator * > anim_code_generator, gsl::not_null< const BehaviorMapProvider * > behavior_map, const TerrainTypeMapProvider *terrain_map=nullptr, const EncounterTypeMapProvider *encounter_map=nullptr)
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_porytiles_pal_n(const ArtifactKey &dest_key, const Tileset &src, std::size_t index) 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_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 providing two-way metatile terrain type mappings.
Abstract interface for writing tileset artifacts from a Tileset object to a backing store.
A complete tileset containing both Porytiles and Porymap components.
BaseGame
Identifies the target base game for a decompilation project.