void StatModifiers::deserialise(LoadingState *state, data::IData *data) { Handle<data::Table> dataMap(data::Table::checkDataType(data, "stat modifiers")); if (!dataMap) { return; } for (auto iter = dataMap->beginMap(); iter != dataMap->endMap(); ++iter) { Stat::StatType type = Stat::getStatType(iter->first.c_str()); if (type == Stat::MAX_STAT_LENGTH) { stringstream ss; ss << "Unknown stat type '" << iter->first << "', unable to load stat modifiers."; am_log("LOADERR", ss); continue; } Handle<data::Table> arr(data::Table::checkDataType(iter->second.get(), "stat modifiers")); if (arr) { continue; } for (auto modIter = arr->beginArray(); modIter != arr->endArray(); ++iter) { StatModifier mod; if (mod.deserialise(state, modIter->get())) { addStatModifier(type, mod); } } } }