X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Flevel.cpp;h=134f1f566b564f5ccde0c93f69f6da9892394eb0;hb=8372bc7834408184195e060a3f9bfef90b2365b6;hp=1da7530ecfa4583be37a2cb07e71df02ec90239c;hpb=07ddaed2a657e4d2a3d038fed223fc5827159caf;p=supertux.git diff --git a/src/level.cpp b/src/level.cpp index 1da7530ec..134f1f566 100644 --- a/src/level.cpp +++ b/src/level.cpp @@ -29,7 +29,6 @@ #include #include -#include "video/screen.hpp" #include "log.hpp" #include "lisp/parser.hpp" #include "lisp/lisp.hpp" @@ -46,9 +45,6 @@ #include "object/tilemap.hpp" #include "object/coin.hpp" -// test -#include "flip_level_transformer.hpp" - using namespace std; Level::Level() @@ -86,16 +82,17 @@ Level::load(const std::string& filepath) iter.value()->get(name); } else if(token == "author") { iter.value()->get(author); + } else if(token == "on-menukey-script") { + iter.value()->get(on_menukey_script); } else if(token == "sector") { - Sector* sector = new Sector; + Sector* sector = new Sector(this); sector->parse(*(iter.lisp())); add_sector(sector); } else { log_warning << "Unknown token '" << token << "' in level file" << std::endl; - continue; } } - + } catch(std::exception& e) { std::stringstream msg; msg << "Problem when reading level '" << filepath << "': " << e.what(); @@ -109,7 +106,7 @@ Level::load_old_format(const lisp::Lisp& reader) reader.get("name", name); reader.get("author", author); - Sector* sector = new Sector; + Sector* sector = new Sector(this); sector->parse_old_format(reader); add_sector(sector); } @@ -128,6 +125,8 @@ Level::save(const std::string& filename) writer->write_string("name", name, true); writer->write_string("author", author); + if(on_menukey_script != "") + writer->write_string("on-menukey-script", on_menukey_script); for(Sectors::iterator i = sectors.begin(); i != sectors.end(); ++i) { Sector* sector = *i; @@ -182,15 +181,6 @@ Level::get_sector(size_t num) } int -Level::get_total_badguys() -{ - int total_badguys = 0; - for(Sectors::iterator i = sectors.begin(); i != sectors.end(); ++i) - total_badguys += (*i)->get_total_badguys(); - return total_badguys; -} - -int Level::get_total_coins() { // FIXME not really correct as coins can also be inside blocks... @@ -207,3 +197,11 @@ Level::get_total_coins() return total_coins; } +int +Level::get_total_badguys() +{ + int total_badguys = 0; + for(Sectors::iterator i = sectors.begin(); i != sectors.end(); ++i) + total_badguys += (*i)->get_total_badguys(); + return total_badguys; +}