1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2026-02-05 21:28:28 +00:00
openmw/components/esm3/magiceffects.cpp
Telvanni 4Life e97a293d05 - Added save game version
- Serialized magic effect as RefId in activespells, creaturestats, and magiceffects
2026-02-02 10:47:03 -05:00

47 lines
1.3 KiB
C++

#include "magiceffects.hpp"
#include "esmreader.hpp"
#include "esmwriter.hpp"
#include <components/esm3/loadmgef.hpp>
namespace ESM
{
void MagicEffects::save(ESMWriter& esm) const
{
for (const auto& [key, params] : mEffects)
{
esm.writeHNRefId("EFID", key);
esm.writeHNT("BASE", params.first);
esm.writeHNT("MODI", params.second);
}
}
void MagicEffects::load(ESMReader& esm)
{
while (esm.isNextSub("EFID"))
{
std::pair<int32_t, float> params;
if (esm.getFormatVersion() <= MaxSerializeEffectRefIdFormatVersion)
{
int32_t id;
esm.getHT(id);
esm.getHNT(params.first, "BASE");
if (esm.getFormatVersion() <= MaxClearModifiersFormatVersion)
params.second = 0.f;
else
esm.getHNT(params.second, "MODI");
mEffects.emplace(ESM::MagicEffect::indexToRefId(id), params);
}
else
{
RefId effectId = esm.getRefId();
esm.getHNT(params.first, "BASE");
esm.getHNT(params.second, "MODI");
mEffects.emplace(effectId, params);
}
}
}
}