2018-09-25 01:12:29 +01:00
|
|
|
#include "block.h"
|
2018-09-23 00:47:28 +01:00
|
|
|
|
2023-12-12 23:32:54 +00:00
|
|
|
Block::Block() :
|
|
|
|
m_metatileId(0),
|
|
|
|
m_collision(0),
|
|
|
|
m_elevation(0)
|
|
|
|
{ }
|
2018-09-23 00:47:28 +01:00
|
|
|
|
2021-11-24 04:53:41 +00:00
|
|
|
Block::Block(uint16_t metatileId, uint16_t collision, uint16_t elevation) :
|
2023-12-12 23:32:54 +00:00
|
|
|
m_metatileId(metatileId),
|
|
|
|
m_collision(collision),
|
|
|
|
m_elevation(elevation)
|
2021-02-14 17:37:51 +00:00
|
|
|
{ }
|
2020-04-27 01:38:20 +01:00
|
|
|
|
2021-02-14 17:37:51 +00:00
|
|
|
Block::Block(uint16_t word) :
|
2023-12-12 23:32:54 +00:00
|
|
|
m_metatileId(word & 0x3ff),
|
|
|
|
m_collision((word >> 10) & 0x3),
|
|
|
|
m_elevation((word >> 12) & 0xf)
|
2021-02-14 17:37:51 +00:00
|
|
|
{ }
|
|
|
|
|
|
|
|
Block::Block(const Block &other) :
|
2023-12-12 23:32:54 +00:00
|
|
|
m_metatileId(other.m_metatileId),
|
|
|
|
m_collision(other.m_collision),
|
|
|
|
m_elevation(other.m_elevation)
|
2021-02-14 17:37:51 +00:00
|
|
|
{ }
|
2018-09-23 00:47:28 +01:00
|
|
|
|
2021-02-14 17:37:51 +00:00
|
|
|
Block &Block::operator=(const Block &other) {
|
2023-12-12 23:32:54 +00:00
|
|
|
m_metatileId = other.m_metatileId;
|
|
|
|
m_collision = other.m_collision;
|
|
|
|
m_elevation = other.m_elevation;
|
2021-02-14 17:37:51 +00:00
|
|
|
return *this;
|
2018-09-23 00:47:28 +01:00
|
|
|
}
|
|
|
|
|
2021-02-14 20:10:03 +00:00
|
|
|
uint16_t Block::rawValue() const {
|
2018-09-23 00:47:28 +01:00
|
|
|
return static_cast<uint16_t>(
|
2023-12-12 23:32:54 +00:00
|
|
|
(m_metatileId & 0x3ff) +
|
|
|
|
((m_collision & 0x3) << 10) +
|
|
|
|
((m_elevation & 0xf) << 12));
|
2018-09-23 00:47:28 +01:00
|
|
|
}
|
|
|
|
|
2021-02-14 20:10:03 +00:00
|
|
|
bool Block::operator ==(Block other) const {
|
2023-12-12 23:32:54 +00:00
|
|
|
return (m_metatileId == other.m_metatileId) && (m_collision == other.m_collision) && (m_elevation == other.m_elevation);
|
2018-09-23 00:47:28 +01:00
|
|
|
}
|
|
|
|
|
2021-02-14 20:10:03 +00:00
|
|
|
bool Block::operator !=(Block other) const {
|
2018-09-23 00:47:28 +01:00
|
|
|
return !(operator ==(other));
|
|
|
|
}
|