+ /* Check for button events */
+ le_test_level_bt->event(event);
+ if(le_test_level_bt->get_state() == BUTTON_CLICKED)
+ testlevel();
+ le_save_level_bt->event(event);
+ if(le_save_level_bt->get_state() == BUTTON_CLICKED)
+ le_level->save(le_level_subset->name.c_str());
+ le_exit_bt->event(event);
+ if(le_exit_bt->get_state() == BUTTON_CLICKED)
+ {
+ Menu::set_current(leveleditor_menu);
+ }
+ le_next_level_bt->event(event);
+ if(le_next_level_bt->get_state() == BUTTON_CLICKED)
+ {
+ if(le_levelnb < le_level_subset->get_num_levels())
+ {
+ goto_level(le_levelnb+1);
+ }
+ else
+ {
+ Level new_lev;
+ char str[1024];
+ sprintf(str,"Level %d doesn't exist. Create it?",le_levelnb+1);
+ Surface* surf = new Surface(le_level->get_sector("main")->background->get_image(), false);
+ if(confirm_dialog(surf, str))
+ {
+ le_level_subset->add_level("newlevel.stl");
+ new_lev.save(le_level_subset->get_level_filename(le_levelnb+1));
+ goto_level(le_levelnb);
+ }
+ if(surf != NULL)
+ delete surf;
+ }
+ }
+ le_previous_level_bt->event(event);
+ if(le_previous_level_bt->get_state() == BUTTON_CLICKED)
+ {
+ if(le_levelnb > 1)
+ goto_level(le_levelnb -1);
+ }
+ le_rubber_bt->event(event);
+ if(le_rubber_bt->get_state() == BUTTON_CLICKED)
+ le_current.Tile(0);
+
+ if(!cur_objects.empty())
+ {
+ le_object_select_bt->event(event);
+ if(le_object_select_bt->get_state() == BUTTON_CLICKED)
+ {
+ MouseCursor::set_current(mouse_select_object);
+ }
+
+ le_object_properties_bt->event(event);
+ if(le_object_properties_bt->get_state() == BUTTON_CLICKED)
+ {
+ change_object_properties(selected_game_object);
+ }
+ }
+
+
+ if(le_selection_mode == SQUARE)
+ {
+ le_select_mode_one_bt->event(event);
+ if(le_select_mode_one_bt->get_state() == BUTTON_CLICKED)
+ le_selection_mode = CURSOR;
+ }
+ else
+ {
+ le_select_mode_two_bt->event(event);
+ if(le_select_mode_two_bt->get_state() == BUTTON_CLICKED)
+ le_selection_mode = SQUARE;
+ }
+ ButtonPanelMap::iterator it;
+ le_tilegroup_bt->event(event);
+ switch (le_tilegroup_bt->get_state())
+ {
+ case BUTTON_CLICKED:
+ Menu::set_current(select_tilegroup_menu);
+ select_tilegroup_menu_effect.start(200);
+ select_tilegroup_menu->set_pos(screen->w - 64,100,-0.5,0.5);
+ break;
+ case BUTTON_WHEELUP:
+ if(cur_tilegroup.empty())
+ {
+ cur_tilegroup = tilegroups_map.begin()->first;
+ }
+ else
+ {
+ it = tilegroups_map.find(cur_tilegroup);
+ if((++it) == tilegroups_map.end())
+ {
+ cur_tilegroup = tilegroups_map.begin()->first;
+ }
+ else
+ {
+ cur_tilegroup = (*it).first;
+ }
+ }
+
+ cur_objects = "";
+ break;
+ case BUTTON_WHEELDOWN:
+ it = tilegroups_map.find(cur_tilegroup);
+ if(it == tilegroups_map.begin())
+ {
+ cur_tilegroup = tilegroups_map.rbegin()->first;
+ cur_objects = "";
+ break;
+ }
+ if(--it != --tilegroups_map.begin())
+ cur_tilegroup = (*it).first;
+ else
+ cur_tilegroup = tilegroups_map.rbegin()->first;
+
+ cur_objects = "";
+ break;
+ default:
+ break;
+ }
+
+ le_objects_bt->event(event);
+ switch (le_objects_bt->get_state())
+ {
+ case BUTTON_CLICKED:
+ Menu::set_current(select_objects_menu);
+ select_objects_menu_effect.start(200);
+ select_objects_menu->set_pos(screen->w - 64,100,-0.5,0.5);
+ break;
+ case BUTTON_WHEELUP:
+ it = objects_map.find(cur_objects);
+ if(it == objects_map.end())
+ {
+ cur_objects = objects_map.begin()->first;
+ cur_tilegroup = "";
+ break;
+ }
+ if(++it != objects_map.end())
+ cur_objects = (*it).first;
+ else
+ cur_objects = objects_map.begin()->first;
+
+ cur_tilegroup = "";
+ break;
+ case BUTTON_WHEELDOWN:
+ it = objects_map.find(cur_objects);
+ if(it == objects_map.begin())
+ {
+ cur_objects = objects_map.rbegin()->first;
+ cur_tilegroup = "";
+ break;
+ }
+ if(--it != --objects_map.begin())
+ cur_objects = (*it).first;
+ else
+ cur_objects = objects_map.rbegin()->first;
+
+ cur_tilegroup = "";
+ break;
+ break;
+ default:
+ break;
+ }
+
+ le_settings_bt->event(event);
+ if(le_settings_bt->get_state() == BUTTON_CLICKED)
+ {
+ update_level_settings_menu();
+ Menu::set_current(level_settings_menu);
+ }
+ if(!cur_tilegroup.empty())
+ {
+ if((pbutton = tilegroups_map[cur_tilegroup]->event(event)) != NULL)
+ {
+ if(pbutton->get_state() == BUTTON_CLICKED)
+ {
+ le_current.Tile(pbutton->get_tag());
+ }
+ }
+ }
+ else if(!cur_objects.empty())
+ {
+ if((pbutton = objects_map[cur_objects]->event(event)) != NULL)
+ {
+ if(pbutton->get_state() == BUTTON_CLICKED)
+ {
+#if 0 // TODO FIXME XXX: New solution for this?
+ le_current.Object(pbutton->get_drawable());
+#endif
+ }
+ }
+ }
+
+ if((pbutton = le_tilemap_panel->event(event)) != NULL)
+ {
+ if(pbutton->get_state() == BUTTON_CLICKED)
+ {
+ active_tm = pbutton->get_tag();
+ }
+ }