#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() {} 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; }