summaryrefslogtreecommitdiffstats
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
parent9e638765909b661706f206c6422843b0c75d12a8 (diff)
downloadcrawl-ref-c4a8eb37d09a2fd4bbabed9221c1526db108897b.tar.gz
crawl-ref-c4a8eb37d09a2fd4bbabed9221c1526db108897b.zip
Reading and writing of extended show_type.
Also bumped minor version number.
-rw-r--r--crawl-ref/source/tags.cc29
-rw-r--r--crawl-ref/source/tags.h3
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<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);
}
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