TypeRegistry.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. #pragma once
  2. #include "DimensionGenerator.h"
  3. #include "GeneratorRule.h"
  4. #include "GeneratorTemplate.h"
  5. #include "Dimension.h"
  6. class TypeRegistry : public Framework::ReferenceCounter
  7. {
  8. private:
  9. Framework::RCArray<GeneratorRuleFactory> generatorRules;
  10. Framework::RCArray<DimensionGeneratorFactory> dimensionGenerators;
  11. Framework::RCArray<DimensionFactory> dimensionFactories;
  12. Framework::RCArray<GeneratorTemplateFactory> generatorTemplates;
  13. public:
  14. TypeRegistry();
  15. void registerGeneratorRuleFactory(GeneratorRuleFactory* factory);
  16. GeneratorRule* createGeneratorRule(
  17. Framework::JSON::JSONValue* zConfig, JExpressionMemory* zMemory);
  18. Framework::JSON::Validator::JSONValidator* getGeneratorRuleValidator();
  19. void registerDimensionGeneratorFactory(DimensionGeneratorFactory* factory);
  20. DimensionGenerator* createDimensionGenerator(
  21. Framework::JSON::JSONValue* zConfig, int worldSeed);
  22. Framework::JSON::Validator::JSONValidator* getDimensionGeneratorValidator();
  23. const Framework::RCArray<DimensionGeneratorFactory>&
  24. getDimensionGeneratorFactories() const;
  25. void registerDimension(DimensionFactory* factory);
  26. Dimension* createDimension(int id);
  27. void registerGeneratorTemplate(GeneratorTemplateFactory* factory);
  28. GeneratorTemplate* createGeneratorTemplate(
  29. Framework::JSON::JSONValue* zConfig);
  30. Framework::JSON::Validator::JSONValidator* getGeneratorTemplateValidator();
  31. };