#include "BlockTypeGeneratorRule.h" #include "Game.h" BlockTypeGeneratorRule::BlockTypeGeneratorRule() : GeneratorRule(), blockType(0) {} Framework::Either BlockTypeGeneratorRule::createBlock( int x, int y, int z, int dimensionId) { return blockType; } void BlockTypeGeneratorRule::setBlockTypeId(int blockType) { this->blockType = blockType; } int BlockTypeGeneratorRule::getBlockTypeId() const { return blockType; } BlockTypeGeneratorRuleFactory::BlockTypeGeneratorRuleFactory() : GeneratorRuleFactory() {} BlockTypeGeneratorRule* BlockTypeGeneratorRuleFactory::createValue( Framework::JSON::JSONObject* zJson) const { return new BlockTypeGeneratorRule(); } void BlockTypeGeneratorRuleFactory::fromJson( BlockTypeGeneratorRule* zResult, Framework::JSON::JSONObject* zJson) const { zResult->setBlockTypeId(Game::INSTANCE->getBlockTypeId( zJson->zValue("blockType")->asString()->getString())); GeneratorRuleFactory::fromJson(zResult, zJson); } void BlockTypeGeneratorRuleFactory::toJson( BlockTypeGeneratorRule* zObject, Framework::JSON::JSONObject* zResult) const { zResult->addValue("blockType", new Framework::JSON::JSONString( Game::INSTANCE->zBlockType(zObject->getBlockTypeId())->getName())); GeneratorRuleFactory::toJson(zObject, zResult); } JSONObjectValidationBuilder* BlockTypeGeneratorRuleFactory::addToValidator( JSONObjectValidationBuilder* builder) const { Framework::RCArray blockTypeNames; for (int i = 0; i < Game::INSTANCE->getBlockTypeCount(); i++) { if (Game::INSTANCE->zBlockType(i)) { blockTypeNames.add( new Framework::Text(Game::INSTANCE->zBlockType(i)->getName())); } } return GeneratorRuleFactory::addToValidator( builder->withRequiredString("blockType") ->whichIsOneOf(blockTypeNames) ->finishString()); } Framework::Text BlockTypeGeneratorRuleFactory::getTypeToken() const { return "blockType"; }