Porytiles
Loading...
Searching...
No Matches
project_porytiles_tileset_manager.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <cstddef>
4#include <filesystem>
5
15
16namespace porytiles {
17
31 public:
46 std::filesystem::path project_root,
47 const ProjectTilesetMetadataProvider *metadata_provider,
48 const ProjectTilesetMetadataWriter *metadata_writer,
49 const InfraConfig *infra_config,
50 std::size_t declaration_attribute_bytes,
51 gsl::not_null<const UserDiagnostics *> diag,
52 const IncbinDeclarationAppender *incbin_appender,
53 const ProjectTilesetAnimsModifier *tileset_anims_modifier)
54 : project_root_{std::move(project_root)}, metadata_provider_{metadata_provider},
55 metadata_writer_{metadata_writer}, infra_config_{infra_config},
56 declaration_attribute_bytes_{declaration_attribute_bytes}, diag_{diag}, incbin_appender_{incbin_appender},
57 tileset_anims_modifier_{tileset_anims_modifier}
58 {
59 }
60
69 [[nodiscard]] ChainableResult<TilesetManifest> read(const std::string &tileset_name) const;
70
80 void write(const std::string &tileset_name, const TilesetManifest &artifacts) const;
81
89 [[nodiscard]] bool is_porytiles_managed(const std::string &tileset_name) const override;
90
91 [[nodiscard]] ChainableResult<void> persist_managed_existing(const std::string &tileset_name) const override;
92
93 [[nodiscard]] ChainableResult<void>
94 persist_managed_new(const std::string &tileset_name, bool is_secondary = false) const override;
95
96 [[nodiscard]] ChainableResult<void>
97 wire_anim_code(const std::string &tileset_name, bool is_secondary) const override;
98
99 [[nodiscard]] ChainableResult<void>
100 remove_wired_anim_code(const std::string &tileset_name, bool is_secondary) const override;
101
102 private:
103 std::filesystem::path project_root_;
104 const ProjectTilesetMetadataProvider *metadata_provider_;
105 const ProjectTilesetMetadataWriter *metadata_writer_;
106 const InfraConfig *infra_config_;
107 std::size_t declaration_attribute_bytes_;
108 const UserDiagnostics *diag_;
109 const IncbinDeclarationAppender *incbin_appender_;
110 const ProjectTilesetAnimsModifier *tileset_anims_modifier_;
111};
112
113} // 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, std::size_t declaration_attribute_bytes, 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.