summaryrefslogtreecommitdiff
path: root/src/net
diff options
context:
space:
mode:
Diffstat (limited to 'src/net')
-rw-r--r--src/net/download.cpp4
-rw-r--r--src/net/manaserv/charhandler.cpp21
-rw-r--r--src/net/manaserv/generalhandler.cpp8
-rw-r--r--src/net/manaserv/stats.cpp11
-rw-r--r--src/net/manaserv/stats.h5
-rw-r--r--src/net/tmwa/charserverhandler.cpp10
-rw-r--r--src/net/tmwa/loginhandler.cpp13
-rw-r--r--src/net/tmwa/loginhandler.h1
8 files changed, 40 insertions, 33 deletions
diff --git a/src/net/download.cpp b/src/net/download.cpp
index 2b96a6b9..a2cd4910 100644
--- a/src/net/download.cpp
+++ b/src/net/download.cpp
@@ -122,7 +122,7 @@ void Download::setWriteFunction(WriteFunction write)
bool Download::start()
{
- logger->log("Starting download: %s\n", mUrl.c_str());
+ logger->log("Starting download: %s", mUrl.c_str());
mThread = SDL_CreateThread(downloadThread, this);
@@ -140,7 +140,7 @@ bool Download::start()
void Download::cancel()
{
- logger->log("Canceling download: %s\n", mUrl.c_str());
+ logger->log("Canceling download: %s", mUrl.c_str());
mOptions.cancel = true;
if (mThread && SDL_GetThreadID(mThread) != 0)
diff --git a/src/net/manaserv/charhandler.cpp b/src/net/manaserv/charhandler.cpp
index 721780d2..e2c67f35 100644
--- a/src/net/manaserv/charhandler.cpp
+++ b/src/net/manaserv/charhandler.cpp
@@ -37,6 +37,7 @@
#include "net/manaserv/messagein.h"
#include "net/manaserv/messageout.h"
#include "net/manaserv/protocol.h"
+#include "net/manaserv/stats.h"
#include "resources/colordb.h"
@@ -258,15 +259,7 @@ void CharHandler::setCharCreateDialog(CharCreateDialog *window)
if (!mCharCreateDialog)
return;
- std::vector<std::string> attributes;
- attributes.push_back(_("Strength:"));
- attributes.push_back(_("Agility:"));
- attributes.push_back(_("Dexterity:"));
- attributes.push_back(_("Vitality:"));
- attributes.push_back(_("Intelligence:"));
- attributes.push_back(_("Willpower:"));
-
- mCharCreateDialog->setAttributes(attributes, 60, 1, 20);
+ mCharCreateDialog->setAttributes(Stats::getLabelVector(), 60, 1, 20);
}
void CharHandler::requestCharacters()
@@ -304,12 +297,10 @@ void CharHandler::newCharacter(const std::string &name,
msg.writeInt8(hairstyle);
msg.writeInt8(hairColor);
msg.writeInt8(gender);
- msg.writeInt16(stats[0]);
- msg.writeInt16(stats[1]);
- msg.writeInt16(stats[2]);
- msg.writeInt16(stats[3]);
- msg.writeInt16(stats[4]);
- msg.writeInt16(stats[5]);
+
+ std::vector<int>::const_iterator it, it_end;
+ for (it = stats.begin(), it_end = stats.end(); it != it_end; it++)
+ msg.writeInt16((*it));
accountServerConnection->send(msg);
}
diff --git a/src/net/manaserv/generalhandler.cpp b/src/net/manaserv/generalhandler.cpp
index 09f68c1e..0d3073f1 100644
--- a/src/net/manaserv/generalhandler.cpp
+++ b/src/net/manaserv/generalhandler.cpp
@@ -108,9 +108,6 @@ void GeneralHandler::load()
registerHandler(mPartyHandler.get());
registerHandler(mPlayerHandler.get());
registerHandler(mTradeHandler.get());
-
- Stats::load();
- Stats::informItemDB();
}
void GeneralHandler::reload()
@@ -194,6 +191,11 @@ void GeneralHandler::stateChanged(State oldState, State newState)
GameHandler *game = static_cast<GameHandler*>(Net::getGameHandler());
game->gameLoading();
}
+ else if (newState == STATE_LOAD_DATA)
+ {
+ Stats::load();
+ Stats::informItemDB();
+ }
}
} // namespace ManaServ
diff --git a/src/net/manaserv/stats.cpp b/src/net/manaserv/stats.cpp
index b79b1fd9..f109a232 100644
--- a/src/net/manaserv/stats.cpp
+++ b/src/net/manaserv/stats.cpp
@@ -198,5 +198,16 @@ namespace Stats {
it->second.modifiable,
it->second.description);
}
+
+ std::vector<std::string> getLabelVector()
+ {
+ std::vector<std::string> attributes;
+ StatMap::const_iterator it, it_end;
+ for (it = stats.begin(), it_end = stats.end(); it != it_end; it++)
+ if (it->second.modifiable)
+ attributes.push_back(it->second.name + ":");
+
+ return attributes;
+ }
} // namespace Stats
} // namespace ManaServ
diff --git a/src/net/manaserv/stats.h b/src/net/manaserv/stats.h
index c4afbd79..63349095 100644
--- a/src/net/manaserv/stats.h
+++ b/src/net/manaserv/stats.h
@@ -21,6 +21,9 @@
#ifndef NET_MANASERV_STATS_H
#define NET_MANASERV_STATS_H
+#include <string>
+#include <vector>
+
namespace ManaServ {
namespace Stats {
void load();
@@ -30,6 +33,8 @@ namespace Stats {
void informItemDB();
void informStatusWindow();
+
+ std::vector<std::string> getLabelVector();
} // namespace Stats
} // namespace ManaServ
diff --git a/src/net/tmwa/charserverhandler.cpp b/src/net/tmwa/charserverhandler.cpp
index 843e5c9f..8f15691c 100644
--- a/src/net/tmwa/charserverhandler.cpp
+++ b/src/net/tmwa/charserverhandler.cpp
@@ -70,9 +70,6 @@ CharServerHandler::CharServerHandler()
void CharServerHandler::handleMessage(Net::MessageIn &msg)
{
- logger->log("CharServerHandler: Packet ID: %x, Length: %d",
- msg.getId(), msg.getLength());
-
switch (msg.getId())
{
case SMSG_CHAR_LOGIN:
@@ -102,16 +99,17 @@ void CharServerHandler::handleMessage(Net::MessageIn &msg)
switch (msg.readInt8())
{
case 0:
- errorMessage = _("Access denied.");
+ errorMessage = _("Access denied. Most likely, there are "
+ "too many players on this server.");
break;
case 1:
errorMessage = _("Cannot use this ID.");
break;
default:
- errorMessage = _("Unknown failure to select character.");
+ errorMessage = _("Unknown char-server failure.");
break;
}
- unlockCharSelectDialog();
+ Client::setState(STATE_ERROR);
break;
case SMSG_CHAR_CREATE_SUCCEEDED:
diff --git a/src/net/tmwa/loginhandler.cpp b/src/net/tmwa/loginhandler.cpp
index 7d973ba3..e58acb4d 100644
--- a/src/net/tmwa/loginhandler.cpp
+++ b/src/net/tmwa/loginhandler.cpp
@@ -42,6 +42,7 @@ namespace TmwAthena {
extern ServerInfo charServer;
LoginHandler::LoginHandler():
+ mVersionResponse(false),
mRegistrationEnabled(true)
{
static const Uint16 _messages[] = {
@@ -187,6 +188,7 @@ void LoginHandler::handleMessage(Net::MessageIn &msg)
case SMSG_SERVER_VERSION_RESPONSE:
{
// TODO: verify these!
+
msg.readInt8(); // -1
msg.readInt8(); // T
msg.readInt8(); // M
@@ -194,13 +196,10 @@ void LoginHandler::handleMessage(Net::MessageIn &msg)
unsigned int options = msg.readInt32();
- if (options & 1)
- {
- // Registeration not allowed
- mRegistrationEnabled = false;
- }
+ mRegistrationEnabled = (options & 1);
- //state = STATE_LOGIN;
+ // Leave this last
+ mVersionResponse = true;
}
break;
}
@@ -214,7 +213,7 @@ void LoginHandler::connect()
bool LoginHandler::isConnected()
{
- return mNetwork->isConnected();
+ return mVersionResponse && mNetwork->isConnected();
}
void LoginHandler::disconnect()
diff --git a/src/net/tmwa/loginhandler.h b/src/net/tmwa/loginhandler.h
index 455c75f1..8f6ea321 100644
--- a/src/net/tmwa/loginhandler.h
+++ b/src/net/tmwa/loginhandler.h
@@ -83,6 +83,7 @@ class LoginHandler : public MessageHandler, public Net::LoginHandler
void sendLoginRegister(const std::string &username,
const std::string &password);
+ bool mVersionResponse;
bool mRegistrationEnabled;
std::string mUpdateHost;
Worlds mWorlds;