- load_state();
-
- std::string filename = basedir + "/world.nut";
- try {
- IFileStream in(filename);
-
- sq_release(global_vm, &world_thread);
- world_thread = create_thread(global_vm);
- compile_and_run(object_to_vm(world_thread), in, filename);
- } catch(std::exception& ) {
- // fallback: try to load worldmap worldmap.stwm
- using namespace WorldMapNS;
- g_main_loop->push_screen(new WorldMap(basedir + "worldmap.stwm"));
- }
-}
-
-void
-World::save_state()
-{
- using namespace Scripting;
-
- lisp::Writer writer(savegame_filename);
-
- writer.start_list("supertux-savegame");
- writer.write("version", 1);
-
- using namespace WorldMapNS;
- if(WorldMap::current() != NULL) {
- std::ostringstream title;
- title << WorldMap::current()->get_title();
- title << " (" << WorldMap::current()->solved_level_count()
- << "/" << WorldMap::current()->level_count() << ")";
- writer.write("title", title.str());
- }
-
- writer.start_list("tux");
- player_status->write(writer);
- writer.end_list("tux");
-
- writer.start_list("state");
-
- sq_pushroottable(global_vm);
- sq_pushstring(global_vm, "state", -1);
- if(SQ_SUCCEEDED(sq_get(global_vm, -2))) {
- Scripting::save_squirrel_table(global_vm, -1, writer);
- sq_pop(global_vm, 1);
- }
- sq_pop(global_vm, 1);
- writer.end_list("state");
-
- writer.end_list("supertux-savegame");
+ info->get("title", m_title);
+ info->get("description", m_description);
+ info->get("levelset", m_is_levelset);
+ info->get("hide-from-contribs", m_hide_from_contribs);