12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- #include "BlockType.h"
- #include "Block.h"
- #include "Registries.h"
- using namespace Framework;
- BlockType::BlockType( int id )
- : ReferenceCounter(),
- id( id ),
- defaultBlock( 0 )
- {
- STATIC_REGISTRY( BlockType ).registerT( this, id );
- }
- BlockType::~BlockType()
- {
- if( defaultBlock )
- defaultBlock->release();
- }
- void BlockType::loadSuperBlock( Block* zBlock, Framework::StreamReader* zReader )
- {
- zBlock->loadInventory( zReader );
- zReader->lese( (char*)&zBlock->transparent, 1 );
- zReader->lese( (char*)&zBlock->passable, 1 );
- zReader->lese( (char*)&zBlock->hp, 4 );
- zReader->lese( (char*)&zBlock->maxHP, 4 );
- zReader->lese( (char*)&zBlock->hardness, 4 );
- zReader->lese( (char*)&zBlock->speedModifier, 4 );
- int effectiveToolId;
- zReader->lese( (char*)&effectiveToolId, 4 );
- if( effectiveToolId >= 0 )
- zBlock->zTool = STATIC_REGISTRY( ItemType ).zElement( effectiveToolId );
- else
- zBlock->zTool = 0;
- }
- Block* BlockType::loadBlock( Framework::Vec3<int> position, Framework::StreamReader* zReader )
- {
- Block* result = createBlock( position );
- loadSuperBlock( result, zReader );
- return result;
- }
- void BlockType::updateBlock( Block* zBlock, Framework::StreamReader* zReader )
- {
- loadSuperBlock( zBlock, zReader );
- }
- int BlockType::getId() const
- {
- return id;
- }
- const Block* BlockType::zDefault()
- {
- if( !defaultBlock )
- defaultBlock = createBlock( { 0, 0, 0 } );
- return defaultBlock;
- }
|