diff options
author | Robert Vollmert <rvollmert@gmx.net> | 2009-10-27 03:40:45 +0100 |
---|---|---|
committer | Robert Vollmert <rvollmert@gmx.net> | 2009-10-27 03:50:56 +0100 |
commit | 69cd15f050cdef9f4f82bd4d9ff2f54dd37c87d1 (patch) | |
tree | 58a660decbe74f768eb2211a9604487d5b55de7c /crawl-ref/source/exclude.cc | |
parent | c9b7a93349b9215c94dd48f4e51023f4047cd820 (diff) | |
download | crawl-ref-69cd15f050cdef9f4f82bd4d9ff2f54dd37c87d1.tar.gz crawl-ref-69cd15f050cdef9f4f82bd4d9ff2f54dd37c87d1.zip |
Move exclusion marshalling code to exclude.cc.
Diffstat (limited to 'crawl-ref/source/exclude.cc')
-rw-r--r-- | crawl-ref/source/exclude.cc | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/crawl-ref/source/exclude.cc b/crawl-ref/source/exclude.cc index 077487b1b1..4aae129c68 100644 --- a/crawl-ref/source/exclude.cc +++ b/crawl-ref/source/exclude.cc @@ -10,6 +10,7 @@ #include "mon-util.h" #include "overmap.h" #include "stuff.h" +#include "tags.h" #include "terrain.h" #include "travel.h" #include "tutorial.h" @@ -363,3 +364,42 @@ std::string get_exclusion_desc() ", and ", ", ")); } + +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)); + } + } +} |