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
34 public:
41 std::filesystem::path project_root,
42 gsl::not_null<const InfraConfig *> config,
43 gsl::not_null<const TilesetMetadataProvider *> metadata_provider,
44 gsl::not_null<const TextFormatter *> format,
45 gsl::not_null<const UserDiagnostics *> diag)
46 : project_root_{std::move(project_root)}, metadata_provider_{metadata_provider}, config_{config},
47 format_{format}, diag_{diag}
48 {
49 }
50
51 // Porymap artifacts
52 [[nodiscard]] ChainableResult<ArtifactKey> key_for_metatiles_bin(const std::string &tileset_name) const override;
53
55 key_for_metatile_attributes_bin(const std::string &tileset_name) const override;
56
57 [[nodiscard]] ChainableResult<ArtifactKey> key_for_tiles_png(const std::string &tileset_name) const override;
58
60 key_for_porymap_palette_n(const std::string &tileset_name, std::size_t index) const override;
61
63 const std::string &tileset_name, const std::string &anim_name, const std::string &frame_name) const override;
64
70 key_for_porymap_anim_params(const std::string &tileset_name) const override;
71
72 // Porytiles artifacts
73 [[nodiscard]] ChainableResult<ArtifactKey> key_for_bottom_png(const std::string &tileset_name) const override;
74
75 [[nodiscard]] ChainableResult<ArtifactKey> key_for_middle_png(const std::string &tileset_name) const override;
76
77 [[nodiscard]] ChainableResult<ArtifactKey> key_for_top_png(const std::string &tileset_name) const override;
78
79 [[nodiscard]] ChainableResult<ArtifactKey> key_for_attributes_csv(const std::string &tileset_name) const override;
80
82 key_for_porytiles_palette_n(const std::string &tileset_name, std::size_t index) const override;
83
85 const std::string &tileset_name, const std::string &anim_name, const std::string &frame_name) const override;
86
97 key_for_porytiles_anim_params(const std::string &tileset_name) const override;
98
99 // Utilities
100 [[nodiscard]] bool artifact_exists(const ArtifactKey &key) const override;
101
103 discover_porymap_anims(const std::string &tileset_name) const override;
104
106 discover_porymap_anim_frames(const std::string &tileset_name, const std::string &anim_name) const override;
107
109 discover_porytiles_anims(const std::string &tileset_name) const override;
110
112 discover_porytiles_anim_frames(const std::string &tileset_name, const std::string &anim_name) const override;
113
114 private:
115 std::filesystem::path project_root_;
116 const TilesetMetadataProvider *metadata_provider_;
117 const InfraConfig *config_;
118 const TextFormatter *format_;
119 const UserDiagnostics *diag_;
120};
121
122} // 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.
ChainableResult< ArtifactKey > key_for_porytiles_palette_n(const std::string &tileset_name, std::size_t index) const override
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_porymap_palette_n(const std::string &tileset_name, std::size_t index) 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_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
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.