Configuration.cpp 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. /*
  2. * Configuration.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 "Configuration.h"
  12. #include "../serializer/JsonSerializeFormat.h"
  13. VCMI_LIB_NAMESPACE_BEGIN
  14. Rewardable::EVisitMode Rewardable::Configuration::getVisitMode() const
  15. {
  16. return static_cast<EVisitMode>(visitMode);
  17. }
  18. ui16 Rewardable::Configuration::getResetDuration() const
  19. {
  20. return resetParameters.period;
  21. }
  22. std::optional<int> Rewardable::Configuration::getVariable(const std::string & category, const std::string & name) const
  23. {
  24. std::string variableID = category + '@' + name;
  25. if (variables.values.count(variableID))
  26. return variables.values.at(variableID);
  27. return std::nullopt;
  28. }
  29. JsonNode Rewardable::Configuration::getPresetVariable(const std::string & category, const std::string & name) const
  30. {
  31. std::string variableID = category + '@' + name;
  32. if (variables.preset.count(variableID))
  33. return variables.preset.at(variableID);
  34. else
  35. return JsonNode();
  36. }
  37. void Rewardable::Configuration::presetVariable(const std::string & category, const std::string & name, const JsonNode & value)
  38. {
  39. std::string variableID = category + '@' + name;
  40. variables.preset[variableID] = value;
  41. }
  42. void Rewardable::Configuration::initVariable(const std::string & category, const std::string & name, int value)
  43. {
  44. std::string variableID = category + '@' + name;
  45. variables.values[variableID] = value;
  46. }
  47. void Rewardable::ResetInfo::serializeJson(JsonSerializeFormat & handler)
  48. {
  49. handler.serializeInt("period", period);
  50. handler.serializeBool("visitors", visitors);
  51. handler.serializeBool("rewards", rewards);
  52. }
  53. void Rewardable::VisitInfo::serializeJson(JsonSerializeFormat & handler)
  54. {
  55. handler.serializeStruct("limiter", limiter);
  56. handler.serializeStruct("reward", reward);
  57. handler.serializeStruct("message", message);
  58. handler.serializeInt("visitType", visitType);
  59. }
  60. void Rewardable::Variables::serializeJson(JsonSerializeFormat & handler)
  61. {
  62. if (handler.saving)
  63. {
  64. JsonNode presetNode;
  65. for (auto const & entry : preset)
  66. presetNode[entry.first] = entry.second;
  67. handler.serializeRaw("preset", presetNode, {});
  68. }
  69. else
  70. {
  71. preset.clear();
  72. JsonNode presetNode;
  73. handler.serializeRaw("preset", presetNode, {});
  74. for (auto const & entry : presetNode.Struct())
  75. preset[entry.first] = entry.second;
  76. }
  77. }
  78. void Rewardable::Configuration::serializeJson(JsonSerializeFormat & handler)
  79. {
  80. handler.serializeStruct("onSelect", onSelect);
  81. handler.enterArray("info").serializeStruct(info);
  82. handler.serializeEnum("selectMode", selectMode, std::vector<std::string>{SelectModeString.begin(), SelectModeString.end()});
  83. handler.serializeEnum("visitMode", visitMode, std::vector<std::string>{VisitModeString.begin(), VisitModeString.end()});
  84. handler.serializeStruct("resetParameters", resetParameters);
  85. handler.serializeBool("canRefuse", canRefuse);
  86. handler.serializeBool("showScoutedPreview", showScoutedPreview);
  87. handler.serializeInt("infoWindowType", infoWindowType);
  88. }
  89. VCMI_LIB_NAMESPACE_END