#pragma once #include "DimensionGenerator.h" #include "GeneratorRule.h" #include "GeneratorTemplate.h" class TypeRegistry : public Framework::ReferenceCounter { private: Framework::RCArray generatorRules; Framework::RCArray dimensionGenerators; Framework::RCArray generatorTemplates; public: TypeRegistry(); void registerGeneratorRuleFactory(GeneratorRuleFactory* factory); GeneratorRule* createGeneratorRule( Framework::JSON::JSONValue* zConfig, JExpressionMemory* zMemory); Framework::JSON::Validator::JSONValidator* getGeneratorRuleValidator(); void registerDimensionGeneratorFactory(DimensionGeneratorFactory* factory); DimensionGenerator* createDimensionGenerator( Framework::JSON::JSONValue* zConfig, int worldSeed); Framework::JSON::Validator::JSONValidator* getDimensionGeneratorValidator(); const Framework::RCArray& getDimensionGeneratorFactories() const; void registerGeneratorTemplate(GeneratorTemplateFactory* factory); GeneratorTemplate* createGeneratorTemplate( Framework::JSON::JSONValue* zConfig); Framework::JSON::Validator::JSONValidator* getGeneratorTemplateValidator(); };