BasicBlock.cpp 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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, createBlock( { 0, 0, 0 }, 0 ) )
  13. {}
  14. void DirtBlockType::loadSuperBlock( Block* zBlock, Framework::StreamReader* zReader ) const
  15. {
  16. BlockType::loadSuperBlock( zBlock, zReader );
  17. }
  18. void DirtBlockType::saveSuperBlock( Block* zBlock, Framework::StreamWriter* zWriter ) const
  19. {
  20. BlockType::saveSuperBlock( zBlock, zWriter );
  21. }
  22. void DirtBlockType::createSuperBlock( Block* zBlock, Item* zItem ) const
  23. {
  24. if( zItem )
  25. BlockType::createSuperBlock( zBlock, zItem );
  26. else
  27. {
  28. BasicBlock* block = dynamic_cast<BasicBlock*>(zBlock);
  29. if( !block )
  30. throw "DirtBlockType::createSuperBlock was called with a block witch is not an instance of BasicBlock";
  31. block->transparent = 0;
  32. block->passable = 0;
  33. block->hp = 100;
  34. block->maxHP = 100;
  35. block->hardness = 1;
  36. block->zTool = 0;
  37. block->speedModifier = 1;
  38. block->interactable = 1;
  39. }
  40. }
  41. void DirtBlockType::createSuperItem( Block* zBlock, Item* zItem ) const
  42. {
  43. BlockType::createSuperItem( zBlock, zItem );
  44. }
  45. Block* DirtBlockType::createBlock( Framework::Vec3<int> position, Game* zTarget ) const
  46. {
  47. return new BasicBlock( this, 0, position ); // TODO: add efective tool
  48. }
  49. Item* DirtBlockType::createItem( Game* zTarget ) const
  50. {
  51. return StaticRegistry<ItemType>::INSTANCE.zElement( DirtBlockItemType::ID )->createItem();
  52. }
  53. DirtBlockItemType::DirtBlockItemType()
  54. : BasicBlockItemType( ID, 0, 0 )
  55. {}
  56. Item* DirtBlockItemType::createItem() const
  57. {
  58. BasicBlockItem* item = new BasicBlockItem( (ItemType*)this, DirtBlockType::INSTANCE, "Dirt" );
  59. initializeItem( item, 0, 0, 100, 100, 1, 0, 1 );
  60. return item;
  61. }