game/mario/mapobject.cpp

98 lines
2.4 KiB
C++
Raw Normal View History

#include "mapobject.hpp"
2021-10-18 07:08:35 +00:00
MapObject::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) {
setTerrain(terrain_id, terrain_type);
2021-10-18 07:08:35 +00:00
if (character_id != 0)
setCharacter(character_id, character_type);
2021-10-18 07:08:35 +00:00
if (modifier_id != 0)
setModifier(modifier_id, modifier_data);
}
2021-10-18 07:08:35 +00:00
MapObject::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)
: MapObject(terrain_id, static_cast<LandType::Value>(terrain_type),
character_id, static_cast<LandType::Value>(character_type),
modifier_id, modifier_data) {}
2021-10-18 07:08:35 +00:00
void MapObject::setTerrain(uint16_t id, LandType::Value land_type) {
terrain_id = id;
terrain_type = land_type;
}
2021-10-18 07:08:35 +00:00
void MapObject::setTerrain(uint16_t id, uint8_t land_type) {
setTerrain(id, static_cast<LandType::Value>(land_type));
}
2021-10-18 07:08:35 +00:00
void MapObject::setCharacter(uint8_t id, LandType::Value land_type) {
character_id = id;
character_type = land_type;
2021-10-18 07:08:35 +00:00
if (hasModifier()) {
modifier_id = 0;
modifier_data = 0;
}
}
2021-10-18 07:08:35 +00:00
void MapObject::setCharacter(uint8_t id, uint8_t land_type) {
setCharacter(id, static_cast<LandType::Value>(land_type));
}
2021-10-18 07:08:35 +00:00
void MapObject::setModifier(uint32_t id, uint8_t data) {
modifier_id = id;
modifier_data = data;
2021-10-18 07:08:35 +00:00
if (hasCharacter()) {
character_id = 0;
character_type = LandType::OVERWORLD;
}
}
void MapObject::unsetTerrain() {
setTerrain(0, 0);
}
void MapObject::unsetModifier() {
2021-10-18 07:08:35 +00:00
if (hasModifier()) {
setModifier(0, 0);
}
}
void MapObject::unsetCharacter() {
2021-10-18 07:08:35 +00:00
if (hasCharacter()) {
setCharacter(0, 0);
}
}
bool MapObject::hasCharacter() {
return character_id != 0;
}
bool MapObject::hasModifier() {
return modifier_id != 0;
}
uint16_t MapObject::getTerrainId() {
return terrain_id;
}
uint8_t MapObject::getCharacterId() {
return character_id;
}
uint32_t MapObject::getModifierId() {
return modifier_id;
}
LandType::Value MapObject::getTerrainType() {
return terrain_type;
}
LandType::Value MapObject::getCharacterType() {
return character_type;
}
uint8_t MapObject::getModifierData() {
return modifier_data;
}