From c54cc580ef092fa14345400a96c45e731f7d3bfc Mon Sep 17 00:00:00 2001 From: Matthew Cline Date: Sat, 21 Nov 2009 21:44:48 -0800 Subject: 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. --- crawl-ref/source/menu.cc | 19 ++++++++++++++++++- crawl-ref/source/menu.h | 7 +++++++ 2 files changed, 25 insertions(+), 1 deletion(-) (limited to 'crawl-ref/source') 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& 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& tileset) const @@ -761,6 +772,8 @@ bool MonsterMenuEntry::get_tiles(std::vector& 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& 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& tileset) const if (!Options.tile_menu_icons) return (false); + MenuEntry::get_tiles(tileset); + const player_save_info &player = *static_cast( 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 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& tileset) const; + + virtual void add_tile(tile_def tile); #endif }; -- cgit v1.2.3-54-g00ecf