summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crawl-ref/source/menu.cc19
-rw-r--r--crawl-ref/source/menu.h7
2 files changed, 25 insertions, 1 deletions
diff --git a/crawl-ref/source/menu.cc b/crawl-ref/source/menu.cc
index 6964a20140..897ccd14b1 100644
--- a/crawl-ref/source/menu.cc
+++ b/crawl-ref/source/menu.cc
@@ -749,7 +749,18 @@ PlayerMenuEntry::PlayerMenuEntry(const std::string &str) :
bool MenuEntry::get_tiles(std::vector<tile_def>& tileset) const
{
- return (false);
+ if (!Options.tile_menu_icons || tiles.empty())
+ return (false);
+
+ for (unsigned int i = 0; i < tiles.size(); i++)
+ tileset.push_back(tiles[i]);
+
+ return (true);
+}
+
+void MenuEntry::add_tile(tile_def tile)
+{
+ tiles.push_back(tile);
}
bool MonsterMenuEntry::get_tiles(std::vector<tile_def>& tileset) const
@@ -761,6 +772,8 @@ bool MonsterMenuEntry::get_tiles(std::vector<tile_def>& tileset) const
if (!m)
return (false);
+ MenuEntry::get_tiles(tileset);
+
const bool fake = m->props.exists("fake");
const coord_def c = m->pos();
int ch = TILE_FLOOR_NORMAL;
@@ -865,6 +878,8 @@ bool FeatureMenuEntry::get_tiles(std::vector<tile_def>& tileset) const
if (feat == DNGN_UNSEEN)
return (false);
+ MenuEntry::get_tiles(tileset);
+
tileset.push_back(tile_def(tileidx_feature(feat, pos.x, pos.y),
TEX_DUNGEON));
@@ -879,6 +894,8 @@ bool PlayerMenuEntry::get_tiles(std::vector<tile_def>& tileset) const
if (!Options.tile_menu_icons)
return (false);
+ MenuEntry::get_tiles(tileset);
+
const player_save_info &player = *static_cast<player_save_info*>( data );
dolls_data equip_doll = player.doll;
diff --git a/crawl-ref/source/menu.h b/crawl-ref/source/menu.h
index 1dea67758b..4b93916447 100644
--- a/crawl-ref/source/menu.h
+++ b/crawl-ref/source/menu.h
@@ -70,6 +70,11 @@ public:
MenuEntryLevel level;
void *data;
+#ifdef USE_TILE
+ std::vector<tile_def> tiles;
+#endif
+
+public:
MenuEntry( const std::string &txt = std::string(),
MenuEntryLevel lev = MEL_ITEM,
int qty = 0,
@@ -143,6 +148,8 @@ public:
#ifdef USE_TILE
virtual bool get_tiles(std::vector<tile_def>& tileset) const;
+
+ virtual void add_tile(tile_def tile);
#endif
};