diff options
Diffstat (limited to 'crawl-ref/source/menu.h')
-rw-r--r-- | crawl-ref/source/menu.h | 49 |
1 files changed, 47 insertions, 2 deletions
diff --git a/crawl-ref/source/menu.h b/crawl-ref/source/menu.h index 91561b0440..ce2b857ada 100644 --- a/crawl-ref/source/menu.h +++ b/crawl-ref/source/menu.h @@ -137,6 +137,13 @@ struct MenuEntry else if (quantity) selected_qty = (qty == -1? quantity : qty); } + +#ifdef USE_TILE + virtual bool tile(int &idx, TextureID &tex) const + { + return false; + } +#endif }; struct ToggleableMenuEntry : public MenuEntry @@ -181,6 +188,38 @@ enum MenuFlag MF_EASY_EXIT = 0x1000 }; +class MenuDisplay +{ +public: + MenuDisplay(Menu *menu); + virtual ~MenuDisplay() {} + virtual void draw_stock_item(int index, const MenuEntry *me) = 0; + virtual void set_offset(int lines) = 0; + virtual void draw_more() = 0; +protected: + Menu *m_menu; +}; + +class MenuDisplayText : public MenuDisplay +{ +public: + MenuDisplayText(Menu *menu); + virtual void draw_stock_item(int index, const MenuEntry *me); + virtual void draw_more(); + virtual void set_offset(int lines) { m_starty = lines; } +protected: + int m_starty; +}; + +class MenuDisplayTile : public MenuDisplay +{ +public: + MenuDisplayTile(Menu *menu); + virtual void draw_stock_item(int index, const MenuEntry *me); + virtual void set_offset(int lines); + virtual void draw_more(); +}; + /////////////////////////////////////////////////////////////////////// // NOTE // As a general contract, any pointers you pass to Menu methods are OWNED BY @@ -226,6 +265,7 @@ public: // Sets a replacement for the --more-- string. void set_more(const formatted_string &more); + const formatted_string &get_more() const { return more; } void set_highlighter( MenuHighlighter *h ); void set_title( MenuEntry *e ); @@ -233,6 +273,7 @@ public: void get_selected( std::vector<MenuEntry*> *sel ) const; void set_maxpagesize(int max); + int maxpagesize() const { return max_pagesize; } void set_select_filter( std::vector<text_pattern> filter ) { @@ -250,6 +291,10 @@ public: // Get entry index, skipping quantity 0 entries. Returns -1 if not found. int get_entry_index( const MenuEntry *e ) const; + virtual int item_colour(int index, const MenuEntry *me) const; + int get_y_offset() const { return y_offset; } + int get_pagesize() const { return pagesize; } + public: typedef std::string (*selitem_tfn)( const std::vector<MenuEntry*> *sel ); typedef void (*drawitem_tfn)(int index, const MenuEntry *me); @@ -284,6 +329,8 @@ protected: int last_selected; + MenuDisplay *mdisplay; + protected: void check_add_formatted_line(int firstcol, int nextcol, std::string &line, bool check_eol); @@ -313,8 +360,6 @@ protected: bool is_hotkey(int index, int key ); virtual bool is_selectable(int index) const; - virtual int item_colour(int index, const MenuEntry *me) const; - virtual bool process_key( int keyin ); }; |