summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2012-02-23 20:07:00 +0300
committerAndrei Karas <akaras@inbox.ru>2012-02-23 20:08:36 +0300
commit3a99b3d6aa8be21eab786bd77b3329822a51a828 (patch)
tree4044601268150bde9ef4084fed8e2687e4947489
parente304be2e573cee65cdaf71fa1eb7f96fda1c0358 (diff)
downloadmv-3a99b3d6aa8be21eab786bd77b3329822a51a828.tar.gz
mv-3a99b3d6aa8be21eab786bd77b3329822a51a828.tar.bz2
mv-3a99b3d6aa8be21eab786bd77b3329822a51a828.tar.xz
mv-3a99b3d6aa8be21eab786bd77b3329822a51a828.zip
Remove manaserv support.
-rw-r--r--src/CMakeLists.txt65
-rw-r--r--src/Makefile.am56
-rw-r--r--src/net/manaserv/adminhandler.cpp102
-rw-r--r--src/net/manaserv/adminhandler.h62
-rw-r--r--src/net/manaserv/attributes.cpp412
-rw-r--r--src/net/manaserv/attributes.h73
-rw-r--r--src/net/manaserv/beinghandler.cpp387
-rw-r--r--src/net/manaserv/beinghandler.h68
-rw-r--r--src/net/manaserv/buysellhandler.cpp134
-rw-r--r--src/net/manaserv/buysellhandler.h52
-rw-r--r--src/net/manaserv/charhandler.cpp407
-rw-r--r--src/net/manaserv/charhandler.h121
-rw-r--r--src/net/manaserv/chathandler.cpp484
-rw-r--r--src/net/manaserv/chathandler.h138
-rw-r--r--src/net/manaserv/connection.cpp114
-rw-r--r--src/net/manaserv/connection.h90
-rw-r--r--src/net/manaserv/defines.h78
-rw-r--r--src/net/manaserv/effecthandler.cpp81
-rw-r--r--src/net/manaserv/effecthandler.h45
-rw-r--r--src/net/manaserv/gamehandler.cpp155
-rw-r--r--src/net/manaserv/gamehandler.h71
-rw-r--r--src/net/manaserv/generalhandler.cpp215
-rw-r--r--src/net/manaserv/generalhandler.h75
-rw-r--r--src/net/manaserv/guildhandler.cpp365
-rw-r--r--src/net/manaserv/guildhandler.h81
-rw-r--r--src/net/manaserv/internal.cpp28
-rw-r--r--src/net/manaserv/internal.h31
-rw-r--r--src/net/manaserv/inventoryhandler.cpp220
-rw-r--r--src/net/manaserv/inventoryhandler.h104
-rw-r--r--src/net/manaserv/itemhandler.cpp91
-rw-r--r--src/net/manaserv/itemhandler.h41
-rw-r--r--src/net/manaserv/loginhandler.cpp498
-rw-r--r--src/net/manaserv/loginhandler.h96
-rw-r--r--src/net/manaserv/messagehandler.cpp35
-rw-r--r--src/net/manaserv/messagehandler.h45
-rw-r--r--src/net/manaserv/messagein.cpp63
-rw-r--r--src/net/manaserv/messagein.h50
-rw-r--r--src/net/manaserv/messageout.cpp66
-rw-r--r--src/net/manaserv/messageout.h60
-rw-r--r--src/net/manaserv/network.cpp177
-rw-r--r--src/net/manaserv/network.h76
-rw-r--r--src/net/manaserv/npchandler.cpp237
-rw-r--r--src/net/manaserv/npchandler.h84
-rw-r--r--src/net/manaserv/partyhandler.cpp202
-rw-r--r--src/net/manaserv/partyhandler.h85
-rw-r--r--src/net/manaserv/playerhandler.cpp455
-rw-r--r--src/net/manaserv/playerhandler.h85
-rw-r--r--src/net/manaserv/protocol.h393
-rw-r--r--src/net/manaserv/specialhandler.cpp73
-rw-r--r--src/net/manaserv/specialhandler.h51
-rw-r--r--src/net/manaserv/tradehandler.cpp238
-rw-r--r--src/net/manaserv/tradehandler.h77
-rw-r--r--src/utils/sha256.cpp298
-rw-r--r--src/utils/sha256.h36
54 files changed, 1 insertions, 7925 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 9af6c6ec0..4f54be8c4 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -33,10 +33,6 @@ IF (ENABLE_NLS)
SET(FLAGS "${FLAGS} -DENABLE_NLS=1")
ENDIF()
-IF (ENABLE_MANASERV)
- SET(FLAGS "${FLAGS} -DMANASERV_SUPPORT=1")
-ENDIF()
-
IF (CMAKE_BUILD_TYPE)
STRING(TOLOWER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_TOLOWER)
IF(CMAKE_BUILD_TYPE_TOLOWER MATCHES debug OR
@@ -704,61 +700,6 @@ SET(SRCS_TMWA
net/tmwa/tradehandler.h
)
-SET(SRCS_MANASERV
- utils/sha256.cpp
- utils/sha256.h
- net/manaserv/attributes.cpp
- net/manaserv/attributes.h
- net/manaserv/adminhandler.cpp
- net/manaserv/adminhandler.h
- net/manaserv/beinghandler.cpp
- net/manaserv/beinghandler.h
- net/manaserv/buysellhandler.cpp
- net/manaserv/buysellhandler.h
- net/manaserv/charhandler.cpp
- net/manaserv/charhandler.h
- net/manaserv/chathandler.cpp
- net/manaserv/chathandler.h
- net/manaserv/connection.cpp
- net/manaserv/connection.h
- net/manaserv/defines.h
- net/manaserv/effecthandler.cpp
- net/manaserv/effecthandler.h
- net/manaserv/gamehandler.cpp
- net/manaserv/gamehandler.h
- net/manaserv/generalhandler.cpp
- net/manaserv/generalhandler.h
- net/manaserv/guildhandler.cpp
- net/manaserv/guildhandler.h
- net/manaserv/internal.cpp
- net/manaserv/internal.h
- net/manaserv/inventoryhandler.cpp
- net/manaserv/inventoryhandler.h
- net/manaserv/itemhandler.h
- net/manaserv/itemhandler.cpp
- net/manaserv/loginhandler.cpp
- net/manaserv/loginhandler.h
- net/manaserv/messagehandler.cpp
- net/manaserv/messagehandler.h
- net/manaserv/messagein.cpp
- net/manaserv/messagein.h
- net/manaserv/messageout.cpp
- net/manaserv/messageout.h
- net/manaserv/network.cpp
- net/manaserv/network.h
- net/manaserv/npchandler.cpp
- net/manaserv/npchandler.h
- net/manaserv/partyhandler.cpp
- net/manaserv/partyhandler.h
- net/manaserv/playerhandler.cpp
- net/manaserv/playerhandler.h
- net/manaserv/protocol.h
- net/manaserv/specialhandler.cpp
- net/manaserv/specialhandler.h
- net/manaserv/tradehandler.cpp
- net/manaserv/tradehandler.h
- )
-
IF (WIN32)
SET(SRCS
${SRCS}
@@ -770,11 +711,7 @@ ENDIF ()
SET (PROGRAMS manaplus)
-IF (ENABLE_MANASERV)
- ADD_EXECUTABLE(manaplus WIN32 ${SRCS} ${SRCS_MANASERV} ${SRCS_TMWA} ${SRCS_EVOL})
-ELSE(ENABLE_MANASERV)
- ADD_EXECUTABLE(manaplus WIN32 ${SRCS} ${SRCS_TMWA} ${SRCS_EVOL})
-ENDIF(ENABLE_MANASERV)
+ADD_EXECUTABLE(manaplus WIN32 ${SRCS} ${SRCS_TMWA} ${SRCS_EVOL})
TARGET_LINK_LIBRARIES(manaplus
${SDLGFX_LIBRARIES}
diff --git a/src/Makefile.am b/src/Makefile.am
index 958c7104a..189283fb9 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -514,62 +514,6 @@ manaplus_SOURCES = gui/widgets/avatarlistbox.cpp \
vector.h \
winver.h
-if ENABLE_MANASERV
-manaplus_CXXFLAGS += -DMANASERV_SUPPORT
-manaplus_SOURCES += utils/sha256.cpp \
- utils/sha256.h \
- net/manaserv/attributes.cpp \
- net/manaserv/attributes.h \
- net/manaserv/adminhandler.cpp \
- net/manaserv/adminhandler.h \
- net/manaserv/beinghandler.cpp \
- net/manaserv/beinghandler.h \
- net/manaserv/buysellhandler.cpp \
- net/manaserv/buysellhandler.h \
- net/manaserv/charhandler.cpp \
- net/manaserv/charhandler.h \
- net/manaserv/chathandler.cpp \
- net/manaserv/chathandler.h \
- net/manaserv/connection.cpp \
- net/manaserv/connection.h \
- net/manaserv/defines.h \
- net/manaserv/effecthandler.cpp \
- net/manaserv/effecthandler.h \
- net/manaserv/gamehandler.cpp \
- net/manaserv/gamehandler.h \
- net/manaserv/generalhandler.cpp \
- net/manaserv/generalhandler.h \
- net/manaserv/guildhandler.cpp \
- net/manaserv/guildhandler.h \
- net/manaserv/internal.cpp \
- net/manaserv/internal.h \
- net/manaserv/inventoryhandler.cpp \
- net/manaserv/inventoryhandler.h \
- net/manaserv/itemhandler.h \
- net/manaserv/itemhandler.cpp \
- net/manaserv/loginhandler.cpp \
- net/manaserv/loginhandler.h \
- net/manaserv/messagehandler.cpp \
- net/manaserv/messagehandler.h \
- net/manaserv/messagein.cpp \
- net/manaserv/messagein.h \
- net/manaserv/messageout.cpp \
- net/manaserv/messageout.h \
- net/manaserv/network.cpp \
- net/manaserv/network.h \
- net/manaserv/npchandler.cpp \
- net/manaserv/npchandler.h \
- net/manaserv/partyhandler.cpp \
- net/manaserv/partyhandler.h \
- net/manaserv/playerhandler.cpp \
- net/manaserv/playerhandler.h \
- net/manaserv/protocol.h \
- net/manaserv/specialhandler.cpp \
- net/manaserv/specialhandler.h \
- net/manaserv/tradehandler.cpp \
- net/manaserv/tradehandler.h
-endif
-
manaplus_SOURCES += \
net/ea/gui/guildtab.cpp \
net/ea/gui/guildtab.h \
diff --git a/src/net/manaserv/adminhandler.cpp b/src/net/manaserv/adminhandler.cpp
deleted file mode 100644
index f44da97ff..000000000
--- a/src/net/manaserv/adminhandler.cpp
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "net/manaserv/adminhandler.h"
-
-#include "net/manaserv/connection.h"
-#include "net/manaserv/messageout.h"
-#include "net/manaserv/protocol.h"
-
-#include "debug.h"
-
-extern Net::AdminHandler *adminHandler;
-
-namespace ManaServ
-{
-
-extern Connection *chatServerConnection;
-
-AdminHandler::AdminHandler()
-{
- adminHandler = this;
-}
-
-void AdminHandler::announce(const std::string &text)
-{
- MessageOut msg(PCMSG_ANNOUNCE);
- msg.writeString(text);
- chatServerConnection->send(msg);
-}
-
-void AdminHandler::localAnnounce(const std::string &text A_UNUSED)
-{
- // TODO
-}
-
-void AdminHandler::hide(bool hide A_UNUSED)
-{
- // TODO
-}
-
-void AdminHandler::kick(int playerId A_UNUSED)
-{
- // TODO
-}
-
-void AdminHandler::kickName(const std::string &name A_UNUSED)
-{
- // TODO
-}
-
-void AdminHandler::ban(int playerId A_UNUSED)
-{
- // TODO
-}
-
-void AdminHandler::banName(const std::string &name A_UNUSED)
-{
- // TODO
-}
-
-void AdminHandler::unban(int playerId A_UNUSED)
-{
- // TODO
-}
-
-void AdminHandler::unbanName(const std::string &name A_UNUSED)
-{
- // TODO
-}
-
-void AdminHandler::mute(int playerId A_UNUSED, int type A_UNUSED,
- int limit A_UNUSED)
-{
- // TODO
-}
-
-void AdminHandler::warp(std::string map A_UNUSED,
- int x A_UNUSED, int y A_UNUSED)
-{
- // TODO
-}
-
-} // namespace ManaServ
diff --git a/src/net/manaserv/adminhandler.h b/src/net/manaserv/adminhandler.h
deleted file mode 100644
index 87c536c31..000000000
--- a/src/net/manaserv/adminhandler.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NET_MANASERV_ADMINHANDLER_H
-#define NET_MANASERV_ADMINHANDLER_H
-
-#include "net/adminhandler.h"
-#include "string"
-
-namespace ManaServ
-{
-
-class AdminHandler : public Net::AdminHandler
-{
- public:
- AdminHandler();
-
- void announce(const std::string &text);
-
- void localAnnounce(const std::string &text);
-
- void hide(bool hide);
-
- void kick(int playerId);
-
- void kickName(const std::string &name);
-
- void ban(int playerId);
-
- void banName(const std::string &name);
-
- void unban(int playerId);
-
- void unbanName(const std::string &name);
-
- void mute(int playerId, int type, int limit);
-
- void warp(std::string map, int x, int y);
-};
-
-} // namespace ManaServ
-
-#endif
diff --git a/src/net/manaserv/attributes.cpp b/src/net/manaserv/attributes.cpp
deleted file mode 100644
index c032b6bb8..000000000
--- a/src/net/manaserv/attributes.cpp
+++ /dev/null
@@ -1,412 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "net/manaserv/attributes.h"
-
-#include "logger.h"
-#include "playerinfo.h"
-
-#include "gui/statuswindow.h"
-
-#include "resources/itemdb.h"
-
-#include "utils/gettext.h"
-#include "utils/stringutils.h"
-#include "utils/xml.h"
-
-#include <list>
-#include <map>
-
-#define DEFAULT_ATTRIBUTESDB_FILE "attributes.xml"
-#define DEFAULT_POINTS 60
-#define DEFAULT_MIN_PTS 1
-#define DEFAULT_MAX_PTS 20
-
-namespace ManaServ
-{
-namespace Attributes
-{
- typedef struct
- {
- unsigned int id;
- std::string name;
- std::string description;
- /** Whether the attribute value can be modified by the player */
- bool modifiable;
- /**< Attribute scope. */
- std::string scope;
- /** The playerInfo core Id the attribute is linked with or -1 if not */
- int playerInfoId;
- } Attribute;
-
- /** Map for attributes. */
- typedef std::map<unsigned int, Attribute> AttributeMap;
- static AttributeMap attributes;
-
- /** tags = effects on attributes. */
- typedef std::map< std::string, std::string > TagMap;
- static TagMap tags;
-
- /** List of modifiable attribute names used at character's creation. */
- static std::vector<std::string> attributeLabels;
-
- /** Characters creation points. */
- static unsigned int creationPoints = 0;
- static unsigned int attributeMinimum = 0;
- static unsigned int attributeMaximum = 0;
-
- unsigned int getCreationPoints() const
- { return creationPoints; }
-
- unsigned int getAttributeMinimum() const
- { return attributeMinimum; }
-
- unsigned int getAttributeMaximum() const
- { return attributeMaximum; }
-
- std::vector<std::string>& getLabels() const
- { return attributeLabels; }
-
- /**
- * Fills the list of base attribute labels.
- */
- static void fillLabels()
- {
- // Fill up the modifiable attribute label list.
- attributeLabels.clear();
- AttributeMap::const_iterator it, it_end;
- for (it = attributes.begin(), it_end = attributes.end();
- it != it_end; ++it)
- {
- if (it->second.modifiable && (it->second.scope == "character"
- || it->second.scope == "being"))
- {
- attributeLabels.push_back(it->second.name + ":");
- }
- }
- }
-
- /**
- * Fills the list of base attribute labels.
- */
- static int getPlayerInfoIdFromAttrType(std::string attrType)
- {
- toLower(attrType);
- if (attrType == "level")
- return ::LEVEL;
- else if (attrType == "hp")
- return ::HP;
- else if (attrType == "max-hp")
- return ::MAX_HP;
- else if (attrType == "mp")
- return ::MP;
- else if (attrType == "max-mp")
- return ::MAX_MP;
- else if (attrType == "exp")
- return ::EXP;
- else if (attrType == "exp-needed")
- return ::EXP_NEEDED;
- else if (attrType == "money")
- return ::MONEY;
- else if (attrType == "total-weight")
- return ::TOTAL_WEIGHT;
- else if (attrType == "max-weight")
- return ::MAX_WEIGHT;
- else if (attrType == "skill-points")
- return ::SKILL_POINTS;
- else if (attrType == "char-points")
- return ::CHAR_POINTS;
- else if (attrType == "corr-points")
- return ::CORR_POINTS;
- else if (attrType == "none")
- return -2; // Used to hide the attribute display.
-
- return -1; // Not linked to a playerinfo stat.
- }
-
- int getPlayerInfoIdFromAttrId(int attrId)
- {
- AttributeMap::const_iterator it = attributes.find(attrId);
-
- if (it != attributes.end())
- return it->second.playerInfoId;
-
- return -1;
- }
-
- static void loadBuiltins()
- {
- {
- Attribute a;
- a.id = 16;
- a.name = _("Strength");
- a.description = "";
- a.modifiable = true;
- a.scope = "character";
- a.playerInfoId = -1;
-
- attributes[a.id] = a;
- tags.insert(std::make_pair("str", _("Strength %+.1f")));
- }
-
- {
- Attribute a;
- a.id = 17;
- a.name = _("Agility");
- a.description = "";
- a.modifiable = true;
- a.scope = "character";
- a.playerInfoId = -1;
-
- attributes[a.id] = a;
- tags.insert(std::make_pair("agi", _("Agility %+.1f")));
- }
-
- {
- Attribute a;
- a.id = 18;
- a.name = _("Dexterity");
- a.description = "";
- a.modifiable = true;
- a.scope = "character";
- a.playerInfoId = -1;
-
- attributes[a.id] = a;
- tags.insert(std::make_pair("dex", _("Dexterity %+.1f")));
- }
-
- {
- Attribute a;
- a.id = 19;
- a.name = _("Vitality");
- a.description = "";
- a.modifiable = true;
- a.scope = "character";
- a.playerInfoId = -1;
-
- attributes[a.id] = a;
- tags.insert(std::make_pair("vit", _("Vitality %+.1f")));
- }
-
- {
- Attribute a;
- a.id = 20;
- a.name = _("Intelligence");
- a.description = "";
- a.modifiable = true;
- a.scope = "character";
- a.playerInfoId = -1;
-
- attributes[a.id] = a;
- tags.insert(std::make_pair("int", _("Intelligence %+.1f")));
- }
-
- {
- Attribute a;
- a.id = 21;
- a.name = _("Willpower");
- a.description = "";
- a.modifiable = true;
- a.scope = "character";
- a.playerInfoId = -1;
-
- attributes[a.id] = a;
- tags.insert(std::make_pair("wil", _("Willpower %+.1f")));
- }
- }
-
- void load()
- {
- logger->log("Initializing attributes database...");
-
- XML::Document doc(DEFAULT_ATTRIBUTESDB_FILE);
- XmlNodePtr rootNode = doc.rootNode();
-
- if (!rootNode || !xmlNameEqual(rootNode, "attributes"))
- {
- logger->log("Attributes: Error while loading "
- DEFAULT_ATTRIBUTESDB_FILE ". Using Built-ins.");
- loadBuiltins();
- fillLabels();
- return;
- }
-
- for_each_xml_child_node(node, rootNode)
- {
- if (xmlNameEqual(node, "attribute"))
- {
- int id = XML::getProperty(node, "id", 0);
-
- if (!id)
- {
- logger->log("Attributes: Invalid or missing stat ID in "
- DEFAULT_ATTRIBUTESDB_FILE "!");
- continue;
- }
- else if (attributes.find(id) != attributes.end())
- {
- logger->log("Attributes: Redefinition of stat ID %d", id);
- }
-
- std::string name = XML::getProperty(node, "name", "");
-
- if (name.empty())
- {
- logger->log("Attributes: Invalid or missing stat name in "
- DEFAULT_ATTRIBUTESDB_FILE "!");
- continue;
- }
-
- // Create the attribute.
- Attribute a;
- a.id = id;
- a.name = name;
- a.description = XML::getProperty(node, "desc", "");
- a.modifiable = XML::getBoolProperty(node, "modifiable", false);
- a.scope = XML::getProperty(node, "scope", "none");
- a.playerInfoId = getPlayerInfoIdFromAttrType(
- XML::getProperty(node, "player-info", ""));
-
- attributes[id] = a;
-
- unsigned int count = 0;
- for_each_xml_child_node(effectNode, node)
- {
- if (!xmlNameEqual(effectNode, "modifier"))
- continue;
- ++count;
- std::string tag = XML::getProperty(effectNode, "tag", "");
- if (tag.empty())
- {
- if (name.empty())
- {
- logger->log("Attribute modifier in attribute"
- " %u:%s: Empty name definition "
- "on empty tag definition, skipping.",
- a.id, a.name.c_str());
- --count;
- continue;
- }
- tag = name.substr(0, name.size() > 3
- ? 3 : name.size());
- tag = toLower(tag) + toString(count);
- }
-
- std::string effect = XML::getProperty(
- effectNode, "effect", "");
-
- if (effect.empty())
- {
- if (name.empty())
- {
- logger->log("Attribute modifier in attribute"
- " %u:%s: Empty name definition "
- "on empty effect definition, skipping.",
- a.id, a.name.c_str());
- --count;
- continue;
- }
- else
- {
- effect = name + " %+f";
- }
- }
- tags.insert(std::make_pair(tag, effect));
- }
- logger->log("Found %d tags for attribute %d.", count, id);
-
- }// End attribute
- else if (xmlNameEqual(node, "points"))
- {
- creationPoints = XML::getProperty(
- node, "start", DEFAULT_POINTS);
- attributeMinimum = XML::getProperty(
- node, "minimum", DEFAULT_MIN_PTS);
- attributeMaximum = XML::getProperty(
- node, "maximum", DEFAULT_MAX_PTS);
- logger->log("Loaded points: start: %i, min: %i, max: %i.",
- creationPoints, attributeMinimum, attributeMaximum);
- }
- else
- {
- continue;
- }
- }
- logger->log("Found %d tags for %d attributes.", int(tags.size()),
- int(attributes.size()));
-
- fillLabels();
-
- // Sanity checks on starting points
- float modifiableAttributeCount = (float) attributeLabels.size();
- float averageValue = 1;
- if (modifiableAttributeCount)
- averageValue = ((float) creationPoints) / modifiableAttributeCount;
-
- if (averageValue > attributeMaximum || averageValue < attributeMinimum
- || creationPoints < 1)
- {
- logger->log("Attributes: Character's point values make "
- "the character's creation impossible. "
- "Switch back to defaults.");
- creationPoints = DEFAULT_POINTS;
- attributeMinimum = DEFAULT_MIN_PTS;
- attributeMaximum = DEFAULT_MAX_PTS;
- }
- }
-
- void unload()
- {
- attributes.clear();
- }
-
- void informItemDB()
- {
- std::vector<ItemDB::Stat> dbStats;
-
- TagMap::const_iterator it, it_end;
- for (it = tags.begin(), it_end = tags.end(); it != it_end; ++it)
- dbStats.push_back(ItemDB::Stat(it->first, it->second));
-
- ItemDB::setStatsList(dbStats);
- }
-
- void informStatusWindow()
- {
- if (!statusWindow)
- return;
-
- AttributeMap::const_iterator it, it_end;
- for (it = attributes.begin(), it_end = attributes.end();
- it != it_end; ++it)
- {
- if (it->second.playerInfoId == -1
- && (it->second.scope == "character"
- || it->second.scope == "being"))
- {
- statusWindow->addAttribute(it->second.id, it->second.name,
- it->second.modifiable, it->second.description);
- }
- }
- }
-
-} // namespace Attributes
-} // namespace ManaServ
diff --git a/src/net/manaserv/attributes.h b/src/net/manaserv/attributes.h
deleted file mode 100644
index ba5931b8c..000000000
--- a/src/net/manaserv/attributes.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NET_MANASERV_ATTRIBUTES_H
-#define NET_MANASERV_ATTRIBUTES_H
-
-#include <string>
-#include <vector>
-
-namespace ManaServ
-{
-
-namespace Attributes
-{
- void load();
-
- void unload();
-
- void informItemDB();
-
- void informStatusWindow();
-
- /**
- * Returns the list of base attribute labels.
- */
- std::vector<std::string>& getLabels();
-
- /**
- * Give back the corresponding playerinfo Id from the attribute id
- * defined in the xml file.
- */
- int getPlayerInfoIdFromAttrId(int attrId);
-
- /**
- * Give the attribute points given to a character
- * at its creation.
- */
- unsigned int getCreationPoints();
-
- /**
- * Give the minimum attribute point possible
- * at character's creation.
- */
- unsigned int getAttributeMinimum();
-
- /**
- * Give the maximum attribute point possible
- * at character's creation.
- */
- unsigned int getAttributeMaximum();
-
-} // namespace Attributes
-} // namespace ManaServ
-
-#endif // NET_MANASERV_ATTRIBUTES_H
diff --git a/src/net/manaserv/beinghandler.cpp b/src/net/manaserv/beinghandler.cpp
deleted file mode 100644
index cef4f497a..000000000
--- a/src/net/manaserv/beinghandler.cpp
+++ /dev/null
@@ -1,387 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "net/manaserv/beinghandler.h"
-
-#include "actorspritemanager.h"
-#include "being.h"
-#include "client.h"
-#include "game.h"
-#include "localplayer.h"
-#include "logger.h"
-#include "particle.h"
-
-#include "gui/okdialog.h"
-
-#include "net/messagein.h"
-#include "net/net.h"
-
-#include "net/manaserv/playerhandler.h"
-#include "net/manaserv/protocol.h"
-
-#include "resources/colordb.h"
-
-#include "utils/gettext.h"
-
-extern Net::BeingHandler *beingHandler;
-
-namespace ManaServ
-{
-
-BeingHandler::BeingHandler()
-{
- static const Uint16 _messages[] =
- {
- GPMSG_BEING_ATTACK,
- GPMSG_BEING_ENTER,
- GPMSG_BEING_LEAVE,
- GPMSG_BEINGS_MOVE,
- GPMSG_BEINGS_DAMAGE,
- GPMSG_BEING_ACTION_CHANGE,
- GPMSG_BEING_LOOKS_CHANGE,
- GPMSG_BEING_DIR_CHANGE,
- 0
- };
- handledMessages = _messages;
- beingHandler = this;
-}
-
-void BeingHandler::handleMessage(Net::MessageIn &msg)
-{
- switch (msg.getId())
- {
- case GPMSG_BEING_ENTER:
- handleBeingEnterMessage(msg);
- break;
- case GPMSG_BEING_LEAVE:
- handleBeingLeaveMessage(msg);
- break;
- case GPMSG_BEINGS_MOVE:
- handleBeingsMoveMessage(msg);
- break;
- case GPMSG_BEING_ATTACK:
- handleBeingAttackMessage(msg);
- break;
- case GPMSG_BEINGS_DAMAGE:
- handleBeingsDamageMessage(msg);
- break;
- case GPMSG_BEING_ACTION_CHANGE:
- handleBeingActionChangeMessage(msg);
- break;
- case GPMSG_BEING_LOOKS_CHANGE:
- handleBeingLooksChangeMessage(msg);
- break;
- case GPMSG_BEING_DIR_CHANGE:
- handleBeingDirChangeMessage(msg);
- break;
- default:
- break;
- }
-}
-
-Vector BeingHandler::giveSpeedInPixelsPerTicks(float speedInTilesPerSeconds)
-{
- Vector speedInTicks;
- Game *game = Game::instance();
- Map *map = 0;
- if (game)
- {
- map = game->getCurrentMap();
- if (map)
- {
- speedInTicks.x = speedInTilesPerSeconds
- * (float)map->getTileWidth()
- / 1000 * (float) MILLISECONDS_IN_A_TICK;
- speedInTicks.y = speedInTilesPerSeconds
- * (float)map->getTileHeight()
- / 1000 * (float) MILLISECONDS_IN_A_TICK;
- }
- }
-
- if (!game || !map)
- {
- speedInTicks.x = speedInTicks.y = 0;
- logger->log1("Manaserv::BeingHandler: Speed wasn't given back"
- " because game/Map not initialized.");
- }
- // We don't use z for now.
- speedInTicks.z = 0;
-
- return speedInTicks;
-}
-
-static void handleLooks(Being *being, Net::MessageIn &msg)
-{
- // Order of sent slots. Has to be in sync with the server code.
- static int const nb_slots = 4;
- static int const slots[nb_slots] =
- {
- SPRITE_WEAPON,
- SPRITE_HAT,
- SPRITE_TOPCLOTHES,
- SPRITE_BOTTOMCLOTHES
- };
-
- int mask = msg.readInt8();
-
- if (mask & (1 << 7))
- {
- // The equipment has to be cleared first.
- for (int i = 0; i < nb_slots; ++i)
- being->setSprite(slots[i], 0);
- }
-
- // Fill slots enumerated by the bitmask.
- for (int i = 0; i < nb_slots; ++i)
- {
- if (!(mask & (1 << i))) continue;
- int id = msg.readInt16();
- being->setSprite(slots[i], id, "", 1, (slots[i] == SPRITE_WEAPON));
- }
-}
-
-void BeingHandler::handleBeingEnterMessage(Net::MessageIn &msg)
-{
- int type = msg.readInt8();
- int id = msg.readInt16();
- Being::Action action = (Being::Action)msg.readInt8();
- int px = msg.readInt16();
- int py = msg.readInt16();
- Being *being;
-
- switch (type)
- {
- case OBJECT_CHARACTER:
- {
- std::string name = msg.readString();
- if (player_node->getName() == name)
- {
- being = player_node;
- being->setId(id);
- }
- else
- {
- being = actorSpriteManager->createBeing(id,
- ActorSprite::PLAYER, 0);
- being->setName(name);
- }
- int hs = msg.readInt8(), hc = msg.readInt8();
- being->setSprite(SPRITE_HAIR, hs * -1, ColorDB::getHairColor(hc));
- being->setGender(msg.readInt8() == GENDER_MALE ?
- GENDER_MALE : GENDER_FEMALE);
- handleLooks(being, msg);
- } break;
-
- case OBJECT_MONSTER:
- case OBJECT_NPC:
- {
- int subtype = msg.readInt16();
- being = actorSpriteManager->createBeing(id, type == OBJECT_MONSTER
- ? ActorSprite::MONSTER : ActorSprite::NPC, subtype);
- std::string name = msg.readString();
- if (name.length() > 0) being->setName(name);
- } break;
-
- default:
- return;
- }
-
- being->setPosition(px, py);
- being->setDestination(px, py);
- being->setAction(action);
-}
-
-void BeingHandler::handleBeingLeaveMessage(Net::MessageIn &msg)
-{
- Being *being = actorSpriteManager->findBeing(msg.readInt16());
- if (!being)
- return;
-
- actorSpriteManager->destroy(being);
-}
-
-void BeingHandler::handleBeingsMoveMessage(Net::MessageIn &msg)
-{
- while (msg.getUnreadLength())
- {
- int id = msg.readInt16();
- int flags = msg.readInt8();
- Being *being = actorSpriteManager->findBeing(id);
- int sx = 0;
- int sy = 0;
- int speed = 0;
-
- if (flags & MOVING_POSITION)
- {
- sx = msg.readInt16();
- sy = msg.readInt16();
- speed = msg.readInt8();
- }
- if (!being || !(flags & (MOVING_POSITION | MOVING_DESTINATION)))
- {
- continue;
- }
- if (speed)
- {
- /*
- * The being's speed is transfered in tiles per second * 10
- * to keep it transferable in a Byte.
- * We set it back to tiles per second and in a float.
- * Then, we translate it in pixels per ticks, to correspond
- * with the Being::logic() function calls
- * @see MILLISECONDS_IN_A_TICK
- */
- being->setWalkSpeed(
- giveSpeedInPixelsPerTicks((float) speed / 10));
- }
-
- // Ignore messages from the server for the local player
- if (being == player_node)
- continue;
-
- if (flags & MOVING_POSITION)
- {
- being->setDestination(sx, sy);
- }
- }
-}
-
-void BeingHandler::handleBeingAttackMessage(Net::MessageIn &msg)
-{
- Being *being = actorSpriteManager->findBeing(msg.readInt16());
- const int direction = msg.readInt8();
- const int attackType = msg.readInt8();
-
- if (!being)
- return;
-
- switch (direction)
- {
- case DIRECTION_UP: being->setDirection(Being::UP); break;
- case DIRECTION_DOWN: being->setDirection(Being::DOWN); break;
- case DIRECTION_LEFT: being->setDirection(Being::LEFT); break;
- case DIRECTION_RIGHT: being->setDirection(Being::RIGHT); break;
- default: break;
- }
-
- being->setAction(Being::ATTACK, attackType);
-}
-
-void BeingHandler::handleBeingsDamageMessage(Net::MessageIn &msg)
-{
- while (msg.getUnreadLength())
- {
- Being *being = actorSpriteManager->findBeing(msg.readInt16());
- int damage = msg.readInt16();
- if (being)
- {
- being->takeDamage(0, damage, Being::HIT);
- }
- }
-}
-
-void BeingHandler::handleBeingActionChangeMessage(Net::MessageIn &msg)
-{
- Being *being = actorSpriteManager->findBeing(msg.readInt16());
- Being::Action action = (Being::Action) msg.readInt8();
- if (!being)
- return;
-
- being->setAction(action);
-
- if (action == Being::DEAD && being == player_node)
- {
- static char const *const deadMsg[] =
- {
- _("You are dead."),
- _("We regret to inform you that your character was killed in "
- "battle."),
- _("You are not that alive anymore."),
- _("The cold hands of the grim reaper are grabbing for your soul."),
- _("Game Over!"),
- _("No, kids. Your character did not really die. It... err... "
- "went to a better place."),
- _("Your plan of breaking your enemies weapon by bashing it with "
- "your throat failed."),
- _("I guess this did not run too well."),
- _("Do you want your possessions identified?"), // Nethack reference
- _("Sadly, no trace of you was ever found..."), // Secret of Mana
- // reference
- _("Annihilated."), // Final Fantasy VI reference
- _("Looks like you got your head handed to you."), // Earthbound
- // reference
- _("You screwed up again, dump your body down the tubes and get "
- "you another one.") // Leisure Suit Larry 1 Reference
-
- };
- std::string message(deadMsg[rand() % 13]);
- message.append(std::string(" ") + _("Press OK to respawn."));
- OkDialog *dlg = new OkDialog(_("You Died"), message, false);
- dlg->addActionListener(&(ManaServ::respawnListener));
- }
-}
-
-void BeingHandler::handleBeingLooksChangeMessage(Net::MessageIn &msg)
-{
- Being *being = actorSpriteManager->findBeing(msg.readInt16());
- if (!being || being->getType() != ActorSprite::PLAYER)
- return;
- handleLooks(being, msg);
- if (msg.getUnreadLength())
- {
- int style = msg.readInt16();
- int color = msg.readInt16();
- being->setSprite(SPRITE_HAIR, style * -1,
- ColorDB::getHairColor(color));
- }
-}
-
-void BeingHandler::handleBeingDirChangeMessage(Net::MessageIn &msg)
-{
- Being *being = actorSpriteManager->findBeing(msg.readInt16());
- if (!being)
- return;
- int data = msg.readInt8();
-
- // The direction for the player's character is handled on client side.
- if (being != player_node)
- {
- switch (data)
- {
- case DIRECTION_UP: being->setDirection(Being::UP); break;
- case DIRECTION_DOWN: being->setDirection(Being::DOWN); break;
- case DIRECTION_LEFT: being->setDirection(Being::LEFT); break;
- case DIRECTION_RIGHT: being->setDirection(Being::RIGHT); break;
- default: break;
- }
- }
-}
-
-void BeingHandler::requestNameById(int id A_UNUSED)
-{
-}
-
-void BeingHandler::undress(Being *being A_UNUSED)
-{
-}
-
-} // namespace ManaServ
diff --git a/src/net/manaserv/beinghandler.h b/src/net/manaserv/beinghandler.h
deleted file mode 100644
index 70d61545c..000000000
--- a/src/net/manaserv/beinghandler.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NET_MANASERV_BEINGHANDLER_H
-#define NET_MANASERV_BEINGHANDLER_H
-
-#include "net/manaserv/messagehandler.h"
-
-#include "net/beinghandler.h"
-
-#include "vector.h"
-#include "map.h"
-
-namespace ManaServ
-{
-
-class BeingHandler : public MessageHandler, public Net::BeingHandler
-{
- public:
- BeingHandler();
-
- void handleMessage(Net::MessageIn &msg);
-
- /**
- * Translate a given speed in tiles per seconds
- * into pixels per ticks.
- * Used to optimize Being::logic() calls.
- * @see MILLISECONDS_IN_A_TICKS
- */
- static Vector giveSpeedInPixelsPerTicks(float speedInTilesPerSeconds);
-
- void requestNameById(int id);
-
- void undress(Being *being);
-
- private:
- void handleBeingAttackMessage(Net::MessageIn &msg);
- void handleBeingEnterMessage(Net::MessageIn &msg);
- void handleBeingLeaveMessage(Net::MessageIn &msg);
- void handleBeingsMoveMessage(Net::MessageIn &msg);
- void handleBeingsDamageMessage(Net::MessageIn &msg);
- void handleBeingActionChangeMessage(Net::MessageIn &msg);
- void handleBeingLooksChangeMessage(Net::MessageIn &msg);
- void handleBeingDirChangeMessage(Net::MessageIn &msg);
-};
-
-} // namespace ManaServ
-
-#endif
diff --git a/src/net/manaserv/buysellhandler.cpp b/src/net/manaserv/buysellhandler.cpp
deleted file mode 100644
index 25db86cf0..000000000
--- a/src/net/manaserv/buysellhandler.cpp
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "net/manaserv/buysellhandler.h"
-
-#include "actorspritemanager.h"
-#include "item.h"
-#include "localplayer.h"
-#include "playerinfo.h"
-#include "shopitem.h"
-
-#include "gui/buydialog.h"
-#include "gui/chatwindow.h"
-#include "gui/selldialog.h"
-
-#include "net/messagein.h"
-#include "net/net.h"
-
-#include "net/manaserv/protocol.h"
-
-
-extern Net::BuySellHandler *buySellHandler;
-
-namespace ManaServ
-{
-
-BuySellHandler::BuySellHandler()
-{
- static const Uint16 _messages[] =
- {
- GPMSG_NPC_BUY,
- GPMSG_NPC_SELL,
- 0
- };
- handledMessages = _messages;
- buySellHandler = this;
-}
-
-void BuySellHandler::handleMessage(Net::MessageIn &msg)
-{
- Being *being = actorSpriteManager->findBeing(msg.readInt16());
- if (!being || being->getType() != ActorSprite::NPC)
- {
- return;
- }
-
- int npcId = being->getId();
-
- switch (msg.getId())
- {
- case GPMSG_NPC_BUY:
- {
- BuyDialog* dialog = new BuyDialog(npcId);
-
- dialog->reset();
- dialog->setMoney(PlayerInfo::getAttribute(MONEY));
-
- while (msg.getUnreadLength())
- {
- int itemId = msg.readInt16();
- int amount = msg.readInt16();
- int value = msg.readInt16();
- // colors not supported, using 1.
- dialog->addItem(itemId, 1, amount, value);
- }
- break;
- }
-
- case GPMSG_NPC_SELL:
- {
- SellDialog* dialog = new SellDialog(npcId);
-
- dialog->reset();
- dialog->setMoney(PlayerInfo::getAttribute(MONEY));
-
- while (msg.getUnreadLength())
- {
- int itemId = msg.readInt16();
- int amount = msg.readInt16();
- int value = msg.readInt16();
- dialog->addItem(new Item(itemId, amount, 1, false), value);
- }
- break;
- }
-
- default:
- break;
- }
-}
-
-void BuySellHandler::requestSellList(std::string nick A_UNUSED)
-{
- // TODO
-}
-
-void BuySellHandler::requestBuyList(std::string nick A_UNUSED)
-{
- // TODO
-}
-
-void BuySellHandler::sendBuyRequest(std::string nick A_UNUSED,
- ShopItem* item A_UNUSED,
- int amount A_UNUSED)
-{
- // TODO
-}
-
-void BuySellHandler::sendSellRequest(std::string nick A_UNUSED,
- ShopItem* item A_UNUSED,
- int amount A_UNUSED)
-{
- // TODO
-}
-
-} // namespace ManaServ
diff --git a/src/net/manaserv/buysellhandler.h b/src/net/manaserv/buysellhandler.h
deleted file mode 100644
index 3c983ac08..000000000
--- a/src/net/manaserv/buysellhandler.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NET_MANASERV_BUYSELLHANDLER_H
-#define NET_MANASERV_BUYSELLHANDLER_H
-
-#include "net/manaserv/messagehandler.h"
-
-#include "net/buysellhandler.h"
-
-namespace ManaServ
-{
-
-class BuySellHandler : public MessageHandler, public Net::BuySellHandler
-{
- public:
- BuySellHandler();
-
- void handleMessage(Net::MessageIn &msg);
-
- void requestSellList(std::string nick);
-
- void requestBuyList(std::string nick);
-
- void sendBuyRequest(std::string nick, ShopItem* item, int amount);
-
- void sendSellRequest(std::string nick, ShopItem* item, int amount);
-
-};
-
-} // namespace ManaServ
-
-#endif
diff --git a/src/net/manaserv/charhandler.cpp b/src/net/manaserv/charhandler.cpp
deleted file mode 100644
index 300af5a2b..000000000
--- a/src/net/manaserv/charhandler.cpp
+++ /dev/null
@@ -1,407 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "net/manaserv/charhandler.h"
-
-#include "client.h"
-#include "localplayer.h"
-#include "logger.h"
-
-#include "gui/charcreatedialog.h"
-#include "gui/okdialog.h"
-
-#include "net/logindata.h"
-#include "net/loginhandler.h"
-#include "net/net.h"
-
-#include "net/manaserv/connection.h"
-#include "net/manaserv/gamehandler.h"
-#include "net/manaserv/messagein.h"
-#include "net/manaserv/messageout.h"
-#include "net/manaserv/protocol.h"
-#include "net/manaserv/attributes.h"
-
-#include "resources/colordb.h"
-
-#include "utils/dtor.h"
-#include "utils/gettext.h"
-
-extern Net::CharHandler *charHandler;
-extern ManaServ::GameHandler *gameHandler;
-
-namespace ManaServ
-{
-
-extern Connection *accountServerConnection;
-extern Connection *gameServerConnection;
-extern Connection *chatServerConnection;
-extern std::string netToken;
-extern ServerInfo gameServer;
-extern ServerInfo chatServer;
-
-CharHandler::CharHandler()
-{
- static const Uint16 _messages[] =
- {
- APMSG_CHAR_CREATE_RESPONSE,
- APMSG_CHAR_DELETE_RESPONSE,
- APMSG_CHAR_INFO,
- APMSG_CHAR_SELECT_RESPONSE,
- 0
- };
- handledMessages = _messages;
- charHandler = this;
-}
-
-CharHandler::~CharHandler()
-{
- clear();
-}
-
-void CharHandler::handleMessage(Net::MessageIn &msg)
-{
- switch (msg.getId())
- {
- case APMSG_CHAR_CREATE_RESPONSE:
- handleCharacterCreateResponse(msg);
- break;
-
- case APMSG_CHAR_DELETE_RESPONSE:
- handleCharacterDeleteResponse(msg);
- break;
-
- case APMSG_CHAR_INFO:
- handleCharacterInfo(msg);
- break;
-
- case APMSG_CHAR_SELECT_RESPONSE:
- handleCharacterSelectResponse(msg);
- break;
-
- default:
- break;
- }
-}
-
-void CharHandler::handleCharacterInfo(Net::MessageIn &msg)
-{
- CachedCharacterInfo info;
- info.slot = msg.readInt8();
- info.name = msg.readString();
- info.gender = msg.readInt8() == GENDER_MALE ? GENDER_MALE :
- GENDER_FEMALE;
- info.hairStyle = msg.readInt8();
- info.hairColor = msg.readInt8();
- info.level = msg.readInt16();
- info.characterPoints = msg.readInt16();
- info.correctionPoints = msg.readInt16();
-
-
- while (msg.getUnreadLength() > 0)
- {
- int id = msg.readInt32();
- CachedAttrbiute attr;
- attr.base = msg.readInt32() / 256.0;
- attr.mod = msg.readInt32() / 256.0;
-
- info.attribute[id] = attr;
- }
-
- mCachedCharacterInfos.push_back(info);
-
- updateCharacters();
-}
-
-void CharHandler::handleCharacterCreateResponse(Net::MessageIn &msg)
-{
- const int errMsg = msg.readInt8();
-
- if (errMsg != ERRMSG_OK)
- {
- // Character creation failed
- std::string errorMessage("");
- switch (errMsg)
- {
- case ERRMSG_NO_LOGIN:
- errorMessage = _("Not logged in.");
- break;
- case CREATE_TOO_MUCH_CHARACTERS:
- errorMessage = _("No empty slot.");
- break;
- case ERRMSG_INVALID_ARGUMENT:
- errorMessage = _("Invalid name.");
- break;
- case CREATE_EXISTS_NAME:
- errorMessage = _("Character's name already exists.");
- break;
- case CREATE_INVALID_HAIRSTYLE:
- errorMessage = _("Invalid hairstyle.");
- break;
- case CREATE_INVALID_HAIRCOLOR:
- errorMessage = _("Invalid hair color.");
- break;
- case CREATE_INVALID_GENDER:
- errorMessage = _("Invalid gender.");
- break;
- case CREATE_ATTRIBUTES_TOO_HIGH:
- errorMessage = _("Character's stats are too high.");
- break;
- case CREATE_ATTRIBUTES_TOO_LOW:
- errorMessage = _("Character's stats are too low.");
- break;
- case CREATE_ATTRIBUTES_OUT_OF_RANGE:
- errorMessage = strprintf( _("At least one stat "
- "is out of the permitted range: (%u - %u)."),
- Attributes::getAttributeMinimum(),
- Attributes::getAttributeMaximum());
- break;
- case CREATE_INVALID_SLOT:
- errorMessage = _("Invalid slot number.");
- break;
- default:
- errorMessage = _("Unknown error.");
- break;
- }
- new OkDialog(_("Error"), errorMessage);
-
- if (mCharCreateDialog)
- mCharCreateDialog->unlock();
- }
- else
- {
- // Close the character create dialog
- if (mCharCreateDialog)
- {
- mCharCreateDialog->scheduleDelete();
- mCharCreateDialog = 0;
- }
- }
-}
-
-void CharHandler::handleCharacterDeleteResponse(Net::MessageIn &msg)
-{
- int errMsg = msg.readInt8();
- if (errMsg == ERRMSG_OK)
- {
- // Character deletion successful
- delete mSelectedCharacter;
- mCharacters.remove(mSelectedCharacter);
-// mSelectedCharacter = 0;
- updateCharSelectDialog();
- new OkDialog(_("Info"), _("Player deleted."));
- }
- else
- {
- // Character deletion failed
- std::string errorMessage("");
- switch (errMsg)
- {
- case ERRMSG_NO_LOGIN:
- errorMessage = _("Not logged in.");
- break;
- case ERRMSG_INVALID_ARGUMENT:
- errorMessage = _("Selection out of range.");
- break;
- default:
- errorMessage = strprintf(_("Unknown error (%d)."), errMsg);
- }
- new OkDialog(_("Error"), errorMessage);
- }
- mSelectedCharacter = 0;
- unlockCharSelectDialog();
-}
-
-void CharHandler::handleCharacterSelectResponse(Net::MessageIn &msg)
-{
- int errMsg = msg.readInt8();
-
- if (errMsg == ERRMSG_OK)
- {
- netToken = msg.readString(32);
-
- gameServer.hostname.assign(msg.readString());
- gameServer.port = msg.readInt16();
-
- chatServer.hostname.assign(msg.readString());
- chatServer.port = msg.readInt16();
-
- logger->log("Game server: %s:%d", gameServer.hostname.c_str(),
- gameServer.port);
- logger->log("Chat server: %s:%d", chatServer.hostname.c_str(),
- chatServer.port);
-
- // Prevent the selected local player from being deleted
- player_node = mSelectedCharacter->dummy;
- PlayerInfo::setBackend(mSelectedCharacter->data);
- mSelectedCharacter->dummy = 0;
-
- Client::setState(STATE_CONNECT_GAME);
- }
- else if (errMsg == ERRMSG_FAILURE)
- {
- errorMessage = _("No gameservers are available.");
- delete_all(mCharacters);
- mCharacters.clear();
- Client::setState(STATE_ERROR);
- }
-}
-
-void CharHandler::setCharSelectDialog(CharSelectDialog *window)
-{
- mCharSelectDialog = window;
- updateCharacters();
-}
-
-void CharHandler::setCharCreateDialog(CharCreateDialog *window)
-{
- mCharCreateDialog = window;
-
- if (!mCharCreateDialog)
- return;
-
- mCharCreateDialog->setAttributes(Attributes::getLabels(),
- Attributes::getCreationPoints(),
- Attributes::getAttributeMinimum(),
- Attributes::getAttributeMaximum());
-}
-
-void CharHandler::requestCharacters()
-{
- if (!accountServerConnection->isConnected())
- {
- Net::getLoginHandler()->connect();
- }
- else
- {
- // The characters are already there, continue to character selection
- Client::setState(STATE_CHAR_SELECT);
- }
-}
-
-void CharHandler::chooseCharacter(Net::Character *character)
-{
- mSelectedCharacter = character;
-
- MessageOut msg(PAMSG_CHAR_SELECT);
- msg.writeInt8(mSelectedCharacter->slot);
- accountServerConnection->send(msg);
-}
-
-void CharHandler::newCharacter(const std::string &name,
- int slot,
- bool gender,
- int hairstyle,
- int hairColor, unsigned char race,
- const std::vector<int> &stats)
-{
- MessageOut msg(PAMSG_CHAR_CREATE);
-
- msg.writeString(name);
- msg.writeInt8(hairstyle);
- msg.writeInt8(hairColor);
- msg.writeInt8(gender);
- msg.writeInt8(slot);
-
- 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);
-}
-
-void CharHandler::deleteCharacter(Net::Character *character)
-{
- mSelectedCharacter = character;
-
- MessageOut msg(PAMSG_CHAR_DELETE);
- msg.writeInt8(mSelectedCharacter->slot);
- accountServerConnection->send(msg);
-}
-
-void CharHandler::switchCharacter()
-{
- gameHandler->quit(true);
-}
-
-unsigned int CharHandler::baseSprite() const
-{
- return SPRITE_BASE;
-}
-
-unsigned int CharHandler::hairSprite() const
-{
- return SPRITE_HAIR;
-}
-
-unsigned int CharHandler::maxSprite() const
-{
- return SPRITE_VECTOREND;
-}
-
-void CharHandler::updateCharacters()
-{
- // Delete previous characters
- delete_all(mCharacters);
- mCharacters.clear();
-
- if (!mCharSelectDialog)
- return;
-
- // Create new characters and initialize them from the cached infos
- for (unsigned i = 0; i < mCachedCharacterInfos.size(); ++i)
- {
- const CachedCharacterInfo &info = mCachedCharacterInfos.at(i);
-
- Net::Character *character = new Net::Character;
- character->slot = info.slot;
- LocalPlayer *player = character->dummy = new LocalPlayer;
- player->setName(info.name);
- player->setGender(info.gender);
- player->setSprite(SPRITE_HAIR, info.hairStyle * -1,
- ColorDB::getHairColor(info.hairColor));
- character->data.mAttributes[LEVEL] = info.level;
- character->data.mAttributes[CHAR_POINTS] = info.characterPoints;
- character->data.mAttributes[CORR_POINTS] = info.correctionPoints;
-
- for (CachedAttributes::const_iterator it = info.attribute.begin(),
- it_end = info.attribute.end(); it != it_end; ++it)
- {
- character->data.mStats[i].base = it->second.base;
- character->data.mStats[i].mod = it->second.mod;
- }
-
- mCharacters.push_back(character);
- }
-
- updateCharSelectDialog();
-}
-
-void CharHandler::clear()
-{
- setCharCreateDialog(0);
- setCharSelectDialog(0);
-
- mCachedCharacterInfos.clear();
- updateCharacters();
-}
-
-} // namespace ManaServ
diff --git a/src/net/manaserv/charhandler.h b/src/net/manaserv/charhandler.h
deleted file mode 100644
index 134b8447b..000000000
--- a/src/net/manaserv/charhandler.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NET_MANASERV_CHARSERVERHANDLER_H
-#define NET_MANASERV_CHARSERVERHANDLER_H
-
-#include "gui/charselectdialog.h"
-
-#include "net/charhandler.h"
-
-#include "net/manaserv/messagehandler.h"
-
-#include <map.h>
-
-class LoginData;
-
-namespace ManaServ
-{
-
-/**
- * Deals with incoming messages related to character selection.
- */
-class CharHandler : public MessageHandler, public Net::CharHandler
-{
- public:
- CharHandler();
-
- ~CharHandler();
-
- void handleMessage(Net::MessageIn &msg);
-
- void setCharSelectDialog(CharSelectDialog *window);
-
- /**
- * Sets the character create dialog. The handler will clean up this
- * dialog when a new character is succesfully created, and will unlock
- * the dialog when a new character failed to be created.
- */
- void setCharCreateDialog(CharCreateDialog *window);
-
- void requestCharacters();
-
- void chooseCharacter(Net::Character *character);
-
- void newCharacter(const std::string &name, int slot,
- bool gender, int hairstyle, int hairColor,
- unsigned char race,
- const std::vector<int> &stats);
-
- void deleteCharacter(Net::Character *character);
-
- void switchCharacter();
-
- unsigned int baseSprite() const;
-
- unsigned int hairSprite() const;
-
- unsigned int maxSprite() const;
-
- void clear();
-
- private:
- /**
- * Character information needs to be cached since we receive it before
- * we have loaded the dynamic data, so we can't resolve load any
- * sprites yet.
- */
- struct CachedAttrbiute
- {
- double base;
- double mod;
- };
-
- typedef std::map<int, CachedAttrbiute> CachedAttributes;
-
- struct CachedCharacterInfo
- {
- int slot;
- std::string name;
- Gender gender;
- int hairStyle;
- int hairColor;
- int level;
- int characterPoints;
- int correctionPoints;
- CachedAttributes attribute;
- };
-
- void handleCharacterInfo(Net::MessageIn &msg);
- void handleCharacterCreateResponse(Net::MessageIn &msg);
- void handleCharacterDeleteResponse(Net::MessageIn &msg);
- void handleCharacterSelectResponse(Net::MessageIn &msg);
-
- void updateCharacters();
-
- /** Cached character information */
- std::vector<CachedCharacterInfo> mCachedCharacterInfos;
-};
-
-} // namespace ManaServ
-
-#endif
diff --git a/src/net/manaserv/chathandler.cpp b/src/net/manaserv/chathandler.cpp
deleted file mode 100644
index 12451e6f6..000000000
--- a/src/net/manaserv/chathandler.cpp
+++ /dev/null
@@ -1,484 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "net/manaserv/chathandler.h"
-
-#include "actorspritemanager.h"
-#include "being.h"
-#include "client.h"
-#include "channel.h"
-#include "channelmanager.h"
-
-#include "gui/chatwindow.h"
-
-#include "gui/widgets/channeltab.h"
-
-#include "net/manaserv/connection.h"
-#include "net/manaserv/messagein.h"
-#include "net/manaserv/messageout.h"
-#include "net/manaserv/protocol.h"
-
-#include "utils/gettext.h"
-#include "utils/stringutils.h"
-
-#include <string>
-#include <iostream>
-
-extern Being *player_node;
-
-extern Net::ChatHandler *chatHandler;
-
-namespace ManaServ
-{
-
-extern Connection *chatServerConnection;
-extern Connection *gameServerConnection;
-extern std::string netToken;
-extern ServerInfo chatServer;
-
-ChatHandler::ChatHandler()
-{
- static const Uint16 _messages[] =
- {
- GPMSG_SAY,
- CPMSG_ENTER_CHANNEL_RESPONSE,
- CPMSG_LIST_CHANNELS_RESPONSE,
- CPMSG_PUBMSG,
- CPMSG_ANNOUNCEMENT,
- CPMSG_PRIVMSG,
- CPMSG_QUIT_CHANNEL_RESPONSE,
- CPMSG_LIST_CHANNELUSERS_RESPONSE,
- CPMSG_CHANNEL_EVENT,
- CPMSG_WHO_RESPONSE,
- CPMSG_DISCONNECT_RESPONSE,
- 0
- };
- handledMessages = _messages;
- chatHandler = this;
-}
-
-void ChatHandler::handleMessage(Net::MessageIn &msg)
-{
- switch (msg.getId())
- {
- case GPMSG_SAY:
- handleGameChatMessage(msg);
- break;
-
- case CPMSG_ENTER_CHANNEL_RESPONSE:
- handleEnterChannelResponse(msg);
- break;
-
- case CPMSG_LIST_CHANNELS_RESPONSE:
- handleListChannelsResponse(msg);
- break;
-
- case CPMSG_PRIVMSG:
- handlePrivateMessage(msg);
- break;
-
- case CPMSG_ANNOUNCEMENT:
- handleAnnouncement(msg);
- break;
-
- case CPMSG_PUBMSG:
- handleChatMessage(msg);
- break;
-
- case CPMSG_QUIT_CHANNEL_RESPONSE:
- handleQuitChannelResponse(msg);
- break;
-
- case CPMSG_LIST_CHANNELUSERS_RESPONSE:
- handleListChannelUsersResponse(msg);
- break;
-
- case CPMSG_CHANNEL_EVENT:
- handleChannelEvent(msg);
- break;
-
- case CPMSG_WHO_RESPONSE:
- handleWhoResponse(msg);
- break;
- case CPMSG_DISCONNECT_RESPONSE:
- {
- int errMsg = msg.readInt8();
- // Successful logout
- if (errMsg == ERRMSG_OK)
- {
- // TODO: Handle logout
- }
- else
- {
- switch (errMsg)
- {
- case ERRMSG_NO_LOGIN:
- errorMessage = "Chatserver: Not logged in";
- break;
- default:
- errorMessage = "Chatserver: Unknown error";
- break;
- }
- Client::setState(STATE_ERROR);
- }
- }
- break;
- default:
- break;
- }
-}
-
-void ChatHandler::handleGameChatMessage(Net::MessageIn &msg)
-{
- short id = msg.readInt16();
- std::string chatMsg = msg.readString();
-
- if (id == 0)
- {
- localChatTab->chatLog(chatMsg, BY_SERVER);
- return;
- }
-
- Being *being = actorSpriteManager->findBeing(id);
-
- std::string mes;
- if (being)
- {
- mes = being->getName() + " : " + chatMsg;
- being->setSpeech(chatMsg);
- }
- else
- mes = "Unknown : " + chatMsg;
-
- localChatTab->chatLog(mes, being == player_node
- ? BY_PLAYER : BY_OTHER);
-}
-
-void ChatHandler::handleEnterChannelResponse(Net::MessageIn &msg)
-{
- if (msg.readInt8() == ERRMSG_OK)
- {
- short channelId = msg.readInt16();
- std::string channelName = msg.readString();
- std::string announcement = msg.readString();
- Channel *channel = new Channel(channelId, channelName, announcement);
- channelManager->addChannel(channel);
- ChatTab *tab = channel->getTab();
- tab->chatLog(strprintf(_("Topic: %s"), announcement.c_str()),
- BY_CHANNEL);
-
- std::string user;
- std::string userModes;
- tab->chatLog(_("Players in this channel:"), BY_CHANNEL);
- while (msg.getUnreadLength())
- {
- user = msg.readString();
- if (user == "")
- return;
- userModes = msg.readString();
- if (userModes.find('o') != std::string::npos)
- {
- user = "@" + user;
- }
- tab->chatLog(user, BY_CHANNEL);
- }
-
- }
- else
- {
- localChatTab->chatLog(_("Error joining channel."), BY_SERVER);
- }
-}
-
-void ChatHandler::handleListChannelsResponse(Net::MessageIn &msg)
-{
- localChatTab->chatLog(_("Listing channels."), BY_SERVER);
- while (msg.getUnreadLength())
- {
- std::string channelName = msg.readString();
- if (channelName == "")
- return;
- std::ostringstream numUsers;
- numUsers << msg.readInt16();
- channelName += " - ";
- channelName += numUsers.str();
- localChatTab->chatLog(channelName, BY_SERVER);
- }
- localChatTab->chatLog(_("End of channel list."), BY_SERVER);
-}
-
-void ChatHandler::handlePrivateMessage(Net::MessageIn &msg)
-{
- std::string userNick = msg.readString();
- std::string chatMsg = msg.readString();
-
- chatWindow->addWhisper(userNick, chatMsg);
-}
-
-void ChatHandler::handleAnnouncement(Net::MessageIn &msg)
-{
- std::string chatMsg = msg.readString();
- localChatTab->chatLog(chatMsg, BY_GM);
-}
-
-void ChatHandler::handleChatMessage(Net::MessageIn &msg)
-{
- short channelId = msg.readInt16();
- std::string userNick = msg.readString();
- std::string chatMsg = msg.readString();
-
- Channel *channel = channelManager->findById(channelId);
- channel->getTab()->chatLog(userNick, chatMsg);
-}
-
-void ChatHandler::handleQuitChannelResponse(Net::MessageIn &msg)
-{
- if (msg.readInt8() == ERRMSG_OK)
- {
- short channelId = msg.readInt16();
- Channel *channel = channelManager->findById(channelId);
- channelManager->removeChannel(channel);
- }
-}
-
-void ChatHandler::handleListChannelUsersResponse(Net::MessageIn &msg)
-{
- std::string channelName = msg.readString();
- std::string userNick;
- std::string userModes;
- Channel *channel = channelManager->findByName(channelName);
- channel->getTab()->chatLog(_("Players in this channel:"),
- BY_CHANNEL);
- while (msg.getUnreadLength())
- {
- userNick = msg.readString();
- if (userNick == "")
- {
- break;
- }
- userModes = msg.readString();
- if (userModes.find('o') != std::string::npos)
- {
- userNick = "@" + userNick;
- }
- localChatTab->chatLog(userNick, BY_CHANNEL, channel);
- }
-}
-
-void ChatHandler::handleChannelEvent(Net::MessageIn &msg)
-{
- short channelId = msg.readInt16();
- char eventId = msg.readInt8();
- std::string line = msg.readString();
- Channel *channel = channelManager->findById(channelId);
-
- if (channel)
- {
- switch (eventId)
- {
- case CHAT_EVENT_NEW_PLAYER:
- channel->getTab()->chatLog(strprintf(_("%s entered the "
- "channel."), line.c_str()), BY_CHANNEL);
- break;
-
- case CHAT_EVENT_LEAVING_PLAYER:
- channel->getTab()->chatLog(strprintf(_("%s left the channel."),
- line.c_str()), BY_CHANNEL);
- break;
-
- case CHAT_EVENT_TOPIC_CHANGE:
- channel->getTab()->chatLog(strprintf(_("Topic: %s"),
- line.c_str()), BY_CHANNEL);
- break;
-
- case CHAT_EVENT_MODE_CHANGE:
- {
- int first = line.find(":");
- int second = line.find(":", first + 1);
- std::string user1 = line.substr(0, first);
- std::string user2 = line.substr(first + 1, second);
- std::string mode = line.substr(second + 1, line.length());
- channel->getTab()->chatLog(strprintf(_("%s has set mode %s "
- "on user %s."), user1.c_str(), mode.c_str(),
- user2.c_str()), BY_CHANNEL);
- }
- break;
-
- case CHAT_EVENT_KICKED_PLAYER:
- {
- int first = line.find(":");
- std::string user1 = line.substr(0, first);
- std::string user2 = line.substr(first + 1, line.length());
- channel->getTab()->chatLog(strprintf(_("%s has kicked %s."),
- user1.c_str(), user2.c_str()), BY_CHANNEL);
- }
- break;
-
- default:
- channel->getTab()->chatLog(_("Unknown channel event."),
- BY_CHANNEL);
- }
- }
-}
-
-void ChatHandler::handleWhoResponse(Net::MessageIn &msg)
-{
- std::string userNick;
-
- while (msg.getUnreadLength())
- {
- userNick = msg.readString();
- if (userNick == "")
- break;
- localChatTab->chatLog(userNick, BY_SERVER);
- }
-}
-
-void ChatHandler::connect()
-{
- MessageOut msg(PCMSG_CONNECT);
- msg.writeString(netToken, 32);
- chatServerConnection->send(msg);
-}
-
-bool ChatHandler::isConnected()
-{
- return chatServerConnection->isConnected();
-}
-
-void ChatHandler::disconnect()
-{
- chatServerConnection->disconnect();
-}
-
-void ChatHandler::talk(const std::string &text)
-{
- MessageOut msg(PGMSG_SAY);
- msg.writeString(text);
- gameServerConnection->send(msg);
-}
-
-void ChatHandler::talkRaw(const std::string &text)
-{
- MessageOut msg(PGMSG_SAY);
- msg.writeString(text);
- gameServerConnection->send(msg);
-}
-
-void ChatHandler::me(const std::string &text A_UNUSED)
-{
- // TODO
-}
-
-void ChatHandler::privateMessage(const std::string &recipient,
- const std::string &text)
-{
- MessageOut msg(PCMSG_PRIVMSG);
- msg.writeString(recipient);
- msg.writeString(text);
- chatServerConnection->send(msg);
-}
-
-void ChatHandler::channelList()
-{
- MessageOut msg(PCMSG_LIST_CHANNELS);
- chatServerConnection->send(msg);
-}
-
-void ChatHandler::enterChannel(const std::string &channel,
- const std::string &password)
-{
- MessageOut msg(PCMSG_ENTER_CHANNEL);
- msg.writeString(channel);
- msg.writeString(password);
- chatServerConnection->send(msg);
-}
-
-void ChatHandler::quitChannel(int channelId)
-{
- MessageOut msg(PCMSG_QUIT_CHANNEL);
- msg.writeInt16(channelId);
- chatServerConnection->send(msg);
-}
-
-void ChatHandler::sendToChannel(int channelId, const std::string &text)
-{
- MessageOut msg(PCMSG_CHAT);
- msg.writeString(text);
- msg.writeInt16(channelId);
- chatServerConnection->send(msg);
-}
-
-void ChatHandler::userList(const std::string &channel)
-{
- MessageOut msg(PCMSG_LIST_CHANNELUSERS);
- msg.writeString(channel);
- chatServerConnection->send(msg);
-}
-
-void ChatHandler::setChannelTopic(int channelId, const std::string &text)
-{
- MessageOut msg(PCMSG_TOPIC_CHANGE);
- msg.writeInt16(channelId);
- msg.writeString(text);
- chatServerConnection->send(msg);
-}
-
-void ChatHandler::setUserMode(int channelId, const std::string &name, int mode)
-{
- MessageOut msg(PCMSG_USER_MODE);
- msg.writeInt16(channelId);
- msg.writeString(name);
- msg.writeInt8(mode);
- chatServerConnection->send(msg);
-}
-
-void ChatHandler::kickUser(int channelId, const std::string &name)
-{
- MessageOut msg(PCMSG_KICK_USER);
- msg.writeInt16(channelId);
- msg.writeString(name);
- chatServerConnection->send(msg);
-}
-
-void ChatHandler::who()
-{
- MessageOut msg(PCMSG_WHO);
- chatServerConnection->send(msg);
-}
-
-void ChatHandler::sendRaw(const std::string &args A_UNUSED)
-{
-
-}
-
-void ChatHandler::ignoreAll()
-{
-
-}
-
-void ChatHandler::unIgnoreAll()
-{
-
-}
-
-} // namespace ManaServ
diff --git a/src/net/manaserv/chathandler.h b/src/net/manaserv/chathandler.h
deleted file mode 100644
index 029d5fe83..000000000
--- a/src/net/manaserv/chathandler.h
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NET_MANASERV_CHATHANDLER_H
-#define NET_MANASERV_CHATHANDLER_H
-
-#include "net/chathandler.h"
-#include "net/serverinfo.h"
-
-#include "net/manaserv/messagehandler.h"
-
-namespace ManaServ
-{
-
-class ChatHandler : public MessageHandler, public Net::ChatHandler
-{
- public:
- ChatHandler();
-
- /**
- * Handle the given message appropriately.
- */
- void handleMessage(Net::MessageIn &msg);
-
- void connect();
-
- bool isConnected();
-
- void disconnect();
-
- void talk(const std::string &text);
-
- void talkRaw(const std::string &text);
-
- void me(const std::string &text);
-
- void privateMessage(const std::string &recipient,
- const std::string &text);
-
- void channelList();
-
- void enterChannel(const std::string &channel,
- const std::string &password);
-
- void quitChannel(int channelId);
-
- void sendToChannel(int channelId, const std::string &text);
-
- void userList(const std::string &channel);
-
- void setChannelTopic(int channelId, const std::string &text);
-
- void setUserMode(int channelId, const std::string &name, int mode);
-
- void kickUser(int channelId, const std::string &name);
-
- void who();
-
- void sendRaw(const std::string &args);
-
- private:
- /**
- * Handle chat messages sent from the game server.
- */
- void handleGameChatMessage(Net::MessageIn &msg);
-
- /**
- * Handle channel entry responses.
- */
- void handleEnterChannelResponse(Net::MessageIn &msg);
-
- /**
- * Handle list channels responses.
- */
- void handleListChannelsResponse(Net::MessageIn &msg);
-
- /**
- * Handle private messages.
- */
- void handlePrivateMessage(Net::MessageIn &msg);
-
- /**
- * Handle announcements.
- */
- void handleAnnouncement(Net::MessageIn &msg);
-
- /**
- * Handle chat messages.
- */
- void handleChatMessage(Net::MessageIn &msg);
-
- /**
- * Handle quit channel responses.
- */
- void handleQuitChannelResponse(Net::MessageIn &msg);
-
- /**
- * Handle list channel users responses.
- */
- void handleListChannelUsersResponse(Net::MessageIn &msg);
-
- /**
- * Handle channel events.
- */
- void handleChannelEvent(Net::MessageIn &msg);
-
- /**
- * Handle who responses.
- */
- void handleWhoResponse(Net::MessageIn &msg);
-
- void ignoreAll();
-
- void unIgnoreAll();
-};
-
-} // namespace ManaServ
-
-#endif
diff --git a/src/net/manaserv/connection.cpp b/src/net/manaserv/connection.cpp
deleted file mode 100644
index 2467eb198..000000000
--- a/src/net/manaserv/connection.cpp
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "net/manaserv/connection.h"
-
-#include "logger.h"
-
-#include "net/manaserv/internal.h"
-#include "net/manaserv/messageout.h"
-
-#include <string>
-
-namespace ManaServ
-{
-
-Connection::Connection(ENetHost *client):
- mConnection(0), mClient(client)
-{
- mPort = 0;
- connections++;
-}
-
-Connection::~Connection()
-{
- connections--;
-}
-
-bool Connection::connect(const std::string &address, short port)
-{
- logger->log("Net::Connection::connect(%s, %i)", address.c_str(), port);
-
- if (address.empty())
- {
- logger->log1("Net::Connection::connect() got empty address!");
- mState = NET_ERROR;
- return false;
- }
-
- ENetAddress enetAddress;
-
- enet_address_set_host(&enetAddress, address.c_str());
- enetAddress.port = port;
-
- // Initiate the connection, allocating channel 0.
-#if defined(ENET_VERSION) && ENET_VERSION >= ENET_CUTOFF
- mConnection = enet_host_connect(mClient, &enetAddress, 1, 0);
-#else
- mConnection = enet_host_connect(mClient, &enetAddress, 1);
-#endif
-
- if (!mConnection)
- {
- logger->log1("Unable to initiate connection to the server.");
- mState = NET_ERROR;
- return false;
- }
-
- mPort = port;
-
- return true;
-}
-
-void Connection::disconnect()
-{
- if (!mConnection)
- return;
-
- enet_peer_disconnect(mConnection, 0);
- enet_host_flush(mClient);
- enet_peer_reset(mConnection);
-
- mConnection = 0;
-}
-
-bool Connection::isConnected()
-{
- return (mConnection) ?
- (mConnection->state == ENET_PEER_STATE_CONNECTED) : false;
-}
-
-void Connection::send(const ManaServ::MessageOut &msg)
-{
- if (!isConnected())
- {
- logger->log1("Warning: cannot send message to not connected server!");
- return;
- }
-
- ENetPacket *packet = enet_packet_create(msg.getData(),
- msg.getDataSize(),
- ENET_PACKET_FLAG_RELIABLE);
- enet_peer_send(mConnection, 0, packet);
-}
-
-} // namespace ManaServ
diff --git a/src/net/manaserv/connection.h b/src/net/manaserv/connection.h
deleted file mode 100644
index 1d3454c75..000000000
--- a/src/net/manaserv/connection.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NET_MANASERV_CONNECTION_H
-#define NET_MANASERV_CONNECTION_H
-
-#include "enet/enet.h"
-
-#include <iosfwd>
-
-#ifdef ENET_VERSION_CREATE
-#define ENET_CUTOFF ENET_VERSION_CREATE(1, 3, 0)
-#else
-#define ENET_CUTOFF 0xFFFFFFFF
-#endif
-
-namespace ManaServ
-{
- class MessageOut;
-
- /**
- * \ingroup Network
- */
- class Connection
- {
- public:
- enum State
- {
- OK = 0,
- NET_ERROR
- };
-
- ~Connection();
-
- /**
- * Connects to the given server with the specified address and port.
- * This method is non-blocking, use isConnected to check whether the
- * server is connected.
- */
- bool connect(const std::string &address, short port);
-
- /**
- * Disconnects from the given server.
- */
- void disconnect();
-
- State getState() const
- { return mState; }
-
- /**
- * Returns whether the server is connected.
- */
- bool isConnected();
-
- /**
- * Sends a message.
- */
- void send(const ManaServ::MessageOut &msg);
-
- private:
- friend Connection *ManaServ::getConnection();
- Connection(ENetHost *client);
-
- short mPort;
- ENetPeer *mConnection;
- ENetHost *mClient;
- State mState;
- };
-}
-
-#endif // NET_MANASERV_CONNECTION_H
diff --git a/src/net/manaserv/defines.h b/src/net/manaserv/defines.h
deleted file mode 100644
index aaf29bff2..000000000
--- a/src/net/manaserv/defines.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef MANASERV_DEFINES_H
-#define MANASERV_DEFINES_H
-
-/**
- * Attributes used during combat. Available to all the beings.
- */
-enum
-{
- BASE_ATTR_BEGIN = 0,
- BASE_ATTR_PHY_ATK_MIN = BASE_ATTR_BEGIN,
- BASE_ATTR_PHY_ATK_DELTA,
- /**< Physical attack power. */
- BASE_ATTR_MAG_ATK, /**< Magical attack power. */
- BASE_ATTR_PHY_RES, /**< Resistance to physical damage. */
- BASE_ATTR_MAG_RES, /**< Resistance to magical damage. */
- BASE_ATTR_EVADE, /**< Ability to avoid hits. */
- BASE_ATTR_HIT, /**< Ability to hit stuff. */
- BASE_ATTR_HP, /**< Hit Points (Base value: maximum,
- Modded value: current) */
- BASE_ATTR_HP_REGEN, /**< number of HP regenerated every 10 game ticks */
- BASE_ATTR_END,
- BASE_ATTR_NB = BASE_ATTR_END - BASE_ATTR_BEGIN,
-
- BASE_ELEM_BEGIN = BASE_ATTR_END,
- BASE_ELEM_NEUTRAL = BASE_ELEM_BEGIN,
- BASE_ELEM_FIRE,
- BASE_ELEM_WATER,
- BASE_ELEM_EARTH,
- BASE_ELEM_AIR,
- BASE_ELEM_SACRED,
- BASE_ELEM_DEATH,
- BASE_ELEM_END,
- BASE_ELEM_NB = BASE_ELEM_END - BASE_ELEM_BEGIN,
-
- NB_BEING_ATTRIBUTES = BASE_ELEM_END
-};
-
-/**
- * Attributes of characters. Used to derive being attributes.
- */
-enum
-{
- CHAR_ATTR_BEGIN = NB_BEING_ATTRIBUTES,
- CHAR_ATTR_STRENGTH = CHAR_ATTR_BEGIN,
- CHAR_ATTR_AGILITY,
- CHAR_ATTR_DEXTERITY,
- CHAR_ATTR_VITALITY,
- CHAR_ATTR_INTELLIGENCE,
- CHAR_ATTR_WILLPOWER,
- CHAR_ATTR_END,
- CHAR_ATTR_NB = CHAR_ATTR_END - CHAR_ATTR_BEGIN,
-
- NB_CHARACTER_ATTRIBUTES = CHAR_ATTR_END
-};
-
-#endif // MANASERV_DEFINES_H
diff --git a/src/net/manaserv/effecthandler.cpp b/src/net/manaserv/effecthandler.cpp
deleted file mode 100644
index 59fb1e4f5..000000000
--- a/src/net/manaserv/effecthandler.cpp
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "net/manaserv/effecthandler.h"
-
-#include "actorspritemanager.h"
-#include "effectmanager.h"
-#include "logger.h"
-
-#include "net/messagein.h"
-
-#include "net/manaserv/protocol.h"
-
-namespace ManaServ
-{
-
-EffectHandler::EffectHandler()
-{
- static const Uint16 _messages[] =
- {
- GPMSG_CREATE_EFFECT_POS,
- GPMSG_CREATE_EFFECT_BEING,
- 0
- };
- handledMessages = _messages;
-}
-
-void EffectHandler::handleMessage(Net::MessageIn &msg)
-{
- switch (msg.getId())
- {
- case GPMSG_CREATE_EFFECT_POS:
- handleCreateEffectPos(msg);
- break;
- case GPMSG_CREATE_EFFECT_BEING:
- handleCreateEffectBeing(msg);
- break;
- default:
- break;
- }
-}
-
-void EffectHandler::handleCreateEffectPos(Net::MessageIn &msg)
-{
- int id = msg.readInt16();
- Uint16 x = msg.readInt16();
- Uint16 y = msg.readInt16();
- effectManager->trigger(id, x, y);
-}
-
-void EffectHandler::handleCreateEffectBeing(Net::MessageIn &msg)
-{
- int eid = msg.readInt16();
- int bid = msg.readInt16();
- Being* b = actorSpriteManager->findBeing(bid);
- if (b)
- effectManager->trigger(eid, b);
- else
- logger->log("Warning: CreateEffect called for unknown being #%d", bid);
-}
-
-} // namespace ManaServ
diff --git a/src/net/manaserv/effecthandler.h b/src/net/manaserv/effecthandler.h
deleted file mode 100644
index ceb48fd22..000000000
--- a/src/net/manaserv/effecthandler.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NET_MANASERV_EFFECTSHANDLER_H
-#define NET_MANASERV_EFFECTSHANDLER_H
-
-#include "net/manaserv/messagehandler.h"
-
-namespace ManaServ
-{
-
-class EffectHandler : public MessageHandler
-{
- public:
- EffectHandler();
-
- void handleMessage(Net::MessageIn &msg);
-
- private:
- void handleCreateEffectPos(Net::MessageIn &msg);
- void handleCreateEffectBeing(Net::MessageIn &msg);
-};
-
-} // namespace ManaServ
-
-#endif // NET_MANASERV_EFFECTSHANDLER_H
diff --git a/src/net/manaserv/gamehandler.cpp b/src/net/manaserv/gamehandler.cpp
deleted file mode 100644
index 4a03dff0f..000000000
--- a/src/net/manaserv/gamehandler.cpp
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "net/manaserv/gamehandler.h"
-
-#include "client.h"
-#include "localplayer.h"
-
-#include "net/manaserv/chathandler.h"
-#include "net/manaserv/connection.h"
-#include "net/manaserv/messageout.h"
-#include "net/manaserv/protocol.h"
-
-extern Net::GameHandler *gameHandler;
-
-extern ManaServ::ChatHandler *chatHandler;
-
-namespace ManaServ
-{
-
-extern Connection *chatServerConnection;
-extern Connection *gameServerConnection;
-extern std::string netToken;
-extern ServerInfo gameServer;
-extern ServerInfo chatServer;
-
-GameHandler::GameHandler()
-{
- static const Uint16 _messages[] =
- {
- GPMSG_DISCONNECT_RESPONSE,
- 0
- };
- handledMessages = _messages;
- gameHandler = this;
-}
-
-void GameHandler::handleMessage(Net::MessageIn &msg)
-{
- switch (msg.getId())
- {
- case GPMSG_DISCONNECT_RESPONSE:
- {
- int errMsg = msg.readInt8();
- // Successful logout
- if (errMsg == ERRMSG_OK)
- {
- netToken = msg.readString(32);
-
- if (!netToken.empty())
- {
- Client::setState(STATE_SWITCH_CHARACTER);
- }
- else
- {
- // TODO: Handle logout
- }
- }
- // Logout failed
- else
- {
- switch (errMsg)
- {
- case ERRMSG_NO_LOGIN:
- errorMessage = "Gameserver: Not logged in";
- break;
- default:
- errorMessage = "Gameserver: Unknown error";
- break;
- }
- Client::setState(STATE_ERROR);
- }
- }
- break;
- default:
- break;
- }
-}
-
-void GameHandler::connect()
-{
- gameServerConnection->connect(gameServer.hostname, gameServer.port);
-
- // Will already be connected if we just changed gameservers
- if (!chatServerConnection->isConnected())
- chatServerConnection->connect(chatServer.hostname, chatServer.port);
-}
-
-bool GameHandler::isConnected()
-{
- return gameServerConnection->isConnected() &&
- chatHandler->isConnected();
-}
-
-void GameHandler::disconnect()
-{
- gameServerConnection->disconnect();
- // No need if we're just changing gameservers
- if (Client::getState() != STATE_CHANGE_MAP)
- chatHandler->disconnect();
-}
-
-void GameHandler::who()
-{
- // TODO
-}
-
-void GameHandler::quit(bool reconnectAccount)
-{
- MessageOut msg(PGMSG_DISCONNECT);
- msg.writeInt8((unsigned char) reconnectAccount);
- gameServerConnection->send(msg);
-}
-
-void GameHandler::ping(int tick A_UNUSED)
-{
- // TODO
-}
-
-void GameHandler::gameLoading()
-{
- MessageOut msg(PGMSG_CONNECT);
- msg.writeString(netToken, 32);
- gameServerConnection->send(msg);
-
- chatHandler->connect();
-
- // Attack range from item DB
- player_node->setAttackRange(-1);
-}
-
-void GameHandler::disconnect2()
-{
-}
-
-} // namespace ManaServ
diff --git a/src/net/manaserv/gamehandler.h b/src/net/manaserv/gamehandler.h
deleted file mode 100644
index 83e636e0e..000000000
--- a/src/net/manaserv/gamehandler.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NET_MANASERV_MAPHANDLER_H
-#define NET_MANASERV_MAPHANDLER_H
-
-#include "net/gamehandler.h"
-#include "net/serverinfo.h"
-
-#include "net/manaserv/messagehandler.h"
-
-namespace ManaServ
-{
-
-class GameHandler : public MessageHandler, public Net::GameHandler
-{
- public:
- GameHandler();
-
- void handleMessage(Net::MessageIn &msg);
-
- void connect();
-
- bool isConnected();
-
- void disconnect();
-
- void who();
-
- void quit(bool reconnectAccount);
-
- void quit() { quit(false); }
-
- void ping(int tick);
-
- bool removeDeadBeings() const
- { return false; }
-
- void clear();
-
- void gameLoading();
-
- /** The ManaServ protocol doesn't use the MP status bar. */
- bool canUseMagicBar() const
- { return false; }
-
- void disconnect2();
-};
-
-} // namespace ManaServ
-
-#endif // NET_MANASERV_MAPHANDLER_H
diff --git a/src/net/manaserv/generalhandler.cpp b/src/net/manaserv/generalhandler.cpp
deleted file mode 100644
index d95c98d23..000000000
--- a/src/net/manaserv/generalhandler.cpp
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "net/manaserv/generalhandler.h"
-
-#include "client.h"
-
-#include "gui/changeemaildialog.h"
-#include "gui/charselectdialog.h"
-#include "gui/inventorywindow.h"
-#include "gui/register.h"
-#include "gui/skilldialog.h"
-#include "gui/specialswindow.h"
-
-#include "net/manaserv/beinghandler.h"
-#include "net/manaserv/buysellhandler.h"
-#include "net/manaserv/charhandler.h"
-#include "net/manaserv/chathandler.h"
-#include "net/manaserv/connection.h"
-#include "net/manaserv/effecthandler.h"
-#include "net/manaserv/gamehandler.h"
-#include "net/manaserv/guildhandler.h"
-#include "net/manaserv/inventoryhandler.h"
-#include "net/manaserv/itemhandler.h"
-#include "net/manaserv/loginhandler.h"
-#include "net/manaserv/network.h"
-#include "net/manaserv/npchandler.h"
-#include "net/manaserv/partyhandler.h"
-#include "net/manaserv/playerhandler.h"
-#include "net/manaserv/specialhandler.h"
-#include "net/manaserv/attributes.h"
-#include "net/manaserv/tradehandler.h"
-
-#include "utils/gettext.h"
-
-#include <list>
-
-extern Net::GeneralHandler *generalHandler;
-
-extern ManaServ::LoginHandler *loginHandler;
-
-namespace ManaServ
-{
-
-Connection *accountServerConnection = 0;
-Connection *chatServerConnection = 0;
-Connection *gameServerConnection = 0;
-std::string netToken("");
-ServerInfo gameServer;
-ServerInfo chatServer;
-
-GeneralHandler::GeneralHandler():
- mBeingHandler(new BeingHandler),
- mBuySellHandler(new BuySellHandler),
- mCharHandler(new CharHandler),
- mChatHandler(new ChatHandler),
- mEffectHandler(new EffectHandler),
- mGameHandler(new GameHandler),
- mGuildHandler(new GuildHandler),
- mInventoryHandler(new InventoryHandler),
- mItemHandler(new ItemHandler),
- mLoginHandler(new LoginHandler),
- mNpcHandler(new NpcHandler),
- mPartyHandler(new PartyHandler),
- mPlayerHandler(new PlayerHandler),
- mTradeHandler(new TradeHandler),
- mSpecialHandler(new SpecialHandler)
-{
- initialize();
-
- accountServerConnection = getConnection();
- gameServerConnection = getConnection();
- chatServerConnection = getConnection();
-
- generalHandler = this;
-
- listen(CHANNEL_CLIENT);
- listen(CHANNEL_GAME);
-}
-
-void GeneralHandler::load()
-{
- registerHandler(mBeingHandler.get());
- registerHandler(mBuySellHandler.get());
- registerHandler(mCharHandler.get());
- registerHandler(mChatHandler.get());
- registerHandler(mEffectHandler.get());
- registerHandler(mGameHandler.get());
- registerHandler(mGuildHandler.get());
- registerHandler(mInventoryHandler.get());
- registerHandler(mItemHandler.get());
- registerHandler(mLoginHandler.get());
- registerHandler(mNpcHandler.get());
- registerHandler(mPartyHandler.get());
- registerHandler(mPlayerHandler.get());
- registerHandler(mTradeHandler.get());
-}
-
-void GeneralHandler::reload()
-{
- static_cast<CharHandler*>(Net::getCharHandler())->clear();
-
- if (accountServerConnection)
- accountServerConnection->disconnect();
-
- if (gameServerConnection)
- gameServerConnection->disconnect();
-
- if (chatServerConnection)
- chatServerConnection->disconnect();
-
- netToken.clear();
- gameServer.clear();
- chatServer.clear();
-
- Attributes::unload();
- Attributes::load();
- Attributes::informItemDB();
-}
-
-void GeneralHandler::unload()
-{
- clearHandlers();
-
- if (accountServerConnection)
- accountServerConnection->disconnect();
- if (gameServerConnection)
- gameServerConnection->disconnect();
- if (chatServerConnection)
- chatServerConnection->disconnect();
-
- delete accountServerConnection;
- accountServerConnection = 0;
- delete gameServerConnection;
- gameServerConnection = 0;
- delete chatServerConnection;
- chatServerConnection = 0;
-
- Attributes::unload();
- finalize();
-}
-
-void GeneralHandler::flushNetwork()
-{
- flush();
-
- if (Client::getState() == STATE_SWITCH_CHARACTER &&
- Net::getLoginHandler()->isConnected())
- {
- loginHandler->reconnect();
- Client::setState(STATE_GET_CHARACTERS);
- }
-}
-
-void GeneralHandler::clearHandlers()
-{
- clearNetworkHandlers();
-}
-
-void GeneralHandler::processEvent(Channels channel,
- const Event &event)
-{
- if (channel == CHANNEL_CLIENT)
- {
- int newState = event.getInt("newState");
-
- if (newState == STATE_GAME)
- {
- GameHandler *game = static_cast<GameHandler*>(
- Net::getGameHandler());
- game->gameLoading();
- }
- else if (newState == STATE_LOAD_DATA)
- {
- Attributes::load();
- Attributes::informItemDB();
- }
- }
- else if (channel == CHANNEL_GAME)
- {
- if (event.getName() == EVENT_GUIWINDOWSLOADED)
- {
- inventoryWindow->setSplitAllowed(true);
- skillDialog->loadSkills("mana-skills.xml");
-
- PlayerInfo::setAttribute(EXP_NEEDED, 100);
-
- Attributes::informStatusWindow();
- }
- }
-}
-
-void GeneralHandler::reloadPartially()
-{
-}
-} // namespace ManaServ
diff --git a/src/net/manaserv/generalhandler.h b/src/net/manaserv/generalhandler.h
deleted file mode 100644
index 6ea5c7845..000000000
--- a/src/net/manaserv/generalhandler.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NET_MANASERV_GENERALHANDLER_H
-#define NET_MANASERV_GENERALHANDLER_H
-
-#include "listener.h"
-
-#include "net/generalhandler.h"
-#include "net/net.h"
-
-#include "net/manaserv/messagehandler.h"
-
-namespace ManaServ
-{
-
-class GeneralHandler : public Net::GeneralHandler, public Listener
-{
- public:
- GeneralHandler();
-
- void load();
-
- void reload();
-
- void reloadPartially();
-
- void unload();
-
- void flushNetwork();
-
- void clearHandlers();
-
- void processEvent(Channels channel, const Event &event);
-
- protected:
- MessageHandlerPtr mBeingHandler;
- MessageHandlerPtr mBuySellHandler;
- MessageHandlerPtr mCharHandler;
- MessageHandlerPtr mChatHandler;
- MessageHandlerPtr mEffectHandler;
- MessageHandlerPtr mGameHandler;
- MessageHandlerPtr mGuildHandler;
- MessageHandlerPtr mInventoryHandler;
- MessageHandlerPtr mItemHandler;
- MessageHandlerPtr mLoginHandler;
- MessageHandlerPtr mNpcHandler;
- MessageHandlerPtr mPartyHandler;
- MessageHandlerPtr mPlayerHandler;
- MessageHandlerPtr mTradeHandler;
- MessageHandlerPtr mSpecialHandler;
-};
-
-} // namespace ManaServ
-
-#endif // NET_MANASERV_GENERALHANDLER_H
diff --git a/src/net/manaserv/guildhandler.cpp b/src/net/manaserv/guildhandler.cpp
deleted file mode 100644
index aa82d6dcd..000000000
--- a/src/net/manaserv/guildhandler.cpp
+++ /dev/null
@@ -1,365 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2008-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "net/manaserv/guildhandler.h"
-
-#include "event.h"
-#include "guild.h"
-#include "logger.h"
-#include "localplayer.h"
-#include "channel.h"
-#include "channelmanager.h"
-
-#include "gui/widgets/channeltab.h"
-#include "gui/chatwindow.h"
-#include "gui/socialwindow.h"
-
-#include "net/messagein.h"
-#include "net/net.h"
-
-#include "net/manaserv/connection.h"
-#include "net/manaserv/messagein.h"
-#include "net/manaserv/messageout.h"
-#include "net/manaserv/protocol.h"
-
-#include "utils/gettext.h"
-#include "utils/stringutils.h"
-
-#include <iostream>
-
-extern Net::GuildHandler *guildHandler;
-
-namespace ManaServ
-{
-
-extern Connection *chatServerConnection;
-
-GuildHandler::GuildHandler()
-{
- static const Uint16 _messages[] =
- {
- CPMSG_GUILD_CREATE_RESPONSE,
- CPMSG_GUILD_INVITE_RESPONSE,
- CPMSG_GUILD_ACCEPT_RESPONSE,
- CPMSG_GUILD_GET_MEMBERS_RESPONSE,
- CPMSG_GUILD_UPDATE_LIST,
- CPMSG_GUILD_INVITED,
- CPMSG_GUILD_REJOIN,
- CPMSG_GUILD_QUIT_RESPONSE,
- 0
- };
- handledMessages = _messages;
-
- guildHandler = this;
-}
-
-void GuildHandler::handleMessage(Net::MessageIn &msg)
-{
- switch (msg.getId())
- {
- case CPMSG_GUILD_CREATE_RESPONSE:
- {
- logger->log1("Received CPMSG_GUILD_CREATE_RESPONSE");
- if (msg.readInt8() == ERRMSG_OK)
- {
- // TODO - Acknowledge guild was created
- SERVER_NOTICE(_("Guild created."))
- joinedGuild(msg);
- }
- else
- {
- SERVER_NOTICE(_("Error creating guild."))
- }
- } break;
-
- case CPMSG_GUILD_INVITE_RESPONSE:
- {
- logger->log1("Received CPMSG_GUILD_INVITE_RESPONSE");
- if (msg.readInt8() == ERRMSG_OK)
- {
- // TODO - Acknowledge invite was sent
- SERVER_NOTICE(_("Invite sent."))
- }
- } break;
-
- case CPMSG_GUILD_ACCEPT_RESPONSE:
- {
- logger->log1("Received CPMSG_GUILD_ACCEPT_RESPONSE");
- if (msg.readInt8() == ERRMSG_OK)
- {
- // TODO - Acknowledge accepted into guild
- joinedGuild(msg);
- }
- } break;
-
- case CPMSG_GUILD_GET_MEMBERS_RESPONSE:
- {
- logger->log1("Received CPMSG_GUILD_GET_MEMBERS_RESPONSE");
- if (msg.readInt8() == ERRMSG_OK)
- {
- std::string name;
- bool online;
- Guild *guild;
- GuildMember *member;
-
- short guildId = msg.readInt16();
- guild = player_node->getGuild(guildId);
-
- if (!guild)
- return;
-
- guild->clearMembers();
-
- while (msg.getUnreadLength())
- {
- name = msg.readString();
- online = msg.readInt8();
- if (name != "")
- {
- member = guild->addMember(name);
- member->setOnline(online);
- }
- }
- }
- } break;
-
- case CPMSG_GUILD_UPDATE_LIST:
- {
- logger->log1("Received CPMSG_GUILD_UPDATE_LIST");
- short guildId = msg.readInt16();
- std::string name = msg.readString();
- char eventId = msg.readInt8();
- GuildMember *member;
-
- Guild *guild = player_node->getGuild(guildId);
- if (guild)
- {
- switch (eventId)
- {
- case GUILD_EVENT_NEW_PLAYER:
- member = guild->addMember(name);
- member->setOnline(true);
- break;
-
- case GUILD_EVENT_LEAVING_PLAYER:
- guild->removeMember(name);
- break;
-
- case GUILD_EVENT_ONLINE_PLAYER:
- member = guild->getMember(name);
- if (member)
- {
- member->setOnline(true);
- }
- break;
-
- case GUILD_EVENT_OFFLINE_PLAYER:
- member = guild->getMember(name);
- if (member)
- {
- member->setOnline(false);
- }
- break;
-
- default:
- logger->log1("Invalid guild event");
- }
- }
- } break;
-
- case CPMSG_GUILD_INVITED:
- {
- logger->log1("Received CPMSG_GUILD_INVITED");
- std::string inviterName = msg.readString();
- std::string guildName = msg.readString();
- int guildId = msg.readInt16();
-
- // Open a dialog asking if the player accepts joining the guild.
- socialWindow->showGuildInvite(guildName, guildId, inviterName);
- } break;
-
- case CPMSG_GUILD_PROMOTE_MEMBER_RESPONSE:
- {
- logger->log1("Received CPMSG_GUILD_PROMOTE_MEMBER_RESPONSE");
-
- if (msg.readInt8() == ERRMSG_OK)
- {
- // promotion succeeded
- SERVER_NOTICE(_("Member was promoted successfully."))
- }
- else
- {
- // promotion failed
- SERVER_NOTICE(_("Failed to promote member."))
- }
- }
-
- case CPMSG_GUILD_REJOIN:
- {
- logger->log1("Received CPMSG_GUILD_REJOIN");
-
- joinedGuild(msg);
- } break;
-
- case CPMSG_GUILD_QUIT_RESPONSE:
- {
- logger->log1("Received CPMSG_GUILD_QUIT_RESPONSE");
-
- if (msg.readInt8() == ERRMSG_OK)
- {
- // Must remove tab first, as it wont find the guild
- // name after its removed from the player
- int guildId = msg.readInt16();
- Guild *guild = player_node->getGuild(guildId);
- if (guild)
- {
- Channel *channel = channelManager->findByName(
- guild->getName());
- channelManager->removeChannel(channel);
- player_node->removeGuild(guildId);
- }
- }
- } break;
- default: break;
- }
-}
-
-void GuildHandler::joinedGuild(Net::MessageIn &msg)
-{
- std::string guildName = msg.readString();
- short guildId = msg.readInt16();
- short permissions = msg.readInt16();
- short channelId = msg.readInt16();
- std::string announcement = msg.readString();
-
- // Add guild to player
- Guild *guild = Guild::getGuild(guildId);
- guild->setName(guildName);
- guild->setRights(permissions);
- player_node->addGuild(guild);
- Net::getGuildHandler()->memberList(guildId);
-
- // Automatically create the guild channel
- // COMMENT: Should this go here??
- Channel *channel = new Channel(channelId, guildName, announcement);
- channelManager->addChannel(channel);
- channel->getTab()->chatLog(strprintf(_("Topic: %s"), announcement.c_str()),
- BY_CHANNEL);
-}
-
-void GuildHandler::create(const std::string &name)
-{
- MessageOut msg(PCMSG_GUILD_CREATE);
- msg.writeString(name);
- chatServerConnection->send(msg);
-}
-
-void GuildHandler::invite(int guildId, const std::string &name)
-{
- MessageOut msg(PCMSG_GUILD_INVITE);
- msg.writeInt16(guildId);
- msg.writeString(name);
- chatServerConnection->send(msg);
-}
-
-void GuildHandler::invite(int guildId, Being *being)
-{
- invite(guildId, being->getName());
-}
-
-void GuildHandler::inviteResponse(int guildId A_UNUSED, bool response A_UNUSED)
-{
- /*MessageOut msg(PCMSG_GUILD_ACCEPT);
- msg.writeString(name);
- chatServerConnection->send(msg);*/
-}
-
-void GuildHandler::leave(int guildId)
-{
- MessageOut msg(PCMSG_GUILD_QUIT);
- msg.writeInt16(guildId);
- chatServerConnection->send(msg);
-}
-
-void GuildHandler::kick(GuildMember *member A_UNUSED,
- std::string reason A_UNUSED)
-{
- // TODO
-}
-
-void GuildHandler::chat(int guildId A_UNUSED, const std::string &text A_UNUSED)
-{
- // TODO
-}
-
-void GuildHandler::memberList(int guildId)
-{
- MessageOut msg(PCMSG_GUILD_GET_MEMBERS);
- msg.writeInt16(guildId);
- chatServerConnection->send(msg);
-}
-
-void GuildHandler::info(int guildId A_UNUSED)
-{
- // TODO
-}
-
-void GuildHandler::changeMemberPostion(GuildMember *member A_UNUSED,
- int level A_UNUSED)
-{
- /*MessageOut msg(PCMSG_GUILD_PROMOTE_MEMBER);
- msg.writeInt16(guildId);
- msg.writeString(name);
- msg.writeInt8(level);
- chatServerConnection->send(msg);*/
-}
-
-void GuildHandler::requestAlliance(int guildId A_UNUSED,
- int otherGuildId A_UNUSED)
-{
- // TODO
-}
-
-void GuildHandler::requestAllianceResponse(int guildId A_UNUSED,
- int otherGuildId A_UNUSED,
- bool response A_UNUSED)
-{
- // TODO
-}
-
-void GuildHandler::endAlliance(int guildId A_UNUSED, int otherGuildId A_UNUSED)
-{
- // TODO
-}
-
-void GuildHandler::changeNotice(int guildId A_UNUSED,
- std::string msg1 A_UNUSED,
- std::string msg2 A_UNUSED)
-{
- // TODO
-}
-
-void GuildHandler::clear()
-{
-}
-
-} // namespace ManaServ
diff --git a/src/net/manaserv/guildhandler.h b/src/net/manaserv/guildhandler.h
deleted file mode 100644
index 47d595bfa..000000000
--- a/src/net/manaserv/guildhandler.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2008-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NET_MANASERV_GUILDHANDLER_H
-#define NET_MANASERV_GUILDHANDLER_H
-
-#include "net/guildhandler.h"
-
-#include "net/manaserv/messagehandler.h"
-
-namespace ManaServ
-{
-
-class GuildHandler : public Net::GuildHandler, public MessageHandler
-{
-public:
- GuildHandler();
-
- bool isSupported() const
- { return true; }
-
- void handleMessage(Net::MessageIn &msg);
-
- void create(const std::string &name);
-
- void invite(int guildId, const std::string &name);
-
- void invite(int guidId, Being *being);
-
- void inviteResponse(int guidId, bool response);
-
- void leave(int guildId);
-
- void kick(GuildMember *member, std::string reason = "");
-
- void chat(int guildId, const std::string &text);
-
- void memberList(int guildId);
-
- void info(int guildId);
-
- void changeMemberPostion(GuildMember *member, int level);
-
- void requestAlliance(int guildId, int otherGuildId);
-
- void requestAllianceResponse(int guildId, int otherGuildId,
- bool response);
-
- void endAlliance(int guildId, int otherGuildId);
-
- void changeNotice(int guildId, std::string msg1,
- std::string msg2);
-
- void clear();
-
-protected:
- void joinedGuild(Net::MessageIn &msg);
-};
-
-} // namespace ManaServ
-
-#endif
diff --git a/src/net/manaserv/internal.cpp b/src/net/manaserv/internal.cpp
deleted file mode 100644
index 37148b101..000000000
--- a/src/net/manaserv/internal.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "net/manaserv/internal.h"
-
-namespace ManaServ
-{
- int connections = 0;
-}
diff --git a/src/net/manaserv/internal.h b/src/net/manaserv/internal.h
deleted file mode 100644
index 9c0529a79..000000000
--- a/src/net/manaserv/internal.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NET_MANASERV_INTERNAL_H
-#define NET_MANASERV_INTERNAL_H
-
-namespace ManaServ
-{
- extern int connections;
-}
-
-#endif
diff --git a/src/net/manaserv/inventoryhandler.cpp b/src/net/manaserv/inventoryhandler.cpp
deleted file mode 100644
index 47f149eca..000000000
--- a/src/net/manaserv/inventoryhandler.cpp
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "net/manaserv/inventoryhandler.h"
-
-#include "equipment.h"
-#include "inventory.h"
-#include "item.h"
-#include "itemshortcut.h"
-#include "localplayer.h"
-#include "playerinfo.h"
-
-#include "gui/chatwindow.h"
-
-#include "net/manaserv/connection.h"
-#include "net/manaserv/messagein.h"
-#include "net/manaserv/messageout.h"
-#include "net/manaserv/protocol.h"
-
-#include "resources/iteminfo.h"
-
-#include "logger.h" // <<< REMOVE ME!
-
-extern Net::InventoryHandler *inventoryHandler;
-
-namespace ManaServ
-{
-
-extern Connection *gameServerConnection;
-
-InventoryHandler::InventoryHandler()
-{
- static const Uint16 _messages[] =
- {
- GPMSG_INVENTORY_FULL,
- GPMSG_INVENTORY,
- GPMSG_EQUIP,
- 0
- };
- handledMessages = _messages;
- inventoryHandler = this;
-}
-
-void InventoryHandler::handleMessage(Net::MessageIn &msg)
-{
- switch (msg.getId())
- {
- case GPMSG_INVENTORY_FULL:
- {
- PlayerInfo::clearInventory();
- PlayerInfo::getEquipment()->setBackend(&mEquips);
- int count = msg.readInt16();
- while (count--)
- {
- unsigned int slot = msg.readInt16();
- int id = msg.readInt16();
- unsigned int amount = msg.readInt16();
- PlayerInfo::setInventoryItem(slot, id, amount, 0);
- }
- while (msg.getUnreadLength())
- {
- unsigned int slot = msg.readInt8();
- unsigned int ref = msg.readInt16();
-
- mEquips.addEquipment(slot, ref);
- }
- }
- break;
-
- case GPMSG_INVENTORY:
- while (msg.getUnreadLength())
- {
- unsigned int slot = msg.readInt16();
- int id = msg.readInt16();
- unsigned int amount = id ? msg.readInt16() : 0;
- PlayerInfo::setInventoryItem(slot, id, amount, 0);
- }
- break;
-
- case GPMSG_EQUIP:
- while (msg.getUnreadLength())
- {
- unsigned int ref = msg.readInt16();
- int count = msg.readInt8();
- while (count--)
- {
- unsigned int slot = msg.readInt8();
- unsigned int used = msg.readInt8();
-
- mEquips.setEquipment(slot, used, ref);
- }
- }
- break;
- default:
- break;
- }
-}
-
-void InventoryHandler::equipItem(const Item *item)
-{
- MessageOut msg(PGMSG_EQUIP);
- msg.writeInt8(item->getInvIndex());
- gameServerConnection->send(msg);
-}
-
-void InventoryHandler::unequipItem(const Item *item)
-{
- MessageOut msg(PGMSG_UNEQUIP);
- msg.writeInt8(item->getInvIndex());
- gameServerConnection->send(msg);
-
-/*
- // Tidy equipment directly to avoid weapon still shown bug, for instance
- int equipSlot = item->getInvIndex();
- logger->log("Unequipping %d", equipSlot);
- mEquips.setEquipment(equipSlot, 0);
-*/
-}
-
-void InventoryHandler::useItem(const Item *item)
-{
- MessageOut msg(PGMSG_USE_ITEM);
- msg.writeInt8(item->getInvIndex());
- gameServerConnection->send(msg);
-}
-
-void InventoryHandler::dropItem(const Item *item, int amount)
-{
- MessageOut msg(PGMSG_DROP);
- msg.writeInt8(item->getInvIndex());
- msg.writeInt8(amount);
- gameServerConnection->send(msg);
-}
-
-bool InventoryHandler::canSplit(const Item *item) const
-{
- return item && !item->isEquipment() && item->getQuantity() > 1;
-}
-
-void InventoryHandler::splitItem(const Item *item, int amount)
-{
- int newIndex = PlayerInfo::getInventory()->getFreeSlot();
- if (newIndex > Inventory::NO_SLOT_INDEX)
- {
- MessageOut msg(PGMSG_MOVE_ITEM);
- msg.writeInt8(item->getInvIndex());
- msg.writeInt8(newIndex);
- msg.writeInt8(amount);
- gameServerConnection->send(msg);
- }
-}
-
-void InventoryHandler::moveItem(int oldIndex, int newIndex)
-{
- if (oldIndex == newIndex)
- return;
-
- MessageOut msg(PGMSG_MOVE_ITEM);
- msg.writeInt8(oldIndex);
- msg.writeInt8(newIndex);
- msg.writeInt8(PlayerInfo::getInventory()->getItem(oldIndex)
- ->getQuantity());
- gameServerConnection->send(msg);
-}
-
-void InventoryHandler::openStorage(int type A_UNUSED)
-{
- // TODO
-}
-
-void InventoryHandler::closeStorage(int type A_UNUSED)
-{
- // TODO
-}
-
-void InventoryHandler::moveItem(int source A_UNUSED, int slot A_UNUSED,
- int amount A_UNUSED, int destination A_UNUSED)
-{
- // TODO
-}
-
-size_t InventoryHandler::getSize(int type) const
-{
- switch (type)
- {
- case Inventory::INVENTORY:
- case Inventory::TRADE:
- return 50;
- case Inventory::STORAGE:
- return 300;
- default:
- return 0;
- }
-}
-
-int InventoryHandler::convertFromServerSlot(int eAthenaSlot) const
-{
- return eAthenaSlot;
-}
-
-} // namespace ManaServ
diff --git a/src/net/manaserv/inventoryhandler.h b/src/net/manaserv/inventoryhandler.h
deleted file mode 100644
index 8471b1caf..000000000
--- a/src/net/manaserv/inventoryhandler.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NET_MANASERV_INVENTORYHANDLER_H
-#define NET_MANASERV_INVENTORYHANDLER_H
-
-#include "equipment.h"
-
-#include "net/inventoryhandler.h"
-
-#include "net/manaserv/messagehandler.h"
-
-namespace ManaServ
-{
-
-class EquipBackend : public Equipment::Backend
-{
- public:
- EquipBackend()
- { memset(mEquipment, 0, sizeof(mEquipment)); }
-
- Item *getEquipment(int index) const
- { return mEquipment[index]; }
-
- void clear()
- {
- for (int i = 0; i < EQUIPMENT_SIZE; ++i)
- delete mEquipment[i];
-
- std::fill_n(mEquipment, EQUIPMENT_SIZE, (Item*) 0);
- }
-
- void setEquipment(unsigned int slot, unsigned int used, int reference)
- {
- printf("Equip: %d at %dx%d\n", reference, slot, used);
- }
-
- void addEquipment(unsigned int slot, int reference)
- {
- printf("Equip: %d at %d\n", reference, slot);
- }
-
- private:
- Item *mEquipment[EQUIPMENT_SIZE];
-};
-
-class InventoryHandler : public MessageHandler, Net::InventoryHandler
-{
- public:
- InventoryHandler();
-
- void handleMessage(Net::MessageIn &msg);
-
- void equipItem(const Item *item);
-
- void unequipItem(const Item *item);
-
- void useItem(const Item *item);
-
- void dropItem(const Item *item, int amount);
-
- bool canSplit(const Item *item) const;
-
- void splitItem(const Item *item, int amount);
-
- void moveItem(int oldIndex, int newIndex);
-
- void openStorage(int type);
-
- void closeStorage(int type);
-
- void moveItem(int source, int slot, int amount,
- int destination);
-
- size_t getSize(int type) const;
-
- int convertFromServerSlot(int eAthenaSlot) const;
-
- private:
- EquipBackend mEquips;
-};
-
-} // namespace ManaServ
-
-#endif // NET_MANASERV_INVENTORYHANDLER_H
diff --git a/src/net/manaserv/itemhandler.cpp b/src/net/manaserv/itemhandler.cpp
deleted file mode 100644
index 021d57cf3..000000000
--- a/src/net/manaserv/itemhandler.cpp
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "net/manaserv/itemhandler.h"
-
-#include "actorspritemanager.h"
-
-#include "net/manaserv/protocol.h"
-#include "net/manaserv/messagein.h"
-
-#include "game.h"
-#include "map.h"
-#include "logger.h"
-
-namespace ManaServ
-{
-
-ItemHandler::ItemHandler()
-{
- static const Uint16 _messages[] =
- {
- GPMSG_ITEMS,
- GPMSG_ITEM_APPEAR,
- 0
- };
- handledMessages = _messages;
-}
-
-void ItemHandler::handleMessage(Net::MessageIn &msg)
-{
- switch (msg.getId())
- {
- case GPMSG_ITEM_APPEAR:
- case GPMSG_ITEMS:
- {
- while (msg.getUnreadLength())
- {
- int itemId = msg.readInt16();
- int x = msg.readInt16();
- int y = msg.readInt16();
- int id = (x << 16) | y; // dummy id
-
- if (itemId)
- {
- if (Game *game = Game::instance())
- {
- if (Map *map = game->getCurrentMap())
- {
- actorSpriteManager->createItem(id, itemId,
- x / map->getTileWidth(),
- y / map->getTileHeight(),
- 0, 1);
- }
- else
- {
- logger->log(
- "ItemHandler: An item wasn't created "
- "because of Game/Map not initialized...");
- }
- }
- }
- else if (FloorItem *item = actorSpriteManager->findItem(id))
- {
- actorSpriteManager->destroy(item);
- }
- }
- } break;
- default: break;
- }
-}
-
-} // namespace ManaServ
diff --git a/src/net/manaserv/itemhandler.h b/src/net/manaserv/itemhandler.h
deleted file mode 100644
index cfdc30083..000000000
--- a/src/net/manaserv/itemhandler.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NET_MANASERV_ITEMHANDLER_H
-#define NET_MANASERV_ITEMHANDLER_H
-
-#include "net/manaserv/messagehandler.h"
-
-namespace ManaServ
-{
-
-class ItemHandler : public MessageHandler
-{
- public:
- ItemHandler();
-
- void handleMessage(Net::MessageIn &msg);
-};
-
-} // namespace ManaServ
-
-#endif // NET_MANASERV_ITEMHANDLER_H
diff --git a/src/net/manaserv/loginhandler.cpp b/src/net/manaserv/loginhandler.cpp
deleted file mode 100644
index f1c597c00..000000000
--- a/src/net/manaserv/loginhandler.cpp
+++ /dev/null
@@ -1,498 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "net/manaserv/loginhandler.h"
-
-#include "client.h"
-#include "logger.h"
-
-#include "net/logindata.h"
-
-#include "net/manaserv/connection.h"
-#include "net/manaserv/messagein.h"
-#include "net/manaserv/messageout.h"
-#include "net/manaserv/protocol.h"
-
-#include "utils/gettext.h"
-#include "utils/sha256.h"
-
-extern Net::LoginHandler *loginHandler;
-
-namespace ManaServ
-{
-
-extern Connection *accountServerConnection;
-extern std::string netToken;
-
-LoginHandler::LoginHandler()
-{
- static const Uint16 _messages[] =
- {
- APMSG_LOGIN_RESPONSE,
- APMSG_REGISTER_RESPONSE,
- APMSG_RECONNECT_RESPONSE,
- APMSG_PASSWORD_CHANGE_RESPONSE,
- APMSG_EMAIL_CHANGE_RESPONSE,
- APMSG_LOGOUT_RESPONSE,
- APMSG_UNREGISTER_RESPONSE,
- APMSG_REGISTER_INFO_RESPONSE,
- 0
- };
- handledMessages = _messages;
- loginHandler = this;
- mMinUserNameLength = 4;
- mMaxUserNameLength = 10;
- mLoginData = 0;
-}
-
-void LoginHandler::handleMessage(Net::MessageIn &msg)
-{
- switch (msg.getId())
- {
- case APMSG_LOGIN_RESPONSE:
- handleLoginResponse(msg);
- break;
-
- case APMSG_REGISTER_RESPONSE:
- handleRegisterResponse(msg);
- break;
-
- case APMSG_RECONNECT_RESPONSE:
- {
- int errMsg = msg.readInt8();
- // Successful login
- if (errMsg == ERRMSG_OK)
- {
- Client::setState(STATE_CHAR_SELECT);
- }
- // Login failed
- else
- {
- switch (errMsg)
- {
- case ERRMSG_INVALID_ARGUMENT:
- errorMessage = _("Wrong magic_token.");
- break;
- case ERRMSG_FAILURE:
- errorMessage = _("Already logged in.");
- break;
- case LOGIN_BANNED:
- errorMessage = _("Account banned.");
- break;
- default:
- errorMessage = _("Unknown error.");
- break;
- }
- Client::setState(STATE_ERROR);
- }
- }
- break;
-
- case APMSG_PASSWORD_CHANGE_RESPONSE:
- {
- int errMsg = msg.readInt8();
- // Successful pass change
- if (errMsg == ERRMSG_OK)
- {
- Client::setState(STATE_CHANGEPASSWORD_SUCCESS);
- }
- // pass change failed
- else
- {
- switch (errMsg)
- {
- case ERRMSG_INVALID_ARGUMENT:
- errorMessage = _("New password incorrect.");
- break;
- case ERRMSG_FAILURE:
- errorMessage = _("Old password incorrect.");
- break;
- case ERRMSG_NO_LOGIN:
- errorMessage =
- _("Account not connected. Please login first.");
- break;
- default:
- errorMessage = _("Unknown error.");
- break;
- }
- Client::setState(STATE_ACCOUNTCHANGE_ERROR);
- }
- }
- break;
-
- case APMSG_EMAIL_CHANGE_RESPONSE:
- {
- int errMsg = msg.readInt8();
- // Successful pass change
- if (errMsg == ERRMSG_OK)
- {
- Client::setState(STATE_CHANGEEMAIL_SUCCESS);
- }
- // pass change failed
- else
- {
- switch (errMsg)
- {
- case ERRMSG_INVALID_ARGUMENT:
- errorMessage = _("New email address incorrect.");
- break;
- case ERRMSG_FAILURE:
- errorMessage = _("Old email address incorrect.");
- break;
- case ERRMSG_NO_LOGIN:
- errorMessage =
- _("Account not connected. Please login first.");
- break;
- case ERRMSG_EMAIL_ALREADY_EXISTS:
- errorMessage =
- _("The new email address already exists.");
- break;
- default:
- errorMessage = _("Unknown error.");
- break;
- }
- Client::setState(STATE_ACCOUNTCHANGE_ERROR);
- }
- }
- break;
- case APMSG_LOGOUT_RESPONSE:
- {
- int errMsg = msg.readInt8();
-
- // Successful logout
- if (errMsg == ERRMSG_OK)
- {
- // TODO: handle logout
- }
- // Logout failed
- else
- {
- switch (errMsg)
- {
- case ERRMSG_NO_LOGIN:
- errorMessage = "Accountserver: Not logged in";
- break;
- default:
- errorMessage = "Accountserver: Unknown error";
- break;
- }
- Client::setState(STATE_ERROR);
- }
- }
- break;
- case APMSG_UNREGISTER_RESPONSE:
- {
- int errMsg = msg.readInt8();
- // Successful unregistration
- if (errMsg == ERRMSG_OK)
- {
- Client::setState(STATE_UNREGISTER);
- }
- // Unregistration failed
- else
- {
- switch (errMsg)
- {
- case ERRMSG_INVALID_ARGUMENT:
- errorMessage =
- "Accountserver: Wrong username or password";
- break;
- default:
- errorMessage = "Accountserver: Unknown error";
- break;
- }
- Client::setState(STATE_ACCOUNTCHANGE_ERROR);
- }
- }
- break;
-
- case APMSG_REGISTER_INFO_RESPONSE:
- {
- int allowed = msg.readInt8();
-
- if (allowed)
- {
- mMinUserNameLength = msg.readInt8();
- mMaxUserNameLength = msg.readInt8();
- std::string captchaURL = msg.readString();
- std::string captchaInstructions = msg.readString();
-
- printf("%s: %s\n", captchaURL.c_str(),
- captchaInstructions.c_str());
-
- Client::setState(STATE_REGISTER);
- }
- else
- {
- errorMessage = msg.readString();
-
- if (errorMessage.empty())
- errorMessage = _("Client registration is not allowed. "
- "Please contact server administration.");
- Client::setState(STATE_LOGIN_ERROR);
- }
- }
- break;
- default:
- break;
- }
-}
-
-void LoginHandler::handleLoginResponse(Net::MessageIn &msg)
-{
- const int errMsg = msg.readInt8();
-
- if (errMsg == ERRMSG_OK)
- {
- readServerInfo(msg);
- // No worlds atm, but future use :-D
- Client::setState(STATE_WORLD_SELECT);
- }
- else
- {
- switch (errMsg)
- {
- case LOGIN_INVALID_VERSION:
- errorMessage = _("Client version is too old.");
- break;
- case ERRMSG_INVALID_ARGUMENT:
- errorMessage = _("Wrong username or password.");
- break;
- case ERRMSG_FAILURE:
- errorMessage = _("Already logged in.");
- break;
- case LOGIN_BANNED:
- errorMessage = _("Account banned");
- break;
- case LOGIN_INVALID_TIME:
- errorMessage = _("Login attempt too soon after previous "
- "attempt.");
- break;
- default:
- errorMessage = _("Unknown error.");
- break;
- }
- Client::setState(STATE_LOGIN_ERROR);
- }
-}
-
-void LoginHandler::handleRegisterResponse(Net::MessageIn &msg)
-{
- const int errMsg = msg.readInt8();
-
- if (errMsg == ERRMSG_OK)
- {
- readServerInfo(msg);
- Client::setState(STATE_WORLD_SELECT);
- }
- else
- {
- switch (errMsg)
- {
- case REGISTER_INVALID_VERSION:
- errorMessage = _("Client version is too old.");
- break;
- case ERRMSG_INVALID_ARGUMENT:
- errorMessage = _("Wrong username, password or email address.");
- break;
- case REGISTER_EXISTS_USERNAME:
- errorMessage = _("Username already exists.");
- break;
- case REGISTER_EXISTS_EMAIL:
- errorMessage = _("Email address already exists.");
- break;
- case REGISTER_CAPTCHA_WRONG:
- errorMessage = _("You took too long with the captcha or your "
- "response was incorrect.");
- break;
- default:
- errorMessage = _("Unknown error.");
- break;
- }
- Client::setState(STATE_LOGIN_ERROR);
- }
-}
-
-void LoginHandler::readServerInfo(Net::MessageIn &msg)
-{
- // Safety check for outdated manaserv versions (remove me later)
- if (msg.getUnreadLength() == 0)
- return;
-
- // Set the update host when included in the message
- std::string updateHost = msg.readString();
- if (!updateHost.empty())
- {
- if (!checkPath(updateHost))
- {
- logger->log1("Warning: incorrect update server name");
- updateHost = "";
- }
- mLoginData->updateHost = updateHost;
- }
- else
- {
- logger->log1("Warning: server does not have an update host set!");
- }
-
- // Read the client data folder for dynamic data loading.
- // This is only used by the QT client.
- msg.readString();
-
- // Read the number of character slots
- mLoginData->characterSlots = msg.readInt8();
-}
-
-void LoginHandler::connect()
-{
- accountServerConnection->connect(mServer.hostname, mServer.port);
-}
-
-bool LoginHandler::isConnected()
-{
- return accountServerConnection->isConnected();
-}
-
-void LoginHandler::disconnect()
-{
- accountServerConnection->disconnect();
-
- if (Client::getState() == STATE_CONNECT_GAME)
- {
- Client::setState(STATE_GAME);
- }
-}
-
-bool LoginHandler::isRegistrationEnabled()
-{
- return true;
-}
-
-void LoginHandler::getRegistrationDetails()
-{
- MessageOut msg(PAMSG_REQUEST_REGISTER_INFO);
- accountServerConnection->send(msg);
-}
-
-unsigned int LoginHandler::getMinUserNameLength() const
-{
- return mMinUserNameLength;
-}
-
-unsigned int LoginHandler::getMaxUserNameLength() const
-{
- return mMaxUserNameLength;
-}
-
-void LoginHandler::loginAccount(LoginData *loginData)
-{
- mLoginData = loginData;
-
- 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()
-{
- MessageOut msg(PAMSG_LOGOUT);
- accountServerConnection->send(msg);
-}
-
-void LoginHandler::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);
-
- accountServerConnection->send(msg);
-}
-
-void LoginHandler::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));
-
- accountServerConnection->send(msg);
-}
-
-void LoginHandler::chooseServer(unsigned int server A_UNUSED)
-{
- // TODO
-}
-
-void LoginHandler::registerAccount(LoginData *loginData)
-{
- mLoginData = loginData;
-
- MessageOut msg(PAMSG_REGISTER);
-
- msg.writeInt32(0); // client version
- msg.writeString(loginData->username);
- // Use a hashed password for privacy reasons
- msg.writeString(sha256(loginData->username + loginData->password));
- msg.writeString(loginData->email);
- msg.writeString(loginData->captchaResponse);
-
- accountServerConnection->send(msg);
-}
-
-void LoginHandler::unregisterAccount(const std::string &username,
- const std::string &password)
-{
- MessageOut msg(PAMSG_UNREGISTER);
-
- msg.writeString(username);
- msg.writeString(sha256(username + password));
-
- accountServerConnection->send(msg);
-}
-
-Worlds LoginHandler::getWorlds() const
-{
- return Worlds();
-}
-
-void LoginHandler::reconnect()
-{
- MessageOut msg(PAMSG_RECONNECT);
- msg.writeString(netToken, 32);
- accountServerConnection->send(msg);
-}
-
-void LoginHandler::clearWorlds()
-{
-
-}
-
-} // namespace ManaServ
diff --git a/src/net/manaserv/loginhandler.h b/src/net/manaserv/loginhandler.h
deleted file mode 100644
index 72c43aec0..000000000
--- a/src/net/manaserv/loginhandler.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NET_MANASERV_LOGINHANDLER_H
-#define NET_MANASERV_LOGINHANDLER_H
-
-#include "net/loginhandler.h"
-#include "net/serverinfo.h"
-
-#include "net/manaserv/messagehandler.h"
-
-class LoginData;
-
-namespace ManaServ
-{
-
-class LoginHandler : public MessageHandler, public Net::LoginHandler
-{
- public:
- LoginHandler();
-
- void handleMessage(Net::MessageIn &msg);
-
- void connect();
-
- bool isConnected();
-
- void disconnect();
-
- int supportedOptionalActions() const
- { return Unregister | ChangeEmail | SetEmailOnRegister; }
-
- bool isRegistrationEnabled();
-
- void getRegistrationDetails();
-
- unsigned int getMinUserNameLength() const;
-
- unsigned int getMaxUserNameLength() const;
-
- void loginAccount(LoginData *loginData);
-
- void logout();
-
- void changeEmail(const std::string &email);
-
- void changePassword(const std::string &username,
- const std::string &oldPassword,
- const std::string &newPassword);
-
- void chooseServer(unsigned int server);
-
- void registerAccount(LoginData *loginData);
-
- void unregisterAccount(const std::string &username,
- const std::string &password);
-
- Worlds getWorlds() const;
-
- void reconnect();
-
- void clearWorlds();
-
- private:
- void handleLoginResponse(Net::MessageIn &msg);
- void handleRegisterResponse(Net::MessageIn &msg);
-
- void readServerInfo(Net::MessageIn &msg);
-
- LoginData *mLoginData;
- unsigned int mMinUserNameLength;
- unsigned int mMaxUserNameLength;
-};
-
-} // namespace ManaServ
-
-#endif // NET_MANASERV_LOGINHANDLER_H
diff --git a/src/net/manaserv/messagehandler.cpp b/src/net/manaserv/messagehandler.cpp
deleted file mode 100644
index 769f2a3b6..000000000
--- a/src/net/manaserv/messagehandler.cpp
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "net/manaserv/messagehandler.h"
-
-#include "net/manaserv/network.h"
-
-namespace ManaServ
-{
-
-MessageHandler::~MessageHandler()
-{
- unregisterHandler(this);
-}
-
-}
diff --git a/src/net/manaserv/messagehandler.h b/src/net/manaserv/messagehandler.h
deleted file mode 100644
index c09d59439..000000000
--- a/src/net/manaserv/messagehandler.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NET_MANASERV_MESSAGEHANDLER_H
-#define NET_MANASERV_MESSAGEHANDLER_H
-
-#include "net/messagehandler.h"
-
-namespace ManaServ
-{
-
-/**
- * \ingroup Network
- */
-class MessageHandler : public Net::MessageHandler
-{
- public:
- ~MessageHandler();
-
-};
-
-typedef const std::auto_ptr<MessageHandler> MessageHandlerPtr;
-
-}
-
-#endif // NET_MANASERV_MESSAGEHANDLER_H
diff --git a/src/net/manaserv/messagein.cpp b/src/net/manaserv/messagein.cpp
deleted file mode 100644
index bc97155a9..000000000
--- a/src/net/manaserv/messagein.cpp
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "net/manaserv/messagein.h"
-
-#include "enet/enet.h"
-
-namespace ManaServ
-{
-
-MessageIn::MessageIn(const char *data, unsigned int length):
- Net::MessageIn(data, length)
-{
- // Read the message ID
- mId = readInt16();
-}
-
-Sint16 MessageIn::readInt16()
-{
- Sint16 value = -1;
- if (mPos + 2 <= mLength)
- {
- uint16_t t;
- memcpy(&t, mData + mPos, 2);
- value = (unsigned short) ENET_NET_TO_HOST_16(t);
- }
- mPos += 2;
- return value;
-}
-
-int MessageIn::readInt32()
-{
- int value = -1;
- if (mPos + 4 <= mLength)
- {
- uint32_t t;
- memcpy(&t, mData + mPos, 4);
- value = ENET_NET_TO_HOST_32(t);
- }
- mPos += 4;
- return value;
-}
-
-}
diff --git a/src/net/manaserv/messagein.h b/src/net/manaserv/messagein.h
deleted file mode 100644
index f22cdabca..000000000
--- a/src/net/manaserv/messagein.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NET_MANASERV_MESSAGEIN_H
-#define NET_MANASERV_MESSAGEIN_H
-
-#include "net/messagein.h"
-
-namespace ManaServ
-{
-
-/**
- * Used for parsing an incoming message.
- *
- * \ingroup Network
- */
-class MessageIn : public Net::MessageIn
-{
- public:
- /**
- * Constructor.
- */
- MessageIn(const char *data, unsigned int length);
-
- Sint16 readInt16(); /**< Reads a short. */
- int readInt32(); /**< Reads a long. */
-};
-
-}
-
-#endif // NET_MANASERV_MESSAGEIN_H
diff --git a/src/net/manaserv/messageout.cpp b/src/net/manaserv/messageout.cpp
deleted file mode 100644
index 0bb1c0f77..000000000
--- a/src/net/manaserv/messageout.cpp
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "net/manaserv/messageout.h"
-
-#include "enet/enet.h"
-
-#include <cstring>
-#include <string>
-
-namespace ManaServ
-{
-
-MessageOut::MessageOut(short id):
- Net::MessageOut(id)
-{
- writeInt16(id);
-}
-
-MessageOut::~MessageOut()
-{
- free(mData);
-}
-
-void MessageOut::expand(size_t bytes)
-{
- mData = (char*)realloc(mData, mPos + bytes);
- mDataSize = mPos + bytes;
-}
-
-void MessageOut::writeInt16(Sint16 value)
-{
- expand(2);
- uint16_t t = ENET_HOST_TO_NET_16(value);
- memcpy(mData + mPos, &t, 2);
- mPos += 2;
-}
-
-void MessageOut::writeInt32(Sint32 value)
-{
- expand(4);
- uint32_t t = ENET_HOST_TO_NET_32(value);
- memcpy(mData + mPos, &t, 4);
- mPos += 4;
-}
-
-} // namespace ManaServ
diff --git a/src/net/manaserv/messageout.h b/src/net/manaserv/messageout.h
deleted file mode 100644
index dc583ab3d..000000000
--- a/src/net/manaserv/messageout.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NET_MANASERV_MESSAGEOUT_H
-#define NET_MANASERV_MESSAGEOUT_H
-
-#include "net/messageout.h"
-
-namespace ManaServ
-{
-
-class MessageOut : public Net::MessageOut
-{
- public:
- /**
- * Constructor.
- */
- MessageOut(short id);
-
- /**
- * Destructor.
- */
- ~MessageOut();
-
- void writeInt16(Sint16 value); /**< Writes a short. */
- void writeInt32(Sint32 value); /**< Writes a long. */
-
- protected:
- /**
- * Expand the packet data to be able to hold more data.
- *
- * NOTE: For performance enhancements this method could allocate extra
- * memory in advance instead of expanding size every time more data is
- * added.
- */
- void expand(size_t size);
-};
-
-}
-
-#endif // NET_MANASERV_MESSAGEOUT_H
diff --git a/src/net/manaserv/network.cpp b/src/net/manaserv/network.cpp
deleted file mode 100644
index 84e71eaf3..000000000
--- a/src/net/manaserv/network.cpp
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "net/manaserv/network.h"
-
-#include "logger.h"
-
-#include "net/manaserv/connection.h"
-#include "net/manaserv/internal.h"
-#include "net/manaserv/messagehandler.h"
-#include "net/manaserv/messagein.h"
-
-#include "enet/enet.h"
-
-#include <map>
-
-#include "debug.h"
-
-/**
- * The local host which is shared for all outgoing connections.
- */
-namespace
-{
- ENetHost *client;
-}
-
-namespace ManaServ
-{
-
-typedef std::map<unsigned short, MessageHandler*> MessageHandlers;
-typedef MessageHandlers::const_iterator MessageHandlerIterator;
-static MessageHandlers mMessageHandlers;
-
-void initialize()
-{
- if (enet_initialize())
- {
- logger->error("Failed to initialize ENet.");
- }
-
-#if defined(ENET_VERSION) && ENET_VERSION >= ENET_CUTOFF
- client = enet_host_create(nullptr, 3, 0, 0, 0);
-#else
- client = enet_host_create(nullptr, 3, 0, 0);
-#endif
-
- if (!client)
- {
- logger->error("Failed to create the local host.");
- }
-}
-
-void finalize()
-{
- if (!client)
- return; // Wasn't initialized at all
-
- if (connections)
- {
- logger->error("Tried to shutdown the network subsystem while there "
- "are network connections left!");
- }
-
- clearNetworkHandlers();
- enet_deinitialize();
-}
-
-Connection *getConnection()
-{
- if (!client)
- {
- logger->error("Tried to instantiate a network object before "
- "initializing the network subsystem!");
- }
-
- return new Connection(client);
-}
-
-void registerHandler(MessageHandler *handler)
-{
- for (const Uint16 *i = handler->handledMessages; *i; i++)
- mMessageHandlers[*i] = handler;
-}
-
-void unregisterHandler(MessageHandler *handler)
-{
- for (const Uint16 *i = handler->handledMessages; *i; i++)
- mMessageHandlers.erase(*i);
-}
-
-void clearNetworkHandlers()
-{
- mMessageHandlers.clear();
-}
-
-
-/**
- * Dispatches a message to the appropriate message handler and
- * destroys it afterwards.
- */
-namespace
-{
- void dispatchMessage(ENetPacket *packet)
- {
- MessageIn msg((const char *)packet->data, packet->dataLength);
-
- MessageHandlerIterator iter = mMessageHandlers.find(msg.getId());
-
- if (iter != mMessageHandlers.end())
- {
- //logger->log("Received packet %x (%i B)",
- // msg.getId(), msg.getLength());
- iter->second->handleMessage(msg);
- }
- else
- {
- logger->log("Unhandled packet %x (%i B)",
- msg.getId(), msg.getLength());
- }
-
- // Clean up the packet now that we're done using it.
- enet_packet_destroy(packet);
- }
-}
-
-void flush()
-{
- ENetEvent event;
-
- // Check if there are any new events
- while (enet_host_service(client, &event, 0) > 0)
- {
- switch (event.type)
- {
- case ENET_EVENT_TYPE_CONNECT:
- logger->log("Connected to port %d.", event.peer->address.port);
- // Store any relevant server information here.
- event.peer->data = 0;
- break;
-
- case ENET_EVENT_TYPE_RECEIVE:
- dispatchMessage(event.packet);
- break;
-
- case ENET_EVENT_TYPE_DISCONNECT:
- logger->log1("Disconnected.");
- // Reset the server information.
- event.peer->data = 0;
- break;
-
- case ENET_EVENT_TYPE_NONE:
- default:
- break;
- }
- }
-}
-
-}
diff --git a/src/net/manaserv/network.h b/src/net/manaserv/network.h
deleted file mode 100644
index 506d44b4f..000000000
--- a/src/net/manaserv/network.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NET_MANASERV_NETWORK_H
-#define NET_MANASERV_NETWORK_H
-
-#include <iosfwd>
-
-/**
- * \ingroup Network
- */
-namespace ManaServ
-{
- class MessageHandler;
- class MessageOut;
-
- class Connection;
-
- /**
- * Initializes the network subsystem.
- */
- void initialize();
-
- /**
- * Finalizes the network subsystem.
- */
- void finalize();
-
- /**
- * Returns a new Connection object. Should be deleted by the caller.
- */
- Connection *getConnection();
-
- /**
- * Registers a message handler. A message handler handles a certain
- * subset of incoming messages.
- */
- void registerHandler(MessageHandler *handler);
-
- /**
- * Unregisters a message handler.
- */
- void unregisterHandler(MessageHandler *handler);
-
- /**
- * Clears all registered message handlers.
- */
- void clearNetworkHandlers();
-
- /*
- * Handles all events and dispatches incoming messages to the
- * registered handlers
- */
- void flush();
-} // namespace ManaServ
-
-#endif
diff --git a/src/net/manaserv/npchandler.cpp b/src/net/manaserv/npchandler.cpp
deleted file mode 100644
index 24a58ebd8..000000000
--- a/src/net/manaserv/npchandler.cpp
+++ /dev/null
@@ -1,237 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "net/manaserv/npchandler.h"
-
-#include "actorspritemanager.h"
-
-#include "gui/npcdialog.h"
-#include "gui/npcpostdialog.h"
-
-#include "net/manaserv/connection.h"
-#include "net/manaserv/messagein.h"
-#include "net/manaserv/messageout.h"
-#include "net/manaserv/protocol.h"
-
-extern Net::NpcHandler *npcHandler;
-
-namespace ManaServ
-{
-
-extern Connection *gameServerConnection;
-
-NpcHandler::NpcHandler()
-{
- static const Uint16 _messages[] =
- {
- GPMSG_NPC_CHOICE,
- GPMSG_NPC_POST,
- GPMSG_NPC_MESSAGE,
- GPMSG_NPC_ERROR,
- GPMSG_NPC_CLOSE,
- GPMSG_NPC_NUMBER,
- GPMSG_NPC_STRING,
- 0
- };
- handledMessages = _messages;
- npcHandler = this;
-}
-
-void NpcHandler::handleMessage(Net::MessageIn &msg)
-{
- Being *being = actorSpriteManager->findBeing(msg.readInt16());
- if (!being || being->getType() != ActorSprite::NPC)
- return;
-
- int npcId = being->getId();
- NpcDialogs::iterator diag = mNpcDialogs.find(npcId);
- NpcDialog *dialog;
-
- if (diag == mNpcDialogs.end())
- {
- if (msg.getId() == GPMSG_NPC_ERROR || msg.getId() == GPMSG_NPC_CLOSE)
- return; // Dialog is pointless in these cases
-
- dialog = new NpcDialog(npcId);
- Wrapper wrap;
- wrap.dialog = dialog;
- mNpcDialogs[npcId] = wrap;
- }
- else
- {
- dialog = diag->second.dialog;
- }
-
- switch (msg.getId())
- {
- case GPMSG_NPC_CHOICE:
- dialog->choiceRequest();
- while (msg.getUnreadLength())
- {
- dialog->addChoice(msg.readString());
- }
- break;
-
- case GPMSG_NPC_NUMBER:
- {
- int min_num = msg.readInt32();
- int max_num = msg.readInt32();
- dialog->integerRequest(msg.readInt32(), min_num, max_num);
- break;
- }
-
- case GPMSG_NPC_STRING:
- dialog->textRequest("");
- break;
-
- case GPMSG_NPC_POST:
- {
- new NpcPostDialog(npcId);
- break;
- }
-
- case GPMSG_NPC_ERROR:
- dialog->close();
- if (diag != mNpcDialogs.end())
- {
- mNpcDialogs.erase(diag);
- }
- break;
-
- case GPMSG_NPC_MESSAGE:
- dialog->addText(msg.readString(msg.getUnreadLength()));
- dialog->showNextButton();
- break;
-
- case GPMSG_NPC_CLOSE:
- dialog->showCloseButton();
- break;
-
- default:
- break;
- }
-}
-
-void NpcHandler::talk(int npcId)
-{
- MessageOut msg(PGMSG_NPC_TALK);
- msg.writeInt16(npcId);
- gameServerConnection->send(msg);
-}
-
-void NpcHandler::nextDialog(int npcId)
-{
- MessageOut msg(PGMSG_NPC_TALK_NEXT);
- msg.writeInt16(npcId);
- gameServerConnection->send(msg);
-}
-
-void NpcHandler::closeDialog(int npcId)
-{
- MessageOut msg(PGMSG_NPC_TALK_NEXT);
- msg.writeInt16(npcId);
- gameServerConnection->send(msg);
-
- NpcDialogs::iterator it = mNpcDialogs.find(npcId);
- if (it != mNpcDialogs.end())
- {
- (*it).second.dialog->close();
- mNpcDialogs.erase(it);
- }
-}
-
-void NpcHandler::listInput(int npcId, unsigned char value)
-{
- MessageOut msg(PGMSG_NPC_SELECT);
- msg.writeInt16(npcId);
- msg.writeInt8(value);
- gameServerConnection->send(msg);
-}
-
-void NpcHandler::integerInput(int npcId, int value)
-{
- MessageOut msg(PGMSG_NPC_NUMBER);
- msg.writeInt16(npcId);
- msg.writeInt32(value);
- gameServerConnection->send(msg);
-}
-
-void NpcHandler::stringInput(int npcId, const std::string &value)
-{
- MessageOut msg(PGMSG_NPC_STRING);
- msg.writeInt16(npcId);
- msg.writeString(value);
- gameServerConnection->send(msg);
-}
-
-void NpcHandler::sendLetter(int npcId A_UNUSED, const std::string &recipient,
- const std::string &text)
-{
- MessageOut msg(PGMSG_NPC_POST_SEND);
- msg.writeString(recipient);
- msg.writeString(text);
- gameServerConnection->send(msg);
-}
-
-void NpcHandler::startShopping(int beingId A_UNUSED)
-{
- // TODO
-}
-
-void NpcHandler::buy(int beingId A_UNUSED)
-{
- // TODO
-}
-
-void NpcHandler::sell(int beingId A_UNUSED)
-{
- // TODO
-}
-
-void NpcHandler::buyItem(int beingId A_UNUSED, int itemId,
- unsigned char color A_UNUSED, int amount)
-{
- MessageOut msg(PGMSG_NPC_BUYSELL);
- msg.writeInt16(itemId);
- msg.writeInt16(amount);
- gameServerConnection->send(msg);
-}
-
-void NpcHandler::sellItem(int beingId A_UNUSED, int itemId, int amount)
-{
- MessageOut msg(PGMSG_NPC_BUYSELL);
- msg.writeInt16(itemId);
- msg.writeInt16(amount);
- gameServerConnection->send(msg);
-}
-
-void NpcHandler::endShopping(int beingId A_UNUSED)
-{
- // TODO
-}
-
-void NpcHandler::clearDialogs()
-{
- mNpcDialogs.clear();
-}
-
-} // namespace ManaServ
diff --git a/src/net/manaserv/npchandler.h b/src/net/manaserv/npchandler.h
deleted file mode 100644
index d71cd4d18..000000000
--- a/src/net/manaserv/npchandler.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NET_MANASERV_NPCHANDLER_H
-#define NET_MANASERV_NPCHANDLER_H
-
-#include "net/npchandler.h"
-
-#include "net/manaserv/messagehandler.h"
-
-#include <map>
-
-class NpcDialog;
-
-namespace ManaServ
-{
-
-class NpcHandler : public MessageHandler, public Net::NpcHandler
-{
- public:
- NpcHandler();
-
- void handleMessage(Net::MessageIn &msg);
-
- void talk(int npcId);
-
- void nextDialog(int npcId);
-
- void closeDialog(int npcId);
-
- void listInput(int npcId, unsigned char value);
-
- void integerInput(int npcId, int value);
-
- void stringInput(int npcId, const std::string &value);
-
- void sendLetter(int npcId, const std::string &recipient,
- const std::string &text);
-
- void startShopping(int beingId);
-
- void buy(int beingId);
-
- void sell(int beingId);
-
- void buyItem(int beingId, int itemId, unsigned char color, int amount);
-
- void sellItem(int beingId, int itemId, int amount);
-
- void endShopping(int beingId);
-
- void clearDialogs();
-
- private:
- typedef struct
- {
- NpcDialog* dialog;
- } Wrapper;
- typedef std::map<int, Wrapper> NpcDialogs;
- NpcDialogs mNpcDialogs;
-};
-
-} // namespace ManaServ
-
-#endif // NET_MANASERV_NPCHANDLER_H
diff --git a/src/net/manaserv/partyhandler.cpp b/src/net/manaserv/partyhandler.cpp
deleted file mode 100644
index 60dcaaaff..000000000
--- a/src/net/manaserv/partyhandler.cpp
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2008-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "net/manaserv/partyhandler.h"
-
-#include "event.h"
-#include "logger.h"
-#include "localplayer.h"
-
-#include "gui/socialwindow.h"
-
-#include "net/manaserv/connection.h"
-#include "net/manaserv/messagein.h"
-#include "net/manaserv/messageout.h"
-#include "net/manaserv/protocol.h"
-
-#include "utils/gettext.h"
-#include "utils/stringutils.h"
-
-#include <iostream>
-
-#define PARTY_ID 1
-
-extern Net::PartyHandler *partyHandler;
-
-namespace ManaServ
-{
-
-extern Connection *chatServerConnection;
-
-PartyHandler::PartyHandler():
- mParty(Party::getParty(PARTY_ID))
-{
- static const Uint16 _messages[] =
- {
- CPMSG_PARTY_INVITE_RESPONSE,
- CPMSG_PARTY_INVITED,
- CPMSG_PARTY_ACCEPT_INVITE_RESPONSE,
- CPMSG_PARTY_QUIT_RESPONSE,
- CPMSG_PARTY_NEW_MEMBER,
- CPMSG_PARTY_MEMBER_LEFT,
- CPMSG_PARTY_REJECTED,
- 0
- };
- handledMessages = _messages;
- partyHandler = this;
-}
-
-void PartyHandler::handleMessage(Net::MessageIn &msg)
-{
- switch (msg.getId())
- {
- case CPMSG_PARTY_INVITE_RESPONSE:
- {
- if (msg.readInt8() == ERRMSG_OK)
- {
-
- }
- } break;
-
- case CPMSG_PARTY_INVITED:
- {
- socialWindow->showPartyInvite(msg.readString());
- } break;
-
- case CPMSG_PARTY_ACCEPT_INVITE_RESPONSE:
- {
- if (msg.readInt8() == ERRMSG_OK)
- {
- //
- SERVER_NOTICE(_("Joined party."));
- }
- }
-
- case CPMSG_PARTY_QUIT_RESPONSE:
- {
- if (msg.readInt8() == ERRMSG_OK)
- {
- mParty->clearMembers();
- player_node->setParty(nullptr);
- }
- } break;
-
- case CPMSG_PARTY_NEW_MEMBER:
- {
- int id = msg.readInt16(); // being id
- std::string name = msg.readString();
-
- SERVER_NOTICE(strprintf(_("%s joined the party."),
- name.c_str()));
-
- if (id == player_node->getId())
- player_node->setParty(mParty);
-
- mParty->addMember(id, name);
- } break;
-
- case CPMSG_PARTY_MEMBER_LEFT:
- {
- mParty->removeMember(msg.readString());
- } break;
-
- case CPMSG_PARTY_REJECTED:
- {
- std::string name = msg.readString();
- SERVER_NOTICE(strprintf(
- _("%s rejected your invite."), name.c_str()));
- } break;
- default:
- break;
- }
-}
-
-void PartyHandler::create(const std::string &name A_UNUSED)
-{
- // TODO
-}
-
-void PartyHandler::join(int partyId A_UNUSED)
-{
- // TODO
-}
-
-void PartyHandler::invite(Being *being)
-{
- invite(being->getName());
-}
-
-void PartyHandler::invite(const std::string &name)
-{
- MessageOut msg(PCMSG_PARTY_INVITE);
-
- msg.writeString(name);
-
- chatServerConnection->send(msg);
-}
-
-void PartyHandler::inviteResponse(const std::string &inviter, bool accept)
-{
- MessageOut msg = MessageOut(accept ? PCMSG_PARTY_ACCEPT_INVITE :
- PCMSG_PARTY_REJECT_INVITE);
-
- msg.writeString(inviter);
-
- chatServerConnection->send(msg);
-}
-
-void PartyHandler::leave()
-{
- MessageOut msg(PCMSG_PARTY_QUIT);
-
- chatServerConnection->send(msg);
-}
-
-void PartyHandler::kick(Being *being A_UNUSED)
-{
- // TODO
-}
-
-void PartyHandler::kick(const std::string &name A_UNUSED)
-{
- // TODO
-}
-
-void PartyHandler::chat(const std::string &text A_UNUSED)
-{
- // TODO
-}
-
-void PartyHandler::requestPartyMembers() const
-{
- //MessageOut msg(PCMSG_GUILD_GET_MEMBERS);
-
- //msg.writeInt16(guildId);
-
- //chatServerConnection->send(msg);
-}
-
-void PartyHandler::clear()
-{
-}
-
-} // namespace ManaServ
diff --git a/src/net/manaserv/partyhandler.h b/src/net/manaserv/partyhandler.h
deleted file mode 100644
index 5497d5e34..000000000
--- a/src/net/manaserv/partyhandler.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2008-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NET_MANASERV_PARTYHANDLER_H
-#define NET_MANASERV_PARTYHANDLER_H
-
-#include "net/partyhandler.h"
-
-#include "net/manaserv/messagehandler.h"
-
-#include "localconsts.h"
-#include "party.h"
-
-#include <string>
-
-namespace ManaServ
-{
-
-class PartyHandler : public MessageHandler, public Net::PartyHandler
-{
-public:
- PartyHandler();
-
- void handleMessage(Net::MessageIn &msg);
-
- void create(const std::string &name = "");
-
- void join(int partyId);
-
- void invite(Being *being);
-
- void invite(const std::string &name);
-
- void inviteResponse(const std::string &inviter, bool accept);
-
- void leave();
-
- void kick(Being *being);
-
- void kick(const std::string &name);
-
- void chat(const std::string &text);
-
- void requestPartyMembers() const;
-
- PartyShare getShareExperience() const
- { return PARTY_SHARE_NO; }
-
- void setShareExperience(PartyShare share A_UNUSED)
- { }
-
- PartyShare getShareItems() const
- { return PARTY_SHARE_NO; }
-
- void setShareItems(PartyShare share A_UNUSED)
- { }
-
- void clear();
-
-private:
- Party *mParty;
-};
-
-} // namespace ManaServ
-
-#endif // NET_MANASERV_PARTYHANDLER_H
diff --git a/src/net/manaserv/playerhandler.cpp b/src/net/manaserv/playerhandler.cpp
deleted file mode 100644
index b2609cf02..000000000
--- a/src/net/manaserv/playerhandler.cpp
+++ /dev/null
@@ -1,455 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "net/manaserv/playerhandler.h"
-#include "net/manaserv/beinghandler.h"
-
-#include "client.h"
-#include "effectmanager.h"
-#include "game.h"
-#include "localplayer.h"
-#include "logger.h"
-#include "particle.h"
-#include "playerinfo.h"
-#include "configuration.h"
-
-#include "gui/chatwindow.h"
-#include "gui/gui.h"
-#include "gui/okdialog.h"
-#include "gui/viewport.h"
-
-#include "net/net.h"
-
-#include "net/manaserv/connection.h"
-#include "net/manaserv/defines.h"
-#include "net/manaserv/messagein.h"
-#include "net/manaserv/messageout.h"
-#include "net/manaserv/npchandler.h"
-#include "net/manaserv/protocol.h"
-#include "net/manaserv/attributes.h"
-
-/**
- * Max. distance we are willing to scroll after a teleport;
- * everything beyond will reset the port hard.
- * 32 is the nominal tile width/height.
- * @todo: Make this parameter read from config.
- */
-static const int MAP_TELEPORT_SCROLL_DISTANCE = 8 * 32;
-
-extern Net::PlayerHandler *playerHandler;
-
-namespace ManaServ
-{
-
-void RespawnRequestListener::action(const gcn::ActionEvent &event A_UNUSED)
-{
- Net::getPlayerHandler()->respawn();
-
- ManaServ::NpcHandler *handler =
- static_cast<ManaServ::NpcHandler*>(Net::getNpcHandler());
- handler->clearDialogs();
-}
-
-extern Connection *gameServerConnection;
-
-PlayerHandler::PlayerHandler()
-{
- static const Uint16 _messages[] =
- {
- GPMSG_PLAYER_MAP_CHANGE,
- GPMSG_PLAYER_SERVER_CHANGE,
- GPMSG_PLAYER_ATTRIBUTE_CHANGE,
- GPMSG_PLAYER_EXP_CHANGE,
- GPMSG_LEVELUP,
- GPMSG_LEVEL_PROGRESS,
- GPMSG_RAISE_ATTRIBUTE_RESPONSE,
- GPMSG_LOWER_ATTRIBUTE_RESPONSE,
- GPMSG_SPECIAL_STATUS,
- 0
- };
- handledMessages = _messages;
- playerHandler = this;
-}
-
-void PlayerHandler::handleMessage(Net::MessageIn &msg)
-{
- switch (msg.getId())
- {
- case GPMSG_PLAYER_MAP_CHANGE:
- handleMapChangeMessage(msg);
- break;
-
- case GPMSG_PLAYER_SERVER_CHANGE:
- { // TODO: Implement reconnecting to another game server
- msg.readString(32); // token
- std::string address = msg.readString();
- int port = msg.readInt16();
- logger->log("Changing server to %s:%d", address.c_str(), port);
- } break;
-
- case GPMSG_PLAYER_ATTRIBUTE_CHANGE:
- {
- logger->log1("ATTRIBUTE UPDATE:");
- while (msg.getUnreadLength())
- {
- int attrId = msg.readInt16();
- double base = msg.readInt32() / 256.0;
- double value = msg.readInt32() / 256.0;
-
- // Set the core player attribute the stat
- // depending on attribute link.
- int playerInfoId =
- Attributes::getPlayerInfoIdFromAttrId(attrId);
- if (playerInfoId > -1)
- {
- PlayerInfo::setAttribute(playerInfoId, value);
- }
- else
- {
- PlayerInfo::setStatBase(attrId, base);
- PlayerInfo::setStatMod(attrId, value - base);
- }
- }
- } break;
-
- case GPMSG_PLAYER_EXP_CHANGE:
- {
- logger->log1("EXP Update");
- while (msg.getUnreadLength())
- {
- int skill = msg.readInt16();
- int current = msg.readInt32();
- int next = msg.readInt32();
-
- PlayerInfo::setStatExperience(skill, current, next);
- }
- } break;
-
- case GPMSG_LEVELUP:
- {
- PlayerInfo::setAttribute(LEVEL, msg.readInt16());
- PlayerInfo::setAttribute(CHAR_POINTS, msg.readInt16());
- PlayerInfo::setAttribute(CORR_POINTS, msg.readInt16());
- Particle* effect = particleEngine->addEffect(
- paths.getStringValue("particles")
- + paths.getStringValue("levelUpEffectFile"), 0, 0);
- player_node->controlParticle(effect);
- } break;
-
-
- case GPMSG_LEVEL_PROGRESS:
- {
- PlayerInfo::setAttribute(EXP, msg.readInt8());
- } break;
-
-
- case GPMSG_RAISE_ATTRIBUTE_RESPONSE:
- {
- int errCode = msg.readInt8();
- int attrNum = msg.readInt16();
- switch (errCode)
- {
- case ATTRIBMOD_OK:
- {
- // feel(acknowledgment);
- } break;
- case ATTRIBMOD_INVALID_ATTRIBUTE:
- {
- logger->log("Warning: Server denied increase of attribute"
- " %d (unknown attribute) ", attrNum);
- } break;
- case ATTRIBMOD_NO_POINTS_LEFT:
- {
- // when the server says "you got no points" it
- // has to be correct. The server is always right!
- // undo attribute change and set points to 0
- logger->log("Warning: Server denied increase of attribute"
- " %d (no points left) ", attrNum);
- int attrValue = PlayerInfo::getStatBase(attrNum) - 1;
- PlayerInfo::setAttribute(CHAR_POINTS, 0);
- PlayerInfo::setStatBase(attrNum, attrValue);
- } break;
- case ATTRIBMOD_DENIED:
- {
- // undo attribute change
- logger->log("Warning: Server denied increase of attribute"
- " %d (reason unknown) ", attrNum);
- int points = PlayerInfo::getAttribute(CHAR_POINTS) - 1;
- PlayerInfo::setAttribute(CHAR_POINTS, points);
-
- int attrValue = PlayerInfo::getStatBase(attrNum) - 1;
- PlayerInfo::setStatBase(attrNum, attrValue);
- } break;
- default:
- break;
- }
- } break;
-
- case GPMSG_LOWER_ATTRIBUTE_RESPONSE:
- {
- int errCode = msg.readInt8();
- int attrNum = msg.readInt16();
- switch (errCode)
- {
- case ATTRIBMOD_OK:
- {
- // feel(acknowledgment);
- } break;
- case ATTRIBMOD_INVALID_ATTRIBUTE:
- {
- logger->log("Warning: Server denied reduction of attribute"
- " %d (unknown attribute) ", attrNum);
- } break;
- case ATTRIBMOD_NO_POINTS_LEFT:
- {
- // when the server says "you got no points" it
- // has to be correct. The server is always right!
- // undo attribute change and set points to 0
- logger->log("Warning: Server denied reduction of attribute"
- " %d (no points left) ", attrNum);
- int attrValue = PlayerInfo::getStatBase(attrNum) + 1;
- PlayerInfo::setAttribute(CHAR_POINTS, 0);
- PlayerInfo::setAttribute(CORR_POINTS, 0);
- PlayerInfo::setStatBase(attrNum, attrValue);
- break;
- } break;
- case ATTRIBMOD_DENIED:
- {
- // undo attribute change
- logger->log("Warning: Server denied reduction of attribute"
- " %d (reason unknown) ", attrNum);
- int charaPoints = PlayerInfo::getAttribute(
- CHAR_POINTS) - 1;
-
- PlayerInfo::setAttribute(CHAR_POINTS, charaPoints);
-
- int correctPoints = PlayerInfo::getAttribute(CORR_POINTS)
- + 1;
-
- PlayerInfo::setAttribute(CORR_POINTS, correctPoints);
-
- int attrValue = PlayerInfo::getStatBase(attrNum) + 1;
- PlayerInfo::setStatBase(attrNum, attrValue);
- } break;
- default:
- break;
- }
-
- } break;
-
- case GPMSG_SPECIAL_STATUS :
- {
- while (msg.getUnreadLength())
- {
- // { B specialID, L current, L max, L recharge }
- int id = msg.readInt8();
- int current = msg.readInt32();
- int max = msg.readInt32();
- int recharge = msg.readInt32();
- PlayerInfo::setSpecialStatus(id, current, max, recharge);
- }
- } break;
- /*
- case SMSG_PLAYER_ARROW_MESSAGE:
- {
- Sint16 type = msg.readInt16();
-
- switch (type)
- {
- case 0:
- localChatTab->chatLog(_("Equip arrows first."),
- BY_SERVER);
- break;
- default:
- logger->log("0x013b: Unhandled message %i", type);
- break;
- }
- }
- break;
- */
- default:
- break;
- }
-}
-
-void PlayerHandler::handleMapChangeMessage(Net::MessageIn &msg)
-{
- const std::string mapName = msg.readString();
- const unsigned short x = msg.readInt16();
- const unsigned short y = msg.readInt16();
-
- Game *game = Game::instance();
- const bool sameMap = (game->getCurrentMapName() == mapName);
-
- logger->log("Changing map to %s (%d, %d)", mapName.c_str(), x, y);
-
- // Switch the actual map, deleting the previous one
- game->changeMap(mapName);
-
- const Vector &playerPos = player_node->getPosition();
- float scrollOffsetX = 0.0f;
- float scrollOffsetY = 0.0f;
-
- /* Scroll if neccessary */
- if (!sameMap
- || (abs(x - (int) playerPos.x) > MAP_TELEPORT_SCROLL_DISTANCE)
- || (abs(y - (int) playerPos.y) > MAP_TELEPORT_SCROLL_DISTANCE))
- {
- scrollOffsetX = x - (int) playerPos.x;
- scrollOffsetY = y - (int) playerPos.y;
- }
-
- player_node->setAction(Being::STAND);
- player_node->setPosition(x, y);
- player_node->setDestination(x, y);
-
- logger->log("Adjust scrolling by %d,%d", (int) scrollOffsetX,
- (int) scrollOffsetY);
- viewport->scrollBy(scrollOffsetX, scrollOffsetY);
-}
-
-void PlayerHandler::attack(int id, bool keep A_UNUSED)
-{
- MessageOut msg(PGMSG_ATTACK);
- msg.writeInt16(id);
- gameServerConnection->send(msg);
-}
-
-void PlayerHandler::stopAttack()
-{
-
-}
-
-void PlayerHandler::emote(Uint8 emoteId A_UNUSED)
-{
- // TODO
-}
-
-void PlayerHandler::increaseAttribute(int attr)
-{
- MessageOut msg(PGMSG_RAISE_ATTRIBUTE);
- msg.writeInt16(attr);
- gameServerConnection->send(msg);
-}
-
-void PlayerHandler::decreaseAttribute(int attr)
-{
- MessageOut msg(PGMSG_LOWER_ATTRIBUTE);
- msg.writeInt16(attr);
- gameServerConnection->send(msg);
-}
-
-void PlayerHandler::increaseSkill(unsigned short skillId A_UNUSED)
-{
- // Not used atm
-}
-
-void PlayerHandler::pickUp(FloorItem *floorItem)
-{
- if (floorItem)
- {
- int id = floorItem->getId();
- MessageOut msg(PGMSG_PICKUP);
- msg.writeInt16(id >> 16);
- msg.writeInt16(id & 0xFFFF);
- gameServerConnection->send(msg);
- }
-}
-
-void PlayerHandler::setDirection(char direction)
-{
- MessageOut msg(PGMSG_DIRECTION_CHANGE);
- msg.writeInt8(direction);
- gameServerConnection->send(msg);
-}
-
-void PlayerHandler::setDestination(int x, int y, int /* direction */)
-{
- MessageOut msg(PGMSG_WALK);
- msg.writeInt16(x);
- msg.writeInt16(y);
- gameServerConnection->send(msg);
-}
-
-void PlayerHandler::changeAction(Being::Action action)
-{
- player_node->setAction(action);
-
- MessageOut msg(PGMSG_ACTION_CHANGE);
- msg.writeInt8(action);
- gameServerConnection->send(msg);
-}
-
-void PlayerHandler::respawn()
-{
- MessageOut msg(PGMSG_RESPAWN);
- gameServerConnection->send(msg);
-}
-
-void PlayerHandler::ignorePlayer(const std::string &player A_UNUSED,
- bool ignore A_UNUSED)
-{
- // TODO
-}
-
-void PlayerHandler::ignoreAll(bool ignore A_UNUSED)
-{
- // TODO
-}
-
-bool PlayerHandler::canUseMagic() const
-{
- return true;
-}
-
-bool PlayerHandler::canCorrectAttributes() const
-{
- return true;
-}
-
-int PlayerHandler::getJobLocation() const
-{
- return -1;
-}
-
-int PlayerHandler::getAttackLocation() const
-{
- return -1;
-}
-
-Vector PlayerHandler::getDefaultWalkSpeed() const
-{
- // Return translation in pixels per ticks.
- return ManaServ::BeingHandler::giveSpeedInPixelsPerTicks(6.0f);
-}
-
-void PlayerHandler::requestOnlineList()
-{
-
-}
-
-void PlayerHandler::updateStatus(Uint8 status)
-{
-
-}
-
-} // namespace ManaServ
diff --git a/src/net/manaserv/playerhandler.h b/src/net/manaserv/playerhandler.h
deleted file mode 100644
index 23d2f5e32..000000000
--- a/src/net/manaserv/playerhandler.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NET_MANASERV_PLAYERHANDLER_H
-#define NET_MANASERV_PLAYERHANDLER_H
-
-#include "net/playerhandler.h"
-
-#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:
- PlayerHandler();
-
- void handleMessage(Net::MessageIn &msg);
-
- void attack(int id, bool keep = false);
- void stopAttack();
- void emote(Uint8 emoteId);
-
- void increaseAttribute(int attr);
- void decreaseAttribute(int attr);
- void increaseSkill(unsigned short skillId);
-
- void pickUp(FloorItem *floorItem);
- void setDirection(char direction);
- void setDestination(int x, int y, int direction = -1);
- void changeAction(Being::Action action);
-
- void respawn();
-
- void ignorePlayer(const std::string &player, bool ignore);
- void ignoreAll(bool ignore);
-
- bool canUseMagic() const;
- bool canCorrectAttributes() const;
-
- int getJobLocation() const;
- int getAttackLocation() const;
-
- void requestOnlineList();
-
- Vector getDefaultWalkSpeed() const;
-
- void updateStatus(Uint8 status);
-
- private:
- void handleMapChangeMessage(Net::MessageIn &msg);
-};
-
-} // namespace ManaServ
-
-#endif // NET_MANASERV_PLAYERHANDLER_H
diff --git a/src/net/manaserv/protocol.h b/src/net/manaserv/protocol.h
deleted file mode 100644
index 58103ffb1..000000000
--- a/src/net/manaserv/protocol.h
+++ /dev/null
@@ -1,393 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef MANASERV_PROTOCOL_H
-#define MANASERV_PROTOCOL_H
-
-/**
- * Enumerated type for communicated messages:
- *
- * - PAMSG_*: from client to account server
- * - APMSG_*: from account server to client
- * - PCMSG_*: from client to chat server
- * - CPMSG_*: from chat server to client
- * - PGMSG_*: from client to game server
- * - GPMSG_*: from game server to client
- * - GAMSG_*: from game server to account server
- *
- * Components: B byte, W word, D double word, S variable-size string
- * C tile-based coordinates (B*3)
- *
- * Hosts: P (player's client), A (account server), C (char server),
- * G (game server)
- *
- * TODO - Document specific error codes for each packet
- */
-enum {
- // Login/Register
- PAMSG_REGISTER = 0x0000, // D version, S username, S password, S email, S captcha response
- APMSG_REGISTER_RESPONSE = 0x0002, // B error, S updatehost, S Client data URL, B Character slots
- PAMSG_UNREGISTER = 0x0003, // S username, S password
- APMSG_UNREGISTER_RESPONSE = 0x0004, // B error
- PAMSG_REQUEST_REGISTER_INFO = 0x0005, //
- APMSG_REGISTER_INFO_RESPONSE = 0x0006, // B byte registration Allowed, byte minNameLength, byte maxNameLength, string captchaURL, string captchaInstructions
- PAMSG_LOGIN = 0x0010, // D version, S username, S password
- APMSG_LOGIN_RESPONSE = 0x0012, // B error, S updatehost, S Client data URL, B Character slots
- PAMSG_LOGOUT = 0x0013, // -
- APMSG_LOGOUT_RESPONSE = 0x0014, // B error
- PAMSG_CHAR_CREATE = 0x0020, // S name, B hair style, B hair color, B gender, B slot, W*6 stats
- APMSG_CHAR_CREATE_RESPONSE = 0x0021, // B error
- PAMSG_CHAR_DELETE = 0x0022, // B slot
- APMSG_CHAR_DELETE_RESPONSE = 0x0023, // B error
- // B slot, S name, B gender, B hair style, B hair color, W level,
- // W character points, W correction points,
- // {D attr id, D base value (in 1/256ths) D mod value (in 256ths) }*
- APMSG_CHAR_INFO = 0x0024, // ^
- PAMSG_CHAR_SELECT = 0x0026, // B slot
- APMSG_CHAR_SELECT_RESPONSE = 0x0027, // B error, B*32 token, S game address, W game port, S chat address, W chat port
- PAMSG_EMAIL_CHANGE = 0x0030, // S email
- APMSG_EMAIL_CHANGE_RESPONSE = 0x0031, // B error
- PAMSG_PASSWORD_CHANGE = 0x0034, // S old password, S new password
- APMSG_PASSWORD_CHANGE_RESPONSE = 0x0035, // B error
-
- PGMSG_CONNECT = 0x0050, // B*32 token
- GPMSG_CONNECT_RESPONSE = 0x0051, // B error
- PCMSG_CONNECT = 0x0053, // B*32 token
- CPMSG_CONNECT_RESPONSE = 0x0054, // B error
-
- PGMSG_DISCONNECT = 0x0060, // B reconnect account
- GPMSG_DISCONNECT_RESPONSE = 0x0061, // B error, B*32 token
- PCMSG_DISCONNECT = 0x0063, // -
- CPMSG_DISCONNECT_RESPONSE = 0x0064, // B error
-
- PAMSG_RECONNECT = 0x0065, // B*32 token
- APMSG_RECONNECT_RESPONSE = 0x0066, // B error
-
- // Game
- GPMSG_PLAYER_MAP_CHANGE = 0x0100, // S filename, W x, W y
- GPMSG_PLAYER_SERVER_CHANGE = 0x0101, // B*32 token, S game address, W game port
- PGMSG_PICKUP = 0x0110, // W*2 position
- PGMSG_DROP = 0x0111, // B slot, B amount
- PGMSG_EQUIP = 0x0112, // B slot
- PGMSG_UNEQUIP = 0x0113, // B slot
- PGMSG_MOVE_ITEM = 0x0114, // B slot1, B slot2, B amount
- GPMSG_INVENTORY = 0x0120, // { W slot, W item id [, W amount] (if item id is nonzero) }*
- GPMSG_INVENTORY_FULL = 0x0121, // W inventory slot count { W slot, W itemId, W amount } { B equip slot, W invy slot}*
- GPMSG_EQUIP = 0x0122, // { W Invy slot, B equip slot type count { B equip slot, B number used} }*
- GPMSG_PLAYER_ATTRIBUTE_CHANGE = 0x0130, // { W attribute, D base value (in 1/256ths), D modified value (in 1/256ths)}*
- GPMSG_PLAYER_EXP_CHANGE = 0x0140, // { W skill, D exp got, D exp needed }*
- GPMSG_LEVELUP = 0x0150, // W new level, W character points, W correction points
- GPMSG_LEVEL_PROGRESS = 0x0151, // B percent completed to next levelup
- PGMSG_RAISE_ATTRIBUTE = 0x0160, // W attribute
- GPMSG_RAISE_ATTRIBUTE_RESPONSE = 0x0161, // B error, W attribute
- PGMSG_LOWER_ATTRIBUTE = 0x0170, // W attribute
- GPMSG_LOWER_ATTRIBUTE_RESPONSE = 0x0171, // B error, W attribute
- PGMSG_RESPAWN = 0x0180, // -
- GPMSG_BEING_ENTER = 0x0200, // B type, W being id, B action, W*2 position
- // character: S name, B hair style, B hair color, B gender, B item bitmask, { W item id }*
- // monster: W type id
- // npc: W type id
- GPMSG_BEING_LEAVE = 0x0201, // W being id
- GPMSG_ITEM_APPEAR = 0x0202, // W item id, W*2 position
- GPMSG_BEING_LOOKS_CHANGE = 0x0210, // W weapon, W hat, W top clothes, W bottom clothes
- PGMSG_WALK = 0x0260, // W*2 destination
- PGMSG_ACTION_CHANGE = 0x0270, // B Action
- GPMSG_BEING_ACTION_CHANGE = 0x0271, // W being id, B action
- PGMSG_DIRECTION_CHANGE = 0x0272, // B Direction
- GPMSG_BEING_DIR_CHANGE = 0x0273, // W being id, B direction
- GPMSG_BEING_HEALTH_CHANGE = 0x0274, // W being id, W hp, W max hp
- GPMSG_BEINGS_MOVE = 0x0280, // { W being id, B flags [, W*2 position, B speed] }*
- GPMSG_ITEMS = 0x0281, // { W item id, W*2 position }*
- PGMSG_ATTACK = 0x0290, // W being id
- GPMSG_BEING_ATTACK = 0x0291, // W being id, B direction, B attacktype
- PGMSG_USE_SPECIAL = 0x0292, // B specialID
- GPMSG_SPECIAL_STATUS = 0x0293, // { B specialID, D current, D max, D recharge }
- PGMSG_SAY = 0x02A0, // S text
- GPMSG_SAY = 0x02A1, // W being id, S text
- GPMSG_NPC_CHOICE = 0x02B0, // W being id, { S text }*
- GPMSG_NPC_MESSAGE = 0x02B1, // W being id, B* text
- PGMSG_NPC_TALK = 0x02B2, // W being id
- PGMSG_NPC_TALK_NEXT = 0x02B3, // W being id
- PGMSG_NPC_SELECT = 0x02B4, // W being id, B choice
- GPMSG_NPC_BUY = 0x02B5, // W being id, { W item id, W amount, W cost }*
- GPMSG_NPC_SELL = 0x02B6, // W being id, { W item id, W amount, W cost }*
- PGMSG_NPC_BUYSELL = 0x02B7, // W item id, W amount
- GPMSG_NPC_ERROR = 0x02B8, // B error
- GPMSG_NPC_CLOSE = 0x02B9, // W being id
- GPMSG_NPC_POST = 0x02D0, // W being id
- PGMSG_NPC_POST_SEND = 0x02D1, // W being id, { S name, S text, W item id }
- GPMSG_NPC_POST_GET = 0x02D2, // W being id, { S name, S text, W item id }
- PGMSG_NPC_NUMBER = 0x02D3, // W being id, D number
- PGMSG_NPC_STRING = 0x02D4, // W being id, S string
- GPMSG_NPC_NUMBER = 0x02D5, // W being id, D max, D min, D default
- GPMSG_NPC_STRING = 0x02D6, // W being id
- PGMSG_TRADE_REQUEST = 0x02C0, // W being id
- GPMSG_TRADE_REQUEST = 0x02C1, // W being id
- GPMSG_TRADE_START = 0x02C2, // -
- GPMSG_TRADE_COMPLETE = 0x02C3, // -
- PGMSG_TRADE_CANCEL = 0x02C4, // -
- GPMSG_TRADE_CANCEL = 0x02C5, // -
- PGMSG_TRADE_AGREED = 0x02C6, // -
- GPMSG_TRADE_AGREED = 0x02C7, // -
- PGMSG_TRADE_CONFIRM = 0x02C8, // -
- GPMSG_TRADE_CONFIRM = 0x02C9, // -
- PGMSG_TRADE_ADD_ITEM = 0x02CA, // B slot, B amount
- GPMSG_TRADE_ADD_ITEM = 0x02CB, // W item id, B amount
- PGMSG_TRADE_SET_MONEY = 0x02CC, // D amount
- GPMSG_TRADE_SET_MONEY = 0x02CD, // D amount
- GPMSG_TRADE_BOTH_CONFIRM = 0x02CE, // -
- PGMSG_USE_ITEM = 0x0300, // B slot
- GPMSG_USE_RESPONSE = 0x0301, // B error
- GPMSG_BEINGS_DAMAGE = 0x0310, // { W being id, W amount }*
- GPMSG_CREATE_EFFECT_POS = 0x0320, // W effect id, W*2 position
- GPMSG_CREATE_EFFECT_BEING = 0x0321, // W effect id, W BeingID
-
- // Guild
- PCMSG_GUILD_CREATE = 0x0350, // S name
- CPMSG_GUILD_CREATE_RESPONSE = 0x0351, // B error, W guild, B rights, W channel
- PCMSG_GUILD_INVITE = 0x0352, // W id, S name
- CPMSG_GUILD_INVITE_RESPONSE = 0x0353, // B error
- PCMSG_GUILD_ACCEPT = 0x0354, // W id
- CPMSG_GUILD_ACCEPT_RESPONSE = 0x0355, // B error, W guild, B rights, W channel
- PCMSG_GUILD_GET_MEMBERS = 0x0356, // W id
- CPMSG_GUILD_GET_MEMBERS_RESPONSE = 0x0357, // S names, B online
- CPMSG_GUILD_UPDATE_LIST = 0x0358, // W id, S name, B event
- PCMSG_GUILD_QUIT = 0x0360, // W id
- CPMSG_GUILD_QUIT_RESPONSE = 0x0361, // B error
- PCMSG_GUILD_PROMOTE_MEMBER = 0x0365, // W guild, S name, B rights
- CPMSG_GUILD_PROMOTE_MEMBER_RESPONSE = 0x0366, // B error
- PCMSG_GUILD_KICK_MEMBER = 0x0370, // W guild, S name
- CPMSG_GUILD_KICK_MEMBER_RESPONSE = 0x0371, // B error
-
- CPMSG_GUILD_INVITED = 0x0388, // S char name, S guild name, W id
- CPMSG_GUILD_REJOIN = 0x0389, // S name, W guild, W rights, W channel, S announce
-
- // Party
- PCMSG_PARTY_INVITE = 0x03A0, // S name
- CPMSG_PARTY_INVITE_RESPONSE = 0x03A1, // B error, S name
- CPMSG_PARTY_INVITED = 0x03A2, // S name
- PCMSG_PARTY_ACCEPT_INVITE = 0x03A5, // S name
- CPMSG_PARTY_ACCEPT_INVITE_RESPONSE = 0x03A6, // B error, { S name }
- PCMSG_PARTY_REJECT_INVITE = 0x03A7, // S name
- CPMSG_PARTY_REJECTED = 0x03A8, // S name
- PCMSG_PARTY_QUIT = 0x03AA, // -
- CPMSG_PARTY_QUIT_RESPONSE = 0x03AB, // B error
- CPMSG_PARTY_NEW_MEMBER = 0x03B0, // W being id, S name
- CPMSG_PARTY_MEMBER_LEFT = 0x03B1, // W being id
-
- // Chat
- CPMSG_ERROR = 0x0401, // B error
- CPMSG_ANNOUNCEMENT = 0x0402, // S text
- CPMSG_PRIVMSG = 0x0403, // S user, S text
- CPMSG_PUBMSG = 0x0404, // W channel, S user, S text
- PCMSG_CHAT = 0x0410, // S text, W channel
- PCMSG_ANNOUNCE = 0x0411, // S text
- PCMSG_PRIVMSG = 0x0412, // S user, S text
- PCMSG_WHO = 0x0415, // -
- CPMSG_WHO_RESPONSE = 0x0416, // { S user }
-
- // -- Channeling
- CPMSG_CHANNEL_EVENT = 0x0430, // W channel, B event, S info
- PCMSG_ENTER_CHANNEL = 0x0440, // S channel, S password
- CPMSG_ENTER_CHANNEL_RESPONSE = 0x0441, // B error, W id, S name, S topic, S userlist
- PCMSG_QUIT_CHANNEL = 0x0443, // W channel id
- CPMSG_QUIT_CHANNEL_RESPONSE = 0x0444, // B error, W channel id
- PCMSG_LIST_CHANNELS = 0x0445, // -
- CPMSG_LIST_CHANNELS_RESPONSE = 0x0446, // S names, W number of users
- PCMSG_LIST_CHANNELUSERS = 0x0460, // S channel
- CPMSG_LIST_CHANNELUSERS_RESPONSE = 0x0461, // S channel, { S user, B mode }
- PCMSG_TOPIC_CHANGE = 0x0462, // W channel id, S topic
- // -- User modes
- PCMSG_USER_MODE = 0x0465, // W channel id, S name, B mode
- PCMSG_KICK_USER = 0x0466, // W channel id, S name
-
- // Inter-server
- GAMSG_REGISTER = 0x0500, // S address, W port, S password, D items db revision, { W map id }*
- AGMSG_REGISTER_RESPONSE = 0x0501, // C item version, C password response
- AGMSG_ACTIVE_MAP = 0x0502, // W map id
- AGMSG_PLAYER_ENTER = 0x0510, // B*32 token, D id, S name, serialised character data
- GAMSG_PLAYER_DATA = 0x0520, // D id, serialised character data
- GAMSG_REDIRECT = 0x0530, // D id
- AGMSG_REDIRECT_RESPONSE = 0x0531, // D id, B*32 token, S game address, W game port
- GAMSG_PLAYER_RECONNECT = 0x0532, // D id, B*32 token
- GAMSG_PLAYER_SYNC = 0x0533, // serialised sync data
- GAMSG_SET_QUEST = 0x0540, // D id, S name, S value
- GAMSG_GET_QUEST = 0x0541, // D id, S name
- AGMSG_GET_QUEST_RESPONSE = 0x0542, // D id, S name, S value
- GAMSG_BAN_PLAYER = 0x0550, // D id, W duration
- GAMSG_CHANGE_PLAYER_LEVEL = 0x0555, // D id, W level
- GAMSG_CHANGE_ACCOUNT_LEVEL = 0x0556, // D id, W level
- GAMSG_STATISTICS = 0x0560, // { W map id, W thing nb, W monster nb, W player nb, { D character id }* }*
- CGMSG_CHANGED_PARTY = 0x0590, // D character id, D party id
- GCMSG_REQUEST_POST = 0x05A0, // D character id
- CGMSG_POST_RESPONSE = 0x05A1, // D receiver id, { S sender name, S letter, W num attachments { W attachment item id, W quantity } }
- GCMSG_STORE_POST = 0x05A5, // D sender id, S receiver name, S letter, { W attachment item id, W quantity }
- CGMSG_STORE_POST_RESPONSE = 0x05A6, // D id, B error
- GAMSG_TRANSACTION = 0x0600, // D character id, D action, S message
-
- XXMSG_INVALID = 0x7FFF
-};
-
-// Generic return values
-
-enum {
- ERRMSG_OK = 0, // everything is fine
- ERRMSG_FAILURE, // the action failed
- ERRMSG_NO_LOGIN, // the user is not yet logged
- ERRMSG_NO_CHARACTER_SELECTED, // the user needs a character
- ERRMSG_INSUFFICIENT_RIGHTS, // the user is not privileged
- ERRMSG_INVALID_ARGUMENT, // part of the received message was invalid
- ERRMSG_EMAIL_ALREADY_EXISTS, // The Email Address already exists
- ERRMSG_ALREADY_TAKEN, // name used was already taken
- ERRMSG_SERVER_FULL, // the server is overloaded
- ERRMSG_TIME_OUT, // data failed to arrive in due time
- ERRMSG_LIMIT_REACHED // limit reached
-};
-
-// used in AGMSG_REGISTER_RESPONSE to show state of item db
-enum {
- DATA_VERSION_OK = 0x00,
- DATA_VERSION_OUTDATED = 0x01
-};
-
-// used in AGMSG_REGISTER_RESPNSE to show if password was accepted
-enum {
- PASSWORD_OK = 0x00,
- PASSWORD_BAD = 0x01
-};
-
-// used to identify part of sync message
-enum {
- SYNC_CHARACTER_POINTS = 0x01, // D charId, D charPoints, D corrPoints
- SYNC_CHARACTER_ATTRIBUTE = 0x02, // D charId, D attrId, DF base, DF mod
- SYNC_CHARACTER_SKILL = 0x03, // D charId, B skillId, D skill value
- SYNC_ONLINE_STATUS = 0x04, // D charId, B 0x00 = offline, 0x01 = online
- SYNC_END_OF_BUFFER = 0xFF // shows, that the buffer ends here.
-};
-
-// Login specific return values
-enum {
- LOGIN_INVALID_VERSION = 0x40, // the user is using an incompatible protocol
- LOGIN_INVALID_TIME = 0x50, // the user tried logging in too fast
- LOGIN_BANNED // the user is currently banned
-};
-
-// Account register specific return values
-enum {
- REGISTER_INVALID_VERSION = 0x40, // the user is using an incompatible protocol
- REGISTER_EXISTS_USERNAME, // there already is an account with this username
- REGISTER_EXISTS_EMAIL, // there already is an account with this email address
- REGISTER_CAPTCHA_WRONG // user didn't solve the captcha correctly
-};
-
-// Character creation specific return values
-enum {
- CREATE_INVALID_HAIRSTYLE = 0x40,
- CREATE_INVALID_HAIRCOLOR,
- CREATE_INVALID_GENDER,
- CREATE_ATTRIBUTES_TOO_HIGH,
- CREATE_ATTRIBUTES_TOO_LOW,
- CREATE_ATTRIBUTES_OUT_OF_RANGE,
- CREATE_EXISTS_NAME,
- CREATE_TOO_MUCH_CHARACTERS,
- CREATE_INVALID_SLOT
-};
-
-// Character attribute modification specific return value
-enum AttribmodResponseCode {
- ATTRIBMOD_OK = ERRMSG_OK,
- ATTRIBMOD_INVALID_ATTRIBUTE = 0x40,
- ATTRIBMOD_NO_POINTS_LEFT,
- ATTRIBMOD_DENIED
-};
-
-// Object type enumeration
-enum ThingType
-{
- // A simple item.
- OBJECT_ITEM = 0,
- // An item that toggle map/quest actions (doors, switchs, ...)
- // and can speak (map panels).
- OBJECT_ACTOR,
- // Non-Playable-Character is an actor capable of movement and maybe actions.
- OBJECT_NPC,
- // A monster (moving actor with AI. Should be able to toggle map/quest
- // actions, too).
- OBJECT_MONSTER,
- // A normal being.
- OBJECT_CHARACTER,
- // A effect to be shown.
- OBJECT_EFFECT,
- // Server-only object.
- OBJECT_OTHER
-};
-
-// Moving object flags
-enum {
- // Payload contains the current position.
- MOVING_POSITION = 1,
- // Payload contains the destination.
- MOVING_DESTINATION = 2
-};
-
-// Email change specific return values
-enum {
- EMAILCHG_EXISTS_EMAIL = 0x40
-};
-
-// Chat errors return values
-enum {
- CHAT_USING_BAD_WORDS = 0x40,
- CHAT_UNHANDLED_COMMAND
-};
-
-// Chat channels event values
-enum {
- CHAT_EVENT_NEW_PLAYER = 0,
- CHAT_EVENT_LEAVING_PLAYER,
- CHAT_EVENT_TOPIC_CHANGE,
- CHAT_EVENT_MODE_CHANGE,
- CHAT_EVENT_KICKED_PLAYER
-};
-
-// Guild member event values
-enum {
- GUILD_EVENT_NEW_PLAYER = 0,
- GUILD_EVENT_LEAVING_PLAYER,
- GUILD_EVENT_ONLINE_PLAYER,
- GUILD_EVENT_OFFLINE_PLAYER
-};
-
-
-enum
-{
- SPRITE_BASE = 0,
- SPRITE_SHOE,
- SPRITE_BOTTOMCLOTHES,
- SPRITE_TOPCLOTHES,
- SPRITE_HAIR,
- SPRITE_HAT,
- SPRITE_WEAPON,
- SPRITE_VECTOREND
-};
-
-#endif // MANASERV_PROTOCOL_H
diff --git a/src/net/manaserv/specialhandler.cpp b/src/net/manaserv/specialhandler.cpp
deleted file mode 100644
index c168afd7c..000000000
--- a/src/net/manaserv/specialhandler.cpp
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "net/manaserv/specialhandler.h"
-
-#include "net/manaserv/connection.h"
-#include "net/manaserv/messagein.h"
-#include "net/manaserv/messageout.h"
-#include "net/manaserv/protocol.h"
-
-#include "debug.h"
-
-extern Net::SpecialHandler *specialHandler;
-
-namespace ManaServ
-{
-
-extern Connection *gameServerConnection;
-
-SpecialHandler::SpecialHandler()
-{
- specialHandler = this;
-}
-
-void SpecialHandler::handleMessage(Net::MessageIn &msg A_UNUSED)
-{
- // TODO
-}
-
-void SpecialHandler::use(int id)
-{
- MessageOut msg(PGMSG_USE_SPECIAL);
- msg.writeInt8(id);
- gameServerConnection->send(msg);
-}
-
-void SpecialHandler::useBeing(int id A_UNUSED, int level A_UNUSED,
- int beingId A_UNUSED)
-{
- // TODO
-}
-
-void SpecialHandler::usePos(int id A_UNUSED, int level A_UNUSED,
- int x A_UNUSED, int y A_UNUSED)
-{
- // TODO
-}
-
-void SpecialHandler::useMap(int id A_UNUSED, const std::string &map A_UNUSED)
-{
- // TODO
-}
-
-} // namespace ManaServ
diff --git a/src/net/manaserv/specialhandler.h b/src/net/manaserv/specialhandler.h
deleted file mode 100644
index 2f1ce4d07..000000000
--- a/src/net/manaserv/specialhandler.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NET_MANASERV_SKILLHANDLER_H
-#define NET_MANASERV_SKILLHANDLER_H
-
-#include "net/specialhandler.h"
-
-#include "net/manaserv/messagehandler.h"
-
-namespace ManaServ
-{
-
-class SpecialHandler : public MessageHandler, public Net::SpecialHandler
-{
- public:
- SpecialHandler();
-
- void handleMessage(Net::MessageIn &msg);
-
- void use(int id);
-
- void useBeing(int id, int level, int beingId);
-
- void usePos(int id, int level, int x, int y);
-
- void useMap(int id, const std::string &map);
-};
-
-} // namespace ManaServ
-
-#endif // NET_MANASERV_SKILLHANDLER_H
diff --git a/src/net/manaserv/tradehandler.cpp b/src/net/manaserv/tradehandler.cpp
deleted file mode 100644
index e827c2cec..000000000
--- a/src/net/manaserv/tradehandler.cpp
+++ /dev/null
@@ -1,238 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "net/manaserv/tradehandler.h"
-
-#include "actorspritemanager.h"
-#include "event.h"
-#include "item.h"
-#include "localplayer.h"
-#include "playerinfo.h"
-#include "playerrelations.h"
-
-#include "gui/confirmdialog.h"
-#include "gui/tradewindow.h"
-
-#include "net/net.h"
-
-#include "net/manaserv/connection.h"
-#include "net/manaserv/messagein.h"
-#include "net/manaserv/messageout.h"
-#include "net/manaserv/protocol.h"
-
-#include "utils/gettext.h"
-#include "utils/stringutils.h"
-
-extern std::string tradePartnerName;
-int tradePartnerID;
-
-extern Net::TradeHandler *tradeHandler;
-
-namespace ManaServ
-{
-
-extern Connection *gameServerConnection;
-
-/**
- * Listener for request trade dialogs
- */
-namespace
-{
- struct RequestTradeListener : public gcn::ActionListener
- {
- void action(const gcn::ActionEvent &event)
- {
- if (event.getId() == "yes")
- {
- ManaServ::MessageOut msg(PGMSG_TRADE_REQUEST);
- msg.writeInt16(tradePartnerID);
- gameServerConnection->send(msg);
- }
- else if (event.getId() == "ignore")
- {
- player_relations.ignoreTrade(tradePartnerName);
- Net::getTradeHandler()->cancel();
- }
- else
- {
- Net::getTradeHandler()->cancel();
- }
- }
- } listener;
-}
-
-TradeHandler::TradeHandler():
- mAcceptTradeRequests(true)
-{
- static const Uint16 _messages[] =
- {
- GPMSG_TRADE_REQUEST,
- GPMSG_TRADE_CANCEL,
- GPMSG_TRADE_START,
- GPMSG_TRADE_COMPLETE,
- GPMSG_TRADE_AGREED,
- GPMSG_TRADE_BOTH_CONFIRM,
- GPMSG_TRADE_CONFIRM,
- GPMSG_TRADE_ADD_ITEM,
- GPMSG_TRADE_SET_MONEY,
- 0
- };
- handledMessages = _messages;
- tradeHandler = this;
-}
-
-void TradeHandler::setAcceptTradeRequests(bool acceptRequests)
-{
- mAcceptTradeRequests = acceptRequests;
- if (mAcceptTradeRequests)
- SERVER_NOTICE(_("Accepting incoming trade requests."))
- else
- SERVER_NOTICE(_("Ignoring incoming trade requests."))
-}
-
-void TradeHandler::handleMessage(Net::MessageIn &msg)
-{
- switch (msg.getId())
- {
- case GPMSG_TRADE_REQUEST:
- {
- Being *being = actorSpriteManager->findBeing(msg.readInt16());
- if (!being || !mAcceptTradeRequests)
- {
- respond(false);
- break;
- }
- PlayerInfo::setTrading(true);
- tradePartnerName = being->getName();
- tradePartnerID = being->getId();
- ConfirmDialog *dlg = new ConfirmDialog(_("Request for Trade"),
- strprintf(_("%s wants to trade with you, do you accept?"),
- tradePartnerName.c_str()), true);
- dlg->addActionListener(&listener);
- } break;
-
- case GPMSG_TRADE_ADD_ITEM:
- {
- int type = msg.readInt16();
- int amount = msg.readInt8();
- tradeWindow->addItem(type, false, amount, 0, 1);
- } break;
-
- case GPMSG_TRADE_SET_MONEY:
- tradeWindow->setMoney(msg.readInt32());
- break;
-
- case GPMSG_TRADE_START:
- tradeWindow->reset();
- tradeWindow->setCaption(strprintf(_("Trading with %s"),
- tradePartnerName.c_str()));
- tradeWindow->setVisible(true);
- break;
-
- case GPMSG_TRADE_BOTH_CONFIRM:
- tradeWindow->receivedOk(false);
- break;
-
- case GPMSG_TRADE_AGREED:
- tradeWindow->receivedOk(false);
- break;
-
- case GPMSG_TRADE_CANCEL:
- SERVER_NOTICE(_("Trade canceled."))
- tradeWindow->setVisible(false);
- tradeWindow->reset();
- PlayerInfo::setTrading(false);
- break;
-
- case GPMSG_TRADE_COMPLETE:
- SERVER_NOTICE(_("Trade completed."))
- tradeWindow->setVisible(false);
- tradeWindow->reset();
- PlayerInfo::setTrading(false);
- break;
-
- default:
- break;
- }
-}
-
-void TradeHandler::request(Being *being)
-{
- tradePartnerName = being->getName();
- tradePartnerID = being->getId();
-
- MessageOut msg(PGMSG_TRADE_REQUEST);
- msg.writeInt16(tradePartnerID);
- gameServerConnection->send(msg);
-}
-
-void TradeHandler::respond(bool accept)
-{
- MessageOut msg(accept ? PGMSG_TRADE_REQUEST : PGMSG_TRADE_CANCEL);
- gameServerConnection->send(msg);
-
- if (!accept)
- PlayerInfo::setTrading(false);
-}
-
-void TradeHandler::addItem(Item *item, int amount)
-{
- MessageOut msg(PGMSG_TRADE_ADD_ITEM);
- msg.writeInt8(item->getInvIndex());
- msg.writeInt8(amount);
- gameServerConnection->send(msg);
-
- tradeWindow->addItem(item->getId(), true, amount, 0, 1);
- item->increaseQuantity(-amount);
-}
-
-void TradeHandler::removeItem(int slotNum A_UNUSED, int amount A_UNUSED)
-{
- // TODO
-}
-
-void TradeHandler::setMoney(int amount)
-{
- MessageOut msg(PGMSG_TRADE_SET_MONEY);
- msg.writeInt32(amount);
- gameServerConnection->send(msg);
-}
-
-void TradeHandler::confirm()
-{
- MessageOut msg(PGMSG_TRADE_CONFIRM);
- gameServerConnection->send(msg);
-}
-
-void TradeHandler::finish()
-{
- MessageOut msg(PGMSG_TRADE_AGREED);
- gameServerConnection->send(msg);
-}
-
-void TradeHandler::cancel()
-{
- MessageOut msg(PGMSG_TRADE_CANCEL);
- gameServerConnection->send(msg);
-}
-
-} // namespace ManaServ
diff --git a/src/net/manaserv/tradehandler.h b/src/net/manaserv/tradehandler.h
deleted file mode 100644
index 39d691982..000000000
--- a/src/net/manaserv/tradehandler.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NET_MANASERV_TRADEHANDLER_H
-#define NET_MANASERV_TRADEHANDLER_H
-
-#include "net/tradehandler.h"
-
-#include "net/manaserv/messagehandler.h"
-
-namespace ManaServ
-{
-
-class TradeHandler : public MessageHandler, public Net::TradeHandler
-{
- public:
- TradeHandler();
-
- void handleMessage(Net::MessageIn &msg);
-
- /**
- * Returns whether trade requests are accepted.
- *
- * @see setAcceptTradeRequests
- */
- bool acceptTradeRequests() const
- { return mAcceptTradeRequests; }
-
- /**
- * Sets whether trade requests are accepted. When set to false, trade
- * requests are automatically denied. When true, a popup will ask the
- * player whether he wants to trade.
- */
- void setAcceptTradeRequests(bool acceptRequests);
-
- void request(Being *being);
-
- void respond(bool accept);
-
- void addItem(Item *item, int amount);
-
- void removeItem(int slotNum, int amount);
-
- void setMoney(int amount);
-
- void confirm();
-
- void finish();
-
- void cancel();
-
- private:
- bool mAcceptTradeRequests;
-};
-
-} // namespace ManaServ
-
-#endif // NET_MANASERV_TRADEHANDLER_H
diff --git a/src/utils/sha256.cpp b/src/utils/sha256.cpp
deleted file mode 100644
index ac9c78b2a..000000000
--- a/src/utils/sha256.cpp
+++ /dev/null
@@ -1,298 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2008-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file has been slighly modified as part of The ManaPlus Client.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2, as
- * published by the Free Software Foundation.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-/* +------------------------------------+
- * | Inspire Internet Relay Chat Daemon |
- * +------------------------------------+
- *
- * InspIRCd: (C) 2002-2008 InspIRCd Development Team
- * See: http://www.inspircd.org/wiki/index.php/Credits
- *
- * This program is free but copyrighted software; see
- * the file COPYING for details.
- *
- * ---------------------------------------------------
- */
-
-/* m_sha256 - Based on m_opersha256 written by Special <john@yarbbles.com>
- * Modified and improved by Craig Edwards, December 2006.
- *
- *
- * FIPS 180-2 SHA-224/256/384/512 implementation
- * Last update: 05/23/2005
- * Issue date: 04/30/2005
- *
- * Copyright (C) 2005 Olivier Gay <olivier.gay@a3.epfl.ch>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the project nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include "utils/sha256.h"
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <memory.h>
-
-#ifdef HAVE_STDINT_H
-#include <stdint.h>
-#else
-typedef unsigned char uint8_t;
-typedef unsigned int uint32_t;
-#endif
-
-#include "debug.h"
-
-#define SHA256_BLOCK_SIZE (512 / 8)
-
-/** An sha 256 context, used by original m_opersha256 */
-class SHA256Context
-{
- public:
- unsigned int tot_len;
- unsigned int len;
- unsigned char block[2 * SHA256_BLOCK_SIZE];
- uint32_t h[8];
-};
-
-#define SHA256_DIGEST_SIZE (256 / 8)
-
-#define SHFR(x, n) (x >> n)
-#define ROTR(x, n) ((x >> n) | (x << ((sizeof(x) << 3) - n)))
-//#define ROTL(x, n) ((x << n) | (x >> ((sizeof(x) << 3) - n)))
-#define CH(x, y, z) ((x & y) ^ (~x & z))
-#define MAJ(x, y, z) ((x & y) ^ (x & z) ^ (y & z))
-
-#define SHA256_F1(x) (ROTR(x, 2) ^ ROTR(x, 13) ^ ROTR(x, 22))
-#define SHA256_F2(x) (ROTR(x, 6) ^ ROTR(x, 11) ^ ROTR(x, 25))
-#define SHA256_F3(x) (ROTR(x, 7) ^ ROTR(x, 18) ^ SHFR(x, 3))
-#define SHA256_F4(x) (ROTR(x, 17) ^ ROTR(x, 19) ^ SHFR(x, 10))
-
-#define UNPACK32(x, str) \
-{ \
- *((str) + 3) = static_cast<uint8_t> ((x) ); \
- *((str) + 2) = static_cast<uint8_t> ((x) >> 8); \
- *((str) + 1) = static_cast<uint8_t> ((x) >> 16); \
- *((str) + 0) = static_cast<uint8_t> ((x) >> 24); \
-}
-
-#define PACK32(str, x) \
-{ \
- *(x) = ((uint32_t) *((str) + 3) ) \
- | ((uint32_t) *((str) + 2) << 8) \
- | ((uint32_t) *((str) + 1) << 16) \
- | ((uint32_t) *((str) + 0) << 24); \
-}
-
-/* Macros used for loops unrolling */
-
-#define SHA256_SCR(i) \
-{ \
- w[i] = SHA256_F4(w[i - 2]) + w[i - 7] \
- + SHA256_F3(w[i - 15]) + w[i - 16]; \
-}
-
-const unsigned int sha256_h0[8] =
-{
- 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,
- 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19
-};
-
-uint32_t sha256_k[64] =
-{
- 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
- 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
- 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
- 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
- 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
- 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
- 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
- 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
- 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
- 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
- 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
- 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
- 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
- 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
- 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
- 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
-};
-
-void SHA256Init(SHA256Context *ctx);
-
-void SHA256Transform(SHA256Context *ctx,
- unsigned char *message,
- unsigned int block_nb);
-
-void SHA256Update(SHA256Context *ctx,
- unsigned char *message,
- unsigned int len);
-
-void SHA256Final(SHA256Context *ctx, unsigned char *digest);
-
-std::string SHA256Hash(const char *src, int len);
-
-void SHA256Init(SHA256Context *ctx)
-{
- for (int i = 0; i < 8; i++)
- ctx->h[i] = sha256_h0[i];
- ctx->len = 0;
- ctx->tot_len = 0;
-}
-
-void SHA256Transform(SHA256Context *ctx,
- unsigned char *message,
- unsigned int block_nb)
-{
- uint32_t w[64];
- uint32_t wv[8];
- unsigned char *sub_block;
- for (unsigned int i = 1; i <= block_nb; i++)
- {
- int j;
- sub_block = message + ((i - 1) << 6);
-
- for (j = 0; j < 16; j++)
- PACK32(&sub_block[j << 2], &w[j]);
- for (j = 16; j < 64; j++)
- SHA256_SCR(j);
- for (j = 0; j < 8; j++)
- wv[j] = ctx->h[j];
- for (j = 0; j < 64; j++)
- {
- uint32_t t1 = wv[7] + SHA256_F2(wv[4]) + CH(wv[4],
- wv[5], wv[6]) + sha256_k[j] + w[j];
- uint32_t t2 = SHA256_F1(wv[0]) + MAJ(wv[0], wv[1], wv[2]);
- wv[7] = wv[6];
- wv[6] = wv[5];
- wv[5] = wv[4];
- wv[4] = wv[3] + t1;
- wv[3] = wv[2];
- wv[2] = wv[1];
- wv[1] = wv[0];
- wv[0] = t1 + t2;
- }
- for (j = 0; j < 8; j++)
- ctx->h[j] += wv[j];
- }
-}
-
-void SHA256Update(SHA256Context *ctx,
- unsigned char *message,
- unsigned int len)
-{
- /*
- * XXX here be dragons!
- * After many hours of pouring over this, I think I've found the problem.
- * When Special created our module from the reference one, he used:
- *
- * unsigned int rem_len = SHA256_BLOCK_SIZE - ctx->len;
- *
- * instead of the reference's version of:
- *
- * unsigned int tmp_len = SHA256_BLOCK_SIZE - ctx->len;
- * unsigned int rem_len = len < tmp_len ? len : tmp_len;
- *
- * I've changed back to the reference version of this code, and it seems to work with no errors.
- * So I'm inclined to believe this was the problem..
- * -- w00t (January 06, 2008)
- */
- unsigned int tmp_len = SHA256_BLOCK_SIZE - ctx->len;
- unsigned int rem_len = len < tmp_len ? len : tmp_len;
-
- memcpy(&ctx->block[ctx->len], message, rem_len);
- if (ctx->len + len < SHA256_BLOCK_SIZE)
- {
- ctx->len += len;
- return;
- }
- unsigned int new_len = len - rem_len;
- unsigned int block_nb = new_len / SHA256_BLOCK_SIZE;
- unsigned char *shifted_message = message + rem_len;
- SHA256Transform(ctx, ctx->block, 1);
- SHA256Transform(ctx, shifted_message, block_nb);
- rem_len = new_len % SHA256_BLOCK_SIZE;
- memcpy(ctx->block, &shifted_message[block_nb << 6], rem_len);
- ctx->len = rem_len;
- ctx->tot_len += (block_nb + 1) << 6;
-}
-
-void SHA256Final(SHA256Context *ctx, unsigned char *digest)
-{
- unsigned int block_nb = (1 + ((SHA256_BLOCK_SIZE - 9)
- < (ctx->len % SHA256_BLOCK_SIZE)));
- unsigned int len_b = (ctx->tot_len + ctx->len) << 3;
- unsigned int pm_len = block_nb << 6;
- memset(ctx->block + ctx->len, 0, pm_len - ctx->len);
- ctx->block[ctx->len] = 0x80;
- UNPACK32(len_b, ctx->block + pm_len - 4);
- SHA256Transform(ctx, ctx->block, block_nb);
- for (int i = 0 ; i < 8; i++)
- UNPACK32(ctx->h[i], &digest[i << 2]);
-}
-
-std::string SHA256Hash(const char *src, int len)
-{
- // Generate the hash
- unsigned char bytehash[SHA256_DIGEST_SIZE];
- SHA256Context ctx;
- SHA256Init(&ctx);
- SHA256Update(&ctx, (unsigned char *)src, (unsigned int)len);
- SHA256Final(&ctx, bytehash);
- // Convert it to hex
- const char* hxc = "0123456789abcdef";
- std::string hash("");
- for (int i = 0; i < SHA256_DIGEST_SIZE; i++)
- {
- hash += hxc[bytehash[i] / 16];
- hash += hxc[bytehash[i] % 16];
- }
- return hash;
-}
-
-std::string sha256(const std::string &string)
-{
- return SHA256Hash(string.c_str(), static_cast<int>(string.length()));
-}
diff --git a/src/utils/sha256.h b/src/utils/sha256.h
deleted file mode 100644
index 54bb92f3c..000000000
--- a/src/utils/sha256.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2007-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2012 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef UTILS_SHA256_H
-#define UTILS_SHA256_H
-
-#include <string>
-
-/**
- * Returns the SHA-256 hash for the given string.
- *
- * @param string the string to create the SHA-256 hash for
- * @return the SHA-256 hash for the given string.
- */
-std::string sha256(const std::string &string);
-
-#endif // UTILS_SHA256_H