TreeSeblingBlock.h 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #pragma once
  2. #include "Block.h"
  3. class TreeSeblingBlockType;
  4. class TreeSeblingBlock : public Block
  5. {
  6. private:
  7. float seblingTicks;
  8. int seblingTicksMax;
  9. const BlockType* wood;
  10. const BlockType* leaves;
  11. public:
  12. TreeSeblingBlock(int typeId,
  13. Framework::Vec3<int> pos,
  14. int dimensionId,
  15. const BlockType* wood,
  16. const BlockType* leaves);
  17. virtual bool onTick(
  18. TickQueue* zQueue, int numTicks, bool& blocked) override;
  19. virtual void onPostTick() override;
  20. virtual Framework::Text getTargetUIML();
  21. friend TreeSeblingBlockType;
  22. };
  23. class TreeSeblingBlockType : public BlockType
  24. {
  25. private:
  26. Framework::Text itemTypeName;
  27. int itemTypeId;
  28. bool transparent;
  29. bool passable;
  30. float speedModifier;
  31. bool interactable;
  32. Framework::Text woodTypeName;
  33. Framework::Text leavesTypeName;
  34. int woodTypeId;
  35. int leavesTypeId;
  36. public:
  37. TreeSeblingBlockType(Framework::Text itemTypeName,
  38. ModelInfo* model,
  39. Framework::Text woodTypeName,
  40. Framework::Text leavesTypeName,
  41. Framework::Text name,
  42. int mapColor,
  43. float hardness,
  44. Framework::RCArray<Framework::Text> groupNames);
  45. protected:
  46. virtual void createSuperBlock(Block* zBlock, Item* zItem) const override;
  47. virtual void loadSuperBlock(Block* zBlock,
  48. Framework::StreamReader* zReader,
  49. int dimensionId) const override;
  50. virtual void saveSuperBlock(
  51. Block* zBlock, Framework::StreamWriter* zWriter) const override;
  52. virtual Item* createItem() const override;
  53. virtual Block* createBlock(
  54. Framework::Vec3<int> position, int dimensionId) const override;
  55. public:
  56. virtual bool initialize(Game* zGame) override;
  57. Framework::Text getItemTypeName() const;
  58. Framework::Text getWoodTypeName() const;
  59. Framework::Text getLeavesTypeName() const;
  60. virtual ItemType* createItemType() const override;
  61. };
  62. class TreeSeblingBlockTypeFactory
  63. : public SubTypeFactory<BlockType, TreeSeblingBlockType>
  64. {
  65. public:
  66. TreeSeblingBlockTypeFactory();
  67. TreeSeblingBlockType* fromJson(
  68. Framework::JSON::JSONObject* zJson) const override;
  69. Framework::JSON::JSONObject* toJson(
  70. TreeSeblingBlockType* zObject) const override;
  71. Framework::JSON::Validator::JSONValidator* getValidator(
  72. Framework::JSON::Validator::ObjectValidationBuilder<
  73. Framework::JSON::Validator::JSONValidator>* builder) const override;
  74. Framework::Text getTypeToken() const override;
  75. };