TypeRegistry.cpp 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. #include "TypeRegistry.h"
  2. #include <File.h>
  3. #include "Animal.h"
  4. #include "BasicBlocks.h"
  5. #include "BasicItems.h"
  6. #include "BasicTool.h"
  7. #include "BlockFilter.h"
  8. #include "BlockInstanceGeneratorRule.h"
  9. #include "BlockReplacementDrop.h"
  10. #include "BlockTypeGeneratorRule.h"
  11. #include "Chest.h"
  12. #include "DefaultBlockItemDrop.h"
  13. #include "DefaultInventoryDrop.h"
  14. #include "DimensionGenerator.h"
  15. #include "DropChanceCondition.h"
  16. #include "DropConditionOperator.h"
  17. #include "DropUsedItemCondition.h"
  18. #include "FireBasedProcessingBlockComponent.h"
  19. #include "FloatDistribution.h"
  20. #include "FluidBlock.h"
  21. #include "FluidContainer.h"
  22. #include "Grass.h"
  23. #include "GrowingPlant.h"
  24. #include "ItemSlot.h"
  25. #include "JsonExpression.h"
  26. #include "LightSources.h"
  27. #include "ModelInfo.h"
  28. #include "OpenDialogInteractionConfig.h"
  29. #include "Orientation.h"
  30. #include "PlaceableProof.h"
  31. #include "PlantConfig.h"
  32. #include "Quest.h"
  33. #include "Recipie.h"
  34. #include "RecipieGroupConfig.h"
  35. #include "SpecificItemDrop.h"
  36. #include "TreeSeblingBlock.h"
  37. #include "TreeTemplate.h"
  38. #include "UICraftingGrid.h"
  39. #include "UICraftingProgress.h"
  40. #include "UIDialogElement.h"
  41. #include "UIFuelState.h"
  42. #include "UIInventory.h"
  43. #include "UIReference.h"
  44. #include "UIText.h"
  45. TypeRegistry::TypeRegistry()
  46. : ReferenceCounter()
  47. {
  48. // register quest datastructures
  49. registerType(new QuestRequirementStorageType());
  50. registerType(new QuestStorageType());
  51. registerType(new QuestPartyType());
  52. registerType(new QuestType());
  53. registerType(new QuestCollectionType());
  54. registerSubType(new QuestRequirementOpenDialogType());
  55. registerSubType(new QuestRequirementBlockBreakType());
  56. registerSubType(new QuestRequirementBlockPlaceType());
  57. registerSubType(new QuestRequirementBlockInteractType());
  58. registerSubType(new QuestRequirementItemInInventoryType());
  59. registerType(new ItemJsonType());
  60. registerType(new ItemStackInfoType());
  61. registerSubType(new QuestRewardGiveItemsType());
  62. // block types
  63. registerType(new ModelInfoFactory());
  64. registerSubType(new BasicBlockTypeFactory<BasicBlockType>());
  65. registerSubType(new BasicLightSourceBlockTypeFactory());
  66. registerSubType(new ChestBlockTypeFactory());
  67. registerSubType(new FluidBlockTypeFactory());
  68. registerSubType(new GrassBlockTypeFactory());
  69. registerSubType(new GrowingPlantBlockTypeFactory());
  70. registerSubType(new TreeSeblingBlockTypeFactory());
  71. // block filter
  72. registerSubType(new BlockFilterAndFactory());
  73. registerSubType(new BlockFilterOrFactory());
  74. registerSubType(new BlockFilterNotFactory());
  75. registerSubType(new BlockFilterBlockTypeFactory());
  76. registerSubType(new BlockFilterTypeGroupFactory());
  77. registerSubType(new BlockFilterMaxHardnessFactory());
  78. registerSubType(new BlockFilterMinHardnessFactory());
  79. registerSubType(new BlockFilterMaxHeatFactory());
  80. // placeable proof
  81. registerSubType(new PlaceableProofAndFactory());
  82. registerSubType(new PlaceableProofOrFactory());
  83. registerSubType(new PlaceableProofNotFactory());
  84. registerSubType(new PlaceableProofBlockFilterFactory());
  85. // item types
  86. registerSubType(new BasicBlockItemTypeFactory());
  87. registerSubType(new BasicItemTypeFactory());
  88. registerSubType(new BasicToolItemTypeFactory());
  89. registerSubType(new FluidContainerItemTypeFactory());
  90. // item skills
  91. registerSubType(new XPBasedLevelUpRuleFactory());
  92. registerType(new DamagingItemSkillConfigFactory());
  93. registerSubType(new DamagingItemSkillFactory());
  94. registerType(new BlockReplaceItemSkillConfigFactory());
  95. registerSubType(new BlockReplaceItemSkillFactory());
  96. registerType(new FluidContainerItemSkillConfigFactory());
  97. registerSubType(new FluidContainerItemSkillFactory());
  98. // reipies
  99. registerType(new RecipieGroupConfigFactory());
  100. registerType(new RecipieInputFactory());
  101. registerType(new RecipieOutputFactory());
  102. registerSubType(new ShapedRecipieFactory());
  103. registerSubType(new UnshapedRecipieFactory<UnshapedRecipie>());
  104. registerSubType(new MachineRecipieFactory());
  105. // item modifiers
  106. registerSubType(new ConsumeItemModifierFactory());
  107. registerSubType(new DoNothingModifierFactory());
  108. registerSubType(new AttributeItemModifierFactory());
  109. registerSubType(new CombinedItemModifierFactory());
  110. // item filters
  111. registerSubType(new CombinedItemFilterFactory());
  112. registerSubType(new AnyItemFilterFactory());
  113. registerSubType(new TypeItemFilterFactory());
  114. registerSubType(new GroupItemFilterFactory());
  115. // json Expressions
  116. registerSubType(new JVariableFloatExpressionFactory());
  117. registerSubType(new JVariableBoolExpressionFactory());
  118. registerSubType(new JConstantFloatExpressionFactory());
  119. registerSubType(new JConstantBoolExpressionFactory());
  120. registerSubType(new JNoiseFloatExpressionFactory());
  121. registerSubType(new JOperatorFloatExpressionFactory());
  122. registerSubType(new JBoolOperatorBoolExpressionFactory());
  123. registerSubType(new JFloatOperatorBoolExpressionFactory());
  124. registerSubType(new JSpecificBlockBoolExpressionFactory());
  125. registerSubType(new JFirstBlockAboveBoolExpressionFactory());
  126. registerSubType(new JNaighborBlockBoolExpressionFactory());
  127. // world generator
  128. registerType(new WorldHeightLayerFactory());
  129. registerSubType(new BlockTypeGeneratorRuleFactory());
  130. registerSubType(new BlockInstanceGeneratorRuleFactory());
  131. registerSubType(new BiomedCavedDimensionGeneratorFactory());
  132. registerType(new BiomGeneratorFactory());
  133. registerType(new StructureTemplateCollectionFactory());
  134. registerSubType(new TreeTemplateFactory());
  135. registerType(new EntityGeneratorFactory());
  136. registerType(new PlantConfigFactory());
  137. // entities
  138. registerSubType(new AnimalEntityTypeFactory());
  139. // drop conditions
  140. registerSubType(new DropChanceConditionFactory());
  141. registerSubType(new DropConditionOperatorFactory());
  142. registerSubType(new DropConditionNegationFactory());
  143. registerSubType(new DropUsedItemConditionFactory());
  144. registerSubType(new DropNoUsedItemConditionFactory());
  145. registerSubType(new DropAllwaysConditionFactory());
  146. // drop configs
  147. registerSubType(new DefaultBlockItemDropFactory());
  148. registerSubType(new DefaultInventoryItemDropFactory());
  149. registerSubType(new SpecificItemDropFactory());
  150. registerSubType(new BlockReplacementDropFactory());
  151. // inventories
  152. registerType(new ItemSlotFactory());
  153. // UI Elements
  154. registerSubType(new UITargetReferenceFactory());
  155. registerSubType(new UITargetComponentReferenceFactory());
  156. registerSubType(new UITActorReferenceFactory());
  157. registerSubType(new UITextElementFactory());
  158. registerSubType(new UIInventoryElementFactory());
  159. registerSubType(new UIDialogElementFactory());
  160. registerSubType(new UICraftingGridElementFactory());
  161. registerSubType(new UICraftingProgressFactory());
  162. registerSubType(new UIFuelStateFactory());
  163. // interactions
  164. registerSubType(new OpenDialogInteractionConfigFactory());
  165. // block components
  166. registerSubType(new FireBasedProcessingBlockComponentFactory());
  167. // orientations
  168. registerSubType(new AttachToNeighborOrientationConfigFactory());
  169. // float distributions
  170. registerSubType(new ConstantFloatDistributionFactory());
  171. registerSubType(new EqualyDistributedFloatDistributionFactory());
  172. }
  173. void TypeRegistry::writeSyntaxInfo(Framework::Text folderPath) const
  174. {
  175. for (Framework::Text* typeId : parsableTypeNames)
  176. {
  177. TypeFatoryRef* factory
  178. = parsableTypes.z(typeId->getText(), typeId->getLength());
  179. Framework::Validator::DataValidator* validator
  180. = factory->getValidator();
  181. Framework::File syntaxFile(
  182. new Framework::Text(folderPath + "/" + *typeId + ".xml"));
  183. syntaxFile.create();
  184. Framework::Text syntaxContent = validator->zConstraints()->toString();
  185. syntaxFile.open(Framework::File::Style::write);
  186. syntaxFile.write(syntaxContent, syntaxContent.getLength());
  187. syntaxFile.close();
  188. validator->release();
  189. }
  190. }