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 +++++++++++++++++++++++++++-- crawl-ref/source/tags.h | 3 ++- 2 files changed, 29 insertions(+), 3 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(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); } diff --git a/crawl-ref/source/tags.h b/crawl-ref/source/tags.h index 820740ef33..1583d68bf2 100644 --- a/crawl-ref/source/tags.h +++ b/crawl-ref/source/tags.h @@ -49,7 +49,8 @@ enum tag_minor_version TAG_MINOR_RESET = 0, // Minor tags were reset TAG_MINOR_DISEASE = 1, // you.disease changed to an integer TAG_MINOR_MAPCELL_NOCOLOUR = 2, // map_cell::colour removed - TAG_MINOR_VERSION = 2 // Current version. (Keep equal to max.) + TAG_MINOR_SHOWTYPE_EXTENDED = 3, // map_cell::object stores more data + TAG_MINOR_VERSION = 3 // Current version. (Keep equal to max.) }; struct enum_info -- cgit v1.2.3-54-g00ecf