X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fleveleditor.cpp;h=ddc0e08c07e47da2d7be4d8e5b16b6d36e8c7807;hb=7290f49a1304d0687d48260ceb4d1b2bbe34c8ee;hp=2d7f6f7422666aeeb74f72813a0459b9220cef2b;hpb=7dd997b1207127e88f42915ec8bc1aa8e7599ad1;p=supertux.git diff --git a/src/leveleditor.cpp b/src/leveleditor.cpp index 2d7f6f742..ddc0e08c0 100644 --- a/src/leveleditor.cpp +++ b/src/leveleditor.cpp @@ -33,10 +33,10 @@ #include "SDL_image.h" #include "leveleditor.h" -#include "screen/screen.h" +#include "video/screen.h" #include "defines.h" -#include "globals.h" -#include "setup.h" +#include "app/globals.h" +#include "app/setup.h" #include "sector.h" #include "tilemap.h" #include "gameloop.h" @@ -69,11 +69,15 @@ #define SELECT_W 2 // size of the selections lines #define SELECT_CLR 0, 255, 0, 255 // lines color (R, G, B, A) +/* Frames per second: */ + +#define FPS (1000 / 25) + enum { TM_IA, TM_BG, TM_FG }; LevelEditor::LevelEditor() { - level_subsets = dsubdirs("/levels", "level1.stl"); + level_subsets = FileSystem::dsubdirs("/levels", "level1.stl"); le_level_subset = new LevelSubset; le_level = NULL; @@ -97,7 +101,7 @@ LevelEditor::LevelEditor() le_mouse_clicked[LEFT] = false; le_mouse_clicked[RIGHT] = false; - le_selection = new Surface(datadir + "/images/leveleditor/select.png", USE_ALPHA); + le_selection = new Surface(datadir + "/images/leveleditor/select.png", true); select_tilegroup_menu_effect.init(false); select_objects_menu_effect.init(false); @@ -197,7 +201,7 @@ int LevelEditor::run(char* filename) le_level = NULL; le_levelnb = 1; - sound_manager->halt_music(); + SoundManager::get()->halt_music(); while (SDL_PollEvent(&event)) {} @@ -326,7 +330,7 @@ int LevelEditor::run(char* filename) default: if(i >= 1) { - if(load_level_subset(level_subsets.item[i-1])) + if(load_level_subset(subset_load_menu->item[i+1].text.c_str())) return 1; } break; @@ -344,7 +348,7 @@ int LevelEditor::run(char* filename) { case MNID_CREATESUBSET: LevelSubset::create(subset_new_menu->get_item_by_id(MNID_SUBSETNAME).input); - le_level_subset->load(subset_new_menu->get_item_by_id(MNID_SUBSETNAME).input); + le_level_subset->load(subset_new_menu->get_item_by_id(MNID_SUBSETNAME).input.c_str()); leveleditor_menu->get_item_by_id(MNID_SUBSETSETTINGS).kind = MN_GOTO; goto_level(1); subset_new_menu->get_item_by_id(MNID_SUBSETNAME).change_input(""); @@ -391,7 +395,7 @@ int LevelEditor::run(char* filename) return done; } -int LevelEditor::load_level_subset(char *filename) +int LevelEditor::load_level_subset(const char *filename) { le_level_subset->load(filename); leveleditor_menu->get_item_by_id(MNID_SUBSETSETTINGS).kind = MN_GOTO; @@ -407,7 +411,7 @@ int LevelEditor::load_level_subset(char *filename) void LevelEditor::init_menus() { - int i; + int i = 0; leveleditor_menu = new Menu(); subset_load_menu = new Menu(); @@ -431,9 +435,9 @@ void LevelEditor::init_menus() subset_load_menu->additem(MN_LABEL, "Load Level Subset", 0, 0); subset_load_menu->additem(MN_HL, "", 0, 0); - for(i = 0; i < level_subsets.num_items; ++i) + for(std::set::iterator it = level_subsets.begin(); it != level_subsets.end(); ++it) { - subset_load_menu->additem(MN_ACTION,level_subsets.item[i],0,0, i+1); + subset_load_menu->additem(MN_ACTION,(*it),0,0, i+1); } subset_load_menu->additem(MN_HL,"",0,0); subset_load_menu->additem(MN_BACK,"Back",0,0); @@ -492,7 +496,7 @@ void LevelEditor::init_menus() for(std::vector::const_iterator sit = (*it).tiles.begin(); sit != (*it).tiles.end(); ++sit, ++i) { - Tile& tile = TileManager::instance()->get(*sit); +/* Tile& tile = TileManager::instance()->get(*sit); Surface* image; if(tile.editor_images.size() > 0) image = tile.editor_images[0]; @@ -504,7 +508,7 @@ void LevelEditor::init_menus() Button* button = new Button(image, it->name, SDLKey(SDLK_a + i), 0, 0, 32, 32); - tilegroups_map[it->name]->additem(button, *sit); + tilegroups_map[it->name]->additem(button, *sit);*/ } } select_tilegroup_menu->additem(MN_HL,"",0,0); @@ -535,22 +539,22 @@ void LevelEditor::init_menus() void LevelEditor::update_level_settings_menu() { char str[80]; - int i; + std::set::iterator it; level_settings_menu->get_item_by_id(MNID_NAME).change_input(le_level->name.c_str()); level_settings_menu->get_item_by_id(MNID_AUTHOR).change_input(le_level->author.c_str()); - string_list_copy(level_settings_menu->get_item_by_id(MNID_SONG).list, dfiles("music/",NULL, "-fast")); - string_list_copy(level_settings_menu->get_item_by_id(MNID_BGIMG).list, dfiles("images/background",NULL, NULL)); - string_list_add_item(level_settings_menu->get_item_by_id(MNID_BGIMG).list,""); - string_list_add_item(level_settings_menu->get_item_by_id(MNID_PARTICLE).list,""); - string_list_add_item(level_settings_menu->get_item_by_id(MNID_PARTICLE).list,"snow"); - string_list_add_item(level_settings_menu->get_item_by_id(MNID_PARTICLE).list,"clouds"); - - if((i = string_list_find(level_settings_menu->get_item_by_id(MNID_SONG).list,le_level->get_sector("main")->song_title.c_str())) != -1) - level_settings_menu->get_item_by_id(MNID_SONG).list->active_item = i; - if((i = string_list_find(level_settings_menu->get_item_by_id(MNID_BGIMG).list,le_level->get_sector("main")->background->get_image().c_str())) != -1) - level_settings_menu->get_item_by_id(MNID_BGIMG).list->active_item = i; + level_settings_menu->get_item_by_id(MNID_SONG).list.first = FileSystem::dfiles("music/","", "-fast"); + level_settings_menu->get_item_by_id(MNID_BGIMG).list.first = FileSystem::dfiles("images/background","", ""); + level_settings_menu->get_item_by_id(MNID_BGIMG).list.first.insert(""); + level_settings_menu->get_item_by_id(MNID_PARTICLE).list.first.insert(""); + level_settings_menu->get_item_by_id(MNID_PARTICLE).list.first.insert("snow"); + level_settings_menu->get_item_by_id(MNID_PARTICLE).list.first.insert("clouds"); + + if((it = level_settings_menu->get_item_by_id(MNID_SONG).list.first.find(le_level->get_sector("main")->song_title)) != level_settings_menu->get_item_by_id(MNID_SONG).list.first.end()) + level_settings_menu->get_item_by_id(MNID_SONG).list.second = it; + if((it = level_settings_menu->get_item_by_id(MNID_BGIMG).list.first.find(le_level->get_sector("main")->background->get_image())) != level_settings_menu->get_item_by_id(MNID_BGIMG).list.first.end()) + level_settings_menu->get_item_by_id(MNID_BGIMG).list.second = it; /* if((i = string_list_find(level_settings_menu->get_item_by_id(MNID_PARTICLE).list,le_level->get_sector("main")->particlesystem.c_str())) != -1) level_settings_menu->get_item_by_id(MNID_PARTICLE).list->active_item = i;*/ @@ -593,9 +597,9 @@ void LevelEditor::apply_level_settings_menu() le_level->name = level_settings_menu->get_item_by_id(MNID_NAME).input; le_level->author = level_settings_menu->get_item_by_id(MNID_AUTHOR).input; - if(le_level->get_sector("main")->background->get_image().compare(string_list_active(level_settings_menu->get_item_by_id(MNID_BGIMG).list)) != 0) + if(le_level->get_sector("main")->background->get_image().compare((*level_settings_menu->get_item_by_id(MNID_BGIMG).list.second)) != 0) { - le_level->get_sector("main")->background->set_image(string_list_active(level_settings_menu->get_item_by_id(MNID_BGIMG).list), atoi(level_settings_menu->get_item_by_id(MNID_BGSPEED).input)); + le_level->get_sector("main")->background->set_image((*level_settings_menu->get_item_by_id(MNID_BGIMG).list.second), atoi(level_settings_menu->get_item_by_id(MNID_BGSPEED).input.c_str())); i = true; } @@ -609,20 +613,20 @@ void LevelEditor::apply_level_settings_menu() le_level->load_gfx(); }*/ - le_level->get_sector("main")->song_title = string_list_active(level_settings_menu->get_item_by_id(MNID_SONG).list); + le_level->get_sector("main")->song_title = (*level_settings_menu->get_item_by_id(MNID_SONG).list.second); le_level->get_sector("main")->solids->resize( - atoi(level_settings_menu->get_item_by_id(MNID_LENGTH).input), - atoi(level_settings_menu->get_item_by_id(MNID_HEIGHT).input)); - le_level->time_left = atoi(level_settings_menu->get_item_by_id(MNID_TIME).input); - le_level->get_sector("main")->gravity = atof(level_settings_menu->get_item_by_id(MNID_GRAVITY).input); + atoi(level_settings_menu->get_item_by_id(MNID_LENGTH).input.c_str()), + atoi(level_settings_menu->get_item_by_id(MNID_HEIGHT).input.c_str())); + le_level->time_left = atoi(level_settings_menu->get_item_by_id(MNID_TIME).input.c_str()); + le_level->get_sector("main")->gravity = atof(level_settings_menu->get_item_by_id(MNID_GRAVITY).input.c_str()); le_level->get_sector("main")->background->set_gradient(Color( - atoi(level_settings_menu->get_item_by_id(MNID_TopRed).input), - atoi(level_settings_menu->get_item_by_id(MNID_TopGreen).input), - atoi(level_settings_menu->get_item_by_id(MNID_TopBlue).input)), Color( - atoi(level_settings_menu->get_item_by_id(MNID_BottomRed).input), - atoi(level_settings_menu->get_item_by_id(MNID_BottomGreen).input), - atoi(level_settings_menu->get_item_by_id(MNID_BottomBlue).input))); + atoi(level_settings_menu->get_item_by_id(MNID_TopRed).input.c_str()), + atoi(level_settings_menu->get_item_by_id(MNID_TopGreen).input.c_str()), + atoi(level_settings_menu->get_item_by_id(MNID_TopBlue).input.c_str())), Color( + atoi(level_settings_menu->get_item_by_id(MNID_BottomRed).input.c_str()), + atoi(level_settings_menu->get_item_by_id(MNID_BottomGreen).input.c_str()), + atoi(level_settings_menu->get_item_by_id(MNID_BottomBlue).input.c_str()))); } void LevelEditor::save_subset_settings_menu() @@ -926,7 +930,7 @@ le_level->get_sector("main")->solids->draw(context); /* Draw the player: */ /* for now, the position is fixed at (100, 240) */ - largetux.walk_right->draw(context, Vector(100 - pos_x, 240 - pos_y), LAYER_OBJECTS-1); +// largetux.walk_right->draw(context, Vector(100 - pos_x, 240 - pos_y), LAYER_OBJECTS-1); } void LevelEditor::change_object_properties(GameObject *pobj) @@ -946,10 +950,10 @@ void LevelEditor::change_object_properties(GameObject *pobj) object_properties_menu->additem(MN_STRINGSELECT,"Kind",0,0,1); for(int i = 0; i < NUM_BadGuyKinds; ++i) { - string_list_add_item(object_properties_menu->get_item_by_id(1).list, - badguykind_to_string(static_cast(i)).c_str()); + object_properties_menu->get_item_by_id(1).list.first.insert( + badguykind_to_string(static_cast(i))); if(pbad->kind == i) - object_properties_menu->get_item_by_id(1).list->active_item = i; + object_properties_menu->get_item_by_id(1).list.second = object_properties_menu->get_item_by_id(1).list.first.find(badguykind_to_string(static_cast(i))); } object_properties_menu->additem(MN_TOGGLE,"StayOnPlatform",pbad->stay_on_platform,0,2); } @@ -980,7 +984,7 @@ void LevelEditor::change_object_properties(GameObject *pobj) BadGuy* pbad = dynamic_cast(pobj); if(pbad != 0) { BadGuy* pbad = dynamic_cast(pobj); - pbad->kind = badguykind_from_string(string_list_active(object_properties_menu->get_item_by_id(1).list)); + pbad->kind = badguykind_from_string((*object_properties_menu->get_item_by_id(1).list.second)); pbad->stay_on_platform = object_properties_menu->get_item_by_id(2).toggled; } loop = false; @@ -1683,7 +1687,7 @@ void LevelEditor::testlevel() session.run(); player_status.reset(); - sound_manager->halt_music(); + SoundManager::get()->halt_music(); Menu::set_current(NULL); }