NEF6I3KWPTUKZM32MZ3XWTMLK7TBNLJQ7WEIXCPWZ5GRK6TVIEUAC
EXYVMVO2EMMZW4LRYSHHHNRFLQ7P6YHNM7SLUO2X2KUMV3WQHQZQC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
WF2DSJGR6PKLGQSXEFF4ZW4EZZFGMHXPXWUYAKYBPFJH6KJKAANQC
ROWW5YUHXITC4QBBSYRVPE6HJ2XMFX3K3M2LHPX4WRDKMEFJVTOQC
XDACRDVLDEUFUBN4L7ES5WBD3YSLBHMRZ4Q5PXIUMOK44D3TLWSAC
TAHSTXR7ROOMDFUSBUU4ZAIEWQLAS5CIRCTARLD4Q2BGNLSL7E5QC
6AOBHPEVZFUDSTZ6FR6PRQ6H2V766R2PJRXS4UMYI6SAELGAV5EAC
PU6VE6DFO4AJPL4RLKMMAIEGYDRNMTH4N4KSERK6B5QU5ZP53ZUAC
LPV66WRRLBAXH3Z6BYUK36N33H6VFGXMLRGYAE2WGHGN6DTZMVBAC
NT5SNG44MU2JRBQA55TR27YDMA6SMKAP2ANDCROS3T2IL7ATLFUAC
marshallShort(outf, excludes.size());
if (excludes.size())
{
for (int i = 0, count = excludes.size(); i < count; ++i)
{
marshallCoord(outf, excludes[i].pos);
marshallShort(outf, excludes[i].radius);
marshallBoolean(outf, excludes[i].autoex);
marshallShort(outf, excludes[i].mon);
}
}
marshallExcludes(outf, excludes);
excludes.clear();
int nexcludes = unmarshallShort(inf);
if (nexcludes)
{
for (int i = 0; i < nexcludes; ++i)
{
coord_def c;
unmarshallCoord(inf, c);
const int radius = unmarshallShort(inf);
bool autoexcl = false;
monster_type mon = MONS_NO_MONSTER;
if (minorVersion >= TAG_ANNOTATE_EXCL)
{
autoexcl = unmarshallBoolean(inf);
mon = static_cast<monster_type>(unmarshallShort(inf));
}
excludes.push_back(travel_exclude(c, radius, autoexcl, mon));
}
}
unmarshallExcludes(inf, minorVersion, excludes);
}
void marshallExcludes(writer& outf, const exclvec& excludes)
{
marshallShort(outf, excludes.size());
if (excludes.size())
{
for (int i = 0, count = excludes.size(); i < count; ++i)
{
marshallCoord(outf, excludes[i].pos);
marshallShort(outf, excludes[i].radius);
marshallBoolean(outf, excludes[i].autoex);
marshallShort(outf, excludes[i].mon);
// XXX: marshall travel_exclude::vault?
}
}
void unmarshallExcludes(reader& inf, char minorVersion, exclvec &excludes)
{
excludes.clear();
int nexcludes = unmarshallShort(inf);
if (nexcludes)
{
for (int i = 0; i < nexcludes; ++i)
{
coord_def c;
unmarshallCoord(inf, c);
const int radius = unmarshallShort(inf);
bool autoexcl = false;
monster_type mon = MONS_NO_MONSTER;
if (minorVersion >= TAG_ANNOTATE_EXCL)
{
autoexcl = unmarshallBoolean(inf);
mon = static_cast<monster_type>(unmarshallShort(inf));
}
excludes.push_back(travel_exclude(c, radius, autoexcl, mon));
}
}
}