BlockTypeGeneratorRule.cpp 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #include "BlockTypeGeneratorRule.h"
  2. #include "Game.h"
  3. BlockTypeGeneratorRule::BlockTypeGeneratorRule()
  4. : GeneratorRule(),
  5. blockType(0)
  6. {}
  7. Framework::Either<Block*, int> BlockTypeGeneratorRule::createBlock(
  8. int x, int y, int z, int dimensionId)
  9. {
  10. return blockType;
  11. }
  12. void BlockTypeGeneratorRule::setBlockTypeId(int blockType)
  13. {
  14. this->blockType = blockType;
  15. }
  16. int BlockTypeGeneratorRule::getBlockTypeId() const
  17. {
  18. return blockType;
  19. }
  20. BlockTypeGeneratorRuleFactory::BlockTypeGeneratorRuleFactory()
  21. : GeneratorRuleFactory()
  22. {}
  23. BlockTypeGeneratorRule* BlockTypeGeneratorRuleFactory::createValue(
  24. Framework::JSON::JSONObject* zJson) const
  25. {
  26. return new BlockTypeGeneratorRule();
  27. }
  28. void BlockTypeGeneratorRuleFactory::fromJson(
  29. BlockTypeGeneratorRule* zResult, Framework::JSON::JSONObject* zJson) const
  30. {
  31. zResult->setBlockTypeId(Game::INSTANCE->getBlockTypeId(
  32. zJson->zValue("blockType")->asString()->getString()));
  33. GeneratorRuleFactory::fromJson(zResult, zJson);
  34. }
  35. void BlockTypeGeneratorRuleFactory::toJson(
  36. BlockTypeGeneratorRule* zObject, Framework::JSON::JSONObject* zResult) const
  37. {
  38. zResult->addValue("blockType",
  39. new Framework::JSON::JSONString(
  40. Game::INSTANCE->zBlockType(zObject->getBlockTypeId())->getName()));
  41. GeneratorRuleFactory::toJson(zObject, zResult);
  42. }
  43. JSONObjectValidationBuilder* BlockTypeGeneratorRuleFactory::addToValidator(
  44. JSONObjectValidationBuilder* builder) const
  45. {
  46. Framework::RCArray<Framework::Text> blockTypeNames;
  47. for (int i = 0; i < Game::INSTANCE->getBlockTypeCount(); i++)
  48. {
  49. if (Game::INSTANCE->zBlockType(i))
  50. {
  51. blockTypeNames.add(
  52. new Framework::Text(Game::INSTANCE->zBlockType(i)->getName()));
  53. }
  54. }
  55. return GeneratorRuleFactory::addToValidator(
  56. builder->withRequiredString("blockType")
  57. ->whichIsOneOf(blockTypeNames)
  58. ->finishString());
  59. }
  60. Framework::Text BlockTypeGeneratorRuleFactory::getTypeToken() const
  61. {
  62. return "blockType";
  63. }