porymap/src/core/block.cpp

44 lines
1.1 KiB
C++
Raw Normal View History

2018-09-25 01:12:29 +01:00
#include "block.h"
Block::Block() : metatileId(0), collision(0), elevation(0) { }
Block::Block(uint16_t metatileId, uint16_t collision, uint16_t elevation) :
metatileId(metatileId),
2021-02-14 17:37:51 +00:00
collision(collision),
elevation(elevation)
{ }
2021-02-14 17:37:51 +00:00
Block::Block(uint16_t word) :
metatileId(word & 0x3ff),
2021-02-14 17:37:51 +00:00
collision((word >> 10) & 0x3),
elevation((word >> 12) & 0xf)
{ }
Block::Block(const Block &other) :
metatileId(other.metatileId),
2021-02-14 17:37:51 +00:00
collision(other.collision),
elevation(other.elevation)
{ }
2021-02-14 17:37:51 +00:00
Block &Block::operator=(const Block &other) {
metatileId = other.metatileId;
2021-02-14 17:37:51 +00:00
collision = other.collision;
elevation = other.elevation;
return *this;
}
uint16_t Block::rawValue() const {
return static_cast<uint16_t>(
(metatileId & 0x3ff) +
((collision & 0x3) << 10) +
((elevation & 0xf) << 12));
}
bool Block::operator ==(Block other) const {
return (metatileId == other.metatileId) && (collision == other.collision) && (elevation == other.elevation);
}
bool Block::operator !=(Block other) const {
return !(operator ==(other));
}