Added "author" field for levels.
[supertux.git] / src / leveleditor.cpp
index bca421d..ea96354 100644 (file)
@@ -205,7 +205,7 @@ int leveleditor(int levelnb)
             {
               switch (level_settings_menu->check())
                 {
-                case 13:
+                case 17:
                   apply_level_settings_menu();
                   Menu::set_current(leveleditor_menu);
                   break;
@@ -282,7 +282,7 @@ int leveleditor(int levelnb)
                       le_set_defaults();
                       le_current_level->load_gfx();
                      le_world.activate_bad_guys();
-                      menu_item_change_input(&subset_new_menu->item[2],"");
+                      subset_new_menu->item[2].change_input("");
                       show_menu = true;
                       break;
                     }
@@ -426,15 +426,19 @@ int le_init()
   level_settings_menu->additem(MN_LABEL,"Level Settings",0,0);
   level_settings_menu->additem(MN_HL,"",0,0);
   level_settings_menu->additem(MN_TEXTFIELD,"Name    ",0,0);
+  level_settings_menu->additem(MN_TEXTFIELD,"Author  ",0,0);
   level_settings_menu->additem(MN_STRINGSELECT,"Theme   ",0,0);
   level_settings_menu->additem(MN_STRINGSELECT,"Song    ",0,0);
   level_settings_menu->additem(MN_STRINGSELECT,"Bg-Image",0,0);
   level_settings_menu->additem(MN_NUMFIELD,"Length ",0,0);
   level_settings_menu->additem(MN_NUMFIELD,"Time   ",0,0);
   level_settings_menu->additem(MN_NUMFIELD,"Gravity",0,0);
-  level_settings_menu->additem(MN_NUMFIELD,"Red    ",0,0);
-  level_settings_menu->additem(MN_NUMFIELD,"Green  ",0,0);
-  level_settings_menu->additem(MN_NUMFIELD,"Blue   ",0,0);
+  level_settings_menu->additem(MN_NUMFIELD,"Top Red    ",0,0);
+  level_settings_menu->additem(MN_NUMFIELD,"Top Green  ",0,0);
+  level_settings_menu->additem(MN_NUMFIELD,"Top Blue   ",0,0);
+  level_settings_menu->additem(MN_NUMFIELD,"Bottom Red ",0,0);
+  level_settings_menu->additem(MN_NUMFIELD,"Bottom Green",0,0);
+  level_settings_menu->additem(MN_NUMFIELD,"Bottom Blue",0,0);
   level_settings_menu->additem(MN_HL,"",0,0);
   level_settings_menu->additem(MN_ACTION,"Apply Changes",0,0);
 
@@ -463,37 +467,44 @@ void update_level_settings_menu()
   char str[80];
   int i;
 
-  menu_item_change_input(&level_settings_menu->item[2], le_current_level->name.c_str());
+  level_settings_menu->item[2].change_input(le_current_level->name.c_str());
+  level_settings_menu->item[3].change_input(le_current_level->author.c_str());
   sprintf(str,"%d",le_current_level->width);
 
-  string_list_copy(level_settings_menu->item[3].list, dsubdirs("images/themes", "solid0.png"));
-  string_list_copy(level_settings_menu->item[4].list, dfiles("music/",NULL, "-fast"));
-  string_list_copy(level_settings_menu->item[5].list, dfiles("images/background",NULL, NULL));
-  string_list_add_item(level_settings_menu->item[5].list,"");
-  if((i = string_list_find(level_settings_menu->item[3].list,le_current_level->theme.c_str())) != -1)
+  string_list_copy(level_settings_menu->item[4].list, dsubdirs("images/themes", "solid0.png"));
+  string_list_copy(level_settings_menu->item[5].list, dfiles("music/",NULL, "-fast"));
+  string_list_copy(level_settings_menu->item[6].list, dfiles("images/background",NULL, NULL));
+  string_list_add_item(level_settings_menu->item[6].list,"");
+  if((i = string_list_find(level_settings_menu->item[4].list,le_current_level->theme.c_str())) != -1)
     level_settings_menu->item[3].list->active_item = i;
-  if((i = string_list_find(level_settings_menu->item[4].list,le_current_level->song_title.c_str())) != -1)
+  if((i = string_list_find(level_settings_menu->item[5].list,le_current_level->song_title.c_str())) != -1)
     level_settings_menu->item[4].list->active_item = i;
-  if((i = string_list_find(level_settings_menu->item[5].list,le_current_level->bkgd_image.c_str())) != -1)
+  if((i = string_list_find(level_settings_menu->item[6].list,le_current_level->bkgd_image.c_str())) != -1)
     level_settings_menu->item[5].list->active_item = i;
 
-  menu_item_change_input(&level_settings_menu->item[6], str);
+  level_settings_menu->item[7].change_input(str);
   sprintf(str,"%d",le_current_level->time_left);
-  menu_item_change_input(&level_settings_menu->item[7], str);
+  level_settings_menu->item[8].change_input(str);
   sprintf(str,"%2.0f",le_current_level->gravity);
-  menu_item_change_input(&level_settings_menu->item[8], str);
-  sprintf(str,"%d",le_current_level->bkgd_red);
-  menu_item_change_input(&level_settings_menu->item[9], str);
-  sprintf(str,"%d",le_current_level->bkgd_green);
-  menu_item_change_input(&level_settings_menu->item[10], str);
-  sprintf(str,"%d",le_current_level->bkgd_blue);
-  menu_item_change_input(&level_settings_menu->item[11], str);
+  level_settings_menu->item[9].change_input(str);
+  sprintf(str,"%d",le_current_level->bkgd_top_red);
+  level_settings_menu->item[10].change_input(str);
+  sprintf(str,"%d",le_current_level->bkgd_top_green);
+  level_settings_menu->item[11].change_input(str);
+  sprintf(str,"%d",le_current_level->bkgd_top_blue);
+  level_settings_menu->item[12].change_input(str);
+  sprintf(str,"%d",le_current_level->bkgd_bottom_red);
+  level_settings_menu->item[13].change_input(str);
+  sprintf(str,"%d",le_current_level->bkgd_bottom_green);
+  level_settings_menu->item[14].change_input(str);
+  sprintf(str,"%d",le_current_level->bkgd_bottom_blue);
+  level_settings_menu->item[15].change_input(str);
 }
 
 void update_subset_settings_menu()
 {
-  menu_item_change_input(&subset_settings_menu->item[2], le_level_subset.title.c_str());
-  menu_item_change_input(&subset_settings_menu->item[3], le_level_subset.description.c_str());
+  subset_settings_menu->item[2].change_input(le_level_subset.title.c_str());
+  subset_settings_menu->item[3].change_input(le_level_subset.description.c_str());
 }
 
 void apply_level_settings_menu()
