+ level_settings_menu->additem(MN_ACTION,"Apply Changes",0,0,MNID_APPLY);
+
+ select_tilegroup_menu->arrange_left = true;
+ select_tilegroup_menu->additem(MN_LABEL,"Select Tilegroup",0,0);
+ select_tilegroup_menu->additem(MN_HL,"",0,0);
+ std::vector<TileGroup>* tilegroups = TileManager::tilegroups();
+ int tileid = 1;
+ for(std::vector<TileGroup>::iterator it = tilegroups->begin();
+ it != tilegroups->end(); ++it )
+ {
+ select_tilegroup_menu->additem(MN_ACTION, it->name, 0, 0, tileid);
+ tileid++;
+ tilegroups_map[(*it).name] = new ButtonPanel(screen->w - 64,96, 64, 318);
+ i = 0;
+
+ for(std::vector<int>::iterator sit = (*it).tiles.begin();
+ sit != (*it).tiles.end(); ++sit, ++i)
+ {
+ std::string imagefile = "/images/tilesets/" ;
+ bool only_editor_image = false;
+ if(!TileManager::instance()->get(*sit)->filenames.empty())
+ {
+ imagefile += TileManager::instance()->get(*sit)->filenames[0];
+ }
+ else if(!TileManager::instance()->get(*sit)->editor_filenames.empty())
+ {
+ imagefile += TileManager::instance()->get(*sit)->editor_filenames[0];
+ only_editor_image = true;
+ }
+ else
+ {
+ imagefile += "notile.png";
+ }
+ Button* button = new Button(imagefile, it->name, SDLKey(SDLK_a + i),
+ 0, 0, 32, 32);
+ if(!only_editor_image)
+ if(!TileManager::instance()->get(*sit)->editor_filenames.empty())
+ {
+ imagefile = "/images/tilesets/" + TileManager::instance()->get(*sit)->editor_filenames[0];
+ button->add_icon(imagefile,32,32);
+ }
+ tilegroups_map[it->name]->additem(button, *sit);
+ }
+ }
+ select_tilegroup_menu->additem(MN_HL,"",0,0);
+
+ select_objects_menu->arrange_left = true;
+ select_objects_menu->additem(MN_LABEL,"Select Objects",0,0);
+ select_objects_menu->additem(MN_HL,"",0,0);
+ select_objects_menu->additem(MN_ACTION,"BadGuys",0,0,1);
+ objects_map["BadGuys"] = new ButtonPanel(screen->w - 64,96, 64, 318);
+
+ for(int i = 0; i < NUM_BadGuyKinds; ++i)
+ {
+ BadGuy bad_tmp(0,0,BadGuyKind(i),false);
+ objects_map["BadGuys"]->additem(new Button("", "BadGuy",(SDLKey)(i+'a'),0,0,32,32),1000000+i);
+ objects_map["BadGuys"]->manipulate_button(i)->set_game_object(new BadGuy(objects_map["BadGuys"]->manipulate_button(i)->get_pos().x,objects_map["BadGuys"]->manipulate_button(i)->get_pos().y,BadGuyKind(i),false));
+ }
+
+ select_objects_menu->additem(MN_HL,"",0,0);
+
+}
+
+int le_init()
+{
+ level_subsets = dsubdirs("/levels", "info");
+ le_level_subset = new LevelSubset;
+
+ active_tm = TM_IA;
+ le_show_grid = true;
+ scroll_x = 0;
+
+ fire = DOWN;
+ done = 0;
+ le_frame = 0; /* support for frames in some tiles, like waves and bad guys */
+ le_level_changed = false;
+ le_current_level = NULL;
+
+ le_mouse_pressed[LEFT] = false;
+ le_mouse_pressed[RIGHT] = false;
+
+ le_selection = new Surface(datadir + "/images/leveleditor/select.png", USE_ALPHA);
+
+ select_tilegroup_menu_effect.init(false);
+ select_objects_menu_effect.init(false);
+
+ /* Load buttons */
+ le_save_level_bt = new Button("/images/icons/save.png","Save level", SDLK_F6,screen->w-64,32);
+ le_exit_bt = new Button("/images/icons/exit.png","Exit", SDLK_F6,screen->w-32,32);
+ le_next_level_bt = new Button("/images/icons/up.png","Next level", SDLK_PAGEUP,screen->w-64,0);
+ le_previous_level_bt = new Button("/images/icons/down.png","Previous level",SDLK_PAGEDOWN,screen->w-32,0);
+ le_rubber_bt = new Button("/images/icons/rubber.png","Rubber",SDLK_DELETE,screen->w-32,48);
+ le_select_mode_one_bt = new Button ("/images/icons/select-mode1.png","Select single tile",SDLK_F3,screen->w-64,48);
+ le_select_mode_two_bt = new Button("/images/icons/select-mode2.png","Select multiple tiles",SDLK_F3,screen->w-64,48);
+ le_test_level_bt = new Button("/images/icons/test-level.png","Test level",SDLK_F4,screen->w-64,screen->h - 64);
+ le_settings_bt = new Button("/images/icons/settings.png","Level settings",SDLK_F5,screen->w-32,screen->h - 64);
+ le_move_left_bt = new Button("/images/icons/left.png","Move left",SDLK_LEFT,0,0);
+ le_move_right_bt = new Button("/images/icons/right.png","Move right",SDLK_RIGHT,screen->w-80,0);
+ le_tilegroup_bt = new Button("/images/icons/tilegroup.png","Select Tilegroup", SDLK_F7,screen->w-64,64);
+ le_objects_bt = new Button("/images/icons/objects.png","Select Objects", SDLK_F7,screen->w-64,80);
+
+ le_tilemap_panel = new ButtonPanel(screen->w-64,screen->h-32,32,32);
+ le_tilemap_panel->set_button_size(32,10);
+ le_tilemap_panel->additem(new Button("/images/icons/bkgrd.png","Background",SDLK_F4,0,0),TM_BG);
+ le_tilemap_panel->additem(new Button("/images/icons/intact.png","Interactive",SDLK_F4,0,0),TM_IA);
+ le_tilemap_panel->additem(new Button("/images/icons/frgrd.png","Foreground",SDLK_F4,0,0),TM_FG);
+
+ le_current.Init();
+
+ le_init_menus();