BasicBlocks.h 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283
  1. #pragma once
  2. #include "Block.h"
  3. #include "BlockType.h"
  4. #include "Item.h"
  5. class BlockType;
  6. class ItemType;
  7. class BasicBlockType;
  8. class BasicBlock : public Block
  9. {
  10. public:
  11. BasicBlock( const BlockType* zType, ItemType* zTool, Framework::Vec3<int> pos );
  12. virtual bool onTick( TickQueue* zQueue, int numTicks, bool& blocked ) override;
  13. virtual void onPostTick() override;
  14. friend BasicBlockType;
  15. };
  16. class BasicBlockType : public BlockType
  17. {
  18. private:
  19. int itemType;
  20. protected:
  21. bool transparent;
  22. bool passable;
  23. float maxHp;
  24. float hardness;
  25. ItemType* zTool;
  26. float speedModifier;
  27. bool interactable;
  28. BasicBlockType( int typeId, int itemTypeId );
  29. virtual void createSuperBlock( Block* zBlock, Item* zItem ) const override;
  30. public:
  31. virtual Block* createBlock( Framework::Vec3<int> position ) const override;
  32. virtual Item* createItem() const override;
  33. };
  34. // Dirt
  35. class DirtBlockItemType : public BasicBlockItemType
  36. {
  37. REGISTRABLE( DirtBlockItemType )
  38. protected:
  39. DirtBlockItemType();
  40. public:
  41. virtual Item* createItem() const override;
  42. };
  43. REGISTER( DirtBlockItemType, ItemType )
  44. class DirtBlockType : public BasicBlockType
  45. {
  46. REGISTRABLE( DirtBlockType )
  47. protected:
  48. DirtBlockType();
  49. };
  50. REGISTER( DirtBlockType, BlockType )
  51. // Stone
  52. class StoneBlockItemType : public BasicBlockItemType
  53. {
  54. REGISTRABLE( StoneBlockItemType )
  55. protected:
  56. StoneBlockItemType();
  57. public:
  58. virtual Item* createItem() const override;
  59. };
  60. REGISTER( StoneBlockItemType, ItemType )
  61. class StoneBlockType : public BasicBlockType
  62. {
  63. REGISTRABLE( StoneBlockType )
  64. protected:
  65. StoneBlockType();
  66. };
  67. REGISTER( StoneBlockType, BlockType )
  68. // Sand
  69. class SandBlockItemType : public BasicBlockItemType
  70. {
  71. REGISTRABLE( SandBlockItemType )
  72. protected:
  73. SandBlockItemType();
  74. public:
  75. virtual Item* createItem() const override;
  76. };
  77. REGISTER( SandBlockItemType, ItemType )
  78. class SandBlockType : public BasicBlockType
  79. {
  80. REGISTRABLE( SandBlockType )
  81. protected:
  82. SandBlockType();
  83. };
  84. REGISTER( SandBlockType, BlockType )
  85. // Oak Wood
  86. class OakBlockItemType : public BasicBlockItemType
  87. {
  88. REGISTRABLE( OakBlockItemType )
  89. protected:
  90. OakBlockItemType();
  91. public:
  92. virtual Item* createItem() const override;
  93. };
  94. REGISTER( OakBlockItemType, ItemType )
  95. class OakBlockType : public BasicBlockType
  96. {
  97. REGISTRABLE( OakBlockType )
  98. protected:
  99. OakBlockType();
  100. };
  101. REGISTER( OakBlockType, BlockType )
  102. // Leaves
  103. class LeavesBlockItemType : public BasicBlockItemType
  104. {
  105. REGISTRABLE( LeavesBlockItemType )
  106. protected:
  107. LeavesBlockItemType();
  108. public:
  109. virtual Item* createItem() const override;
  110. };
  111. REGISTER( LeavesBlockItemType, ItemType )
  112. class LeavesBlockType : public BasicBlockType
  113. {
  114. REGISTRABLE( LeavesBlockType )
  115. protected:
  116. LeavesBlockType();
  117. };
  118. REGISTER( LeavesBlockType, BlockType )
  119. // Gravel
  120. class GravelBlockItemType : public BasicBlockItemType
  121. {
  122. REGISTRABLE( GravelBlockItemType )
  123. protected:
  124. GravelBlockItemType();
  125. public:
  126. virtual Item* createItem() const override;
  127. };
  128. REGISTER( GravelBlockItemType, ItemType )
  129. class GravelBlockType : public BasicBlockType
  130. {
  131. REGISTRABLE( GravelBlockType )
  132. protected:
  133. GravelBlockType();
  134. };
  135. REGISTER( GravelBlockType, BlockType )
  136. // Granite
  137. class GraniteBlockItemType : public BasicBlockItemType
  138. {
  139. REGISTRABLE( GraniteBlockItemType )
  140. protected:
  141. GraniteBlockItemType();
  142. public:
  143. virtual Item* createItem() const override;
  144. };
  145. REGISTER( GraniteBlockItemType, ItemType )
  146. class GraniteBlockType : public BasicBlockType
  147. {
  148. REGISTRABLE( GraniteBlockType )
  149. protected:
  150. GraniteBlockType();
  151. };
  152. REGISTER( GraniteBlockType, BlockType )
  153. // Cobble
  154. class CobbleBlockItemType : public BasicBlockItemType
  155. {
  156. REGISTRABLE( CobbleBlockItemType )
  157. protected:
  158. CobbleBlockItemType();
  159. public:
  160. virtual Item* createItem() const override;
  161. };
  162. REGISTER( CobbleBlockItemType, ItemType )
  163. class CobbleBlockType : public BasicBlockType
  164. {
  165. REGISTRABLE( CobbleBlockType )
  166. protected:
  167. CobbleBlockType();
  168. };
  169. REGISTER( CobbleBlockType, BlockType )
  170. // Birch Wood
  171. class BirchBlockItemType : public BasicBlockItemType
  172. {
  173. REGISTRABLE( BirchBlockItemType )
  174. protected:
  175. BirchBlockItemType();
  176. public:
  177. virtual Item* createItem() const override;
  178. };
  179. REGISTER( BirchBlockItemType, ItemType )
  180. class BirchBlockType : public BasicBlockType
  181. {
  182. REGISTRABLE( BirchBlockType )
  183. protected:
  184. BirchBlockType();
  185. };
  186. REGISTER( BirchBlockType, BlockType )
  187. // Beech Wood
  188. class BeechBlockItemType : public BasicBlockItemType
  189. {
  190. REGISTRABLE( BeechBlockItemType )
  191. protected:
  192. BeechBlockItemType();
  193. public:
  194. virtual Item* createItem() const override;
  195. };
  196. REGISTER( BeechBlockItemType, ItemType )
  197. class BeechBlockType : public BasicBlockType
  198. {
  199. REGISTRABLE( BeechBlockType )
  200. protected:
  201. BeechBlockType();
  202. };
  203. REGISTER( BeechBlockType, BlockType )
  204. // Basalt
  205. class BasaltBlockItemType : public BasicBlockItemType
  206. {
  207. REGISTRABLE( BasaltBlockItemType )
  208. protected:
  209. BasaltBlockItemType();
  210. public:
  211. virtual Item* createItem() const override;
  212. };
  213. REGISTER( BasaltBlockItemType, ItemType )
  214. class BasaltBlockType : public BasicBlockType
  215. {
  216. REGISTRABLE( BasaltBlockType )
  217. protected:
  218. BasaltBlockType();
  219. };
  220. REGISTER( BasaltBlockType, BlockType )