static std::unique_ptr<std::ostream> get_demostream(const PingusLevel& plf) { std::string flat_levelname = plf.get_resname(); // 'Flatten' the levelname so that we don't need directories for (std::string::iterator i = flat_levelname.begin(); i != flat_levelname.end(); ++i) if (*i == '/') *i = '_'; std::string filename = System::get_userdir() + "demos/" + flat_levelname + "-" + get_date_string() + ".pingus-demo"; std::unique_ptr<std::ofstream> out(new std::ofstream(filename.c_str())); if (!(*out.get())) { log_error("DemoRecorder: Error: Couldn't write DemoFile '%1%', demo recording will be disabled", filename); return std::unique_ptr<std::ostream>(); } else { log_info("DemoRecorder: Writing demo to: %1%", filename); // Write file header FileWriter writer(*out); writer.begin_mapping("level"); writer.write_string("name", plf.get_resname()); writer.write_string("checksum", plf.get_checksum()); writer.end_mapping(); *out << std::endl; return std::unique_ptr<std::ostream>(out.release()); } }
void StartScreenComponent::draw(DrawingContext& gc) { // Paint the background wood panel for(int y = 0; y < gc.get_height(); y += background.get_height()) for(int x = 0; x < gc.get_width(); x += background.get_width()) gc.draw(background, Vector2i(x, y)); gc.draw(blackboard, Vector2i(gc.get_width()/2, gc.get_height()/2)); int left_x = gc.get_width()/2 - 150; int right_x = gc.get_width()/2 + 150; int y = gc.get_height()/2 + 40; gc.print_center(Fonts::chalk_large, Vector2i(gc.get_width() /2, gc.get_height()/2 - 230), _(plf.get_levelname())); gc.print_left(Fonts::chalk_normal, Vector2i(gc.get_width() /2 - 300, gc.get_height()/2 - 170), format_description(800 - 200)); y += 32; y += 45; gc.print_left (Fonts::chalk_normal, Vector2i(left_x, y), _("Number of Pingus: ")); gc.print_right(Fonts::chalk_normal, Vector2i(right_x, y), StringUtil::to_string(plf.get_number_of_pingus())); gc.print_left (Fonts::chalk_normal, Vector2i(left_x, (y += 30)), _("Number to Save: ")); gc.print_right(Fonts::chalk_normal, Vector2i(right_x, y), StringUtil::to_string(plf.get_number_to_save())); gc.print_left (Fonts::chalk_normal, Vector2i(left_x, (y += 30)), _("Time: ")); gc.print_right(Fonts::chalk_normal, Vector2i(right_x, y), time_str); gc.print_center(Fonts::chalk_small, Vector2i(gc.get_width()/2, gc.get_height()/2 + 215), _("Author: ") + plf.get_author()); if (globals::developer_mode) { gc.print_center(Fonts::chalk_small, Vector2i(gc.get_width()/2, gc.get_height()-50), plf.get_resname()); } }