diff options
author | Chuck Miller <shadowmil@gmail.com> | 2010-08-15 15:57:21 -0400 |
---|---|---|
committer | Chuck Miller <shadowmil@gmail.com> | 2010-08-15 15:57:21 -0400 |
commit | 8f573b6c425dc82be42ad80eae565b0641a90a3b (patch) | |
tree | 149c7889d384e10fd9dc95f1aa90478e69b314c8 /src/net | |
parent | fee9fbce12e620f25aecdc0690285cc47fa8791d (diff) | |
parent | 2b676bbf6fcf7dfd45cb33f06dacd2ca5bce19fe (diff) | |
download | mana-8f573b6c425dc82be42ad80eae565b0641a90a3b.tar.gz mana-8f573b6c425dc82be42ad80eae565b0641a90a3b.tar.bz2 mana-8f573b6c425dc82be42ad80eae565b0641a90a3b.tar.xz mana-8f573b6c425dc82be42ad80eae565b0641a90a3b.zip |
Merge branch '1.0'
Conflicts:
mana.cbp
mana.files
src/CMakeLists.txt
src/Makefile.am
src/utils/xml.cpp
Diffstat (limited to 'src/net')
-rw-r--r-- | src/net/manaserv/gamehandler.cpp | 10 | ||||
-rw-r--r-- | src/net/manaserv/network.cpp | 4 | ||||
-rw-r--r-- | src/net/manaserv/playerhandler.cpp | 17 | ||||
-rw-r--r-- | src/net/manaserv/stats.cpp | 12 | ||||
-rw-r--r-- | src/net/tmwa/gamehandler.cpp | 3 |
5 files changed, 33 insertions, 13 deletions
diff --git a/src/net/manaserv/gamehandler.cpp b/src/net/manaserv/gamehandler.cpp index 65010ad3..3cb9f0ea 100644 --- a/src/net/manaserv/gamehandler.cpp +++ b/src/net/manaserv/gamehandler.cpp @@ -94,7 +94,10 @@ void GameHandler::handleMessage(Net::MessageIn &msg) void GameHandler::connect() { gameServerConnection->connect(gameServer.hostname, gameServer.port); - chatServerConnection->connect(chatServer.hostname, chatServer.port); + + // Will already be connected if we just changed gameservers + if (!chatServerConnection->isConnected()) + chatServerConnection->connect(chatServer.hostname, chatServer.port); } bool GameHandler::isConnected() @@ -106,7 +109,10 @@ bool GameHandler::isConnected() void GameHandler::disconnect() { gameServerConnection->disconnect(); - chatHandler->disconnect(); + + // No need if we're just changing gameservers + if (Client::getState() != STATE_CHANGE_MAP) + chatHandler->disconnect(); } void GameHandler::who() diff --git a/src/net/manaserv/network.cpp b/src/net/manaserv/network.cpp index 607100b7..a5bf6186 100644 --- a/src/net/manaserv/network.cpp +++ b/src/net/manaserv/network.cpp @@ -73,7 +73,7 @@ void finalize() if (connections) { logger->error("Tried to shutdown the network subsystem while there " - "are network connections left!"); + "are network connections left!"); } clearNetworkHandlers(); @@ -85,7 +85,7 @@ Connection *getConnection() if (!client) { logger->error("Tried to instantiate a network object before " - "initializing the network subsystem!"); + "initializing the network subsystem!"); } return new Connection(client); diff --git a/src/net/manaserv/playerhandler.cpp b/src/net/manaserv/playerhandler.cpp index 4957bbbc..db2dcf7a 100644 --- a/src/net/manaserv/playerhandler.cpp +++ b/src/net/manaserv/playerhandler.cpp @@ -56,6 +56,10 @@ extern Net::PlayerHandler *playerHandler; namespace ManaServ { +extern Connection *gameServerConnection; +extern std::string netToken; +extern ServerInfo gameServer; + void RespawnRequestListener::action(const gcn::ActionEvent &event) { Net::getPlayerHandler()->respawn(); @@ -63,8 +67,6 @@ void RespawnRequestListener::action(const gcn::ActionEvent &event) Mana::Event::trigger("NPC", "CloseAll"); } -extern Connection *gameServerConnection; - PlayerHandler::PlayerHandler() { static const Uint16 _messages[] = { @@ -92,11 +94,18 @@ void PlayerHandler::handleMessage(Net::MessageIn &msg) break; case GPMSG_PLAYER_SERVER_CHANGE: - { // TODO: Implement reconnecting to another game server - std::string token = msg.readString(32); + { // TODO: Fix the servers to test this + netToken = msg.readString(32); std::string address = msg.readString(); int port = msg.readInt16(); logger->log("Changing server to %s:%d", address.c_str(), port); + + gameServer.hostname = address; + gameServer.port = port; + + gameServerConnection->disconnect(); + Client::setState(STATE_CHANGE_MAP); + player_node->setMap(0); } break; case GPMSG_PLAYER_ATTRIBUTE_CHANGE: diff --git a/src/net/manaserv/stats.cpp b/src/net/manaserv/stats.cpp index f109a232..ece0e72a 100644 --- a/src/net/manaserv/stats.cpp +++ b/src/net/manaserv/stats.cpp @@ -32,6 +32,8 @@ #include <list> #include <map> +#define DEFAULT_ATTRIBUTESDB_FILE "attributes.xml" + namespace ManaServ { namespace Stats { typedef struct { @@ -123,12 +125,13 @@ namespace Stats { void load() { - XML::Document doc("stats.xml"); + XML::Document doc(DEFAULT_ATTRIBUTESDB_FILE); xmlNodePtr rootNode = doc.rootNode(); if (!rootNode || !xmlStrEqual(rootNode->name, BAD_CAST "stats")) { - logger->log("Stats: Error while loading stats.xml!"); + logger->log("Stats: Error while loading " + DEFAULT_ATTRIBUTESDB_FILE ". Using Built-ins."); loadBuiltins(); return; } @@ -142,7 +145,8 @@ namespace Stats { if (id == 0) { - logger->log("Stats: Invalid or missing stat ID in stats.xml!"); + logger->log("Stats: Invalid or missing stat ID in " + DEFAULT_ATTRIBUTESDB_FILE "!"); continue; } else if (stats.find(id) != stats.end()) @@ -155,7 +159,7 @@ namespace Stats { if (name.empty()) { logger->log("Stats: Invalid or missing stat name in " - "stats.xml!"); + DEFAULT_ATTRIBUTESDB_FILE "!"); continue; } diff --git a/src/net/tmwa/gamehandler.cpp b/src/net/tmwa/gamehandler.cpp index 2a9508d3..334a2e37 100644 --- a/src/net/tmwa/gamehandler.cpp +++ b/src/net/tmwa/gamehandler.cpp @@ -98,7 +98,8 @@ void GameHandler::handleMessage(Net::MessageIn &msg) case SMSG_MAP_QUIT_RESPONSE: if (msg.readInt8()) { - new OkDialog(_("Game"), _("Request to quit denied!"), NULL); + new OkDialog(_("Game"), _("Request to quit denied!"), false, + NULL); } break; } |