#ifndef MAP_OBJECT_H #define MAP_OBJECT_H #include "blocks.hpp" class MapObject { public: MapObject() = default; MapObject(uint16_t terrain_id, uint8_t terrain_type, uint8_t character_id, uint8_t character_type, uint32_t modifier_id, uint8_t modifier_data, const std::string &modifier_text); MapObject(uint16_t terrain_id, LandType::Value terrain_type, uint8_t character_id, LandType::Value character_type, uint32_t modifier_id, uint8_t modifier_data, const std::string &modifier_text); void setTerrain(uint16_t id, LandType::Value land_type); void setTerrain(uint16_t id, uint8_t land_type); void setCharacter(uint8_t id, LandType::Value land_type); void setCharacter(uint8_t id, uint8_t land_type); void setModifier(uint32_t id, uint8_t data); void setModifier(uint32_t id, const std::string &text); void unsetTerrain(); void unsetModifier(); void unsetCharacter(); bool hasCharacter(); bool hasModifier(); uint16_t getTerrainId(); uint8_t getCharacterId(); uint32_t getModifierId(); LandType::Value getTerrainType(); LandType::Value getCharacterType(); uint8_t getModifierData(); const std::string &getModifierText(); private: LandType::Value terrain_type = LandType::OVERWORLD; uint16_t terrain_id = 0; LandType::Value character_type = LandType::OVERWORLD; uint8_t character_id = 0; uint32_t modifier_id = 0; uint8_t modifier_data = 0; std::string modifier_text = ""; }; #endif