Porytiles
Loading...
Searching...
No Matches
porytiles_tileset_component.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <array>
4#include <map>
5#include <string>
6#include <vector>
7
16
17namespace porytiles {
18
20 public:
22
33 void insert_attribute(std::size_t metatile_id, MetatileAttribute attribute);
34
35 [[nodiscard]] std::optional<MetatileAttribute> get_attribute(std::size_t metatile_id) const;
36
37 void set_pal(std::size_t pal_index, Palette<Rgba32, pal::max_size> pal);
38
39 [[nodiscard]] const std::optional<Palette<Rgba32, pal::max_size>> &pal_at(std::size_t pal_index) const;
40
41 [[nodiscard]] bool is_empty() const;
42
43 [[nodiscard]] ChainableResult<LayerMode> detect_layer_mode(const Rgba32 &extrinsic) const;
44
45 void add_anim(Animation<Rgba32> anim);
46
47 [[nodiscard]] bool has_anim(const std::string &name) const
48 {
49 return anims_.contains(name);
50 }
51
52 [[nodiscard]] const Animation<Rgba32> &anim_for_name(const std::string &name) const
53 {
54 return anims_.at(name);
55 }
56
57 [[nodiscard]] const Image<Rgba32> &bottom() const
58 {
59 return bottom_;
60 }
61
63 {
64 bottom_ = bottom;
65 }
66
67 [[nodiscard]] const Image<Rgba32> &middle() const
68 {
69 return middle_;
70 }
71
73 {
74 middle_ = middle;
75 }
76
77 [[nodiscard]] const Image<Rgba32> &top() const
78 {
79 return top_;
80 }
81
82 void top(const Image<Rgba32> &top)
83 {
84 top_ = top;
85 }
86
87 [[nodiscard]] const std::map<std::size_t, MetatileAttribute> &metatile_attributes() const
88 {
89 return metatile_attributes_;
90 }
91
92 [[nodiscard]] const std::array<std::optional<Palette<Rgba32, pal::max_size>>, pal::num_pals> &pals() const
93 {
94 return pals_;
95 }
96
97 [[nodiscard]] const std::map<std::string, Animation<Rgba32>> &anims() const
98 {
99 return anims_;
100 }
101
102 [[nodiscard]] std::map<std::string, Animation<Rgba32>> &anims()
103 {
104 return anims_;
105 }
106
107 [[nodiscard]] const std::map<std::string, std::vector<AnimOverrideEntry>> &primary_anim_overrides() const
108 {
109 return primary_anim_overrides_;
110 }
111
112 void primary_anim_overrides(std::map<std::string, std::vector<AnimOverrideEntry>> overrides)
113 {
114 primary_anim_overrides_ = std::move(overrides);
115 }
116
117 private:
118 Image<Rgba32> bottom_;
119 Image<Rgba32> middle_;
120 Image<Rgba32> top_;
121 std::map<std::size_t, MetatileAttribute> metatile_attributes_;
122 std::array<std::optional<Palette<Rgba32, pal::max_size>>, pal::num_pals> pals_;
123 std::map<std::string, Animation<Rgba32>> anims_;
124 std::map<std::string, std::vector<AnimOverrideEntry>> primary_anim_overrides_;
125};
126
127} // namespace porytiles
A complete tileset animation with name, configuration, and frame data.
Definition animation.hpp:78
A result type that maintains a chainable sequence of errors for debugging and error reporting.
A template for two-dimensional images with arbitrarily typed pixel values.
Definition image.hpp:23
Represents the attributes of a single metatile.
A generic palette container for colors that support transparency checking.
Definition palette.hpp:47
std::map< std::string, Animation< Rgba32 > > & anims()
const std::array< std::optional< Palette< Rgba32, pal::max_size > >, pal::num_pals > & pals() const
void set_pal(std::size_t pal_index, Palette< Rgba32, pal::max_size > pal)
const Animation< Rgba32 > & anim_for_name(const std::string &name) const
void bottom(const Image< Rgba32 > &bottom)
std::optional< MetatileAttribute > get_attribute(std::size_t metatile_id) const
const std::optional< Palette< Rgba32, pal::max_size > > & pal_at(std::size_t pal_index) const
const std::map< std::string, Animation< Rgba32 > > & anims() const
const std::map< std::size_t, MetatileAttribute > & metatile_attributes() const
ChainableResult< LayerMode > detect_layer_mode(const Rgba32 &extrinsic) const
void middle(const Image< Rgba32 > &middle)
void primary_anim_overrides(std::map< std::string, std::vector< AnimOverrideEntry > > overrides)
void insert_attribute(std::size_t metatile_id, MetatileAttribute attribute)
Insert a MetatileAttribute to the end of the attribute vector.
bool has_anim(const std::string &name) const
const std::map< std::string, std::vector< AnimOverrideEntry > > & primary_anim_overrides() const
Represents a 32-bit RGBA color.
Definition rgba32.hpp:23
constexpr std::size_t num_pals
Definition palette.hpp:21