#include "Block.h" #include "Inventory.h" #include "Globals.h" Block::Block(const BlockType* zType, ItemType* zTool, Framework::Vec3 pos, bool hasInventory) : Inventory(pos, hasInventory), Model3D(), zType(zType) { transparent = false; passable = false; hp = 1; maxHP = 1; hardness = 1; this->zTool = zTool; speedModifier = 1; memset(sideVisible, 1, 6); Model3D::setPosition((Framework::Vec3)pos + Framework::Vec3{0.5f, 0.5f, 0.5f}); } Block::~Block() {} void Block::api(char* message) { // TODO: implement api } bool Block::isTransparent() const { return transparent; } bool Block::isPassable() const { return passable; } void Block::setSideVisible(Direction dir, bool visible) { sideVisible[getDirectionIndex(dir)] = visible; } const BlockType* Block::zBlockType() const { return zType; } BasicBlockItem::BasicBlockItem(const ItemType* zType, const char* name) : Item(zType, name) { placeable = 1; transparent = 0; passable = 0; hp = 0; maxHP = 0; hardness = 0; toolId = 0; speedModifier = 0; interactable = 0; } BasicBlockItemType::BasicBlockItemType(int id, const char* name, const char* texturPath) : ItemType(id, name), name(name), texturPath(texturPath) {} void BasicBlockItemType::loadSuperItem(Item* zItem, Framework::StreamReader* zReader) const { ItemType::loadSuperItem(zItem, zReader); BasicBlockItem* item = dynamic_cast(zItem); if (!item) throw "BasicBlockItemType::loadSuperItem was called with an invalid item"; zReader->lese((char*)&item->transparent, 1); zReader->lese((char*)&item->passable, 1); zReader->lese((char*)&item->hp, 4); zReader->lese((char*)&item->maxHP, 4); zReader->lese((char*)&item->hardness, 4); zReader->lese((char*)&item->toolId, 4); zReader->lese((char*)&item->speedModifier, 4); zReader->lese((char*)&item->interactable, 1); } Framework::Model3DData* BasicBlockItemType::getItemModel() const { return uiFactory.initParam.bildschirm->zGraphicsApi()->getModel("itemCube"); } Item* BasicBlockItemType::createItem() const { return new BasicBlockItem(this, name); } Framework::Model3DTextur* BasicBlockItemType::getItemTextur() const { Model3DTextur* textur = new Model3DTextur(); Textur* tex = uiFactory.initParam.bildschirm->zGraphicsApi()->createOrGetTextur(texturPath, 0); textur->setPolygonTextur(0, dynamic_cast(tex->getThis())); textur->setPolygonTextur(1, dynamic_cast(tex->getThis())); textur->setPolygonTextur(2, dynamic_cast(tex->getThis())); textur->setPolygonTextur(3, dynamic_cast(tex->getThis())); textur->setPolygonTextur(4, dynamic_cast(tex->getThis())); textur->setPolygonTextur(5, tex); return textur; }