summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/menu.h
diff options
context:
space:
mode:
authorFlorian Diebold <flodiebold@gmail.com>2011-11-05 04:15:00 +0100
committerFlorian Diebold <flodiebold@gmail.com>2011-12-08 22:52:58 +0100
commit15055ff1e639201928917d7f54f1d0a61ffad2a7 (patch)
tree7ec92e7c1219cfc3e3dc35203bdf90a09d7e8d6c /crawl-ref/source/menu.h
parente54b525164596b6559e19fc9d86016d9bf36e983 (diff)
downloadcrawl-ref-15055ff1e639201928917d7f54f1d0a61ffad2a7.tar.gz
crawl-ref-15055ff1e639201928917d7f54f1d0a61ffad2a7.zip
Implement dedicated Menu support for Webtiles.
This is just for menus using the Menu class. It means that the menu items are laid out in html on the client side, the menu size adapts to the window of each spectator, and scrolling is done client-side.
Diffstat (limited to 'crawl-ref/source/menu.h')
-rw-r--r--crawl-ref/source/menu.h31
1 files changed, 23 insertions, 8 deletions
diff --git a/crawl-ref/source/menu.h b/crawl-ref/source/menu.h
index bbff6940af..50000593df 100644
--- a/crawl-ref/source/menu.h
+++ b/crawl-ref/source/menu.h
@@ -16,8 +16,7 @@
#include "defines.h"
#include "libutil.h"
-#ifdef USE_TILE_LOCAL
- #include "tilebuf.h"
+#ifdef USE_TILE
#include "tiledoll.h"
#endif
@@ -77,7 +76,7 @@ public:
bool preselected;
void *data;
-#ifdef USE_TILE_LOCAL
+#ifdef USE_TILE
std::vector<tile_def> tiles;
#endif
@@ -159,7 +158,7 @@ public:
return get_text();
}
-#ifdef USE_TILE_LOCAL
+#ifdef USE_TILE
virtual bool get_tiles(std::vector<tile_def>& tileset) const;
virtual void add_tile(tile_def tile);
@@ -186,12 +185,12 @@ class MonsterMenuEntry : public MenuEntry
public:
MonsterMenuEntry(const std::string &str, const monster* mon, int hotkey);
-#ifdef USE_TILE_LOCAL
+#ifdef USE_TILE
virtual bool get_tiles(std::vector<tile_def>& tileset) const;
#endif
};
-#ifdef USE_TILE_LOCAL
+#ifdef USE_TILE
class PlayerMenuEntry : public MenuEntry
{
public:
@@ -211,7 +210,7 @@ public:
FeatureMenuEntry(const std::string &str, const dungeon_feature_type f,
int hotkey);
-#ifdef USE_TILE_LOCAL
+#ifdef USE_TILE
virtual bool get_tiles(std::vector<tile_def>& tileset) const;
#endif
};
@@ -357,7 +356,7 @@ public:
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);
typedef int (*keyfilter_tfn)(int keyin);
@@ -369,6 +368,9 @@ public:
enum cycle { CYCLE_NONE, CYCLE_TOGGLE, CYCLE_CYCLE } action_cycle;
enum action { ACT_EXECUTE, ACT_EXAMINE, ACT_MISC, ACT_NUM } menu_action;
+#ifdef USE_TILE_WEB
+ void webtiles_write_menu() const;
+#endif
protected:
MenuEntry *title;
MenuEntry *title2;
@@ -402,11 +404,20 @@ protected:
void check_add_formatted_line(int firstcol, int nextcol,
std::string &line, bool check_eol);
void do_menu();
+ virtual std::string get_select_count_string(int count) const;
virtual void draw_select_count(int count, bool force = false);
virtual void draw_item(int index) const;
virtual void draw_index_item(int index, const MenuEntry *me) const;
virtual void draw_stock_item(int index, const MenuEntry *me) const;
+#ifdef USE_TILE_WEB
+ void webtiles_update_item(int index) const;
+ void webtiles_update_title() const;
+
+ virtual void webtiles_write_title() const;
+ virtual void webtiles_write_item(int index, const MenuEntry *me) const;
+#endif
+
virtual void draw_title();
virtual void write_title();
virtual void draw_menu();
@@ -512,6 +523,10 @@ protected:
virtual void draw_index_item(int index, const MenuEntry* me) const;
virtual bool process_key(int keyin);
bool jump_to(int linenum);
+
+#ifdef USE_TILE_WEB
+ virtual void webtiles_write_item(int index, const MenuEntry* me) const;
+#endif
};
/**