BasicBlock.cpp 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #include "BasicBlocks.h"
  2. BasicBlock::BasicBlock( const BlockType* zType, ItemType* zTool, Framework::Vec3<int> pos )
  3. : Block( zType, zTool, pos, false )
  4. {}
  5. bool BasicBlock::onTick( TickQueue* zQueue, int numTicks, bool& blocked )
  6. {
  7. return 0;
  8. }
  9. void BasicBlock::onPostTick()
  10. {}
  11. DirtBlockType::DirtBlockType()
  12. : BlockType( ID, 0 )
  13. {
  14. defaultBlock = createBlockAt( { 0, 0, 0 }, 0 );
  15. }
  16. void DirtBlockType::loadSuperBlock( Block* zBlock, Framework::StreamReader* zReader ) const
  17. {
  18. BlockType::loadSuperBlock( zBlock, zReader );
  19. }
  20. void DirtBlockType::saveSuperBlock( Block* zBlock, Framework::StreamWriter* zWriter ) const
  21. {
  22. BlockType::saveSuperBlock( zBlock, zWriter );
  23. }
  24. void DirtBlockType::createSuperBlock( Block* zBlock, Item* zItem ) const
  25. {
  26. if( zItem )
  27. BlockType::createSuperBlock( zBlock, zItem );
  28. else
  29. {
  30. BasicBlock* block = dynamic_cast<BasicBlock*>(zBlock);
  31. if( !block )
  32. throw "DirtBlockType::createSuperBlock was called with a block witch is not an instance of BasicBlock";
  33. block->transparent = 0;
  34. block->passable = 0;
  35. block->hp = 100;
  36. block->maxHP = 100;
  37. block->hardness = 1;
  38. block->zTool = 0;
  39. block->speedModifier = 1;
  40. block->interactable = 1;
  41. }
  42. }
  43. void DirtBlockType::createSuperItem( Block* zBlock, Item* zItem ) const
  44. {
  45. BlockType::createSuperItem( zBlock, zItem );
  46. }
  47. Block* DirtBlockType::createBlock( Framework::Vec3<int> position ) const
  48. {
  49. return new BasicBlock( this, 0, position ); // TODO: add efective tool
  50. }
  51. Item* DirtBlockType::createItem() const
  52. {
  53. return StaticRegistry<ItemType>::INSTANCE.zElement( DirtBlockItemType::ID )->createItem();
  54. }
  55. DirtBlockItemType::DirtBlockItemType()
  56. : BasicBlockItemType( ID, 0, 0 )
  57. {}
  58. Item* DirtBlockItemType::createItem() const
  59. {
  60. BasicBlockItem* item = new BasicBlockItem( (ItemType*)this, DirtBlockType::INSTANCE, "Dirt" );
  61. initializeItem( item, 0, 0, 100, 100, 1, 0, 1 );
  62. return item;
  63. }