X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fleveleditor.cpp;h=d6d8a2ecc306129039d202d6c806410e7eb4de81;hb=763454f90866bd4e7db95e5884c48a25d6b9bda1;hp=f17fbe1b5dcf99a04bc00226069be468e48e4372;hpb=d46c78c842ab4090a3f46e560c891234167f124b;p=supertux.git diff --git a/src/leveleditor.cpp b/src/leveleditor.cpp index f17fbe1b5..d6d8a2ecc 100644 --- a/src/leveleditor.cpp +++ b/src/leveleditor.cpp @@ -31,21 +31,19 @@ #include "leveleditor.h" #include "resources.h" #include "tile.h" -#include "tilemap.h" #include "tile_manager.h" #include "sector.h" -#include "background.h" #include "gameloop.h" -#include "badguy.h" -#include "gameobjs.h" -#include "camera.h" +#include "object/gameobjs.h" +#include "object/camera.h" +#include "object/tilemap.h" +#include "object/background.h" LevelEditor::LevelEditor() { show_grid = true; selection.clear(); - global_frame_counter = 0; selection_end = selection_ini = Vector(0,0); left_button = middle_button = mouse_moved = false; level = 0; @@ -233,7 +231,6 @@ else mouse_cursor->set_state(MC_NORMAL); -frame_timer.start(.25, true); done = false; while(!done) { @@ -291,7 +288,9 @@ while(SDL_PollEvent(&event)) level_subset->description = create_subset_menu->get_item_by_id(MN_ID_DESCRIPTION_SUBSET).input; //FIXME: generate better level filenames level_subset->add_level(subset_name+'/'+"new_level.stl"); - Level::create(level_subset->get_level_filename(0)); + Level* newlevel = new Level(); + newlevel->add_sector(create_sector("main", 25, 19)); + newlevel->save(level_subset->get_level_filename(0)); level_subset->save(); load_level(0); @@ -371,7 +370,9 @@ while(SDL_PollEvent(&event)) if(confirm_dialog(NULL, str)) { level_subset->add_level("new_level.stl"); - Level::create(level_subset->get_level_filename(level_nb + 1)); + Level* newlevel = new Level(); + newlevel->add_sector(create_sector("main", 25, 19)); + newlevel->save(level_subset->get_level_filename(level_nb + 1)); level_subset->save(); load_level(level_nb + 1); } @@ -535,10 +536,6 @@ if(tiles_board->is_hover() || tiles_layer->is_hover() || level_options->is_hover if(sector) { - if(frame_timer.check()) { - ++global_frame_counter; - } - // don't scroll before the start or after the level's end float width = sector->solids->get_width() * 32; float height = sector->solids->get_height() * 32; @@ -787,7 +784,7 @@ if(sector_ == NULL) { if(!confirm_dialog(NULL, _("No more sectors exist. Create another?"))) return; - sector_ = Sector::create("new_sector",25,19); + sector_ = create_sector("new_sector",25,19); level->add_sector(sector_); } @@ -862,6 +859,7 @@ void LevelEditor::test_level() void LevelEditor::change(int x, int y, int newtile, int layer) { + (void) layer; // find the tilemap of the current layer, and then change the tile if(x < 0 || (unsigned int)x >= sector->solids->get_width()*32 || y < 0 || (unsigned int)y >= sector->solids->get_height()*32) @@ -941,7 +939,7 @@ mouse_cursor->set_state(MC_HIDE); char str[1024]; -char *text1[] = { +const char *text1[] = { _("This is the built-in level editor. Its aim is to be intuitive\n" "and simple to use, so it should be pretty straightforward.\n" "\n" @@ -977,7 +975,7 @@ char *text1[] = { "enemies and game objects in the bottom.\n") }; -char *text2[] = { +const char *text2[] = { _("The Foreground/Interactive/Background buttons may be used to\n" "see and edit the respective layer. Levels have three tiles layers:\n" "Foreground - tiles are drawn on top of everything and have no contact\n" @@ -1010,7 +1008,7 @@ char *text2[] = { "Webpage: http://pingus.seul.org/~grumbel/flexlay/") }; -char **text[] = { text1, text2 }; +const char **text[] = { text1, text2 }; bool done; @@ -1039,3 +1037,19 @@ for(unsigned int i = 0; i < sizeof(text) / sizeof(text[0]); i++) show_grid = show_grid_t; mouse_cursor->set_state(MC_NORMAL); } + +Sector* +LevelEditor::create_sector(const std::string& name, size_t width, size_t height) +{ + Sector* sector = new Sector; + sector->set_name(name); + + sector->add_object(new TileMap(LAYER_BACKGROUNDTILES, false, width, height)); + sector->add_object(new TileMap(LAYER_TILES, true, width, height)); + sector->add_object(new TileMap(LAYER_FOREGROUNDTILES, false, width, height)); + sector->add_object(new Camera(sector)); + sector->update_game_objects(); + + return sector; +} +