diff options
author | DracoOmega <draco_omega@live.com> | 2013-03-05 19:10:39 -0330 |
---|---|---|
committer | DracoOmega <draco_omega@live.com> | 2013-03-06 01:38:14 -0330 |
commit | 0ef0d365f9aa9980514a9a6e4df57069ad36d37c (patch) | |
tree | 709e7b208008f99fe5b1223dd2c204c245366581 /crawl-ref/source/actor.cc | |
parent | e2e8a398e699175ec37813b621098e3f5e210a2c (diff) | |
download | crawl-ref-0ef0d365f9aa9980514a9a6e4df57069ad36d37c.tar.gz crawl-ref-0ef0d365f9aa9980514a9a6e4df57069ad36d37c.zip |
Make monster debug info in wizmode display monster props
It currently does not display all possible types that can be stored
as a prop (eg: lua chunks or vectors), but none of those types are
currently used anywhere as a monster prop, either.
Diffstat (limited to 'crawl-ref/source/actor.cc')
-rw-r--r-- | crawl-ref/source/actor.cc | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/crawl-ref/source/actor.cc b/crawl-ref/source/actor.cc index 91cdbe7b70..bcd59d5207 100644 --- a/crawl-ref/source/actor.cc +++ b/crawl-ref/source/actor.cc @@ -5,6 +5,7 @@ #include "artefact.h" #include "attack.h" #include "coord.h" +#include "describe.h" #include "env.h" #include "fprop.h" #include "itemprop.h" @@ -749,3 +750,62 @@ void actor::handle_constriction() } } } + +string actor::describe_props() const +{ + ostringstream oss; + + if (props.size() == 0) + return ""; + + for (CrawlHashTable::const_iterator i = props.begin(); i != props.end(); ++i) + { + if (i != props.begin()) + oss << ", "; + oss << string(i->first) << ": "; + + CrawlStoreValue val = i->second; + + switch (val.get_type()) + { + case SV_BOOL: + oss << val.get_bool(); + break; + case SV_BYTE: + oss << val.get_byte(); + break; + case SV_SHORT: + oss << val.get_short(); + break; + case SV_INT: + oss << val.get_int(); + break; + case SV_FLOAT: + oss << val.get_float(); + break; + case SV_STR: + oss << val.get_string(); + break; + case SV_COORD: + { + coord_def coord = val.get_coord(); + oss << "(" << coord.x << ", " << coord.y << ")"; + break; + } + case SV_MONST: + { + monster mon = val.get_monster(); + oss << mon.name(DESC_PLAIN) << "(" << mon.mid << ")"; + break; + } + case SV_INT64: + oss << val.get_int64(); + break; + + default: + oss << "???"; + break; + } + } + return oss.str(); +} |