@@ -502,16 +513,17 @@ void apply_level_settings_menu()
   i = false;
 
   le_current_level->name = level_settings_menu->item[2].input;
+  le_current_level->author = level_settings_menu->item[3].input;
 
-  if(le_current_level->bkgd_image.compare(string_list_active(level_settings_menu->item[5].list)) != 0)
+  if(le_current_level->bkgd_image.compare(string_list_active(level_settings_menu->item[6].list)) != 0)
     {
-      le_current_level->bkgd_image = string_list_active(level_settings_menu->item[5].list);
+      le_current_level->bkgd_image = string_list_active(level_settings_menu->item[6].list);
       i = true;
     }
 
-  if(le_current_level->theme.compare(string_list_active(level_settings_menu->item[3].list)) != 0)
+  if(le_current_level->theme.compare(string_list_active(level_settings_menu->item[4].list)) != 0)
     {
-      le_current_level->theme = string_list_active(level_settings_menu->item[3].list);
+      le_current_level->theme = string_list_active(level_settings_menu->item[4].list);
       i = true;
     }
 
@@ -521,14 +533,17 @@ void apply_level_settings_menu()
       le_current_level->load_gfx();
     }
 
-  le_current_level->song_title = string_list_active(level_settings_menu->item[4].list);
-
-  le_current_level->change_size(atoi(level_settings_menu->item[6].input));
-  le_current_level->time_left = atoi(level_settings_menu->item[7].input);
-  le_current_level->gravity = atof(level_settings_menu->item[8].input);
-  le_current_level->bkgd_red = atoi(level_settings_menu->item[9].input);
-  le_current_level->bkgd_green = atoi(level_settings_menu->item[10].input);
-  le_current_level->bkgd_blue = atoi(level_settings_menu->item[11].input);
+  le_current_level->song_title = string_list_active(level_settings_menu->item[5].list);
+
+  le_current_level->change_size(atoi(level_settings_menu->item[7].input));
+  le_current_level->time_left = atoi(level_settings_menu->item[8].input);
+  le_current_level->gravity = atof(level_settings_menu->item[9].input);
+  le_current_level->bkgd_top_red = atoi(level_settings_menu->item[10].input);
+  le_current_level->bkgd_top_green = atoi(level_settings_menu->item[11].input);
+  le_current_level->bkgd_top_blue = atoi(level_settings_menu->item[12].input);
+  le_current_level->bkgd_bottom_red = atoi(level_settings_menu->item[13].input);
+  le_current_level->bkgd_bottom_green = atoi(level_settings_menu->item[14].input);
+  le_current_level->bkgd_bottom_blue = atoi(level_settings_menu->item[15].input);
 }
 
 void save_subset_settings_menu()
@@ -686,7 +701,8 @@ void le_drawlevel()
     }
   else
     {
-      clearscreen(le_current_level->bkgd_red, le_current_level->bkgd_green, le_current_level->bkgd_blue);
+          drawgradient(le_current_level->bkgd_top_red, le_current_level->bkgd_top_green, le_current_level->bkgd_top_blue, 
+                   le_current_level->bkgd_bottom_red, le_current_level->bkgd_bottom_green, le_current_level->bkgd_bottom_blue);
     }
 
   /*       clearscreen(current_level.bkgd_red, current_level.bkgd_green, current_level.bkgd_blue); */
@@ -750,7 +766,7 @@ void le_checkevents()
   while(SDL_PollEvent(&event))
     {
       if(show_menu)
-        menu_event(event);
+        current_menu->event(event);
       else
         mouse_cursor->set_state(MC_NORMAL);