summaryrefslogtreecommitdiff
path: root/src/net/manaserv
diff options
context:
space:
mode:
authorChuck Miller <shadowmil@gmail.com>2010-08-15 15:57:21 -0400
committerChuck Miller <shadowmil@gmail.com>2010-08-15 15:57:21 -0400
commit8f573b6c425dc82be42ad80eae565b0641a90a3b (patch)
tree149c7889d384e10fd9dc95f1aa90478e69b314c8 /src/net/manaserv
parentfee9fbce12e620f25aecdc0690285cc47fa8791d (diff)
parent2b676bbf6fcf7dfd45cb33f06dacd2ca5bce19fe (diff)
downloadmana-client-8f573b6c425dc82be42ad80eae565b0641a90a3b.tar.gz
mana-client-8f573b6c425dc82be42ad80eae565b0641a90a3b.tar.bz2
mana-client-8f573b6c425dc82be42ad80eae565b0641a90a3b.tar.xz
mana-client-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/manaserv')
-rw-r--r--src/net/manaserv/gamehandler.cpp10
-rw-r--r--src/net/manaserv/network.cpp4
-rw-r--r--src/net/manaserv/playerhandler.cpp17
-rw-r--r--src/net/manaserv/stats.cpp12
4 files changed, 31 insertions, 12 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;
}