Grass.cpp 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. #include "Grass.h"
  2. #include "AddEntityUpdate.h"
  3. #include "Game.h"
  4. #include "ItemEntity.h"
  5. GrassBlock::GrassBlock(int typeId, Framework::Vec3<int> pos, int dimensionId)
  6. : AdditionalItemSpawningBlock(typeId, pos, dimensionId)
  7. {
  8. tickSource = 1;
  9. transparent = 1;
  10. }
  11. bool GrassBlock::onTick(TickQueue* zQueue, int numTicks, bool& blocked)
  12. {
  13. // TODO: spread to neighbor blocks if light level is hight enought
  14. return 0;
  15. }
  16. void GrassBlock::onPostTick() {}
  17. void GrassBlock::filterPassingLight(unsigned char rgb[3]) const
  18. {
  19. rgb[0] = (unsigned char)(rgb[0] * 0.7);
  20. rgb[1] = (unsigned char)(rgb[1] * 0.9);
  21. rgb[2] = (unsigned char)(rgb[2] * 0.7);
  22. }
  23. GrassBlockType::GrassBlockType()
  24. : AdditionalItemSpawningBlockType()
  25. {
  26. setTransparent(true);
  27. setPassable(true);
  28. setSpeedModifier(0.5f);
  29. }
  30. ItemType* GrassBlockType::createItemType() const
  31. {
  32. return 0;
  33. }
  34. void GrassBlockType::createSuperBlock(Block* zBlock, Item* zItem) const
  35. {
  36. AdditionalItemSpawningBlockType::createSuperBlock(zBlock, zItem);
  37. }
  38. void GrassBlockType::loadSuperBlock(
  39. Block* zBlock, Framework::StreamReader* zReader, int dimensionId) const
  40. {
  41. AdditionalItemSpawningBlockType::loadSuperBlock(
  42. zBlock, zReader, dimensionId);
  43. }
  44. void GrassBlockType::saveSuperBlock(
  45. Block* zBlock, Framework::StreamWriter* zWriter) const
  46. {
  47. AdditionalItemSpawningBlockType::saveSuperBlock(zBlock, zWriter);
  48. }
  49. Item* GrassBlockType::createItem() const
  50. {
  51. return 0;
  52. }
  53. Block* GrassBlockType::createBlock(
  54. Framework::Vec3<int> position, int dimensionId) const
  55. {
  56. return new GrassBlock(getId(), position, dimensionId);
  57. }
  58. GrassBlockTypeFactory::GrassBlockTypeFactory()
  59. : SubTypeFactory()
  60. {}
  61. GrassBlockType* GrassBlockTypeFactory::createValue(
  62. Framework::JSON::JSONObject* zJson) const
  63. {
  64. return new GrassBlockType();
  65. }
  66. void GrassBlockTypeFactory::fromJson(
  67. GrassBlockType* zResult, Framework::JSON::JSONObject* zJson) const
  68. {
  69. super.fromJson(zResult, zJson);
  70. }
  71. void GrassBlockTypeFactory::toJson(
  72. GrassBlockType* zObject, Framework::JSON::JSONObject* zResult) const
  73. {
  74. super.toJson(zObject, zResult);
  75. }
  76. JSONObjectValidationBuilder* GrassBlockTypeFactory::addToValidator(
  77. JSONObjectValidationBuilder* builder) const
  78. {
  79. return super.addToValidator(builder);
  80. }
  81. Framework::Text GrassBlockTypeFactory::getTypeToken() const
  82. {
  83. return "grass";
  84. }