Bugfix: it was impossible to create a level subset in leveleditor cause Create button...
[supertux.git] / src / leveleditor.cpp
index 4e23130..b861345 100644 (file)
@@ -132,7 +132,7 @@ for(int i = 0; i < NUM_BadGuyKinds; i++)
 
   BadGuyKind kind = BadGuyKind(i);
   BadGuy badguy(kind, 0,0);
-//  badguy.activate(LEFT);
+  badguy.activate(LEFT);
 
   Surface *img = badguy.get_image();
   tiles_board->add_button(Button(img, "", SDLKey(SDLK_1+i)), -(i+1));
@@ -268,9 +268,13 @@ while(SDL_PollEvent(&event))
       }
     else if(menu == create_subset_menu)
       {
+      // activate or deactivate Create button if any filename as been specified
       if(create_subset_menu->get_item_by_id(MN_ID_FILENAME_SUBSET).input[0] == '\0')
         create_subset_menu->get_item_by_id(MN_ID_CREATE_SUBSET).kind = MN_DEACTIVE;
-      else if(create_subset_menu->check() == MN_ID_CREATE_SUBSET)
+      else
+        create_subset_menu->get_item_by_id(MN_ID_CREATE_SUBSET).kind = MN_ACTION;
+
+      if(create_subset_menu->check() == MN_ID_CREATE_SUBSET)
         {   // applying settings:
         LevelSubset::create(create_subset_menu->get_item_by_id(MN_ID_FILENAME_SUBSET).input);
 
@@ -623,7 +627,7 @@ if(sector)
           {
           BadGuyKind kind = BadGuyKind((-id)-1);
           BadGuy badguy(kind, 0,0);
-//          badguy.activate(LEFT);
+          badguy.activate(LEFT);
           Surface *img = badguy.get_image();
 
           context.draw_surface(img, Vector(event.button.x - 8,
@@ -681,12 +685,12 @@ if(sector)
       (*i)->draw(context);
 
       context.pop_transform();
+      continue;
       }
     Background* background = dynamic_cast<Background*> (*i);
     if(background)
       {  // don't resize background
       context.push_transform();
-      context.set_translation(scroll);
       context.set_zooming(1.0);
       (*i)->draw(context);
       context.pop_transform();
@@ -786,8 +790,8 @@ foregrounds = solids = backgrounds = 0;
 for(Sector::GameObjects::iterator i = sector->gameobjects.begin(); i != sector->gameobjects.end(); i++)
   {
   BadGuy* badguy = dynamic_cast<BadGuy*> (*i);
-//  if(badguy)
-//    badguy->activate(LEFT);
+  if(badguy)
+    badguy->activate(LEFT);
 
   TileMap* tilemap = dynamic_cast<TileMap*> (*i);
   if(tilemap)
@@ -840,7 +844,8 @@ if(level_changed)
 GameSession session(level_filename, ST_GL_TEST);
 session.run();
 //  player_status.reset();
-sound_manager->halt_music();
+if(sound_manager)
+  sound_manager->halt_music();
 }
 
 void LevelEditor::change(int x, int y, int newtile, int layer)
@@ -869,7 +874,7 @@ if(newtile < 0)  // add object
   else if(newtile == OBJ_DOOR)
     sector->add_object(new Door(x, y));
   else
-    sector->add_object(new BadGuy(BadGuyKind((-newtile)-1), x, y));
+    sector->add_bad_guy(x, y, BadGuyKind((-newtile)-1), true);
 
   sector->update_game_objects();
   }