diff options
author | Yohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer> | 2011-01-13 17:58:50 +0100 |
---|---|---|
committer | Yohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer> | 2011-01-13 17:58:50 +0100 |
commit | 715d07feeb01a3f633aa42aeb40a524c16ca321e (patch) | |
tree | 68eec12d328476a9f303cc0584ecb3cd6fa868af /src/client.cpp | |
parent | 83a3b6f920f446b3001725554ab15bed34d6f368 (diff) | |
download | mana-715d07feeb01a3f633aa42aeb40a524c16ca321e.tar.gz mana-715d07feeb01a3f633aa42aeb40a524c16ca321e.tar.bz2 mana-715d07feeb01a3f633aa42aeb40a524c16ca321e.tar.xz mana-715d07feeb01a3f633aa42aeb40a524c16ca321e.zip |
Made the client handle better the lack of items.xml file.
Now the client returns to server choice dialog with a warning
instead of aborting.
I'm kinda certain I'm not the only one getting crazy
with such a lazy behaviour.
Reviewed-by: Jaxad.
Diffstat (limited to 'src/client.cpp')
-rw-r--r-- | src/client.cpp | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/client.cpp b/src/client.cpp index 20d85ede..7ca90444 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -210,8 +210,16 @@ public: } } loginListener; -} // anonymous namespace +class ServerChoiceListener : public gcn::ActionListener +{ +public: + void action(const gcn::ActionEvent &) + { + Client::setState(STATE_CHOOSE_SERVER); + } +} serverChoiceListener; +} // anonymous namespace Client *Client::mInstance = 0; @@ -782,6 +790,19 @@ int Client::exec() // Load XML databases ColorDB::load(); itemDb = new ItemDB; + if (!itemDb || !itemDb->isLoaded()) + { + // Warn and return to login screen + errorMessage = + _("This server is missing needed world data. " + "Please contact the administrator(s)."); + mCurrentDialog = new OkDialog( + _("ItemDB: Error while loading " ITEMS_DB_FILE "!"), + errorMessage); + mCurrentDialog->addActionListener(&serverChoiceListener); + mCurrentDialog = NULL; // OkDialog deletes itself + break; + } Being::load(); // Hairstyles MonsterDB::load(); SpecialDB::load(); |