Compare commits

..

2 Commits

Author SHA1 Message Date
fd24ce63c1 Adds battle effect for items 2022-02-19 15:08:28 +01:00
efca5ca06d Include string value effect parameters 2022-02-12 19:15:42 +01:00
3 changed files with 57 additions and 5 deletions

View File

@@ -1,6 +1,6 @@
#include "BuildAbilities.hpp" #include "BuildAbilities.hpp"
#include "json.hpp"
#include <fstream> #include <fstream>
#include "json.hpp"
using json = nlohmann::json; using json = nlohmann::json;
@@ -51,6 +51,11 @@ CreatureLib::Library::TalentLibrary* BuildAbilities::Build(const std::string& pa
case json::value_t::number_float: case json::value_t::number_float:
realParameters.Append(new CreatureLib::Library::EffectParameter(p.get<float>())); realParameters.Append(new CreatureLib::Library::EffectParameter(p.get<float>()));
break; break;
case json::value_t ::string: {
auto s = p.get<std::string>();
realParameters.Append(new CreatureLib::Library::EffectParameter(ArbUt::StringView(s.c_str(), s.length())));
break;
}
default: continue; default: continue;
} }
} }

View File

@@ -83,6 +83,12 @@ PkmnLib::Library::ItemLibrary* BuildItems::Build(const std::string& path) {
case json::value_t::number_float: case json::value_t::number_float:
parameters.Append(new CreatureLib::Library::EffectParameter(p.get<float>())); parameters.Append(new CreatureLib::Library::EffectParameter(p.get<float>()));
break; break;
case json::value_t ::string: {
auto s = p.get<std::string>();
parameters.Append(
new CreatureLib::Library::EffectParameter(ArbUt::StringView(s.c_str(), s.length())));
break;
}
default: continue; default: continue;
} }
} }
@@ -91,9 +97,44 @@ PkmnLib::Library::ItemLibrary* BuildItems::Build(const std::string& path) {
100, ArbUt::StringView(effectName.get<std::string>().c_str()), parameters); 100, ArbUt::StringView(effectName.get<std::string>().c_str()), parameters);
} }
CreatureLib::Library::SecondaryEffect* battleEffect = nullptr;
auto& battleEffectJson = val["battleEffect"];
if (battleEffectJson != nullptr) {
auto& effectName = battleEffectJson["name"];
auto& parametersJson = battleEffectJson["parameters"];
ArbUt::List<CreatureLib::Library::EffectParameter*> parameters;
if (parametersJson != nullptr) {
for (auto& kv : parametersJson.items()) {
auto& p = kv.value();
auto t = p.type();
switch (t) {
case json::value_t::boolean:
parameters.Append(new CreatureLib::Library::EffectParameter(p.get<bool>()));
break;
case json::value_t::number_integer:
case json::value_t::number_unsigned:
parameters.Append(new CreatureLib::Library::EffectParameter(p.get<int64_t>()));
break;
case json::value_t::number_float:
parameters.Append(new CreatureLib::Library::EffectParameter(p.get<float>()));
break;
case json::value_t ::string: {
auto s = p.get<std::string>();
parameters.Append(
new CreatureLib::Library::EffectParameter(ArbUt::StringView(s.c_str(), s.length())));
break;
}
default: continue;
}
}
}
battleEffect = new CreatureLib::Library::SecondaryEffect(
100, ArbUt::StringView(effectName.get<std::string>().c_str()), parameters);
}
auto item = new PkmnLib::Library::Item(ArbUt::StringView(_name.get<std::string>().c_str()), itemType, auto item = new PkmnLib::Library::Item(ArbUt::StringView(_name.get<std::string>().c_str()), itemType,
CreatureLib::Library::BattleItemCategory::None, _price.get<int32_t>(), CreatureLib::Library::BattleItemCategory::None, _price.get<int32_t>(),
effect, flags, _flingPower.get<uint8_t>()); effect, battleEffect, flags, _flingPower.get<uint8_t>());
lib->Insert(item->GetName(), item); lib->Insert(item->GetName(), item);
} }
return lib; return lib;

View File

@@ -5,11 +5,11 @@
using json = nlohmann::json; using json = nlohmann::json;
#define GET(o, objectKey, key) \ #define GET(o, objectKey, key) \
auto& _##objectKey = o[#objectKey]; \ auto& _##objectKey = o[#objectKey]; \
if (_##objectKey.is_null()) { \ if (_##objectKey.is_null()) { \
auto errorKeyFunc = [=]() { return key; }; \ auto errorKeyFunc = [=]() { return key; }; \
std::cout << "Failed to retrieve key '" << #objectKey << "' for object with key '" << errorKeyFunc() \ std::cout << "Failed to retrieve key '" << #objectKey << "' for object with key '" << errorKeyFunc() << path \
<< path << "'\n"; \ << "'\n"; \
return nullptr; \ return nullptr; \
} }
@@ -89,6 +89,12 @@ PkmnLib::Library::MoveLibrary* BuildMoves::Build(const std::string& path,
case json::value_t::number_float: case json::value_t::number_float:
parameters.Append(new CreatureLib::Library::EffectParameter(p.get<float>())); parameters.Append(new CreatureLib::Library::EffectParameter(p.get<float>()));
break; break;
case json::value_t ::string: {
auto s = p.get<std::string>();
parameters.Append(new CreatureLib::Library::EffectParameter(
ArbUt::StringView(s.c_str(), s.length())));
break;
}
default: continue; default: continue;
} }
} }