From 3c8f200dd83d18839c8205ed630a104d67e0807d Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Sun, 22 Jan 2012 17:46:40 +0000 Subject: Implemented autosave for single player games. --- src/client/savegamemenu.cc | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) (limited to 'src/client/savegamemenu.cc') diff --git a/src/client/savegamemenu.cc b/src/client/savegamemenu.cc index 5e8f369..ea766a2 100644 --- a/src/client/savegamemenu.cc +++ b/src/client/savegamemenu.cc @@ -378,7 +378,8 @@ bool SaveGameMenu::on_emit(ui::Widget *sender, const ui::Widget::Event event, vo if (event == ui::Widget::EventButtonClicked) { if (savegamemenu_mode == Save) { if (savegamemenu_filelistview->selected()) { - savegame(savegamemenu_filelistview->selected()->value()); + std::string descr; + savegame(savegamemenu_filelistview->selected()->value(), descr); parent()->hide(); } } else { @@ -470,7 +471,7 @@ void SaveGameMenu::deletegame(std::string savename) ::remove(filename.c_str()); } -void SaveGameMenu::savegame(std::string savename) +void SaveGameMenu::savegame(std::string savename, const std::string & description) { if (!core::server() || !core::server()->module()) return; @@ -505,6 +506,7 @@ void SaveGameMenu::savegame(std::string savename) filesystem::OFileStream ofs("savegames/" + savename + ".ini"); con_debug << "Saving " << ofs.filename() << std::endl; + core::application()->notify_message(core::Message::Info, "Saving '" + savename + "'"); ofs << "; Project::OSiRiON" << std::endl; ofs << "; savegame data" << std::endl; @@ -512,13 +514,16 @@ void SaveGameMenu::savegame(std::string savename) ofs << "[savegame]" << std::endl; ofs << "description="; - if (core::localcontrol()->state() == core::Entity::Docked) { - // FIXME implement entity->dock() - ofs << core::localplayer()->view()->name() << std::endl; + if (description.size()) { + ofs << description << std::endl; } else { - ofs << core::localplayer()->zone()->name() << std::endl; + if (core::localcontrol()->state() == core::Entity::Docked) { + // FIXME implement entity->dock() + ofs << core::localplayer()->view()->name() << std::endl; + } else { + ofs << core::localplayer()->zone()->name() << std::endl; + } } - ofs << "info="; if (core::localcontrol()->state() == core::Entity::Docked) { // FIXME implement entity->dock() @@ -555,13 +560,15 @@ void SaveGameMenu::loadgame(std::string savename) { return; } - con_debug << "Loading " << inifile.filename() << std::endl; if (core::application()->connected()) core::application()->disconnect(); core::application()->connect(""); + con_debug << "Loading " << inifile.filename() << std::endl; + core::application()->notify_message(core::Message::Info, "Loading '" + savename + "'"); + if (core::application()->connected() && core::server() && core::server()->module()) { core::server()->module()->game_load(core::localplayer(), inifile); } -- cgit v1.2.3