summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/tags.cc
diff options
context:
space:
mode:
authorRobert Vollmert <rvollmert@gmx.net>2009-11-18 22:23:11 +0100
committerRobert Vollmert <rvollmert@gmx.net>2009-11-20 12:55:07 +0100
commitc4a8eb37d09a2fd4bbabed9221c1526db108897b (patch)
treebbe2b47feeaf5cbbe37639e7309ee0f53710e389 /crawl-ref/source/tags.cc
parent9e638765909b661706f206c6422843b0c75d12a8 (diff)
downloadcrawl-ref-c4a8eb37d09a2fd4bbabed9221c1526db108897b.tar.gz
crawl-ref-c4a8eb37d09a2fd4bbabed9221c1526db108897b.zip
Reading and writing of extended show_type.
Also bumped minor version number.
Diffstat (limited to 'crawl-ref/source/tags.cc')
-rw-r--r--crawl-ref/source/tags.cc29
1 files changed, 27 insertions, 2 deletions
diff --git a/crawl-ref/source/tags.cc b/crawl-ref/source/tags.cc
index 0f2baa145c..d807287649 100644
--- a/crawl-ref/source/tags.cc
+++ b/crawl-ref/source/tags.cc
@@ -1906,7 +1906,9 @@ void unmarshallItem(reader &th, item_def &item)
void marshallShowtype(writer &th, const show_type &obj)
{
marshallByte(th, obj.cls);
- marshallShort(th, obj.feat); // union
+ marshallShort(th, obj.feat);
+ marshallShort(th, obj.item);
+ marshallShort(th, obj.mons);
marshallShort(th, obj.colour);
}
@@ -1914,7 +1916,30 @@ show_type unmarshallShowtype(reader &th)
{
show_type obj;
obj.cls = static_cast<show_class>(unmarshallByte(th));
- obj.feat = static_cast<dungeon_feature_type>(unmarshallShort(th));
+ if (th.getMinorVersion() < TAG_MINOR_SHOWTYPE_EXTENDED)
+ {
+ unsigned short d = unmarshallShort(th);
+ switch (obj.cls)
+ {
+ case SH_FEATURE:
+ obj.feat = static_cast<dungeon_feature_type>(d);
+ break;
+ case SH_ITEM:
+ obj.item = static_cast<show_item_type>(d);
+ break;
+ case SH_MONSTER:
+ obj.mons = static_cast<monster_type>(d);
+ break;
+ default:
+ break;
+ }
+ }
+ else
+ {
+ obj.feat = static_cast<dungeon_feature_type>(unmarshallShort(th));
+ obj.item = static_cast<show_item_type>(unmarshallShort(th));
+ obj.mons = static_cast<monster_type>(unmarshallShort(th));
+ }
obj.colour = unmarshallShort(th);
return (obj);
}