Пример #1
0
	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);
				}
			}
		}
	}