BasicBlocks.cpp 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. #include "BasicBlocks.h"
  2. #include <Model3D.h>
  3. #include <Globals.h>
  4. #include <GraphicsApi.h>
  5. #include <Bild.h>
  6. #include <Model3DList.h>
  7. #include "Globals.h"
  8. BasicBlock::BasicBlock( const BlockType* zType, const char* texture, ItemType* zTool, Framework::Vec3<int> pos, Framework::Textur* t )
  9. : Block( zType, zTool, pos, false )
  10. {
  11. Model3DData* data = window->zBildschirm()->zGraphicsApi()->getModel( "cube" );
  12. setModelDaten( data );
  13. Bild* b = new Bild();
  14. b->neuBild( 10, 10, 0xFFFFFFFF );
  15. Textur* tex = currentGame->zScreen()->zGraphicsApi()->createOrGetTextur( texture, 0 );
  16. if( !tex->zBild() )
  17. tex->setBildZ( b );
  18. else
  19. b->release();
  20. Model3DTextur* textur = new Model3DTextur();
  21. textur->setPolygonTextur( 0, dynamic_cast<Textur*>(tex->getThis()) );
  22. textur->setPolygonTextur( 1, dynamic_cast<Textur*>(tex->getThis()) );
  23. textur->setPolygonTextur( 2, dynamic_cast<Textur*>(tex->getThis()) );
  24. textur->setPolygonTextur( 3, dynamic_cast<Textur*>(tex->getThis()) );
  25. textur->setPolygonTextur( 4, dynamic_cast<Textur*>(tex->getThis()) );
  26. textur->setPolygonTextur( 5, tex );
  27. setModelTextur( textur );
  28. breakTextur = currentGame->zScreen()->zGraphicsApi()->createOrGetTextur( "blocks.ltdb/crack.png", 0 );
  29. }
  30. BasicBlock::~BasicBlock()
  31. {
  32. breakTextur->release();
  33. }
  34. bool BasicBlock::needRenderPolygon( int index )
  35. {
  36. return sideVisible[ index ];
  37. }
  38. Textur* BasicBlock::zEffectTextur()
  39. {
  40. if( hp < maxHP )
  41. return breakTextur;
  42. return 0;
  43. }
  44. float BasicBlock::getEffectPercentage()
  45. {
  46. return 1 - hp / maxHP;
  47. }
  48. DirtBlockType::DirtBlockType()
  49. : BlockType( ID )
  50. {}
  51. void DirtBlockType::loadSuperBlock( Block* zBlock, Framework::StreamReader* zReader )
  52. {
  53. BlockType::loadSuperBlock( zBlock, zReader );
  54. }
  55. Block* DirtBlockType::createBlock( Framework::Vec3<int> position )
  56. {
  57. Block* b = new BasicBlock( DirtBlockType::INSTANCE, "blocks.ltdb/dirt.png", 0, position, 0 ); // TODO: add efective tool
  58. initializeSuperBlock( b );
  59. return b;
  60. }
  61. void DirtBlockType::initializeSuperBlock( Block* zBlock )
  62. {
  63. BasicBlock* block = dynamic_cast<BasicBlock*>(zBlock);
  64. if( !block )
  65. throw "DirtBlockType::createSuperBlock was called with a block witch is not an instance of BasicBlock";
  66. block->transparent = 0;
  67. block->passable = 0;
  68. block->hp = 100;
  69. block->maxHP = 100;
  70. block->hardness = 1;
  71. block->zTool = 0;
  72. block->speedModifier = 1;
  73. }
  74. bool DirtBlockType::needsInstance() const
  75. {
  76. return 1;
  77. }
  78. DirtBlockItemType::DirtBlockItemType()
  79. : BasicBlockItemType( ID )
  80. {}
  81. Item* DirtBlockItemType::createItem() const
  82. {
  83. BasicBlockItem* item = new BasicBlockItem( (ItemType*)this, "Dirt" );
  84. return item;
  85. }
  86. Framework::Model3DTextur* DirtBlockItemType::getItemTextur() const
  87. {
  88. Model3DTextur* textur = new Model3DTextur();
  89. Textur* tex = currentGame->zScreen()->zGraphicsApi()->createOrGetTextur( "blocks.ltdb/dirt.png", 0 );
  90. textur->setPolygonTextur( 0, dynamic_cast<Textur*>(tex->getThis()) );
  91. textur->setPolygonTextur( 1, dynamic_cast<Textur*>(tex->getThis()) );
  92. textur->setPolygonTextur( 2, dynamic_cast<Textur*>(tex->getThis()) );
  93. textur->setPolygonTextur( 3, dynamic_cast<Textur*>(tex->getThis()) );
  94. textur->setPolygonTextur( 4, dynamic_cast<Textur*>(tex->getThis()) );
  95. textur->setPolygonTextur( 5, tex );
  96. return textur;
  97. }