FluidBlock.h 1003 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  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. int nextFlow;
  11. protected:
  12. virtual bool onTick(
  13. TickQueue* zQueue, int numTicks, bool& blocked) override;
  14. virtual void onPostTick() override;
  15. public:
  16. FluidBlock(int typeId, Framework::Vec3<int> pos);
  17. virtual ~FluidBlock();
  18. static void sortByAmound(FluidBlock** array, int count);
  19. friend FluidBlockType;
  20. };
  21. class FluidBlockType : public BlockType
  22. {
  23. protected:
  24. virtual void loadSuperBlock(Block* zBlock,
  25. Framework::StreamReader* zReader,
  26. int dimensionId) const override;
  27. virtual void saveSuperBlock(
  28. Block* zBlock, Framework::StreamWriter* zWriter) const override;
  29. virtual Item* createItem() const override;
  30. virtual Block* createBlock(Framework::Vec3<int> position) const override;
  31. public:
  32. FluidBlockType(int id, ModelInfo model, const char* name);
  33. };