Porytiles
Loading...
Searching...
No Matches
project_porytiles_tileset_manager.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <filesystem>
4
14
15namespace porytiles {
16
32 public:
45 std::filesystem::path project_root,
46 const ProjectTilesetMetadataProvider *metadata_provider,
47 const ProjectTilesetMetadataWriter *metadata_writer,
48 const InfraConfig *infra_config,
49 gsl::not_null<const UserDiagnostics *> diag,
50 const IncbinDeclarationAppender *incbin_appender,
51 const ProjectTilesetAnimsModifier *tileset_anims_modifier)
52 : project_root_{std::move(project_root)}, metadata_provider_{metadata_provider},
53 metadata_writer_{metadata_writer}, infra_config_{infra_config}, diag_{diag},
54 incbin_appender_{incbin_appender}, tileset_anims_modifier_{tileset_anims_modifier}
55 {
56 }
57
68 [[nodiscard]] ChainableResult<TilesetManifest> read(const std::string &tileset_name) const;
69
81 void write(const std::string &tileset_name, const TilesetManifest &artifacts) const;
82
92 [[nodiscard]] bool is_porytiles_managed(const std::string &tileset_name) const override;
93
94 [[nodiscard]] ChainableResult<void> persist_managed_existing(const std::string &tileset_name) const override;
95
96 [[nodiscard]] ChainableResult<void>
97 persist_managed_new(const std::string &tileset_name, bool is_secondary = false) const override;
98
99 [[nodiscard]] ChainableResult<void>
100 wire_anim_code(const std::string &tileset_name, bool is_secondary) const override;
101
102 [[nodiscard]] ChainableResult<void>
103 remove_wired_anim_code(const std::string &tileset_name, bool is_secondary) const override;
104
105 private:
106 std::filesystem::path project_root_;
107 const ProjectTilesetMetadataProvider *metadata_provider_;
108 const ProjectTilesetMetadataWriter *metadata_writer_;
109 const InfraConfig *infra_config_;
110 const UserDiagnostics *diag_;
111 const IncbinDeclarationAppender *incbin_appender_;
112 const ProjectTilesetAnimsModifier *tileset_anims_modifier_;
113};
114
115} // namespace porytiles
A result type that maintains a chainable sequence of errors for debugging and error reporting.
Appends INCBIN declarations for Porytiles-managed tileset assets.
Interface that defines a complete infra layer configuration.
Abstract interface for querying Porytiles tileset ownership.
Manages Porytiles-owned tilesets via TilesetManifest JSON files.
void write(const std::string &tileset_name, const TilesetManifest &artifacts) const
Writes an TilesetManifest object to the porytiles utility directory.
ChainableResult< void > persist_managed_new(const std::string &tileset_name, bool is_secondary=false) const override
Persists managed state for a new tileset.
ChainableResult< TilesetManifest > read(const std::string &tileset_name) const
Reads an TilesetManifest object from the porytiles utility directory.
ProjectPorytilesTilesetManager(std::filesystem::path project_root, const ProjectTilesetMetadataProvider *metadata_provider, const ProjectTilesetMetadataWriter *metadata_writer, const InfraConfig *infra_config, gsl::not_null< const UserDiagnostics * > diag, const IncbinDeclarationAppender *incbin_appender, const ProjectTilesetAnimsModifier *tileset_anims_modifier)
Constructs a ProjectPorytilesTilesetManager with required dependencies.
ChainableResult< void > persist_managed_existing(const std::string &tileset_name) const override
Persists managed state for an existing tileset.
ChainableResult< void > remove_wired_anim_code(const std::string &tileset_name, bool is_secondary) const override
Removes wired animation code for a tileset from the project.
ChainableResult< void > wire_anim_code(const std::string &tileset_name, bool is_secondary) const override
Wires animation code for a tileset that already has its manifest persisted.
bool is_porytiles_managed(const std::string &tileset_name) const override
Checks whether a tileset has an tileset-manifest.json file.
Modifies tileset_anims.c to include Porytiles-managed animation code headers.
Provides a pokeemerald project filesystem-based implementation for TilesetMetadataProvider.
Provides surgical update capability for tileset metadata in headers.h files.
Stores manifest metadata for Porytiles-managed tilesets.
Abstract class for structured error reporting and diagnostic output.