- out << "(supertux-savegame\n"
- << " (version 1)\n"
- << " (title \"" << name << " - " << nb_solved_levels << "/" << special_tiles.size() << "\")\n"
- << " (map \"" << map_filename << "\")\n"
- << " (lives " << player_status.lives << ")\n"
- << " (score " << player_status.score << ")\n"
- << " (distros " << player_status.distros << ")\n"
- << " (tux (x " << tux->get_tile_pos().x << ") (y " << tux->get_tile_pos().y << ")\n"
- << " (back \"" << direction_to_string(tux->back_direction) << "\")\n"
- << " (bonus \"" << bonus_to_string(player_status.bonus) << "\"))\n"
- << " (levels\n";
-
- for(SpecialTiles::iterator i = special_tiles.begin(); i != special_tiles.end(); ++i)
+ writer->write_comment("Worldmap save file");
+
+ writer->start_list("supertux-savegame");
+
+ writer->write_int("version", 1);
+ writer->write_string("title", std::string(name + " - " + nb_solved_levels_str + "/" + total_levels_str));
+ writer->write_string("map", map_filename);
+ writer->write_int("lives", player_status.lives);
+ writer->write_int("distros", player_status.lives);
+
+ writer->start_list("tux");
+
+ writer->write_float("x", tux->get_tile_pos().x);
+ writer->write_float("y", tux->get_tile_pos().y);
+ writer->write_string("back", direction_to_string(tux->back_direction));
+ writer->write_string("bonus", bonus_to_string(player_status.bonus));
+
+ writer->end_list("tux");
+
+ writer->start_list("levels");
+
+ for(Levels::iterator i = levels.begin(); i != levels.end(); ++i)