|
@@ -14,23 +14,19 @@ void BasicBlock::onPostTick()
|
|
|
{}
|
|
|
|
|
|
|
|
|
-DirtBlockType::DirtBlockType()
|
|
|
- : BlockType( ID, 0 )
|
|
|
-{
|
|
|
- defaultBlock = createBlockAt( { 0, 0, 0 }, 0 );
|
|
|
-}
|
|
|
-
|
|
|
-void DirtBlockType::loadSuperBlock( Block* zBlock, Framework::StreamReader* zReader ) const
|
|
|
-{
|
|
|
- BlockType::loadSuperBlock( zBlock, zReader );
|
|
|
-}
|
|
|
-
|
|
|
-void DirtBlockType::saveSuperBlock( Block* zBlock, Framework::StreamWriter* zWriter ) const
|
|
|
-{
|
|
|
- BlockType::saveSuperBlock( zBlock, zWriter );
|
|
|
-}
|
|
|
+BasicBlockType::BasicBlockType( int typeId, int itemTypeId )
|
|
|
+ : BlockType( typeId, 0 ),
|
|
|
+ itemType( itemTypeId ),
|
|
|
+ transparent( 0 ),
|
|
|
+ passable( 0 ),
|
|
|
+ maxHp( 100.f ),
|
|
|
+ hardness( 1.f ),
|
|
|
+ zTool( 0 ),
|
|
|
+ speedModifier( 1.f ),
|
|
|
+ interactable( 1 )
|
|
|
+{}
|
|
|
|
|
|
-void DirtBlockType::createSuperBlock( Block* zBlock, Item* zItem ) const
|
|
|
+void BasicBlockType::createSuperBlock( Block* zBlock, Item* zItem ) const
|
|
|
{
|
|
|
if( zItem )
|
|
|
BlockType::createSuperBlock( zBlock, zItem );
|
|
@@ -39,30 +35,32 @@ void DirtBlockType::createSuperBlock( Block* zBlock, Item* zItem ) const
|
|
|
BasicBlock* block = dynamic_cast<BasicBlock*>(zBlock);
|
|
|
if( !block )
|
|
|
throw "DirtBlockType::createSuperBlock was called with a block witch is not an instance of BasicBlock";
|
|
|
- block->transparent = 0;
|
|
|
- block->passable = 0;
|
|
|
- block->hp = 100;
|
|
|
- block->maxHP = 100;
|
|
|
- block->hardness = 1;
|
|
|
- block->zTool = 0;
|
|
|
- block->speedModifier = 1;
|
|
|
- block->interactable = 1;
|
|
|
+ block->transparent = transparent;
|
|
|
+ block->passable = passable;
|
|
|
+ block->hp = maxHp;
|
|
|
+ block->maxHP = maxHp;
|
|
|
+ block->hardness = hardness;
|
|
|
+ block->zTool = zTool;
|
|
|
+ block->speedModifier = speedModifier;
|
|
|
+ block->interactable = interactable;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-void DirtBlockType::createSuperItem( Block* zBlock, Item* zItem ) const
|
|
|
+Block* BasicBlockType::createBlock( Framework::Vec3<int> position ) const
|
|
|
{
|
|
|
- BlockType::createSuperItem( zBlock, zItem );
|
|
|
+ return new BasicBlock( this, 0, position );
|
|
|
}
|
|
|
|
|
|
-Block* DirtBlockType::createBlock( Framework::Vec3<int> position ) const
|
|
|
+Item* BasicBlockType::createItem() const
|
|
|
{
|
|
|
- return new BasicBlock( this, 0, position ); // TODO: add efective tool
|
|
|
+ return StaticRegistry<ItemType>::INSTANCE.zElement( itemType )->createItem();
|
|
|
}
|
|
|
|
|
|
-Item* DirtBlockType::createItem() const
|
|
|
+// Dirt
|
|
|
+DirtBlockType::DirtBlockType()
|
|
|
+ : BasicBlockType( ID, DirtBlockItemType::ID )
|
|
|
{
|
|
|
- return StaticRegistry<ItemType>::INSTANCE.zElement( DirtBlockItemType::ID )->createItem();
|
|
|
+ defaultBlock = createBlockAt( { 0, 0, 0 }, 0 );
|
|
|
}
|
|
|
|
|
|
|
|
@@ -75,4 +73,204 @@ Item* DirtBlockItemType::createItem() const
|
|
|
BasicBlockItem* item = new BasicBlockItem( (ItemType*)this, DirtBlockType::INSTANCE, "Dirt" );
|
|
|
initializeItem( item, 0, 0, 100, 100, 1, 0, 1 );
|
|
|
return item;
|
|
|
+}
|
|
|
+
|
|
|
+// Stone
|
|
|
+StoneBlockType::StoneBlockType()
|
|
|
+ : BasicBlockType( ID, StoneBlockItemType::ID )
|
|
|
+{
|
|
|
+ hardness = 2.f;
|
|
|
+ defaultBlock = createBlockAt( { 0, 0, 0 }, 0 );
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+StoneBlockItemType::StoneBlockItemType()
|
|
|
+ : BasicBlockItemType( ID, 0, 0 )
|
|
|
+{}
|
|
|
+
|
|
|
+Item* StoneBlockItemType::createItem() const
|
|
|
+{
|
|
|
+ BasicBlockItem* item = new BasicBlockItem( (ItemType*)this, StoneBlockType::INSTANCE, "Stone" );
|
|
|
+ initializeItem( item, 0, 0, 100, 100, 2, 0, 1 );
|
|
|
+ return item;
|
|
|
+}
|
|
|
+
|
|
|
+// Sand
|
|
|
+SandBlockType::SandBlockType()
|
|
|
+ : BasicBlockType( ID, SandBlockItemType::ID )
|
|
|
+{
|
|
|
+ hardness = 0.5f;
|
|
|
+ defaultBlock = createBlockAt( { 0, 0, 0 }, 0 );
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+SandBlockItemType::SandBlockItemType()
|
|
|
+ : BasicBlockItemType( ID, 0, 0 )
|
|
|
+{}
|
|
|
+
|
|
|
+Item* SandBlockItemType::createItem() const
|
|
|
+{
|
|
|
+ BasicBlockItem* item = new BasicBlockItem( (ItemType*)this, SandBlockType::INSTANCE, "Sand" );
|
|
|
+ initializeItem( item, 0, 0, 100, 100, 0.5f, 0, 1 );
|
|
|
+ return item;
|
|
|
+}
|
|
|
+
|
|
|
+// Oak Wood
|
|
|
+OakBlockType::OakBlockType()
|
|
|
+ : BasicBlockType( ID, OakBlockItemType::ID )
|
|
|
+{
|
|
|
+ hardness = 1.5f;
|
|
|
+ defaultBlock = createBlockAt( { 0, 0, 0 }, 0 );
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+OakBlockItemType::OakBlockItemType()
|
|
|
+ : BasicBlockItemType( ID, 0, 0 )
|
|
|
+{}
|
|
|
+
|
|
|
+Item* OakBlockItemType::createItem() const
|
|
|
+{
|
|
|
+ BasicBlockItem* item = new BasicBlockItem( (ItemType*)this, OakBlockType::INSTANCE, "Oak" );
|
|
|
+ initializeItem( item, 0, 0, 100, 100, 1.5f, 0, 1 );
|
|
|
+ return item;
|
|
|
+}
|
|
|
+
|
|
|
+// Leaves Wood
|
|
|
+LeavesBlockType::LeavesBlockType()
|
|
|
+ : BasicBlockType( ID, LeavesBlockItemType::ID )
|
|
|
+{
|
|
|
+ hardness = 0.1f;
|
|
|
+ defaultBlock = createBlockAt( { 0, 0, 0 }, 0 );
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+LeavesBlockItemType::LeavesBlockItemType()
|
|
|
+ : BasicBlockItemType( ID, 0, 0 )
|
|
|
+{}
|
|
|
+
|
|
|
+Item* LeavesBlockItemType::createItem() const
|
|
|
+{
|
|
|
+ BasicBlockItem* item = new BasicBlockItem( (ItemType*)this, LeavesBlockType::INSTANCE, "Leaves" );
|
|
|
+ initializeItem( item, 0, 0, 100, 100, 0.1f, 0, 1 );
|
|
|
+ return item;
|
|
|
+}
|
|
|
+
|
|
|
+// Gravel
|
|
|
+GravelBlockType::GravelBlockType()
|
|
|
+ : BasicBlockType( ID, GravelBlockItemType::ID )
|
|
|
+{
|
|
|
+ hardness = 0.75f;
|
|
|
+ defaultBlock = createBlockAt( { 0, 0, 0 }, 0 );
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+GravelBlockItemType::GravelBlockItemType()
|
|
|
+ : BasicBlockItemType( ID, 0, 0 )
|
|
|
+{}
|
|
|
+
|
|
|
+Item* GravelBlockItemType::createItem() const
|
|
|
+{
|
|
|
+ BasicBlockItem* item = new BasicBlockItem( (ItemType*)this, GravelBlockType::INSTANCE, "Gravel" );
|
|
|
+ initializeItem( item, 0, 0, 100, 100, 0.75f, 0, 1 );
|
|
|
+ return item;
|
|
|
+}
|
|
|
+
|
|
|
+// Granite
|
|
|
+GraniteBlockType::GraniteBlockType()
|
|
|
+ : BasicBlockType( ID, GraniteBlockItemType::ID )
|
|
|
+{
|
|
|
+ hardness = 3.f;
|
|
|
+ defaultBlock = createBlockAt( { 0, 0, 0 }, 0 );
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+GraniteBlockItemType::GraniteBlockItemType()
|
|
|
+ : BasicBlockItemType( ID, 0, 0 )
|
|
|
+{}
|
|
|
+
|
|
|
+Item* GraniteBlockItemType::createItem() const
|
|
|
+{
|
|
|
+ BasicBlockItem* item = new BasicBlockItem( (ItemType*)this, GraniteBlockType::INSTANCE, "Granite" );
|
|
|
+ initializeItem( item, 0, 0, 100, 100, 3.f, 0, 1 );
|
|
|
+ return item;
|
|
|
+}
|
|
|
+
|
|
|
+// Cobble
|
|
|
+CobbleBlockType::CobbleBlockType()
|
|
|
+ : BasicBlockType( ID, CobbleBlockItemType::ID )
|
|
|
+{
|
|
|
+ hardness = 1.f;
|
|
|
+ defaultBlock = createBlockAt( { 0, 0, 0 }, 0 );
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+CobbleBlockItemType::CobbleBlockItemType()
|
|
|
+ : BasicBlockItemType( ID, 0, 0 )
|
|
|
+{}
|
|
|
+
|
|
|
+Item* CobbleBlockItemType::createItem() const
|
|
|
+{
|
|
|
+ BasicBlockItem* item = new BasicBlockItem( (ItemType*)this, CobbleBlockType::INSTANCE, "Cobble" );
|
|
|
+ initializeItem( item, 0, 0, 100, 100, 1.f, 0, 1 );
|
|
|
+ return item;
|
|
|
+}
|
|
|
+
|
|
|
+// Birch Wood
|
|
|
+BirchBlockType::BirchBlockType()
|
|
|
+ : BasicBlockType( ID, BirchBlockItemType::ID )
|
|
|
+{
|
|
|
+ hardness = 1.5f;
|
|
|
+ defaultBlock = createBlockAt( { 0, 0, 0 }, 0 );
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+BirchBlockItemType::BirchBlockItemType()
|
|
|
+ : BasicBlockItemType( ID, 0, 0 )
|
|
|
+{}
|
|
|
+
|
|
|
+Item* BirchBlockItemType::createItem() const
|
|
|
+{
|
|
|
+ BasicBlockItem* item = new BasicBlockItem( (ItemType*)this, BirchBlockType::INSTANCE, "Birch" );
|
|
|
+ initializeItem( item, 0, 0, 100, 100, 1.5f, 0, 1 );
|
|
|
+ return item;
|
|
|
+}
|
|
|
+
|
|
|
+// Beech Wood
|
|
|
+BeechBlockType::BeechBlockType()
|
|
|
+ : BasicBlockType( ID, BeechBlockItemType::ID )
|
|
|
+{
|
|
|
+ hardness = 1.5f;
|
|
|
+ defaultBlock = createBlockAt( { 0, 0, 0 }, 0 );
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+BeechBlockItemType::BeechBlockItemType()
|
|
|
+ : BasicBlockItemType( ID, 0, 0 )
|
|
|
+{}
|
|
|
+
|
|
|
+Item* BeechBlockItemType::createItem() const
|
|
|
+{
|
|
|
+ BasicBlockItem* item = new BasicBlockItem( (ItemType*)this, BeechBlockType::INSTANCE, "Beech" );
|
|
|
+ initializeItem( item, 0, 0, 100, 100, 1.5f, 0, 1 );
|
|
|
+ return item;
|
|
|
+}
|
|
|
+
|
|
|
+// Basalt
|
|
|
+BasaltBlockType::BasaltBlockType()
|
|
|
+ : BasicBlockType( ID, BasaltBlockItemType::ID )
|
|
|
+{
|
|
|
+ hardness = 2.f;
|
|
|
+ defaultBlock = createBlockAt( { 0, 0, 0 }, 0 );
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+BasaltBlockItemType::BasaltBlockItemType()
|
|
|
+ : BasicBlockItemType( ID, 0, 0 )
|
|
|
+{}
|
|
|
+
|
|
|
+Item* BasaltBlockItemType::createItem() const
|
|
|
+{
|
|
|
+ BasicBlockItem* item = new BasicBlockItem( (ItemType*)this, BasaltBlockType::INSTANCE, "Basalt" );
|
|
|
+ initializeItem( item, 0, 0, 100, 100, 2.f, 0, 1 );
|
|
|
+ return item;
|
|
|
}
|