diff options
Diffstat (limited to 'src/net')
34 files changed, 214 insertions, 1074 deletions
diff --git a/src/net/manaserv/accountserver/account.cpp b/src/net/manaserv/accountserver/account.cpp deleted file mode 100644 index e680d9d5..00000000 --- a/src/net/manaserv/accountserver/account.cpp +++ /dev/null @@ -1,107 +0,0 @@ -/* - * The Mana World - * Copyright (C) 2004 The Mana World Development Team - * - * This file is part of The Mana World. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "account.h" - -#include "internal.h" - -#include "net/manaserv/connection.h" -#include "net/manaserv/messageout.h" -#include "net/manaserv/protocol.h" - -#include "utils/sha256.h" - -#include <string> - -void ManaServ::AccountServer::Account::createCharacter( - const std::string &name, char hairStyle, char hairColor, char gender, - short strength, short agility, short vitality, - short intelligence, short dexterity, short willpower) -{ - MessageOut msg(PAMSG_CHAR_CREATE); - - msg.writeString(name); - msg.writeInt8(hairStyle); - msg.writeInt8(hairColor); - msg.writeInt8(gender); - msg.writeInt16(strength); - msg.writeInt16(agility); - msg.writeInt16(vitality); - msg.writeInt16(intelligence); - msg.writeInt16(dexterity); - msg.writeInt16(willpower); - - ManaServ::AccountServer::connection->send(msg); -} - -void ManaServ::AccountServer::Account::deleteCharacter(char slot) -{ - MessageOut msg(PAMSG_CHAR_DELETE); - - msg.writeInt8(slot); - - ManaServ::AccountServer::connection->send(msg); -} - -void ManaServ::AccountServer::Account::selectCharacter(char slot) -{ - MessageOut msg(PAMSG_CHAR_SELECT); - - msg.writeInt8(slot); - - ManaServ::AccountServer::connection->send(msg); -} - -void ManaServ::AccountServer::Account::unregister(const std::string &username, - const std::string &password) -{ - MessageOut msg(PAMSG_UNREGISTER); - - msg.writeString(username); - msg.writeString(sha256(username + password)); - - ManaServ::AccountServer::connection->send(msg); -} - -void ManaServ::AccountServer::Account::changeEmail(const std::string &email) -{ - MessageOut msg(PAMSG_EMAIL_CHANGE); - - // Email is sent clearly so the server can validate the data. - // Encryption is assumed server-side. - msg.writeString(email); - - ManaServ::AccountServer::connection->send(msg); -} - -void ManaServ::AccountServer::Account::changePassword( - const std::string &username, - const std::string &oldPassword, - const std::string &newPassword) -{ - MessageOut msg(PAMSG_PASSWORD_CHANGE); - - // Change password using SHA2 encryption - msg.writeString(sha256(username + oldPassword)); - msg.writeString(sha256(username + newPassword)); - - ManaServ::AccountServer::connection->send(msg); -} diff --git a/src/net/manaserv/accountserver/account.h b/src/net/manaserv/accountserver/account.h deleted file mode 100644 index 03453655..00000000 --- a/src/net/manaserv/accountserver/account.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * The Mana World - * Copyright (C) 2004 The Mana World Development Team - * - * This file is part of The Mana World. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef NET_MANASERV_ACCOUNTSERVER_CHARACTER_H -#define NET_MANASERV_ACCOUNTSERVER_CHARACTER_H - -#include <iosfwd> - -namespace ManaServ -{ - namespace AccountServer - { - namespace Account - { - void createCharacter(const std::string &name, - char hairStyle, char hairColor, char gender, - short strength, short agility, short vitality, - short intelligence, short dexterity, short willpower); - - void deleteCharacter(char slot); - - void selectCharacter(char slot); - - void unregister(const std::string &username, - const std::string &password); - - void changeEmail(const std::string &email); - - void changePassword(const std::string &username, - const std::string &oldPassword, - const std::string &newPassword); - } - } -} - -#endif // NET_MANASERV_ACCOUNTSERVER_CHARACTER_H diff --git a/src/net/manaserv/accountserver/accountserver.cpp b/src/net/manaserv/accountserver/accountserver.cpp deleted file mode 100644 index afbee4ab..00000000 --- a/src/net/manaserv/accountserver/accountserver.cpp +++ /dev/null @@ -1,86 +0,0 @@ -/* - * The Mana World - * Copyright (C) 2004 The Mana World Development Team - * - * This file is part of The Mana World. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "accountserver.h" - -#include "internal.h" - -#include "net/manaserv/connection.h" -#include "net/manaserv/messageout.h" -#include "net/manaserv/protocol.h" - -#include "utils/sha256.h" - -#include <string> - -namespace ManaServ -{ - -void AccountServer::login(Connection *connection, - int version, const std::string &username, const std::string &password) -{ - AccountServer::connection = connection; - - MessageOut msg(PAMSG_LOGIN); - - msg.writeInt32(version); - msg.writeString(username); - msg.writeString(sha256(username + password)); - - AccountServer::connection->send(msg); -} - -void AccountServer::registerAccount(Connection *connection, - int version, const std::string &username, const std::string &password, - const std::string &email) -{ - AccountServer::connection = connection; - - MessageOut msg(PAMSG_REGISTER); - - msg.writeInt32(version); // client version - msg.writeString(username); - // When registering, the password and email hash is assumed by server. - // Hence, data can be validated safely server-side. - // This is the only time we send a clear password. - msg.writeString(password); - msg.writeString(email); - - AccountServer::connection->send(msg); -} - -void AccountServer::logout() -{ - MessageOut msg(PAMSG_LOGOUT); - AccountServer::connection->send(msg); -} - -void AccountServer::reconnectAccount(Connection *connection, - const std::string &passToken) -{ - AccountServer::connection = connection; - - MessageOut msg(PAMSG_RECONNECT); - msg.writeString(passToken, 32); - AccountServer::connection->send(msg); -} - -} diff --git a/src/net/manaserv/accountserver/accountserver.h b/src/net/manaserv/accountserver/accountserver.h deleted file mode 100644 index a1bbb5f5..00000000 --- a/src/net/manaserv/accountserver/accountserver.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * The Mana World - * Copyright (C) 2004 The Mana World Development Team - * - * This file is part of The Mana World. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef NET_MANASERV_ACCOUNTSERVER_ACCOUNTSERVER_H -#define NET_MANASERV_ACCOUNTSERVER_ACCOUNTSERVER_H - -#include <iosfwd> - -namespace ManaServ -{ - class Connection; - - namespace AccountServer - { - void login(ManaServ::Connection *connection, int version, - const std::string &username, const std::string &password); - - void registerAccount(ManaServ::Connection *connection, int version, - const std::string &username, const std::string &password, - const std::string &email); - - void logout(); - - void reconnectAccount(ManaServ::Connection *connection, - const std::string &passToken); - } -} - -#endif // NET_MANASERV_ACCOUNTSERVER_ACCOUNTSERVER_H diff --git a/src/net/manaserv/accountserver/internal.cpp b/src/net/manaserv/accountserver/internal.cpp deleted file mode 100644 index e1d105b7..00000000 --- a/src/net/manaserv/accountserver/internal.cpp +++ /dev/null @@ -1,32 +0,0 @@ -/* - * The Mana World - * Copyright (C) 2004 The Mana World Development Team - * - * This file is part of The Mana World. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "internal.h" - -namespace ManaServ -{ - class Connection; - - namespace AccountServer - { - Connection *connection = 0; - } -} diff --git a/src/net/manaserv/accountserver/internal.h b/src/net/manaserv/accountserver/internal.h deleted file mode 100644 index af91f692..00000000 --- a/src/net/manaserv/accountserver/internal.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * The Mana World - * Copyright (C) 2004 The Mana World Development Team - * - * This file is part of The Mana World. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef NET_MANASERV_ACCOUNTSERVER_INTERNAL_H -#define NET_MANASERV_ACCOUNTSERVER_INTERNAL_H - -namespace ManaServ -{ - class Connection; - - namespace AccountServer - { - extern Connection *connection; - } -} - -#endif // NET_MANASERV_ACCOUNTSERVER_INTERNAL_H diff --git a/src/net/manaserv/adminhandler.cpp b/src/net/manaserv/adminhandler.cpp index abdf86ef..e77d2bec 100644 --- a/src/net/manaserv/adminhandler.cpp +++ b/src/net/manaserv/adminhandler.cpp @@ -21,12 +21,16 @@ #include "net/manaserv/adminhandler.h" -#include "net/manaserv/chatserver/chatserver.h" +#include "net/manaserv/connection.h" +#include "net/manaserv/messageout.h" +#include "net/manaserv/protocol.h" Net::AdminHandler *adminHandler; namespace ManaServ { +extern Connection *chatServerConnection; + AdminHandler::AdminHandler() { adminHandler = this; @@ -34,7 +38,9 @@ AdminHandler::AdminHandler() void AdminHandler::announce(const std::string &text) { - ManaServ::ChatServer::announce(text); + MessageOut msg(PCMSG_ANNOUNCE); + msg.writeString(text); + chatServerConnection->send(msg); } void AdminHandler::localAnnounce(const std::string &text) diff --git a/src/net/manaserv/beinghandler.cpp b/src/net/manaserv/beinghandler.cpp index 71325fd5..d7cb40c0 100644 --- a/src/net/manaserv/beinghandler.cpp +++ b/src/net/manaserv/beinghandler.cpp @@ -21,6 +21,7 @@ #include "net/manaserv/beinghandler.h" +#include "net/manaserv/playerhandler.h" #include "net/manaserv/protocol.h" #include "net/messagein.h" @@ -41,8 +42,6 @@ #include "utils/gettext.h" -#include "net/manaserv/gameserver/player.h" - namespace ManaServ { BeingHandler::BeingHandler() @@ -288,7 +287,7 @@ void BeingHandler::handleBeingActionChangeMessage(Net::MessageIn &msg) std::string message(deadMsg[rand()%13]); message.append(std::string(" ") + _("Press OK to respawn.")); OkDialog *dlg = new OkDialog(_("You Died"), message); - dlg->addActionListener(&(ManaServ::GameServer::Player::respawnListener)); + dlg->addActionListener(&(ManaServ::respawnListener)); } } diff --git a/src/net/manaserv/charhandler.cpp b/src/net/manaserv/charhandler.cpp index a08799f9..bc7ffaaa 100644 --- a/src/net/manaserv/charhandler.cpp +++ b/src/net/manaserv/charhandler.cpp @@ -22,14 +22,12 @@ #include "net/manaserv/charhandler.h" #include "net/manaserv/connection.h" +#include "net/manaserv/messagein.h" +#include "net/manaserv/messageout.h" #include "net/manaserv/protocol.h" -#include "net/manaserv/accountserver/accountserver.h" -#include "net/manaserv/accountserver/account.h" - #include "net/logindata.h" #include "net/loginhandler.h" -#include "net/messagein.h" #include "net/net.h" #include "game.h" @@ -359,26 +357,39 @@ void CharHandler::getCharacters() void CharHandler::chooseCharacter(int slot, LocalPlayer* character) { - AccountServer::Account::selectCharacter(slot); + MessageOut msg(PAMSG_CHAR_SELECT); + + msg.writeInt8(slot); + + accountServerConnection->send(msg); } void CharHandler::newCharacter(const std::string &name, int slot, bool gender, int hairstyle, int hairColor, std::vector<int> stats) { - AccountServer::Account::createCharacter(name, hairstyle, hairColor, - gender, - stats[0], // STR - stats[1], // AGI - stats[2], // DEX - stats[3], // VIT - stats[4], // INT - stats[5] // WILL - ); + MessageOut msg(PAMSG_CHAR_CREATE); + + msg.writeString(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]); + + accountServerConnection->send(msg); } void CharHandler::deleteCharacter(int slot, LocalPlayer* character) { - AccountServer::Account::deleteCharacter(slot); + MessageOut msg(PAMSG_CHAR_DELETE); + + msg.writeInt8(slot); + + accountServerConnection->send(msg); } void CharHandler::switchCharacter() diff --git a/src/net/manaserv/chathandler.cpp b/src/net/manaserv/chathandler.cpp index c4c86d62..a72fc8fd 100644 --- a/src/net/manaserv/chathandler.cpp +++ b/src/net/manaserv/chathandler.cpp @@ -26,12 +26,6 @@ #include "net/manaserv/messageout.h" #include "net/manaserv/protocol.h" -#include "net/manaserv/chatserver/chatserver.h" -#include "net/manaserv/chatserver/internal.h" - -#include "net/manaserv/gameserver/internal.h" -#include "net/manaserv/gameserver/player.h" - #include "being.h" #include "beingmanager.h" #include "channel.h" @@ -56,6 +50,7 @@ Net::ChatHandler *chatHandler; namespace ManaServ { extern Connection *chatServerConnection; +extern Connection *gameServerConnection; extern std::string netToken; extern ServerInfo chatServer; @@ -352,7 +347,9 @@ void ChatHandler::handleWhoResponse(Net::MessageIn &msg) void ChatHandler::connect() { - ChatServer::connect(chatServerConnection, netToken); + MessageOut msg(PCMSG_CONNECT); + msg.writeString(netToken, 32); + chatServerConnection->send(msg); } bool ChatHandler::isConnected() @@ -369,7 +366,7 @@ void ChatHandler::talk(const std::string &text) { MessageOut msg(PGMSG_SAY); msg.writeString(text); - GameServer::connection->send(msg); + gameServerConnection->send(msg); } void ChatHandler::me(const std::string &text) @@ -383,13 +380,13 @@ void ChatHandler::privateMessage(const std::string &recipient, MessageOut msg(PCMSG_PRIVMSG); msg.writeString(recipient); msg.writeString(text); - ChatServer::connection->send(msg); + chatServerConnection->send(msg); } void ChatHandler::channelList() { MessageOut msg(PCMSG_LIST_CHANNELS); - ChatServer::connection->send(msg); + chatServerConnection->send(msg); } void ChatHandler::enterChannel(const std::string &channel, @@ -398,14 +395,14 @@ void ChatHandler::enterChannel(const std::string &channel, MessageOut msg(PCMSG_ENTER_CHANNEL); msg.writeString(channel); msg.writeString(password); - ChatServer::connection->send(msg); + chatServerConnection->send(msg); } void ChatHandler::quitChannel(int channelId) { MessageOut msg(PCMSG_QUIT_CHANNEL); msg.writeInt16(channelId); - ChatServer::connection->send(msg); + chatServerConnection->send(msg); } void ChatHandler::sendToChannel(int channelId, const std::string &text) @@ -413,14 +410,14 @@ void ChatHandler::sendToChannel(int channelId, const std::string &text) MessageOut msg(PCMSG_CHAT); msg.writeString(text); msg.writeInt16(channelId); - ChatServer::connection->send(msg); + chatServerConnection->send(msg); } void ChatHandler::userList(const std::string &channel) { MessageOut msg(PCMSG_LIST_CHANNELUSERS); msg.writeString(channel); - ChatServer::connection->send(msg); + chatServerConnection->send(msg); } void ChatHandler::setChannelTopic(int channelId, const std::string &text) @@ -428,7 +425,7 @@ void ChatHandler::setChannelTopic(int channelId, const std::string &text) MessageOut msg(PCMSG_TOPIC_CHANGE); msg.writeInt16(channelId); msg.writeString(text); - ChatServer::connection->send(msg); + chatServerConnection->send(msg); } void ChatHandler::setUserMode(int channelId, const std::string &name, int mode) @@ -437,7 +434,7 @@ void ChatHandler::setUserMode(int channelId, const std::string &name, int mode) msg.writeInt16(channelId); msg.writeString(name); msg.writeInt8(mode); - ChatServer::connection->send(msg); + chatServerConnection->send(msg); } void ChatHandler::kickUser(int channelId, const std::string &name) @@ -445,13 +442,13 @@ void ChatHandler::kickUser(int channelId, const std::string &name) MessageOut msg(PCMSG_KICK_USER); msg.writeInt16(channelId); msg.writeString(name); - ChatServer::connection->send(msg); + chatServerConnection->send(msg); } void ChatHandler::who() { MessageOut msg(PCMSG_WHO); - ChatServer::connection->send(msg); + chatServerConnection->send(msg); } } // namespace ManaServ diff --git a/src/net/manaserv/chatserver/chatserver.cpp b/src/net/manaserv/chatserver/chatserver.cpp deleted file mode 100644 index 23eee3e6..00000000 --- a/src/net/manaserv/chatserver/chatserver.cpp +++ /dev/null @@ -1,57 +0,0 @@ -/* - * The Mana World - * Copyright (C) 2004 The Mana World Development Team - * - * This file is part of The Mana World. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "chatserver.h" - -#include "internal.h" - -#include "net/manaserv/connection.h" -#include "net/manaserv/messageout.h" -#include "net/manaserv/protocol.h" - -namespace ManaServ { - -using ChatServer::connection; - -void ChatServer::connect(Connection *connection, - const std::string &token) -{ - ChatServer::connection = connection; - - MessageOut msg(PCMSG_CONNECT); - msg.writeString(token, 32); - connection->send(msg); -} - -void ChatServer::logout() -{ - MessageOut msg(PCMSG_DISCONNECT); - connection->send(msg); -} - -void ChatServer::announce(const std::string &text) -{ - MessageOut msg(PCMSG_ANNOUNCE); - msg.writeString(text); - connection->send(msg); -} - -} diff --git a/src/net/manaserv/chatserver/chatserver.h b/src/net/manaserv/chatserver/chatserver.h deleted file mode 100644 index 18cd5960..00000000 --- a/src/net/manaserv/chatserver/chatserver.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * The Mana World - * Copyright (C) 2004 The Mana World Development Team - * - * This file is part of The Mana World. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef NET_MANASERV_CHATSERVER_CHATSERVER_H -#define NET_MANASERV_CHATSERVER_CHATSERVER_H - -#include <iosfwd> - -namespace ManaServ -{ - class Connection; - - namespace ChatServer - { - void connect(Connection *connection, const std::string &token); - - void logout(); - - void announce(const std::string &text); - - void kickUser(short channel, const std::string &user); - - } -} - -#endif // NET_MANASERV_CHATSERVER_CHATSERVER_H diff --git a/src/net/manaserv/chatserver/guild.cpp b/src/net/manaserv/chatserver/guild.cpp index e34b3bc4..1f0990b1 100644 --- a/src/net/manaserv/chatserver/guild.cpp +++ b/src/net/manaserv/chatserver/guild.cpp @@ -21,8 +21,6 @@ #include "guild.h" -#include "internal.h" - #include "net/manaserv/connection.h" #include "net/manaserv/messageout.h" #include "net/manaserv/protocol.h" @@ -32,6 +30,8 @@ namespace ManaServ { +extern Connection *chatServerConnection; + void ChatServer::Guild::createGuild(const std::string &name) { logger->log("Sending PCMSG_GUILD_CREATE"); @@ -39,7 +39,7 @@ void ChatServer::Guild::createGuild(const std::string &name) msg.writeString(name); - ChatServer::connection->send(msg); + chatServerConnection->send(msg); } void ChatServer::Guild::invitePlayer(const std::string &name, short guildId) @@ -50,7 +50,7 @@ void ChatServer::Guild::invitePlayer(const std::string &name, short guildId) msg.writeInt16(guildId); msg.writeString(name); - ChatServer::connection->send(msg); + chatServerConnection->send(msg); } void ChatServer::Guild::acceptInvite(const std::string &name) @@ -60,7 +60,7 @@ void ChatServer::Guild::acceptInvite(const std::string &name) msg.writeString(name); - ChatServer::connection->send(msg); + chatServerConnection->send(msg); } void ChatServer::Guild::getGuildMembers(short guildId) @@ -70,7 +70,7 @@ void ChatServer::Guild::getGuildMembers(short guildId) msg.writeInt16(guildId); - ChatServer::connection->send(msg); + chatServerConnection->send(msg); } void ChatServer::Guild::promoteMember(const std::string &name, @@ -83,7 +83,7 @@ void ChatServer::Guild::promoteMember(const std::string &name, msg.writeString(name); msg.writeInt8(level); - ChatServer::connection->send(msg); + chatServerConnection->send(msg); } void ChatServer::Guild::quitGuild(short guildId) @@ -93,7 +93,7 @@ void ChatServer::Guild::quitGuild(short guildId) msg.writeInt16(guildId); - ChatServer::connection->send(msg); + chatServerConnection->send(msg); } } diff --git a/src/net/manaserv/chatserver/internal.cpp b/src/net/manaserv/chatserver/internal.cpp deleted file mode 100644 index 890cb1f1..00000000 --- a/src/net/manaserv/chatserver/internal.cpp +++ /dev/null @@ -1,32 +0,0 @@ -/* - * The Mana World - * Copyright (C) 2004 The Mana World Development Team - * - * This file is part of The Mana World. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "internal.h" - -namespace ManaServ -{ - class Connection; - - namespace ChatServer - { - Connection *connection = 0; - } -} diff --git a/src/net/manaserv/chatserver/internal.h b/src/net/manaserv/chatserver/internal.h deleted file mode 100644 index 6807f147..00000000 --- a/src/net/manaserv/chatserver/internal.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * The Mana World - * Copyright (C) 2004 The Mana World Development Team - * - * This file is part of The Mana World. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef NET_MANASERV_CHATSERVER_INTERNAL_H -#define NET_MANASERV_CHATSERVER_INTERNAL_H - -namespace ManaServ -{ - class Connection; - - namespace ChatServer - { - extern Connection *connection; - } -} - -#endif // NET_MANASERV_CHATSERVER_INTERNAL_H diff --git a/src/net/manaserv/chatserver/party.cpp b/src/net/manaserv/chatserver/party.cpp deleted file mode 100644 index fdefc59d..00000000 --- a/src/net/manaserv/chatserver/party.cpp +++ /dev/null @@ -1,83 +0,0 @@ -/* - * The Mana World - * Copyright (C) 2008 The Mana World Development Team - * - * This file is part of The Mana World. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "party.h" - -#include "internal.h" - -#include "net/manaserv/connection.h" -#include "net/manaserv/messageout.h" -#include "net/manaserv/protocol.h" - -#include "log.h" - -namespace ManaServ -{ - -void ChatServer::Party::invitePlayer(const std::string &name) -{ - logger->log("Sending PCMSG_PARTY_INVITE"); - MessageOut msg(PCMSG_PARTY_INVITE); - - msg.writeString(name); - - ChatServer::connection->send(msg); -} - -void ChatServer::Party::acceptInvite(const std::string &name) -{ - logger->log("Sending PCMSG_PARTY_ACCEPT_INVITE"); - MessageOut msg(PCMSG_PARTY_ACCEPT_INVITE); - - msg.writeString(name); - - ChatServer::connection->send(msg); -} - -void ChatServer::Party::rejectInvite(const std::string &name) -{ - logger->log("Sending PCMSG_PARTY_REJECT_INVITE"); - MessageOut msg(PCMSG_PARTY_REJECT_INVITE); - - msg.writeString(name); - - ChatServer::connection->send(msg); -} - -void ChatServer::Party::getPartyMembers() -{ - logger->log("Sending PCMSG_PARTY_GET_MEMBERS"); -// MessageOut msg(PCMSG_GUILD_GET_MEMBERS); - -// msg.writeInt16(guildId); - -// ChatServer::connection->send(msg); -} - -void ChatServer::Party::quitParty() -{ - logger->log("Sending PCMSG_PARTY_QUIT"); - MessageOut msg(PCMSG_PARTY_QUIT); - - ChatServer::connection->send(msg); -} - -} diff --git a/src/net/manaserv/chatserver/party.h b/src/net/manaserv/chatserver/party.h deleted file mode 100644 index 34f308f7..00000000 --- a/src/net/manaserv/chatserver/party.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * The Mana World - * Copyright (C) 2008 The Mana World Development Team - * - * This file is part of The Mana World. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef NET_MANASERV_CHATSERVER_PARTY_H -#define NET_MANASERV_CHATSERVER_PARTY_H - -#include <iosfwd> - -namespace ManaServ -{ - namespace ChatServer - { - namespace Party - { - /** - * Invite a player to the party. - */ - void invitePlayer(const std::string &name); - - /** - * Accept an invite another player has sent to join their party - */ - void acceptInvite(const std::string &name); - - /** - * Reject an invite from another player to join their party - */ - void rejectInvite(const std::string &name); - - /** - * Get a list of party members - */ - void getPartyMembers(); - - /** - * Leave party - */ - void quitParty(); - } - } -} - -#endif // NET_MANASERV_CHATSERVER_PARTY_H diff --git a/src/net/manaserv/gamehandler.cpp b/src/net/manaserv/gamehandler.cpp index 1916d492..306dc5e6 100644 --- a/src/net/manaserv/gamehandler.cpp +++ b/src/net/manaserv/gamehandler.cpp @@ -23,11 +23,9 @@ #include "net/manaserv/chathandler.h" #include "net/manaserv/connection.h" +#include "net/manaserv/messageout.h" #include "net/manaserv/protocol.h" -#include "net/manaserv/chatserver/chatserver.h" -#include "net/manaserv/gameserver/gameserver.h" - #include "main.h" Net::GameHandler *gameHandler; @@ -99,7 +97,11 @@ void GameHandler::disconnect() void GameHandler::inGame() { - GameServer::connect(gameServerConnection, netToken); + + MessageOut msg(PGMSG_CONNECT); + msg.writeString(netToken, 32); + gameServerConnection->send(msg); + chatHandler->connect(); } @@ -115,7 +117,9 @@ void GameHandler::who() void GameHandler::quit() { - // TODO + //MessageOut msg(PGMSG_DISCONNECT); + //msg.writeInt8((unsigned char) reconnectAccount); + //gameServerConnection->send(msg); } void GameHandler::ping(int tick) diff --git a/src/net/manaserv/gameserver/gameserver.cpp b/src/net/manaserv/gameserver/gameserver.cpp deleted file mode 100644 index ba3bd983..00000000 --- a/src/net/manaserv/gameserver/gameserver.cpp +++ /dev/null @@ -1,53 +0,0 @@ -/* - * The Mana World - * Copyright (C) 2004 The Mana World Development Team - * - * This file is part of The Mana World. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "gameserver.h" - -#include "internal.h" - -#include "net/manaserv/connection.h" -#include "net/manaserv/messageout.h" -#include "net/manaserv/protocol.h" - -namespace ManaServ -{ - -void GameServer::connect(Connection *connection, const std::string &token) -{ - GameServer::connection = connection; - - MessageOut msg(PGMSG_CONNECT); - - msg.writeString(token, 32); - - GameServer::connection->send(msg); -} - -void GameServer::logout(bool reconnectAccount) -{ - MessageOut msg(PGMSG_DISCONNECT); - - msg.writeInt8((unsigned char) reconnectAccount); - - GameServer::connection->send(msg); -} - -} diff --git a/src/net/manaserv/gameserver/gameserver.h b/src/net/manaserv/gameserver/gameserver.h deleted file mode 100644 index 1f9e5b78..00000000 --- a/src/net/manaserv/gameserver/gameserver.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * The Mana World - * Copyright (C) 2004 The Mana World Development Team - * - * This file is part of The Mana World. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef NET_MANASERV_GAMESERVER_GAMESERVER_H -#define NET_MANASERV_GAMESERVER_GAMESERVER_H - -#include <iosfwd> - -namespace ManaServ -{ - class Connection; - - namespace GameServer - { - void connect(Connection *connection, const std::string &token); - - void logout(bool reconnectAccount); - } -} - -#endif // NET_MANASERV_GAMESERVER_GAMESERVER_H diff --git a/src/net/manaserv/gameserver/internal.cpp b/src/net/manaserv/gameserver/internal.cpp deleted file mode 100644 index e998ced9..00000000 --- a/src/net/manaserv/gameserver/internal.cpp +++ /dev/null @@ -1,32 +0,0 @@ -/* - * The Mana World - * Copyright (C) 2004 The Mana World Development Team - * - * This file is part of The Mana World. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "internal.h" - -namespace ManaServ -{ - class Connection; - - namespace GameServer - { - Connection *connection = 0; - } -} diff --git a/src/net/manaserv/gameserver/internal.h b/src/net/manaserv/gameserver/internal.h deleted file mode 100644 index 44cd3be2..00000000 --- a/src/net/manaserv/gameserver/internal.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * The Mana World - * Copyright (C) 2004 The Mana World Development Team - * - * This file is part of The Mana World. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef NET_MANASERV_GAMESERVER_INTERNAL_H -#define NET_MANASERV_GAMESERVER_INTERNAL_H - -namespace ManaServ -{ - class Connection; - - namespace GameServer - { - extern Connection *connection; - } -} - -#endif // NET_MANASERV_GAMESERVER_INTERNAL_H diff --git a/src/net/manaserv/gameserver/player.cpp b/src/net/manaserv/gameserver/player.cpp deleted file mode 100644 index 6fa146d4..00000000 --- a/src/net/manaserv/gameserver/player.cpp +++ /dev/null @@ -1,61 +0,0 @@ -/* - * The Mana World - * Copyright (C) 2004 The Mana World Development Team - * - * This file is part of The Mana World. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "player.h" - -#include "internal.h" - -#include "net/manaserv/connection.h" -#include "net/manaserv/messageout.h" -#include "net/manaserv/protocol.h" - -void RespawnRequestListener::action(const gcn::ActionEvent &event) -{ - ManaServ::GameServer::Player::respawn(); -} - -namespace ManaServ -{ - -void GameServer::Player::walk(int x, int y) -{ - MessageOut msg(PGMSG_WALK); - msg.writeInt16(x); - msg.writeInt16(y); - GameServer::connection->send(msg); -} - -void GameServer::Player::moveItem(int oldSlot, int newSlot, int amount) -{ - MessageOut msg(PGMSG_MOVE_ITEM); - msg.writeInt8(oldSlot); - msg.writeInt8(newSlot); - msg.writeInt8(amount); - GameServer::connection->send(msg); -} - -void GameServer::Player::respawn() -{ - MessageOut msg(PGMSG_RESPAWN); - GameServer::connection->send(msg); -} - -} diff --git a/src/net/manaserv/gameserver/player.h b/src/net/manaserv/gameserver/player.h deleted file mode 100644 index 40ba4b2b..00000000 --- a/src/net/manaserv/gameserver/player.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * The Mana World - * Copyright (C) 2004 The Mana World Development Team - * - * This file is part of The Mana World. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef NET_MANASERV_GAMESERVER_PLAYER_H -#define NET_MANASERV_GAMESERVER_PLAYER_H - -#include "being.h" - -#include <guichan/actionlistener.hpp> - -#include <iosfwd> - - -struct RespawnRequestListener : public gcn::ActionListener -{ - void action(const gcn::ActionEvent &event); -}; - -namespace ManaServ -{ - namespace GameServer - { - namespace Player - { - void walk(int x, int y); - void moveItem(int oldSlot, int newSlot, int amount); - void respawn(); - static RespawnRequestListener respawnListener; - } - } -} - -#endif // NET_MANASERV_GAMESERVER_PLAYER_H diff --git a/src/net/manaserv/guildhandler.cpp b/src/net/manaserv/guildhandler.cpp index 9cdc1c72..d4bf2397 100644 --- a/src/net/manaserv/guildhandler.cpp +++ b/src/net/manaserv/guildhandler.cpp @@ -23,7 +23,6 @@ #include "net/messagein.h" -#include "net/manaserv/chatserver/chatserver.h" #include "net/manaserv/chatserver/guild.h" #include "net/manaserv/protocol.h" diff --git a/src/net/manaserv/inventoryhandler.cpp b/src/net/manaserv/inventoryhandler.cpp index e4fe0ecc..0d0c1b34 100644 --- a/src/net/manaserv/inventoryhandler.cpp +++ b/src/net/manaserv/inventoryhandler.cpp @@ -26,9 +26,6 @@ #include "net/manaserv/messageout.h" #include "net/manaserv/protocol.h" -#include "net/manaserv/gameserver/internal.h" -#include "net/manaserv/gameserver/player.h" - #include "equipment.h" #include "inventory.h" #include "item.h" @@ -45,6 +42,8 @@ Net::InventoryHandler *inventoryHandler; namespace ManaServ { +extern Connection *gameServerConnection; + InventoryHandler::InventoryHandler() { static const Uint16 _messages[] = { @@ -93,14 +92,14 @@ void InventoryHandler::equipItem(const Item *item) { MessageOut msg(PGMSG_EQUIP); msg.writeInt8(item->getInvIndex()); - GameServer::connection->send(msg); + gameServerConnection->send(msg); } void InventoryHandler::unequipItem(const Item *item) { MessageOut msg(PGMSG_UNEQUIP); msg.writeInt8(item->getInvIndex()); - GameServer::connection->send(msg); + gameServerConnection->send(msg); // Tidy equipment directly to avoid weapon still shown bug, for instance int equipSlot = item->getInvIndex(); @@ -112,7 +111,7 @@ void InventoryHandler::useItem(const Item *item) { MessageOut msg(PGMSG_USE_ITEM); msg.writeInt8(item->getInvIndex()); - GameServer::connection->send(msg); + gameServerConnection->send(msg); } void InventoryHandler::dropItem(const Item *item, int amount) @@ -120,7 +119,7 @@ void InventoryHandler::dropItem(const Item *item, int amount) MessageOut msg(PGMSG_DROP); msg.writeInt8(item->getInvIndex()); msg.writeInt8(amount); - GameServer::connection->send(msg); + gameServerConnection->send(msg); } bool InventoryHandler::canSplit(const Item *item) @@ -133,7 +132,11 @@ void InventoryHandler::splitItem(const Item *item, int amount) int newIndex = player_node->getInventory()->getFreeSlot(); if (newIndex > Inventory::NO_SLOT_INDEX) { - GameServer::Player::moveItem(item->getInvIndex(), newIndex, amount); + MessageOut msg(PGMSG_MOVE_ITEM); + msg.writeInt8(item->getInvIndex()); + msg.writeInt8(newIndex); + msg.writeInt8(amount); + gameServerConnection->send(msg); } } @@ -142,8 +145,12 @@ void InventoryHandler::moveItem(int oldIndex, int newIndex) if (oldIndex == newIndex) return; - GameServer::Player::moveItem(oldIndex, newIndex, - player_node->getInventory()->getItem(oldIndex)->getQuantity()); + MessageOut msg(PGMSG_MOVE_ITEM); + msg.writeInt8(oldIndex); + msg.writeInt8(newIndex); + msg.writeInt8(player_node->getInventory()->getItem(oldIndex) + ->getQuantity()); + gameServerConnection->send(msg); } void InventoryHandler::openStorage() diff --git a/src/net/manaserv/loginhandler.cpp b/src/net/manaserv/loginhandler.cpp index d753d8d1..5e8780d4 100644 --- a/src/net/manaserv/loginhandler.cpp +++ b/src/net/manaserv/loginhandler.cpp @@ -23,16 +23,15 @@ #include "net/manaserv/connection.h" #include "net/manaserv/messagein.h" +#include "net/manaserv/messageout.h" #include "net/manaserv/protocol.h" -#include "net/manaserv/accountserver/account.h" -#include "net/manaserv/accountserver/accountserver.h" - #include "net/logindata.h" #include "main.h" #include "utils/gettext.h" +#include "utils/sha256.h" Net::LoginHandler *loginHandler; @@ -40,6 +39,7 @@ Net::LoginHandler *loginHandler; namespace ManaServ { extern Connection *accountServerConnection; +extern std::string netToken; LoginHandler::LoginHandler() { @@ -306,27 +306,44 @@ void LoginHandler::disconnect() void LoginHandler::loginAccount(LoginData *loginData) { mLoginData = loginData; - AccountServer::login(accountServerConnection, - 0, // client version - loginData->username, - loginData->password); + + MessageOut msg(PAMSG_LOGIN); + + msg.writeInt32(0); // client version + msg.writeString(loginData->username); + msg.writeString(sha256(loginData->username + loginData->password)); + + accountServerConnection->send(msg); } void LoginHandler::logout() { - // TODO + MessageOut msg(PAMSG_LOGOUT); + accountServerConnection->send(msg); } void LoginHandler::changeEmail(const std::string &email) { - AccountServer::Account::changeEmail(email); + MessageOut msg(PAMSG_EMAIL_CHANGE); + + // Email is sent clearly so the server can validate the data. + // Encryption is assumed server-side. + msg.writeString(email); + + accountServerConnection->send(msg); } void LoginHandler::changePassword(const std::string &username, const std::string &oldPassword, const std::string &newPassword) { - AccountServer::Account::changePassword(username, oldPassword, newPassword); + MessageOut msg(PAMSG_PASSWORD_CHANGE); + + // Change password using SHA2 encryption + msg.writeString(sha256(username + oldPassword)); + msg.writeString(sha256(username + newPassword)); + + accountServerConnection->send(msg); } void LoginHandler::chooseServer(unsigned int server) @@ -336,17 +353,28 @@ void LoginHandler::chooseServer(unsigned int server) void LoginHandler::registerAccount(LoginData *loginData) { - AccountServer::registerAccount(accountServerConnection, - 0, // client version - loginData->username, - loginData->password, - loginData->email); + MessageOut msg(PAMSG_REGISTER); + + msg.writeInt32(0); // client version + msg.writeString(loginData->username); + // When registering, the password and email hash is assumed by server. + // Hence, data can be validated safely server-side. + // This is the only time we send a clear password. + msg.writeString(loginData->password); + msg.writeString(loginData->email); + + accountServerConnection->send(msg); } void LoginHandler::unregisterAccount(const std::string &username, const std::string &password) { - AccountServer::Account::unregister(username, password); + MessageOut msg(PAMSG_UNREGISTER); + + msg.writeString(username); + msg.writeString(sha256(username + password)); + + accountServerConnection->send(msg); } Worlds LoginHandler::getWorlds() const @@ -354,4 +382,11 @@ Worlds LoginHandler::getWorlds() const return Worlds(); } +void reconnect() +{ + MessageOut msg(PAMSG_RECONNECT); + msg.writeString(netToken, 32); + accountServerConnection->send(msg); +} + } // namespace ManaServ diff --git a/src/net/manaserv/loginhandler.h b/src/net/manaserv/loginhandler.h index 14c14a53..1a929c96 100644 --- a/src/net/manaserv/loginhandler.h +++ b/src/net/manaserv/loginhandler.h @@ -70,6 +70,8 @@ class LoginHandler : public MessageHandler, public Net::LoginHandler Worlds getWorlds() const; + void reconnect(); + private: void handleLoginResponse(Net::MessageIn &msg); void handleRegisterResponse(Net::MessageIn &msg); diff --git a/src/net/manaserv/npchandler.cpp b/src/net/manaserv/npchandler.cpp index 7384d18e..4c4aa53f 100644 --- a/src/net/manaserv/npchandler.cpp +++ b/src/net/manaserv/npchandler.cpp @@ -26,9 +26,6 @@ #include "net/manaserv/messageout.h" #include "net/manaserv/protocol.h" -#include "net/manaserv/gameserver/internal.h" -#include "net/manaserv/gameserver/player.h" - #include "beingmanager.h" #include "npc.h" @@ -39,6 +36,8 @@ Net::NpcHandler *npcHandler; namespace ManaServ { +extern Connection *gameServerConnection; + NpcHandler::NpcHandler() { static const Uint16 _messages[] = { @@ -114,21 +113,22 @@ void NpcHandler::talk(int npcId) { MessageOut msg(PGMSG_NPC_TALK); msg.writeInt16(npcId); - GameServer::connection->send(msg); + gameServerConnection->send(msg); } void NpcHandler::nextDialog(int npcId) { MessageOut msg(PGMSG_NPC_TALK_NEXT); msg.writeInt16(npcId); - GameServer::connection->send(msg); + gameServerConnection->send(msg); } void NpcHandler::closeDialog(int npcId) { MessageOut msg(PGMSG_NPC_TALK_NEXT); msg.writeInt16(npcId); - GameServer::connection->send(msg); + gameServerConnection->send(msg); + npcDialog->setVisible(false); npcDialog->setText(""); } @@ -138,7 +138,7 @@ void NpcHandler::listInput(int npcId, int value) MessageOut msg(PGMSG_NPC_SELECT); msg.writeInt16(npcId); msg.writeInt8(value); - GameServer::connection->send(msg); + gameServerConnection->send(msg); } void NpcHandler::integerInput(int npcId, int value) @@ -146,7 +146,7 @@ void NpcHandler::integerInput(int npcId, int value) MessageOut msg(PGMSG_NPC_NUMBER); msg.writeInt16(npcId); msg.writeInt32(value); - GameServer::connection->send(msg); + gameServerConnection->send(msg); } void NpcHandler::stringInput(int npcId, const std::string &value) @@ -154,7 +154,7 @@ void NpcHandler::stringInput(int npcId, const std::string &value) MessageOut msg(PGMSG_NPC_STRING); msg.writeInt16(npcId); msg.writeString(value); - GameServer::connection->send(msg); + gameServerConnection->send(msg); } void NpcHandler::sendLetter(int npcId, const std::string &recipient, @@ -163,7 +163,7 @@ void NpcHandler::sendLetter(int npcId, const std::string &recipient, MessageOut msg(PGMSG_NPC_POST_SEND); msg.writeString(recipient); msg.writeString(text); - GameServer::connection->send(msg); + gameServerConnection->send(msg); } void NpcHandler::startShopping(int beingId) @@ -186,7 +186,7 @@ void NpcHandler::buyItem(int beingId, int itemId, int amount) MessageOut msg(PGMSG_NPC_BUYSELL); msg.writeInt16(itemId); msg.writeInt16(amount); - GameServer::connection->send(msg); + gameServerConnection->send(msg); } void NpcHandler::sellItem(int beingId, int itemId, int amount) @@ -194,7 +194,7 @@ void NpcHandler::sellItem(int beingId, int itemId, int amount) MessageOut msg(PGMSG_NPC_BUYSELL); msg.writeInt16(itemId); msg.writeInt16(amount); - GameServer::connection->send(msg); + gameServerConnection->send(msg); } void NpcHandler::endShopping(int beingId) diff --git a/src/net/manaserv/partyhandler.cpp b/src/net/manaserv/partyhandler.cpp index ea968649..2426f17e 100644 --- a/src/net/manaserv/partyhandler.cpp +++ b/src/net/manaserv/partyhandler.cpp @@ -21,12 +21,10 @@ #include "net/manaserv/partyhandler.h" -#include "net/manaserv/protocol.h" +#include "net/manaserv/connection.h" #include "net/manaserv/messagein.h" #include "net/manaserv/messageout.h" - -#include "net/manaserv/chatserver/chatserver.h" -#include "net/manaserv/chatserver/party.h" +#include "net/manaserv/protocol.h" #include "gui/partywindow.h" @@ -44,6 +42,8 @@ Net::PartyHandler *partyHandler; namespace ManaServ { +extern Connection *chatServerConnection; + PartyHandler::PartyHandler() { static const Uint16 _messages[] = { @@ -140,20 +140,28 @@ void PartyHandler::invite(Player *player) void PartyHandler::invite(const std::string &name) { - ChatServer::Party::invitePlayer(name); + MessageOut msg(PCMSG_PARTY_INVITE); + + msg.writeString(name); + + chatServerConnection->send(msg); } void PartyHandler::inviteResponse(const std::string &inviter, bool accept) { - if (accept) - ChatServer::Party::acceptInvite(inviter); - else - ChatServer::Party::rejectInvite(inviter); + MessageOut msg = MessageOut(accept ? PCMSG_PARTY_ACCEPT_INVITE : + PCMSG_PARTY_REJECT_INVITE); + + msg.writeString(inviter); + + chatServerConnection->send(msg); } void PartyHandler::leave() { - ChatServer::Party::quitParty(); + MessageOut msg(PCMSG_PARTY_QUIT); + + chatServerConnection->send(msg); } void PartyHandler::kick(Player *player) @@ -173,7 +181,11 @@ void PartyHandler::chat(const std::string &text) void PartyHandler::requestPartyMembers() { - // TODO + //MessageOut msg(PCMSG_GUILD_GET_MEMBERS); + + //msg.writeInt16(guildId); + + //chatServerConnection->send(msg); } } // namespace ManaServ diff --git a/src/net/manaserv/playerhandler.cpp b/src/net/manaserv/playerhandler.cpp index fabf7c25..276b2c3a 100644 --- a/src/net/manaserv/playerhandler.cpp +++ b/src/net/manaserv/playerhandler.cpp @@ -26,9 +26,6 @@ #include "net/manaserv/messageout.h" #include "net/manaserv/protocol.h" -#include "net/manaserv/gameserver/internal.h" -#include "net/manaserv/gameserver/player.h" - #include "net/net.h" #include "effectmanager.h" @@ -94,6 +91,13 @@ Net::PlayerHandler *playerHandler; namespace ManaServ { +void RespawnRequestListener::action(const gcn::ActionEvent &event) +{ + Net::getPlayerHandler()->respawn(); +} + +extern Connection *gameServerConnection; + PlayerHandler::PlayerHandler() { static const Uint16 _messages[] = { @@ -328,7 +332,7 @@ void PlayerHandler::attack(int id) { MessageOut msg(PGMSG_ATTACK); msg.writeInt16(id); - GameServer::connection->send(msg); + gameServerConnection->send(msg); } void PlayerHandler::emote(int emoteId) @@ -340,14 +344,14 @@ void PlayerHandler::increaseAttribute(size_t attr) { MessageOut msg(PGMSG_RAISE_ATTRIBUTE); msg.writeInt8(attr); - GameServer::connection->send(msg); + gameServerConnection->send(msg); } void PlayerHandler::decreaseAttribute(size_t attr) { MessageOut msg(PGMSG_LOWER_ATTRIBUTE); msg.writeInt8(attr); - GameServer::connection->send(msg); + gameServerConnection->send(msg); } void PlayerHandler::increaseSkill(int skillId) @@ -361,14 +365,14 @@ void PlayerHandler::pickUp(FloorItem *floorItem) MessageOut msg(PGMSG_PICKUP); msg.writeInt16(id >> 16); msg.writeInt16(id & 0xFFFF); - GameServer::connection->send(msg); + gameServerConnection->send(msg); } void PlayerHandler::setDirection(char direction) { MessageOut msg(PGMSG_DIRECTION_CHANGE); msg.writeInt8(direction); - GameServer::connection->send(msg); + gameServerConnection->send(msg); } void PlayerHandler::setDestination(int x, int y, int /* direction */) @@ -376,7 +380,7 @@ void PlayerHandler::setDestination(int x, int y, int /* direction */) MessageOut msg(PGMSG_WALK); msg.writeInt16(x); msg.writeInt16(y); - GameServer::connection->send(msg); + gameServerConnection->send(msg); } void PlayerHandler::changeAction(Being::Action action) @@ -385,12 +389,13 @@ void PlayerHandler::changeAction(Being::Action action) MessageOut msg(PGMSG_ACTION_CHANGE); msg.writeInt8(action); - GameServer::connection->send(msg); + gameServerConnection->send(msg); } void PlayerHandler::respawn() { - // TODO + MessageOut msg(PGMSG_RESPAWN); + gameServerConnection->send(msg); } void PlayerHandler::ignorePlayer(const std::string &player, bool ignore) diff --git a/src/net/manaserv/playerhandler.h b/src/net/manaserv/playerhandler.h index 926f05dd..37d485f8 100644 --- a/src/net/manaserv/playerhandler.h +++ b/src/net/manaserv/playerhandler.h @@ -26,8 +26,16 @@ #include "net/manaserv/messagehandler.h" +#include <guichan/actionlistener.hpp> + namespace ManaServ { +struct RespawnRequestListener : public gcn::ActionListener +{ + void action(const gcn::ActionEvent &event); +}; +static RespawnRequestListener respawnListener; + class PlayerHandler : public MessageHandler, public Net::PlayerHandler { public: diff --git a/src/net/manaserv/specialhandler.cpp b/src/net/manaserv/specialhandler.cpp index 2e152d60..17d26d07 100644 --- a/src/net/manaserv/specialhandler.cpp +++ b/src/net/manaserv/specialhandler.cpp @@ -21,8 +21,6 @@ #include "net/manaserv/specialhandler.h" -#include "net/manaserv/gameserver/internal.h" - #include "net/manaserv/connection.h" #include "net/manaserv/messagein.h" #include "net/manaserv/messageout.h" @@ -32,6 +30,8 @@ Net::SpecialHandler *specialHandler; namespace ManaServ { +extern Connection *gameServerConnection; + SpecialHandler::SpecialHandler() { specialHandler = this; @@ -46,7 +46,7 @@ void SpecialHandler::use(int id) { MessageOut msg(PGMSG_USE_SPECIAL); msg.writeInt8(id); - GameServer::connection->send(msg); + gameServerConnection->send(msg); } void SpecialHandler::use(int id, int level, int beingId) diff --git a/src/net/manaserv/tradehandler.cpp b/src/net/manaserv/tradehandler.cpp index 46664193..bcfe20e9 100644 --- a/src/net/manaserv/tradehandler.cpp +++ b/src/net/manaserv/tradehandler.cpp @@ -21,9 +21,6 @@ #include "net/manaserv/tradehandler.h" -#include "net/manaserv/gameserver/internal.h" -#include "net/manaserv/gameserver/player.h" - #include "net/manaserv/connection.h" #include "net/manaserv/messagein.h" #include "net/manaserv/messageout.h" @@ -46,6 +43,12 @@ std::string tradePartnerName; int tradePartnerID; +Net::TradeHandler *tradeHandler; + +namespace ManaServ { + +extern Connection *gameServerConnection; + /** * Listener for request trade dialogs */ @@ -58,7 +61,7 @@ namespace { { ManaServ::MessageOut msg(PGMSG_TRADE_REQUEST); msg.writeInt16(tradePartnerID); - ManaServ::GameServer::connection->send(msg); + gameServerConnection->send(msg); } else Net::getTradeHandler()->cancel(); @@ -66,10 +69,6 @@ namespace { } listener; } -Net::TradeHandler *tradeHandler; - -namespace ManaServ { - TradeHandler::TradeHandler(): mAcceptTradeRequests(true) { @@ -170,13 +169,13 @@ void TradeHandler::request(Being *being) MessageOut msg(PGMSG_TRADE_REQUEST); msg.writeInt16(tradePartnerID); - GameServer::connection->send(msg); + gameServerConnection->send(msg); } void TradeHandler::respond(bool accept) { MessageOut msg(accept ? PGMSG_TRADE_REQUEST : PGMSG_TRADE_CANCEL); - GameServer::connection->send(msg); + gameServerConnection->send(msg); if (!accept) player_node->setTrading(false); @@ -187,7 +186,7 @@ void TradeHandler::addItem(Item *item, int amount) MessageOut msg(PGMSG_TRADE_ADD_ITEM); msg.writeInt8(item->getInvIndex()); msg.writeInt8(amount); - GameServer::connection->send(msg); + gameServerConnection->send(msg); tradeWindow->addItem(item->getId(), true, amount); item->increaseQuantity(-amount); @@ -202,25 +201,25 @@ void TradeHandler::setMoney(int amount) { MessageOut msg(PGMSG_TRADE_SET_MONEY); msg.writeInt32(amount); - GameServer::connection->send(msg); + gameServerConnection->send(msg); } void TradeHandler::confirm() { MessageOut msg(PGMSG_TRADE_CONFIRM); - GameServer::connection->send(msg); + gameServerConnection->send(msg); } void TradeHandler::finish() { MessageOut msg(PGMSG_TRADE_AGREED); - GameServer::connection->send(msg); + gameServerConnection->send(msg); } void TradeHandler::cancel() { MessageOut msg(PGMSG_TRADE_CANCEL); - GameServer::connection->send(msg); + gameServerConnection->send(msg); } } // namespace ManaServ |