#ifndef SHOW_H #define SHOW_H #include "fixedarray.h" enum show_item_type { SHOW_ITEM_NONE, SHOW_ITEM_ORB, SHOW_ITEM_WEAPON, SHOW_ITEM_ARMOUR, SHOW_ITEM_WAND, SHOW_ITEM_FOOD, SHOW_ITEM_SCROLL, SHOW_ITEM_RING, SHOW_ITEM_POTION, SHOW_ITEM_MISSILE, SHOW_ITEM_BOOK, SHOW_ITEM_STAVE, SHOW_ITEM_MISCELLANY, SHOW_ITEM_CORPSE, SHOW_ITEM_GOLD, SHOW_ITEM_AMULET, SHOW_ITEM_DETECTED, NUM_SHOW_ITEMS }; enum show_class { SH_NOTHING, SH_FEATURE, SH_ITEM, SH_CLOUD, SH_INVIS_EXPOSED, SH_MONSTER, NUM_SHOW_CLASSES }; struct show_type { show_class cls; dungeon_feature_type feat; show_item_type item; monster_type mons; unsigned short colour; show_type(); show_type(dungeon_feature_type f); show_type(const item_def &item); show_type(show_item_type itemtype); show_type(monster_type montype); operator bool() const { return (cls != SH_NOTHING); } bool operator < (const show_type &other) const; }; struct show_info { dungeon_feature_type feat; show_item_type item; monster_type mons; }; class monsters; class show_def { FixedArray grid; FixedArray backup; void _update_feat_at(const coord_def &gp, const coord_def &ep); void _update_item_at(const coord_def &gp, const coord_def &ep); void _update_cloud(int cloudno); void _update_monster(const monsters *monster); void _set_backup(const coord_def &e); public: show_type operator()(const coord_def &ep) const { return grid(ep); } show_type get_backup(const coord_def &ep) const { return backup(ep); } void init(); void update_at(const coord_def &gp, const coord_def &ep); }; // Convert a show object as in env.show to one to be stored in // env.map_knowledge (re-setting feature colour mainly). show_type to_knowledge(show_type obj); #endif