summaryrefslogtreecommitdiff
path: root/src/net/eathena
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-08-26 21:39:30 +0300
committerAndrei Karas <akaras@inbox.ru>2015-08-26 21:39:30 +0300
commit1fa2a62572a46f34f7216e12814c0e932f5bd2ca (patch)
treec913d536da80b96104d95ce0ce64680e0353485a /src/net/eathena
parentda649050e6a92a199e1ba6ec09f456b184e51809 (diff)
downloadmv-1fa2a62572a46f34f7216e12814c0e932f5bd2ca.tar.gz
mv-1fa2a62572a46f34f7216e12814c0e932f5bd2ca.tar.bz2
mv-1fa2a62572a46f34f7216e12814c0e932f5bd2ca.tar.xz
mv-1fa2a62572a46f34f7216e12814c0e932f5bd2ca.zip
Move receive code from guildhandler into separate file.
Diffstat (limited to 'src/net/eathena')
-rw-r--r--src/net/eathena/guildhandler.cpp170
-rw-r--r--src/net/eathena/guildhandler.h13
-rw-r--r--src/net/eathena/guildrecv.cpp152
-rw-r--r--src/net/eathena/guildrecv.h47
4 files changed, 233 insertions, 149 deletions
diff --git a/src/net/eathena/guildhandler.cpp b/src/net/eathena/guildhandler.cpp
index 31f1edba7..d6a07091d 100644
--- a/src/net/eathena/guildhandler.cpp
+++ b/src/net/eathena/guildhandler.cpp
@@ -32,6 +32,11 @@
#include "gui/widgets/tabs/chat/guildtab.h"
+#include "net/ea/guildrecv.h"
+
+#include "net/ea/guildrecv.h"
+
+#include "net/eathena/guildrecv.h"
#include "net/eathena/messageout.h"
#include "net/eathena/protocol.h"
@@ -92,115 +97,115 @@ void GuildHandler::handleMessage(Net::MessageIn &msg)
switch (msg.getId())
{
case SMSG_GUILD_CREATE_RESPONSE:
- processGuildCreateResponse(msg);
+ Ea::GuildRecv::processGuildCreateResponse(msg);
break;
case SMSG_GUILD_POSITION_INFO:
- processGuildPositionInfo(msg);
+ GuildRecv::processGuildPositionInfo(msg);
break;
case SMSG_GUILD_MEMBER_LOGIN:
- processGuildMemberLogin(msg);
+ GuildRecv::processGuildMemberLogin(msg);
break;
case SMSG_GUILD_MASTER_OR_MEMBER:
- processGuildMasterOrMember(msg);
+ Ea::GuildRecv::processGuildMasterOrMember(msg);
break;
case SMSG_GUILD_BASIC_INFO:
- processGuildBasicInfo(msg);
+ Ea::GuildRecv::processGuildBasicInfo(msg);
break;
case SMSG_GUILD_ALIANCE_INFO:
- processGuildAlianceInfo(msg);
+ Ea::GuildRecv::processGuildAlianceInfo(msg);
break;
case SMSG_GUILD_MEMBER_LIST:
- processGuildMemberList(msg);
+ Ea::GuildRecv::processGuildMemberList(msg);
break;
case SMSG_GUILD_POS_NAME_LIST:
- processGuildPosNameList(msg);
+ Ea::GuildRecv::processGuildPosNameList(msg);
break;
case SMSG_GUILD_POS_INFO_LIST:
- processGuildPosInfoList(msg);
+ Ea::GuildRecv::processGuildPosInfoList(msg);
break;
case SMSG_GUILD_POSITION_CHANGED:
- processGuildPositionChanged(msg);
+ Ea::GuildRecv::processGuildPositionChanged(msg);
break;
case SMSG_GUILD_MEMBER_POS_CHANGE:
- processGuildMemberPosChange(msg);
+ Ea::GuildRecv::processGuildMemberPosChange(msg);
break;
case SMSG_GUILD_EMBLEM_DATA:
- processGuildEmblemData(msg);
+ Ea::GuildRecv::processGuildEmblemData(msg);
break;
case SMSG_GUILD_SKILL_INFO:
- processGuildSkillInfo(msg);
+ Ea::GuildRecv::processGuildSkillInfo(msg);
break;
case SMSG_GUILD_NOTICE:
- processGuildNotice(msg);
+ Ea::GuildRecv::processGuildNotice(msg);
break;
case SMSG_GUILD_INVITE:
- processGuildInvite(msg);
+ Ea::GuildRecv::processGuildInvite(msg);
break;
case SMSG_GUILD_INVITE_ACK:
- processGuildInviteAck(msg);
+ Ea::GuildRecv::processGuildInviteAck(msg);
break;
case SMSG_GUILD_LEAVE:
- processGuildLeave(msg);
+ Ea::GuildRecv::processGuildLeave(msg);
break;
case SMSG_GUILD_EXPULSION:
- processGuildExpulsion(msg);
+ GuildRecv::processGuildExpulsion(msg);
break;
case SMSG_GUILD_EXPULSION_LIST:
- processGuildExpulsionList(msg);
+ GuildRecv::processGuildExpulsionList(msg);
break;
case SMSG_GUILD_MESSAGE:
- processGuildMessage(msg);
+ Ea::GuildRecv::processGuildMessage(msg);
break;
case SMSG_GUILD_SKILL_UP:
- processGuildSkillUp(msg);
+ Ea::GuildRecv::processGuildSkillUp(msg);
break;
case SMSG_GUILD_REQ_ALLIANCE:
- processGuildReqAlliance(msg);
+ Ea::GuildRecv::processGuildReqAlliance(msg);
break;
case SMSG_GUILD_REQ_ALLIANCE_ACK:
- processGuildReqAllianceAck(msg);
+ Ea::GuildRecv::processGuildReqAllianceAck(msg);
break;
case SMSG_GUILD_DEL_ALLIANCE:
- processGuildDelAlliance(msg);
+ Ea::GuildRecv::processGuildDelAlliance(msg);
break;
case SMSG_GUILD_OPPOSITION_ACK:
- processGuildOppositionAck(msg);
+ Ea::GuildRecv::processGuildOppositionAck(msg);
break;
case SMSG_GUILD_BROKEN:
- processGuildBroken(msg);
+ Ea::GuildRecv::processGuildBroken(msg);
break;
case SMSG_GUILD_UPDATE_COORDS:
- processGuildUpdateCoords(msg);
+ GuildRecv::processGuildUpdateCoords(msg);
break;
case SMSG_GUILD_EMBLEM:
- processGuildEmblem(msg);
+ GuildRecv::processGuildEmblem(msg);
break;
default:
@@ -208,22 +213,6 @@ void GuildHandler::handleMessage(Net::MessageIn &msg)
}
}
-void GuildHandler::processGuildUpdateCoords(Net::MessageIn &msg)
-{
- const BeingId id = msg.readBeingId("account id");
- const int x = msg.readInt16("x");
- const int y = msg.readInt16("y");
- if (Ea::taGuild)
- {
- GuildMember *const m = Ea::taGuild->getMember(id);
- if (m)
- {
- m->setX(x);
- m->setY(y);
- }
- }
-}
-
void GuildHandler::create(const std::string &name) const
{
createOutPacket(CMSG_GUILD_CREATE);
@@ -326,7 +315,7 @@ void GuildHandler::info()
// 3 = skill info
// 4 = expulsion list
- showBasicInfo = true;
+ Ea::GuildRecv::showBasicInfo = true;
createOutPacket(CMSG_GUILD_REQUEST_INFO);
outMsg.writeInt32(0, "action"); // Request basic info
}
@@ -359,97 +348,6 @@ void GuildHandler::checkMaster() const
createOutPacket(CMSG_GUILD_CHECK_MASTER);
}
-void GuildHandler::processGuildPositionInfo(Net::MessageIn &msg)
-{
- const int guildId = msg.readInt32("guild id");
- const int emblem = msg.readInt32("elblem id");
- PlayerInfo::setGuildPositionFlags(
- static_cast<GuildPositionFlags::Type>(msg.readInt32("mode")));
- msg.readUInt8("guild master");
- msg.readInt32("unused");
- std::string guildName = msg.readString(24, "guild name");
-
- Guild *const g = Guild::getGuild(static_cast<int16_t>(guildId));
- if (!g)
- return;
-
- g->setName(guildName);
- g->setEmblemId(emblem);
- if (!Ea::taGuild)
- Ea::taGuild = g;
- if (!guildTab && chatWindow)
- {
- guildTab = new GuildTab(chatWindow);
- if (config.getBoolValue("showChatHistory"))
- guildTab->loadFromLogFile("#Guild");
- if (localPlayer)
- localPlayer->addGuild(Ea::taGuild);
- guildHandler->memberList();
- }
-
- if (localPlayer)
- {
- localPlayer->setGuild(g);
- localPlayer->setGuildName(g->getName());
- }
-}
-
-void GuildHandler::processGuildMemberLogin(Net::MessageIn &msg)
-{
- const BeingId accountId = msg.readBeingId("account id");
- const int charId = msg.readInt32("char id");
- const int online = msg.readInt32("flag");
- const GenderT gender = Being::intToGender(static_cast<uint8_t>(
- msg.readInt16("sex")));
- msg.readInt16("hair");
- msg.readInt16("hair color");
- if (Ea::taGuild)
- {
- GuildMember *const m = Ea::taGuild->getMember(accountId, charId);
- if (m)
- {
- m->setOnline(online);
- if (online)
- m->setGender(gender);
- if (guildTab)
- guildTab->showOnline(m->getName(), fromBool(online, Online));
- if (socialWindow)
- socialWindow->updateGuildCounter();
- }
- }
-}
-
-void GuildHandler::processGuildExpulsion(Net::MessageIn &msg)
-{
- const std::string nick = msg.readString(24, "name");
- msg.readString(40, "message");
-
- processGuildExpulsionContinue(nick);
-}
-
-void GuildHandler::processGuildExpulsionList(Net::MessageIn &msg)
-{
- const int length = msg.readInt16("len");
- if (length < 4)
- return;
-
- const int count = (length - 4) / 64;
-
- for (int i = 0; i < count; i++)
- {
- msg.readString(24, "name");
- msg.readString(40, "message");
- }
-}
-
-void GuildHandler::processGuildEmblem(Net::MessageIn &msg)
-{
- UNIMPLIMENTEDPACKET;
- msg.readBeingId("being id");
- msg.readInt32("guild id");
- msg.readInt16("emblem id");
-}
-
void GuildHandler::requestAlliance(const Being *const being) const
{
if (!being)
diff --git a/src/net/eathena/guildhandler.h b/src/net/eathena/guildhandler.h
index 4f2add867..5d6ed40e0 100644
--- a/src/net/eathena/guildhandler.h
+++ b/src/net/eathena/guildhandler.h
@@ -91,19 +91,6 @@ class GuildHandler final : public Ea::GuildHandler, public MessageHandler
void changeEmblem(std::string emblem) const override final;
void requestEmblem(const int guildId) const override final;
-
- protected:
- static void processGuildUpdateCoords(Net::MessageIn &msg);
-
- static void processGuildPositionInfo(Net::MessageIn &msg);
-
- static void processGuildMemberLogin(Net::MessageIn &msg);
-
- static void processGuildExpulsion(Net::MessageIn &msg);
-
- static void processGuildExpulsionList(Net::MessageIn &msg);
-
- static void processGuildEmblem(Net::MessageIn &msg);
};
} // namespace EAthena
diff --git a/src/net/eathena/guildrecv.cpp b/src/net/eathena/guildrecv.cpp
new file mode 100644
index 000000000..007bff852
--- /dev/null
+++ b/src/net/eathena/guildrecv.cpp
@@ -0,0 +1,152 @@
+/*
+ * The ManaPlus Client
+ * Copyright (C) 2009-2010 The Mana Developers
+ * Copyright (C) 2011-2015 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/eathena/guildrecv.h"
+
+#include "actormanager.h"
+#include "configuration.h"
+
+#include "being/localplayer.h"
+#include "being/playerinfo.h"
+
+#include "gui/windows/chatwindow.h"
+#include "gui/windows/socialwindow.h"
+
+#include "gui/widgets/tabs/chat/guildtab.h"
+
+#include "net/ea/guildrecv.h"
+
+#include "net/eathena/messageout.h"
+#include "net/eathena/protocol.h"
+
+#include "debug.h"
+
+namespace EAthena
+{
+
+void GuildRecv::processGuildUpdateCoords(Net::MessageIn &msg)
+{
+ const BeingId id = msg.readBeingId("account id");
+ const int x = msg.readInt16("x");
+ const int y = msg.readInt16("y");
+ if (Ea::taGuild)
+ {
+ GuildMember *const m = Ea::taGuild->getMember(id);
+ if (m)
+ {
+ m->setX(x);
+ m->setY(y);
+ }
+ }
+}
+
+void GuildRecv::processGuildPositionInfo(Net::MessageIn &msg)
+{
+ const int guildId = msg.readInt32("guild id");
+ const int emblem = msg.readInt32("elblem id");
+ PlayerInfo::setGuildPositionFlags(
+ static_cast<GuildPositionFlags::Type>(msg.readInt32("mode")));
+ msg.readUInt8("guild master");
+ msg.readInt32("unused");
+ std::string guildName = msg.readString(24, "guild name");
+
+ Guild *const g = Guild::getGuild(static_cast<int16_t>(guildId));
+ if (!g)
+ return;
+
+ g->setName(guildName);
+ g->setEmblemId(emblem);
+ if (!Ea::taGuild)
+ Ea::taGuild = g;
+ if (!guildTab && chatWindow)
+ {
+ guildTab = new GuildTab(chatWindow);
+ if (config.getBoolValue("showChatHistory"))
+ guildTab->loadFromLogFile("#Guild");
+ if (localPlayer)
+ localPlayer->addGuild(Ea::taGuild);
+ guildHandler->memberList();
+ }
+
+ if (localPlayer)
+ {
+ localPlayer->setGuild(g);
+ localPlayer->setGuildName(g->getName());
+ }
+}
+
+void GuildRecv::processGuildMemberLogin(Net::MessageIn &msg)
+{
+ const BeingId accountId = msg.readBeingId("account id");
+ const int charId = msg.readInt32("char id");
+ const int online = msg.readInt32("flag");
+ const GenderT gender = Being::intToGender(static_cast<uint8_t>(
+ msg.readInt16("sex")));
+ msg.readInt16("hair");
+ msg.readInt16("hair color");
+ if (Ea::taGuild)
+ {
+ GuildMember *const m = Ea::taGuild->getMember(accountId, charId);
+ if (m)
+ {
+ m->setOnline(online);
+ if (online)
+ m->setGender(gender);
+ if (guildTab)
+ guildTab->showOnline(m->getName(), fromBool(online, Online));
+ if (socialWindow)
+ socialWindow->updateGuildCounter();
+ }
+ }
+}
+
+void GuildRecv::processGuildExpulsion(Net::MessageIn &msg)
+{
+ const std::string nick = msg.readString(24, "name");
+ msg.readString(40, "message");
+
+ Ea::GuildRecv::processGuildExpulsionContinue(nick);
+}
+
+void GuildRecv::processGuildExpulsionList(Net::MessageIn &msg)
+{
+ const int length = msg.readInt16("len");
+ if (length < 4)
+ return;
+
+ const int count = (length - 4) / 64;
+
+ for (int i = 0; i < count; i++)
+ {
+ msg.readString(24, "name");
+ msg.readString(40, "message");
+ }
+}
+
+void GuildRecv::processGuildEmblem(Net::MessageIn &msg)
+{
+ UNIMPLIMENTEDPACKET;
+ msg.readBeingId("being id");
+ msg.readInt32("guild id");
+ msg.readInt16("emblem id");
+}
+
+} // namespace EAthena
diff --git a/src/net/eathena/guildrecv.h b/src/net/eathena/guildrecv.h
new file mode 100644
index 000000000..57bb18f49
--- /dev/null
+++ b/src/net/eathena/guildrecv.h
@@ -0,0 +1,47 @@
+/*
+ * The ManaPlus Client
+ * Copyright (C) 2009-2010 The Mana Developers
+ * Copyright (C) 2011-2015 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_EATHENA_GUILDRECV_H
+#define NET_EATHENA_GUILDRECV_H
+
+#include "net/ea/guildhandler.h"
+
+#include "net/eathena/messagehandler.h"
+
+namespace EAthena
+{
+ namespace GuildRecv
+ {
+ void processGuildUpdateCoords(Net::MessageIn &msg);
+ void processGuildPositionInfo(Net::MessageIn &msg);
+ void processGuildMemberLogin(Net::MessageIn &msg);
+ void processGuildExpulsion(Net::MessageIn &msg);
+ void processGuildExpulsionList(Net::MessageIn &msg);
+ void processGuildEmblem(Net::MessageIn &msg);
+ } // namespace GuildRecv
+} // namespace EAthena
+
+namespace Ea
+{
+ extern Guild *taGuild;
+}
+
+#endif // NET_EATHENA_GUILDRECV_H