5#ifndef TILESON_OBJECT_HPP
6#define TILESON_OBJECT_HPP
9#include "../objects/Vector2.hpp"
10#include "../objects/PropertyCollection.hpp"
13#include "../common/Enums.hpp"
42 [[nodiscard]]
inline bool isEllipse()
const;
43 [[nodiscard]]
inline uint32_t
getGid()
const;
45 [[nodiscard]]
inline int getId()
const;
46 [[nodiscard]]
inline const std::string &
getName()
const;
47 [[nodiscard]]
inline bool isPoint()
const;
49 [[nodiscard]]
inline const std::string &
getTemplate()
const;
50 [[nodiscard]]
inline const std::string &
getType()
const;
51 [[nodiscard]]
inline const std::string &
getClassType()
const;
53 [[nodiscard]]
inline bool isVisible()
const;
56 [[nodiscard]]
inline const std::vector<tson::Vector2i> &
getPolygons()
const;
57 [[nodiscard]]
inline const std::vector<tson::Vector2i> &
getPolylines()
const;
62 inline T
get(
const std::string &name);
71 inline void setObjectTypeByJson(
IJson &json,
IJson* templ);
80 std::vector<tson::Vector2i> m_polygon;
81 std::vector<tson::Vector2i> m_polyline;
84 std::string m_template;
94 std::shared_ptr<tson::TiledClass> m_class {};
106 return m_properties.getValue<T>(name);
135 inline bool readField(std::vector<Vector2i>& field,
const std::string& fieldName,
IJson& main,
IJson* templ =
nullptr);
144 template <
typename T>
bool readField(T& field,
const std::string& fieldName,
IJson& main,
IJson* templ =
nullptr)
148 field = fieldJson->
get<T>();
163 inline bool readVector(
Vector2i& field,
const std::string& fieldNameX,
const std::string& fieldNameY, IJson& main, IJson* templ =
nullptr);
196void tson::Object::setObjectTypeByJson(
IJson &json,
IJson* templ)
203 else if(
readField(
"polygon", json, templ))
205 else if(
readField(
"polyline", json, templ))
211 else if(json.
count(
"template") > 0)
382 if(m_properties.hasProperty(name))
383 return m_properties.getProperty(name);
406 return ((m_flipFlags & flags) == flags) ? true :
false;
T get(std::string_view key)
Definition IJson.hpp:82
virtual size_t count(std::string_view key) const =0
const std::string & getTemplate() const
Definition Object.hpp:294
const std::string & getClassType() const
Definition Object.hpp:314
bool hasFlipFlags(TileFlipFlags flags)
Definition Object.hpp:404
T get(const std::string &name)
Definition Object.hpp:104
const std::string & getName() const
Definition Object.hpp:267
TileFlipFlags getFlipFlags() const
Definition Object.hpp:391
const std::vector< tson::Vector2i > & getPolygons() const
Definition Object.hpp:342
tson::Property * getProp(const std::string &name)
Definition Object.hpp:380
const std::string & getType() const
Definition Object.hpp:304
float getRotation() const
Definition Object.hpp:285
const std::vector< tson::Vector2i > & getPolylines() const
Definition Object.hpp:352
const Vector2i & getPosition() const
Definition Object.hpp:332
bool parse(IJson &json, tson::Map *map)
Definition tileson_forward.hpp:484
const Vector2i & getSize() const
Definition Object.hpp:249
ObjectType getObjectType() const
Definition Object.hpp:222
bool isVisible() const
Definition Object.hpp:323
uint32_t getGid() const
Definition Object.hpp:240
tson::TiledClass * getClass()
Definition tileson_forward.hpp:563
const Text & getText() const
Definition Object.hpp:370
bool isEllipse() const
Definition Object.hpp:231
int getId() const
Definition Object.hpp:258
PropertyCollection & getProperties()
Definition Object.hpp:361
bool isPoint() const
Definition Object.hpp:276
Definition PropertyCollection.hpp:15
Definition Property.hpp:23
Definition TiledClass.hpp:11
bool readVector(Vector2i &field, const std::string &fieldNameX, const std::string &fieldNameY, IJson &main, IJson *templ=nullptr)
Definition tileson_forward.hpp:424
ObjectType
Definition Enums.hpp:58
IJson * readField(const std::string &fieldName, IJson &main, IJson *templ=nullptr)
Definition tileson_forward.hpp:361
void readGid(uint32_t &gid, TileFlipFlags &flags, IJson &main, IJson *templ=nullptr)
Definition tileson_forward.hpp:461
TileFlipFlags
Definition Enums.hpp:77
Vector2< int > Vector2i
Definition Vector2.hpp:51
void readProperties(tson::PropertyCollection &properties, IJson &json, tson::Map *map)
Definition tileson_forward.hpp:441