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 DirtBlockType : public BasicBlockType
  36. {
  37. REGISTRABLE( DirtBlockType )
  38. protected:
  39. DirtBlockType();
  40. };
  41. REGISTER( DirtBlockType, BlockType )
  42. class DirtBlockItemType : public BasicBlockItemType
  43. {
  44. REGISTRABLE( DirtBlockItemType )
  45. protected:
  46. DirtBlockItemType();
  47. public:
  48. virtual Item* createItem() const override;
  49. };
  50. REGISTER( DirtBlockItemType, ItemType )
  51. // Stone
  52. class StoneBlockType : public BasicBlockType
  53. {
  54. REGISTRABLE( StoneBlockType )
  55. protected:
  56. StoneBlockType();
  57. };
  58. REGISTER( StoneBlockType, BlockType )
  59. class StoneBlockItemType : public BasicBlockItemType
  60. {
  61. REGISTRABLE( StoneBlockItemType )
  62. protected:
  63. StoneBlockItemType();
  64. public:
  65. virtual Item* createItem() const override;
  66. };
  67. REGISTER( StoneBlockItemType, ItemType )
  68. // Sand
  69. class SandBlockType : public BasicBlockType
  70. {
  71. REGISTRABLE( SandBlockType )
  72. protected:
  73. SandBlockType();
  74. };
  75. REGISTER( SandBlockType, BlockType )
  76. class SandBlockItemType : public BasicBlockItemType
  77. {
  78. REGISTRABLE( SandBlockItemType )
  79. protected:
  80. SandBlockItemType();
  81. public:
  82. virtual Item* createItem() const override;
  83. };
  84. REGISTER( SandBlockItemType, ItemType )
  85. // Oak Wood
  86. class OakBlockType : public BasicBlockType
  87. {
  88. REGISTRABLE( OakBlockType )
  89. protected:
  90. OakBlockType();
  91. };
  92. REGISTER( OakBlockType, BlockType )
  93. class OakBlockItemType : public BasicBlockItemType
  94. {
  95. REGISTRABLE( OakBlockItemType )
  96. protected:
  97. OakBlockItemType();
  98. public:
  99. virtual Item* createItem() const override;
  100. };
  101. REGISTER( OakBlockItemType, ItemType )
  102. // Leaves
  103. class LeavesBlockType : public BasicBlockType
  104. {
  105. REGISTRABLE( LeavesBlockType )
  106. protected:
  107. LeavesBlockType();
  108. };
  109. REGISTER( LeavesBlockType, BlockType )
  110. class LeavesBlockItemType : public BasicBlockItemType
  111. {
  112. REGISTRABLE( LeavesBlockItemType )
  113. protected:
  114. LeavesBlockItemType();
  115. public:
  116. virtual Item* createItem() const override;
  117. };
  118. REGISTER( LeavesBlockItemType, ItemType )
  119. // Gravel
  120. class GravelBlockType : public BasicBlockType
  121. {
  122. REGISTRABLE( GravelBlockType )
  123. protected:
  124. GravelBlockType();
  125. };
  126. REGISTER( GravelBlockType, BlockType )
  127. class GravelBlockItemType : public BasicBlockItemType
  128. {
  129. REGISTRABLE( GravelBlockItemType )
  130. protected:
  131. GravelBlockItemType();
  132. public:
  133. virtual Item* createItem() const override;
  134. };
  135. REGISTER( GravelBlockItemType, ItemType )
  136. // Granite
  137. class GraniteBlockType : public BasicBlockType
  138. {
  139. REGISTRABLE( GraniteBlockType )
  140. protected:
  141. GraniteBlockType();
  142. };
  143. REGISTER( GraniteBlockType, BlockType )
  144. class GraniteBlockItemType : public BasicBlockItemType
  145. {
  146. REGISTRABLE( GraniteBlockItemType )
  147. protected:
  148. GraniteBlockItemType();
  149. public:
  150. virtual Item* createItem() const override;
  151. };
  152. REGISTER( GraniteBlockItemType, ItemType )
  153. // Cobble
  154. class CobbleBlockType : public BasicBlockType
  155. {
  156. REGISTRABLE( CobbleBlockType )
  157. protected:
  158. CobbleBlockType();
  159. };
  160. REGISTER( CobbleBlockType, BlockType )
  161. class CobbleBlockItemType : public BasicBlockItemType
  162. {
  163. REGISTRABLE( CobbleBlockItemType )
  164. protected:
  165. CobbleBlockItemType();
  166. public:
  167. virtual Item* createItem() const override;
  168. };
  169. REGISTER( CobbleBlockItemType, ItemType )
  170. // Birch Wood
  171. class BirchBlockType : public BasicBlockType
  172. {
  173. REGISTRABLE( BirchBlockType )
  174. protected:
  175. BirchBlockType();
  176. };
  177. REGISTER( BirchBlockType, BlockType )
  178. class BirchBlockItemType : public BasicBlockItemType
  179. {
  180. REGISTRABLE( BirchBlockItemType )
  181. protected:
  182. BirchBlockItemType();
  183. public:
  184. virtual Item* createItem() const override;
  185. };
  186. REGISTER( BirchBlockItemType, ItemType )
  187. // Beech Wood
  188. class BeechBlockType : public BasicBlockType
  189. {
  190. REGISTRABLE( BeechBlockType )
  191. protected:
  192. BeechBlockType();
  193. };
  194. REGISTER( BeechBlockType, BlockType )
  195. class BeechBlockItemType : public BasicBlockItemType
  196. {
  197. REGISTRABLE( BeechBlockItemType )
  198. protected:
  199. BeechBlockItemType();
  200. public:
  201. virtual Item* createItem() const override;
  202. };
  203. REGISTER( BeechBlockItemType, ItemType )
  204. // Basalt
  205. class BasaltBlockType : public BasicBlockType
  206. {
  207. REGISTRABLE( BasaltBlockType )
  208. protected:
  209. BasaltBlockType();
  210. };
  211. REGISTER( BasaltBlockType, BlockType )
  212. class BasaltBlockItemType : public BasicBlockItemType
  213. {
  214. REGISTRABLE( BasaltBlockItemType )
  215. protected:
  216. BasaltBlockItemType();
  217. public:
  218. virtual Item* createItem() const override;
  219. };
  220. REGISTER( BasaltBlockItemType, ItemType )