FluidBlock.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #pragma once
  2. #include "Block.h"
  3. #include "TickQueue.h"
  4. class FluidBlockType;
  5. class FluidBlock : public Block
  6. {
  7. private:
  8. char flowOptions;
  9. char distanceToSource;
  10. int nextFlow;
  11. Framework::Vec3<float> lightWeights;
  12. bool neighborChanged;
  13. char maxFlowDistance;
  14. protected:
  15. virtual bool onTick(
  16. TickQueue* zQueue, int numTicks, bool& blocked) override;
  17. virtual void onPostTick() override;
  18. void broadcastFlow();
  19. void doFlow();
  20. public:
  21. FluidBlock(int typeId,
  22. Framework::Vec3<int> pos,
  23. int dimensionId,
  24. Framework::Vec3<float> lightWeights);
  25. virtual ~FluidBlock();
  26. virtual void setNeighbourType(Direction dir, int type) override;
  27. virtual void sendModelInfo(NetworkMessage* zMessage) override;
  28. virtual void filterPassingLight(unsigned char rgb[3]) const override;
  29. char getDistanceToSource() const;
  30. char getFlowOptions() const;
  31. friend FluidBlockType;
  32. };
  33. class FluidBlockType : public BlockType
  34. {
  35. private:
  36. Framework::Vec3<float> lightWeights;
  37. int ticktsToFlow;
  38. char flowDistance;
  39. protected:
  40. virtual void loadSuperBlock(Block* zBlock,
  41. Framework::StreamReader* zReader,
  42. int dimensionId) const override;
  43. virtual void saveSuperBlock(
  44. Block* zBlock, Framework::StreamWriter* zWriter) const override;
  45. virtual Item* createItem() const override;
  46. virtual Block* createBlock(
  47. Framework::Vec3<int> position, int dimesionId) const override;
  48. public:
  49. FluidBlockType(int id,
  50. ModelInfo model,
  51. const char* name,
  52. int mapColor,
  53. Framework::Vec3<float> lightWeights,
  54. int ticktsToFlow,
  55. char flowDistance);
  56. bool isFluid() const override;
  57. int getTicktsToFlow() const;
  58. char getFlowDistance() const override;
  59. };