diff options
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | src/gui/char_select.cpp | 18 | ||||
-rw-r--r-- | src/gui/skill.cpp | 1 | ||||
-rw-r--r-- | src/main.cpp | 3 | ||||
-rw-r--r-- | src/main.h | 3 | ||||
-rw-r--r-- | src/net/network.cpp | 2 |
6 files changed, 20 insertions, 10 deletions
@@ -6,6 +6,9 @@ src/gui/updatewindow.cpp, src/main.cpp, src/main.h, src/net/network.cpp: Added a nicer handling of when you get disconnected from the server. + * src/gui/char_select.cpp, src/gui/skill.cpp, src/main.cpp, src/main.h, + src/net/network.cpp: Now error message is displayed properly when the map + server is offline. 2005-09-25 Bjørn Lindeijer <bjorn@lindeijer.nl> diff --git a/src/gui/char_select.cpp b/src/gui/char_select.cpp index fd0ccdc9..f6fa3a1a 100644 --- a/src/gui/char_select.cpp +++ b/src/gui/char_select.cpp @@ -252,14 +252,13 @@ void CharSelectDialog::serverCharSelect() { switch (msg.readByte()) { case 0: - new OkDialog(this, "Error", "Access denied"); + errorMessage = "Access denied"; break; case 1: - new OkDialog(this, "Error", "Cannot use this ID"); + errorMessage = "Cannot use this ID"; break; default: - new OkDialog(this, "Error", - "Unknown failure to select character"); + errorMessage = "Unknown failure to select character"); break; } skip(msg.getLength()); @@ -267,18 +266,21 @@ void CharSelectDialog::serverCharSelect() else if (msg.getId() == 0x0081) { switch (msg.readByte()) { + case 1: + errorMessage = "Map server offline"; + break; case 3: - new OkDialog(this, "Error", "Speed hack detected"); + errorMessage = "Speed hack detected"; break; case 8: - new OkDialog(this, "Error", "Duplicated login"); + errorMessage = "Duplicated login"; break; default: - new OkDialog(this, "Error", "Unkown error with 0x0081"); + errorMessage = "Unkown error with 0x0081"; break; } close_session(); - state = LOGIN_STATE; + state = ERROR_STATE; } // Todo: add other packets diff --git a/src/gui/skill.cpp b/src/gui/skill.cpp index 58eea2e7..72e89d55 100644 --- a/src/gui/skill.cpp +++ b/src/gui/skill.cpp @@ -186,7 +186,6 @@ bool SkillDialog::hasSkill(int id) void SkillDialog::addSkill(int id, int lvl, int mp) { - printf("%i\n", id); SKILL *tmp = new SKILL(); tmp->id = id; tmp->lv = lvl; diff --git a/src/main.cpp b/src/main.cpp index 734af6dd..a6fef07c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -75,6 +75,7 @@ Graphics *graphics; int map_address, char_ID; short map_port; unsigned char state; +std::string errorMessage; unsigned char screen_mode; volatile int framesToDraw = 0; @@ -507,7 +508,7 @@ int main(int argc, char *argv[]) break; case ERROR_STATE: logger->log("State: ERROR"); - currentDialog = new ErrorDialog("You got disconnected from the server"); + currentDialog = new ErrorDialog(errorMessage); inputHandler = errorInputHandler; break; default: @@ -24,6 +24,8 @@ #ifndef _TMW_MAIN_H #define _TMW_MAIN_H +#include <string> + class Image; class Sound; @@ -57,6 +59,7 @@ extern short map_port; extern int account_ID, session_ID1, session_ID2; extern char sex, n_server, n_character; extern unsigned char state; +extern std::string errorMessage; extern Sound sound; #endif diff --git a/src/net/network.cpp b/src/net/network.cpp index 2d48fc8c..6f852529 100644 --- a/src/net/network.cpp +++ b/src/net/network.cpp @@ -217,6 +217,7 @@ void flush() if (ret <= 0) { logger->log("Error in SDLNet_TCP_Recv(): %s", SDLNet_GetError()); + errorMessage = "You got disconnected from server"; state = ERROR_STATE; return; } @@ -232,6 +233,7 @@ void flush() if (ret < (int)out_size) { logger->log("Error in SDLNet_TCP_Send(): %s", SDLNet_GetError()); + errorMessage = "You got disconnected from server"; state = ERROR_STATE; return; } |