Porytiles
Loading...
Searching...
No Matches
project_tileset_artifact_key_provider.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <filesystem>
4#include <string>
5#include <utility>
6
7#include "gsl/pointers"
8
15
16namespace porytiles {
17
36 public:
45 std::filesystem::path project_root,
46 gsl::not_null<const InfraConfig *> config,
47 gsl::not_null<const TilesetMetadataProvider *> metadata_provider,
48 gsl::not_null<const TextFormatter *> format,
49 gsl::not_null<const UserDiagnostics *> diag)
50 : project_root_{std::move(project_root)}, metadata_provider_{metadata_provider}, config_{config},
51 format_{format}, diag_{diag}
52 {
53 }
54
55 /*
56 * Porymap artifacts
57 */
58 [[nodiscard]] ChainableResult<ArtifactKey> key_for_metatiles_bin(const std::string &tileset_name) const override;
59
61 key_for_metatile_attributes_bin(const std::string &tileset_name) const override;
62
63 [[nodiscard]] ChainableResult<ArtifactKey> key_for_tiles_png(const std::string &tileset_name) const override;
64
66 key_for_porymap_pal_n(const std::string &tileset_name, std::size_t index) const override;
67
69 const std::string &tileset_name, const std::string &anim_name, const std::string &frame_name) const override;
70
78 key_for_porymap_anim_params(const std::string &tileset_name) const override;
79
80 /*
81 * Porytiles artifacts
82 */
83 [[nodiscard]] ChainableResult<ArtifactKey> key_for_bottom_png(const std::string &tileset_name) const override;
84
85 [[nodiscard]] ChainableResult<ArtifactKey> key_for_middle_png(const std::string &tileset_name) const override;
86
87 [[nodiscard]] ChainableResult<ArtifactKey> key_for_top_png(const std::string &tileset_name) const override;
88
89 [[nodiscard]] ChainableResult<ArtifactKey> key_for_attributes_csv(const std::string &tileset_name) const override;
90
92 key_for_porytiles_pal_n(const std::string &tileset_name, std::size_t index) const override;
93
95 const std::string &tileset_name, const std::string &anim_name, const std::string &frame_name) const override;
96
108 [[nodiscard]] ChainableResult<ArtifactKey>
109 key_for_porytiles_anim_params(const std::string &tileset_name) const override;
110
111 /*
112 * Utilities
113 */
114 [[nodiscard]] bool artifact_exists(const ArtifactKey &key) const override;
115
117 discover_porymap_anims(const std::string &tileset_name) const override;
118
120 discover_porymap_anim_frames(const std::string &tileset_name, const std::string &anim_name) const override;
121
123 discover_porytiles_anims(const std::string &tileset_name) const override;
124
126 discover_porytiles_anim_frames(const std::string &tileset_name, const std::string &anim_name) const override;
127
128 private:
129 std::filesystem::path project_root_;
130 const TilesetMetadataProvider *metadata_provider_;
131 const InfraConfig *config_;
132 const TextFormatter *format_;
133 const UserDiagnostics *diag_;
134};
135
136} // namespace porytiles
A type-safe wrapper for artifact keys.
A result type that maintains a chainable sequence of errors for debugging and error reporting.
Interface that defines a complete infra layer configuration.
Provides a pokeemerald project filesystem-based implementation for TilesetArtifactKeyProvider.
bool artifact_exists(const ArtifactKey &key) const override
Checks whether an artifact exists in the backing store for the given key.
ChainableResult< ArtifactKey > key_for_porymap_anim_params(const std::string &tileset_name) const override
Returns the key for Porymap animation parameters.
ChainableResult< std::set< std::string > > discover_porymap_anim_frames(const std::string &tileset_name, const std::string &anim_name) const override
Discovers the frame indices for a specific Porymap animation.
ChainableResult< ArtifactKey > key_for_middle_png(const std::string &tileset_name) const override
ChainableResult< ArtifactKey > key_for_metatile_attributes_bin(const std::string &tileset_name) const override
ChainableResult< ArtifactKey > key_for_top_png(const std::string &tileset_name) const override
ChainableResult< std::set< std::string > > discover_porytiles_anims(const std::string &tileset_name) const override
Discovers the names of all Porytiles animations available for a tileset.
ChainableResult< ArtifactKey > key_for_porymap_pal_n(const std::string &tileset_name, std::size_t index) const override
ChainableResult< ArtifactKey > key_for_porytiles_anim_params(const std::string &tileset_name) const override
Returns the key for the anim.json file (Porytiles animation configuration).
ChainableResult< std::set< std::string > > discover_porytiles_anim_frames(const std::string &tileset_name, const std::string &anim_name) const override
Discovers the frame indices for a specific Porytiles animation.
ChainableResult< ArtifactKey > key_for_bottom_png(const std::string &tileset_name) const override
ChainableResult< ArtifactKey > key_for_porytiles_anim_frame(const std::string &tileset_name, const std::string &anim_name, const std::string &frame_name) const override
ChainableResult< ArtifactKey > key_for_tiles_png(const std::string &tileset_name) const override
ProjectTilesetArtifactKeyProvider(std::filesystem::path project_root, gsl::not_null< const InfraConfig * > config, gsl::not_null< const TilesetMetadataProvider * > metadata_provider, gsl::not_null< const TextFormatter * > format, gsl::not_null< const UserDiagnostics * > diag)
Constructs a ProjectTilesetArtifactKeyProvider.
ChainableResult< ArtifactKey > key_for_attributes_csv(const std::string &tileset_name) const override
ChainableResult< std::set< std::string > > discover_porymap_anims(const std::string &tileset_name) const override
Discovers the names of all Porymap animations available for a tileset.
ChainableResult< ArtifactKey > key_for_metatiles_bin(const std::string &tileset_name) const override
ChainableResult< ArtifactKey > key_for_porymap_anim_frame(const std::string &tileset_name, const std::string &anim_name, const std::string &frame_name) const override
ChainableResult< ArtifactKey > key_for_porytiles_pal_n(const std::string &tileset_name, std::size_t index) const override
Abstract base class for applying text styling with context-aware formatting.
Abstract interface for generating keys and discovering tileset artifacts in a backing store.
Abstract interface for querying tileset metadata by name.
Abstract class for structured error reporting and diagnostic output.