diff options
author | Robert Vollmert <rvollmert@gmx.net> | 2009-11-18 22:23:11 +0100 |
---|---|---|
committer | Robert Vollmert <rvollmert@gmx.net> | 2009-11-20 12:55:07 +0100 |
commit | c4a8eb37d09a2fd4bbabed9221c1526db108897b (patch) | |
tree | bbe2b47feeaf5cbbe37639e7309ee0f53710e389 /crawl-ref/source/tags.cc | |
parent | 9e638765909b661706f206c6422843b0c75d12a8 (diff) | |
download | crawl-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.cc | 29 |
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); } |