PlaceBlockUpdate.cpp 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #include "PlaceBlockUpdate.h"
  2. #include "Block.h"
  3. #include "Dimension.h"
  4. PlaceBlockUpdate::PlaceBlockUpdate( Block* block, int dimensionId )
  5. : WorldUpdate( PlaceBlockUpdateType::ID, dimensionId, block->getPos(), block->getPos() ),
  6. block( block )
  7. {}
  8. PlaceBlockUpdate::~PlaceBlockUpdate()
  9. {
  10. block->release();
  11. }
  12. void PlaceBlockUpdate::onUpdate( Dimension* zDimension )
  13. {
  14. zDimension->placeBlock( dynamic_cast<Block*>(block->getThis()) );
  15. }
  16. void PlaceBlockUpdate::write( Framework::StreamWriter* zWriter )
  17. {
  18. zWriter->schreibe( (char*)&PlaceBlockUpdateType::ID, 4 );
  19. int dimensionID = getAffectedDimension();
  20. zWriter->schreibe( (char*)&dimensionID, 4 );
  21. auto pos = block->getPos();
  22. zWriter->schreibe( (char*)&pos.x, 4 );
  23. zWriter->schreibe( (char*)&pos.y, 4 );
  24. zWriter->schreibe( (char*)&pos.z, 4 );
  25. unsigned char id = (unsigned char)block->zBlockType()->getId();
  26. zWriter->schreibe( (char*)&id, 2 );
  27. block->zBlockType()->saveBlock( block, zWriter );
  28. }
  29. Block* PlaceBlockUpdate::zBlock() const
  30. {
  31. return block;
  32. }
  33. PlaceBlockUpdateType::PlaceBlockUpdateType()
  34. : WorldUpdateType( ID )
  35. {}