diff options
Diffstat (limited to 'source/game/StarHumanoid.cpp')
-rw-r--r-- | source/game/StarHumanoid.cpp | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/source/game/StarHumanoid.cpp b/source/game/StarHumanoid.cpp index d296842..e814ade 100644 --- a/source/game/StarHumanoid.cpp +++ b/source/game/StarHumanoid.cpp @@ -27,10 +27,34 @@ extern EnumMap<HumanoidEmote> const HumanoidEmoteNames{ {HumanoidEmote::Sleep, "Sleep"} }; -Personality parsePersonality(Json const& config) { +Personality parsePersonalityArray(Json const& config) { return Personality{config.getString(0), config.getString(1), jsonToVec2F(config.get(2)), jsonToVec2F(config.get(3))}; } +Personality& parsePersonality(Personality& personality, Json const& config) { + if (auto idle = config.get("idle")) + personality.idle = idle.toString(); + if (auto armIdle = config.get("armIdle")) + personality.idle = armIdle.toString(); + if (auto headOffset = config.get("headOffset")) + personality.headOffset = jsonToVec2F(headOffset); + if (auto armOffset = config.get("armOffset")) + personality.armOffset = jsonToVec2F(armOffset); +} + +Personality parsePersonality(Json const& config) { + return parsePersonality(Personality(), config); +} + +Json jsonFromPersonality(Personality const& personality) { + return JsonObject{ + { "idle", personality.idle }, + { "armIdle", personality.armIdle }, + { "headOffset", jsonFromVec2F(personality.headOffset) }, + { "armOffset", jsonFromVec2F(personality.armOffset) } + }; +} + HumanoidIdentity::HumanoidIdentity(Json config) { if (config.isNull()) config = JsonObject(); |