diff options
author | Matthew Cline <zelgadis@sourceforge.net> | 2009-11-21 21:44:48 -0800 |
---|---|---|
committer | Matthew Cline <zelgadis@sourceforge.net> | 2009-11-21 22:22:54 -0800 |
commit | c54cc580ef092fa14345400a96c45e731f7d3bfc (patch) | |
tree | 56833d53dfdd52555dc216ee2453b51bf8c5f260 /crawl-ref/source/menu.cc | |
parent | ab3ea04380fd89fb89f061ca6611b6a7cf4f11e1 (diff) | |
download | crawl-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.cc | 19 |
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; |