summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/menu.cc
diff options
context:
space:
mode:
authorMatthew Cline <zelgadis@sourceforge.net>2009-11-21 21:44:48 -0800
committerMatthew Cline <zelgadis@sourceforge.net>2009-11-21 22:22:54 -0800
commitc54cc580ef092fa14345400a96c45e731f7d3bfc (patch)
tree56833d53dfdd52555dc216ee2453b51bf8c5f260 /crawl-ref/source/menu.cc
parentab3ea04380fd89fb89f061ca6611b6a7cf4f11e1 (diff)
downloadcrawl-ref-c54cc580ef092fa14345400a96c45e731f7d3bfc.tar.gz
crawl-ref-c54cc580ef092fa14345400a96c45e731f7d3bfc.zip
All menu entries can have tiles
The base MenuEntry class can now have tiles, and all menu entries can have tiles added to them by calling add_tile() (or directly manipulating the tiles member). This is for menus where selecting the tile(s) to use is very easy, so there's no need to make a subclass of MenuEntry.
Diffstat (limited to 'crawl-ref/source/menu.cc')
-rw-r--r--crawl-ref/source/menu.cc19
1 files changed, 18 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;