aboutsummaryrefslogtreecommitdiffstats
path: root/src/top_menu.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/top_menu.cpp')
-rw-r--r--src/top_menu.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/top_menu.cpp b/src/top_menu.cpp
new file mode 100644
index 0000000..97b9861
--- /dev/null
+++ b/src/top_menu.cpp
@@ -0,0 +1,25 @@
+#include "top_menu.h"
+
+
+void new_game_cb(Fl_Widget * w, void * d) {
+ MainData * mdata = (MainData*)d;
+
+ mdata->snake_map->reset_all();
+}
+
+void pause_cb(Fl_Widget * w, void * d) {
+ MainData * mdata = (MainData*)d;
+
+ // Get button.
+ Fl_Menu_Bar * menu_bar = (Fl_Menu_Bar*)w;
+ const Fl_Menu_Item * button = menu_bar->mvalue();
+
+ // Set paused.
+ mdata->paused = (bool)button->value();
+}
+
+void add_menu_items(MainData * mdata, Fl_Menu_Bar * top_menu) {
+ // Game.
+ top_menu->add("&game/New game", FL_CTRL + 'n', (Fl_Callback*)new_game_cb, (void*)mdata);
+ top_menu->add("&game/pause", 'p', (Fl_Callback*)pause_cb, (void*)mdata, FL_MENU_TOGGLE | (mdata->paused ? FL_MENU_VALUE : 0x0));
+}