commited Matzes Win32 patch
[supertux.git] / src / menu.h
index 923efac..fc3aa1a 100644 (file)
 #include <SDL.h>
 #include "texture.h"
 #include "timer.h"
+#include "type.h"
+
+/* Kinds of menu items */
+enum MenuItemKind {
+  MN_ACTION,
+  MN_GOTO,
+  MN_TOGGLE,
+  MN_BACK,
+  MN_DEACTIVE,
+  MN_TEXTFIELD,
+  MN_NUMFIELD,
+  MN_STRINGSELECT,
+  MN_LABEL,
+  MN_HL /* horizontal line */
+};
 
 typedef struct menu_item_type
-{
- int kind;
- char *text;
- char *input;
- int toggled;
- void* target_menu;
-}
+  {
+    MenuItemKind kind;
+    int toggled;
+    char *text;
+    char *input;
+    string_list_type* list;
+    void* target_menu;
+  }
 menu_item_type;
 
-menu_item_type* menu_item_create(int kind, char *text, int init_toggle, void* target_menu);
-void menu_item_change_text(menu_item_type* pmenu_item, char *text);
-void menu_item_change_input(menu_item_type* pmenu_item, char *text);
+menu_item_type* menu_item_create(MenuItemKind kind, char *text, int init_toggle, void* target_menu);
+void menu_item_change_text(menu_item_type* pmenu_item, const char *text);
+void menu_item_change_input(menu_item_type* pmenu_item, const char *text);
 
 typedef struct menu_type
-{
- int num_items;
- int active_item;
- int arrange_left;
- menu_item_type *item;
- timer_type effect;
-}
+  {
   int num_items;
   int active_item;
   int arrange_left;
   menu_item_type *item;
   timer_type effect;
+  }
 menu_type;
 
 void menu_init(menu_type* pmenu);
@@ -49,23 +65,12 @@ int menu_check(menu_type* pmenu);
 void menu_draw(menu_type* pmenu);
 void menu_set_current(menu_type* pmenu);
 
-/* Kinds of menu items */
-enum {
-  MN_ACTION,
-  MN_GOTO,
-  MN_TOGGLE,
-  MN_BACK,
-  MN_DEACTIVE,
-  MN_TEXTFIELD,
-  MN_NUMFIELD,
-  MN_LABEL,
-  MN_HL /* horizontal line */
-};
-
 /* Action done on the menu */
 enum {
   MN_UP,
   MN_DOWN,
+  MN_LEFT,
+  MN_RIGHT,
   MN_HIT,
   MN_INPUT,
   MN_REMOVE
@@ -75,7 +80,7 @@ enum {
 extern int menuaction;
 extern int show_menu;
 extern int menu_change;
-extern texture_type checkbox, checkbox_checked, back;
+extern texture_type checkbox, checkbox_checked, back, arrow_left, arrow_right;
 
 extern menu_type main_menu, game_menu, options_menu, highscore_menu, load_game_menu, save_game_menu;
 extern menu_type* current_menu, * last_menu;