[Super-tux-commit] supertux/src level.cpp,1.93,1.94 mousecursor.cpp,1.10,1.11 sector.cpp,1.11,1.12 s
Brought to you by:
wkendrick
From: Ricardo C. <rm...@us...> - 2004-06-28 11:30:37
|
Update of /cvsroot/super-tux/supertux/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18728/src Modified Files: level.cpp mousecursor.cpp sector.cpp sector.h supertux.cpp tile_manager.h tilemap.h Log Message: A few changes to make the code ready for the new level editor. Major changes: - Level's save() works. Still doesn't save the game properly. - added a set_drawing_effect() for DrawingContext. Will apply it to the following drawings. Works with pop/push_transform. Index: sector.h =================================================================== RCS file: /cvsroot/super-tux/supertux/src/sector.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- sector.h 9 Jun 2004 05:23:20 -0000 1.5 +++ sector.h 28 Jun 2004 11:30:27 -0000 1.6 @@ -69,6 +69,8 @@ void activate(const std::string& spawnpoint = "main"); void action(float elapsed_time); + void update_game_objects(); + void draw(DrawingContext& context); /// adds a gameobject Index: sector.cpp =================================================================== RCS file: /cvsroot/super-tux/supertux/src/sector.cpp,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- sector.cpp 14 Jun 2004 22:45:23 -0000 1.11 +++ sector.cpp 28 Jun 2004 11:30:27 -0000 1.12 @@ -332,6 +332,12 @@ /* Handle all possible collisions. */ collision_handler(); + update_game_objects(); +} + +void +Sector::update_game_objects() +{ /** cleanup marked objects */ for(std::vector<GameObject*>::iterator i = gameobjects.begin(); i != gameobjects.end(); /* nothing */) { @@ -407,7 +413,6 @@ gameobjects.push_back(*i); } gameobjects_new.clear(); - } void Index: mousecursor.cpp =================================================================== RCS file: /cvsroot/super-tux/supertux/src/mousecursor.cpp,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- mousecursor.cpp 9 Jun 2004 05:23:19 -0000 1.10 +++ mousecursor.cpp 28 Jun 2004 11:30:27 -0000 1.11 @@ -89,5 +89,5 @@ } context.draw_surface_part(cursor, Vector(w*cur_frame, h*cur_state), Vector(w, - h), Vector(x-mid_x, y-mid_y), LAYER_FOREGROUND1+100); + h), Vector(x-mid_x, y-mid_y), LAYER_GUI+100); } Index: level.cpp =================================================================== RCS file: /cvsroot/super-tux/supertux/src/level.cpp,v retrieving revision 1.93 retrieving revision 1.94 diff -u -d -r1.93 -r1.94 --- level.cpp 16 Jun 2004 00:40:41 -0000 1.93 +++ level.cpp 28 Jun 2004 11:30:26 -0000 1.94 @@ -100,40 +100,27 @@ void Level::save(const std::string& filename) { -#if 0 - LispReader* level = LispReader::load(filename, "supertux-level"); + ofstream file(filename.c_str(), ios::out); + LispWriter* writer = new LispWriter(file); - int version = 1; - level->read_int("version", version); - if(version == 1) { - load_old_format(*level); - return; - } + writer->write_comment("Level made using SuperTux's built-in Level Editor"); - for(lisp_object_t* cur = level->get_lisp(); !lisp_nil_p(cur); - cur = lisp_cdr(cur)) { - std::string token = lisp_symbol(lisp_car(lisp_car(cur))); - lisp_object_t* data = lisp_car(lisp_cdr(lisp_car(cur))); - LispReader reader(lisp_cdr(lisp_car(cur))); + writer->start_list("supertux-level"); - if(token == "name") { - name = lisp_string(data); - } else if(token == "author") { - author = lisp_string(data); - } else if(token == "time") { - time_left = lisp_integer(data); - } else if(token == "sector") { - Sector* sector = new Sector; - sector->parse(reader); - add_sector(sector); - } else { - std::cerr << "Unknown token '" << token << "' in level file.\n"; - continue; - } - } - - delete level; -#endif + int version = 2; + writer->write_int("version", version); + + writer->write_string("name", name); + writer->write_string("author", author); + writer->write_int("time", time_left); + + for(Sectors::iterator i = sectors.begin(); i != sectors.end(); ++i) + i->second->write(*writer); + + writer->end_list("supertux-level"); + + delete writer; + file.close(); } Level::~Level() Index: tile_manager.h =================================================================== RCS file: /cvsroot/super-tux/supertux/src/tile_manager.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- tile_manager.h 14 Jun 2004 22:45:23 -0000 1.1 +++ tile_manager.h 28 Jun 2004 11:30:27 -0000 1.2 @@ -61,6 +61,10 @@ const Vector& pos, int layer); static std::set<TileGroup>* tilegroups() { if(!instance_) { instance_ = new TileManager(); } return tilegroups_ ? tilegroups_ : tilegroups_ = new std::set<TileGroup>; } + + unsigned int total_ids() + { return tiles.size(); } + Tile& get(unsigned int id) { if(id < tiles.size()) Index: tilemap.h =================================================================== RCS file: /cvsroot/super-tux/supertux/src/tilemap.h,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- tilemap.h 14 Jun 2004 22:08:01 -0000 1.8 +++ tilemap.h 28 Jun 2004 11:30:27 -0000 1.9 @@ -68,6 +68,9 @@ size_t get_height() const { return height; } + + int get_layer() const + { return layer; } bool is_solid() const { return solid; } Index: supertux.cpp =================================================================== RCS file: /cvsroot/super-tux/supertux/src/supertux.cpp,v retrieving revision 1.23 retrieving revision 1.24 diff -u -d -r1.23 -r1.24 --- supertux.cpp 14 Jun 2004 22:45:23 -0000 1.23 +++ supertux.cpp 28 Jun 2004 11:30:27 -0000 1.24 @@ -58,10 +58,14 @@ st_menu(); loadshared(); - if (launch_leveleditor_mode && level_startup_file) + if (launch_leveleditor_mode) { - // TODO - // leveleditor(level_startup_file); + LevelEditor leveleditor; + + if(level_startup_file) + leveleditor.run(level_startup_file); + else + leveleditor.run(); } else if (level_startup_file) { |