X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fworld%2Fblock.cpp;h=aabb2b19a9fe47551282f615986a4007deb2726c;hb=c04ea5a6f67d446ea29aa2e88dc4c666956d7732;hp=6cbaa264975d44ba316429525a706938efc0a5aa;hpb=b7d09e1e35ef90282c97509e0020b20db3c7ea9f;p=blank.git diff --git a/src/world/block.cpp b/src/world/block.cpp index 6cbaa26..aabb2b1 100644 --- a/src/world/block.cpp +++ b/src/world/block.cpp @@ -4,6 +4,7 @@ #include "../model/geometry.hpp" +#include #include #include @@ -12,6 +13,66 @@ namespace blank { const NullShape BlockType::DEFAULT_SHAPE; + +bool operator ==(const Block &a, const Block &b) { + return a.type == b.type && a.orient == b.orient; +} + +std::ostream &operator <<(std::ostream &out, const Block &block) { + return out << "Block(" << block.type << ", " << block.GetFace() << ", " << block.GetTurn() << ')'; +} + +std::ostream &operator <<(std::ostream &out, const Block::Face &face) { + switch (face) { + case Block::FACE_UP: + out << "FACE_UP"; + break; + case Block::FACE_DOWN: + out << "FACE_DOWN"; + break; + case Block::FACE_RIGHT: + out << "FACE_RIGHT"; + break; + case Block::FACE_LEFT: + out << "FACE_LEFT"; + break; + case Block::FACE_FRONT: + out << "FACE_FRONT"; + break; + case Block::FACE_BACK: + out << "FACE_BACK"; + break; + default: + case Block::FACE_COUNT: + out << "invalid Block::Face"; + break; + } + return out; +} + +std::ostream &operator <<(std::ostream &out, const Block::Turn &turn) { + switch (turn) { + case Block::TURN_NONE: + out << "TURN_NONE"; + break; + case Block::TURN_LEFT: + out << "TURN_LEFT"; + break; + case Block::TURN_AROUND: + out << "TURN_AROUND"; + break; + case Block::TURN_RIGHT: + out << "TURN_RIGHT"; + break; + default: + case Block::TURN_COUNT: + out << "invalid Block::Turn"; + break; + } + return out; +} + + BlockType::BlockType(bool v, const glm::vec3 &col, const Shape *s) noexcept : shape(s) , color(col)