From c4a8eb37d09a2fd4bbabed9221c1526db108897b Mon Sep 17 00:00:00 2001 From: Robert Vollmert Date: Wed, 18 Nov 2009 22:23:11 +0100 Subject: Reading and writing of extended show_type. Also bumped minor version number. --- crawl-ref/source/tags.cc | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) (limited to 'crawl-ref/source/tags.cc') 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(unmarshallByte(th)); - obj.feat = static_cast(unmarshallShort(th)); + if (th.getMinorVersion() < TAG_MINOR_SHOWTYPE_EXTENDED) + { + unsigned short d = unmarshallShort(th); + switch (obj.cls) + { + case SH_FEATURE: + obj.feat = static_cast(d); + break; + case SH_ITEM: + obj.item = static_cast(d); + break; + case SH_MONSTER: + obj.mons = static_cast(d); + break; + default: + break; + } + } + else + { + obj.feat = static_cast(unmarshallShort(th)); + obj.item = static_cast(unmarshallShort(th)); + obj.mons = static_cast(unmarshallShort(th)); + } obj.colour = unmarshallShort(th); return (obj); } -- cgit v1.2.3-54-g00ecf