FluidBlock.h 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #pragma once
  2. #include "Block.h"
  3. #include "TickQueue.h"
  4. class FluidBlockType;
  5. class FluidBlock : public Block
  6. {
  7. private:
  8. Directions flowDir;
  9. short fluidAmount;
  10. short lastBroadcastedAmount;
  11. int nextFlow;
  12. protected:
  13. virtual bool onTick(
  14. TickQueue* zQueue, int numTicks, bool& blocked) override;
  15. virtual void onPostTick() override;
  16. void broadcastAmount();
  17. public:
  18. FluidBlock(int typeId, Framework::Vec3<int> pos);
  19. virtual ~FluidBlock();
  20. static void sortByAmound(FluidBlock** array, int count);
  21. friend FluidBlockType;
  22. };
  23. class FluidBlockType : public BlockType
  24. {
  25. protected:
  26. virtual void loadSuperBlock(Block* zBlock,
  27. Framework::StreamReader* zReader,
  28. int dimensionId) const override;
  29. virtual void saveSuperBlock(
  30. Block* zBlock, Framework::StreamWriter* zWriter) const override;
  31. virtual Item* createItem() const override;
  32. virtual Block* createBlock(Framework::Vec3<int> position) const override;
  33. public:
  34. FluidBlockType(int id, ModelInfo model, const char* name);
  35. };