CRmgTemplateStorage.cpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /*
  2. * CRmgTemplateStorage.cpp, part of VCMI engine
  3. *
  4. * Authors: listed in file AUTHORS in main folder
  5. *
  6. * License: GNU General Public License v2.0 or later
  7. * Full text of license available in license.txt file, in main folder
  8. *
  9. */
  10. #include "StdInc.h"
  11. #include "CRmgTemplateStorage.h"
  12. #include "CRmgTemplate.h"
  13. #include "../serializer/JsonDeserializer.h"
  14. using namespace rmg;
  15. const std::map<std::string, CRmgTemplate *> & CRmgTemplateStorage::getTemplates() const
  16. {
  17. return templates;
  18. }
  19. void CRmgTemplateStorage::loadObject(std::string scope, std::string name, const JsonNode & data, size_t index)
  20. {
  21. //unused
  22. loadObject(scope, name, data);
  23. }
  24. void CRmgTemplateStorage::loadObject(std::string scope, std::string name, const JsonNode & data)
  25. {
  26. auto tpl = new CRmgTemplate();
  27. try
  28. {
  29. JsonDeserializer handler(nullptr, data);
  30. auto fullKey = normalizeIdentifier(scope, "core", name);
  31. tpl->setId(name);
  32. tpl->serializeJson(handler);
  33. tpl->validate();
  34. templates[fullKey] = tpl;
  35. }
  36. catch(const std::exception & e)
  37. {
  38. logGlobal->error("Template %s has errors. Message: %s.", tpl->getName(), std::string(e.what()));
  39. }
  40. }
  41. CRmgTemplateStorage::CRmgTemplateStorage()
  42. {
  43. }
  44. CRmgTemplateStorage::~CRmgTemplateStorage()
  45. {
  46. for (auto & pair : templates) delete pair.second;
  47. }
  48. std::vector<bool> CRmgTemplateStorage::getDefaultAllowed() const
  49. {
  50. //all templates are allowed
  51. return std::vector<bool>();
  52. }
  53. std::vector<JsonNode> CRmgTemplateStorage::loadLegacyData(size_t dataSize)
  54. {
  55. return std::vector<JsonNode>();
  56. //it would be cool to load old rmg.txt files
  57. }