- fixed rising specials
[supertux.git] / src / leveleditor.cpp
index 37446b9..e48e4a1 100644 (file)
@@ -440,6 +440,7 @@ void le_init_menus()
   level_settings_menu->additem(MN_STRINGSELECT,"Bg-Image",0,0,MNID_BGIMG);
   level_settings_menu->additem(MN_STRINGSELECT,"Particle",0,0,MNID_PARTICLE);
   level_settings_menu->additem(MN_NUMFIELD,    "Length  ",0,0,MNID_LENGTH);
+  level_settings_menu->additem(MN_NUMFIELD,    "Height  ",0,0,MNID_HEIGHT);
   level_settings_menu->additem(MN_NUMFIELD,    "Time    ",0,0,MNID_TIME);
   level_settings_menu->additem(MN_NUMFIELD,    "Gravity ",0,0,MNID_GRAVITY);
   level_settings_menu->additem(MN_NUMFIELD,    "Bg-Img-Speed",0,0,MNID_BGSPEED);
@@ -609,6 +610,8 @@ void update_level_settings_menu()
 
   sprintf(str,"%d",le_world->get_level()->width);
   level_settings_menu->get_item_by_id(MNID_LENGTH).change_input(str);
+  sprintf(str,"%d",le_world->get_level()->height);
+  level_settings_menu->get_item_by_id(MNID_HEIGHT).change_input(str);
   sprintf(str,"%d",le_world->get_level()->time_left);
   level_settings_menu->get_item_by_id(MNID_TIME).change_input(str);
   sprintf(str,"%2.0f",le_world->get_level()->gravity);
@@ -661,7 +664,8 @@ void apply_level_settings_menu()
 
   le_world->get_level()->song_title = string_list_active(level_settings_menu->get_item_by_id(MNID_SONG).list);
 
-  le_world->get_level()->change_size(atoi(level_settings_menu->get_item_by_id(MNID_LENGTH).input));
+  le_world->get_level()->change_width(atoi(level_settings_menu->get_item_by_id(MNID_LENGTH).input));
+  le_world->get_level()->change_height(atoi(level_settings_menu->get_item_by_id(MNID_HEIGHT).input));
   le_world->get_level()->time_left = atoi(level_settings_menu->get_item_by_id(MNID_TIME).input);
   le_world->get_level()->gravity = atof(level_settings_menu->get_item_by_id(MNID_GRAVITY).input);
   le_world->get_level()->bkgd_speed = atoi(level_settings_menu->get_item_by_id(MNID_BGSPEED).input);
@@ -911,7 +915,7 @@ void le_drawlevel()
   /* Draw the real background */
   if(le_world->get_level()->bkgd_image[0] != '\0')
   {
-    s = (int)((float)pos_x * ((float)le_world->get_level()->bkgd_speed/60.)) % screen->w;
+    s = (int)((float)pos_x * ((float)le_world->get_level()->bkgd_speed/100.0f)) % screen->w;
     le_world->get_level()->img_bkgd->draw_part(s,0,0,0,
         le_world->get_level()->img_bkgd->w - s - 32, le_world->get_level()->img_bkgd->h);
     le_world->get_level()->img_bkgd->draw_part(0,0,screen->w - s - 32 ,0,s,
@@ -1226,13 +1230,14 @@ void le_checkevents()
             }
           }
           break;
-        case SDL_QUIT: // window closed
-          done = 1;
-          break;
         default:
           break;
         }
       }
+      else if(event.type == SDL_QUIT) /* window closing */
+      {
+      done = 1;
+      }
     }
 
     if(le_world != NULL)
@@ -1479,12 +1484,19 @@ void le_checkevents()
             int i = 0;
             bool object_got_hit = false;
             base_type cursor_base;
+           if(le_current.IsTile())
+           {
             cursor_base.x = cursor_x;
             cursor_base.y = cursor_y;
+           }
+           else if(le_current.IsObject())
+           {
+            cursor_base.x = cursor_x + pos_x;
+            cursor_base.y = cursor_y + pos_x;      
+           }
             cursor_base.width = 32;
             cursor_base.height = 32;
 
-            /* if there is a bad guy over there, remove it */
             for(std::list<BadGuy*>::iterator it = le_world->bad_guys.begin(); it != le_world->bad_guys.end(); ++it, ++i)
               if(rectcollision(cursor_base,(*it)->base))
               {
@@ -1519,6 +1531,7 @@ void le_checkevents()
               }
             }
           }
+         
           le_mouse_clicked[LEFT] = false;
 
         }
@@ -1714,6 +1727,8 @@ void le_testlevel()
 void le_showhelp()
 {
   bool tmp_show_grid = le_show_grid;
+  int temp_le_selection_mode = le_selection_mode;
+  le_selection_mode = NONE;
   show_selections = true;
   le_show_grid = false;
   le_help_shown = true;
@@ -1854,5 +1869,6 @@ void le_showhelp()
 
   show_selections = true;
   le_show_grid = tmp_show_grid;
+  le_selection_mode = temp_le_selection_mode;
   le_help_shown = false;
 }