summaryrefslogtreecommitdiff
path: root/src/net/tmwa
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/tmwa
parentda649050e6a92a199e1ba6ec09f456b184e51809 (diff)
downloadmanaplus-1fa2a62572a46f34f7216e12814c0e932f5bd2ca.tar.gz
manaplus-1fa2a62572a46f34f7216e12814c0e932f5bd2ca.tar.bz2
manaplus-1fa2a62572a46f34f7216e12814c0e932f5bd2ca.tar.xz
manaplus-1fa2a62572a46f34f7216e12814c0e932f5bd2ca.zip
Move receive code from guildhandler into separate file.
Diffstat (limited to 'src/net/tmwa')
-rw-r--r--src/net/tmwa/guildhandler.cpp150
-rw-r--r--src/net/tmwa/guildhandler.h9
-rw-r--r--src/net/tmwa/guildrecv.cpp140
-rw-r--r--src/net/tmwa/guildrecv.h47
4 files changed, 217 insertions, 129 deletions
diff --git a/src/net/tmwa/guildhandler.cpp b/src/net/tmwa/guildhandler.cpp
index 4bd0e800c..40beafcb3 100644
--- a/src/net/tmwa/guildhandler.cpp
+++ b/src/net/tmwa/guildhandler.cpp
@@ -34,6 +34,9 @@
#include "gui/widgets/tabs/chat/guildtab.h"
+#include "net/ea/guildrecv.h"
+
+#include "net/tmwa/guildrecv.h"
#include "net/tmwa/messageout.h"
#include "net/tmwa/protocol.h"
@@ -96,107 +99,107 @@ 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;
default:
@@ -305,7 +308,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
}
@@ -338,99 +341,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("emblem");
- const int posMode = msg.readInt32("position");
- msg.readInt32("unused");
- msg.readUInt8("usused");
- std::string guildName = msg.readString(24, "guild name");
-
- PlayerInfo::setGuildPositionFlags(GuildPositionFlags::Invite);
-
- 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());
- }
-
- logger->log("Guild position info: %d %d %d %s\n", guildId,
- emblem, posMode, guildName.c_str());
-}
-
-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");
- if (Ea::taGuild)
- {
- GuildMember *const m = Ea::taGuild->getMember(accountId, charId);
- if (m)
- {
- m->setOnline(online);
- if (guildTab)
- guildTab->showOnline(m->getName(), fromBool(online, Online));
- if (socialWindow)
- socialWindow->updateGuildCounter();
- }
- }
-}
-
-void GuildHandler::processGuildExpulsion(Net::MessageIn &msg)
-{
- std::string nick;
- if (serverFeatures->haveNewGuild())
- {
- nick = msg.readString(24, "name");
- msg.readString(40, "reason");
- msg.readString(24, "kicker name");
- }
- else
- {
- msg.readInt16("len?");
- nick = msg.readString(24, "name?");
- msg.skip(24, "player name");
- msg.readString(44, "message");
- }
- processGuildExpulsionContinue(nick);
-}
-
-void GuildHandler::processGuildExpulsionList(Net::MessageIn &msg)
-{
- const int length = msg.readInt16("len");
- if (length < 4)
- return;
-
- const int count = (length - 4) / 88;
-
- for (int i = 0; i < count; i++)
- {
- msg.readString(24, "name of expulsed");
- msg.readString(24, "name of expluser");
- msg.readString(24, "message");
- }
-}
-
void GuildHandler::requestAlliance(const Being *const being A_UNUSED) const
{
}
diff --git a/src/net/tmwa/guildhandler.h b/src/net/tmwa/guildhandler.h
index 2c27ac3f5..7bc9e5fef 100644
--- a/src/net/tmwa/guildhandler.h
+++ b/src/net/tmwa/guildhandler.h
@@ -91,15 +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 processGuildPositionInfo(Net::MessageIn &msg);
-
- static void processGuildMemberLogin(Net::MessageIn &msg);
-
- static void processGuildExpulsion(Net::MessageIn &msg);
-
- static void processGuildExpulsionList(Net::MessageIn &msg);
};
} // namespace TmwAthena
diff --git a/src/net/tmwa/guildrecv.cpp b/src/net/tmwa/guildrecv.cpp
new file mode 100644
index 000000000..8e547d6b5
--- /dev/null
+++ b/src/net/tmwa/guildrecv.cpp
@@ -0,0 +1,140 @@
+/*
+ * 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/tmwa/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 "net/serverfeatures.h"
+
+#include "gui/widgets/tabs/chat/guildtab.h"
+
+#include "net/ea/guildrecv.h"
+
+#include "net/tmwa/messageout.h"
+#include "net/tmwa/protocol.h"
+
+#include "debug.h"
+
+namespace TmwAthena
+{
+
+void GuildRecv::processGuildPositionInfo(Net::MessageIn &msg)
+{
+ const int guildId = msg.readInt32("guild id");
+ const int emblem = msg.readInt32("emblem");
+ const int posMode = msg.readInt32("position");
+ msg.readInt32("unused");
+ msg.readUInt8("usused");
+ std::string guildName = msg.readString(24, "guild name");
+
+ PlayerInfo::setGuildPositionFlags(GuildPositionFlags::Invite);
+
+ 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());
+ }
+
+ logger->log("Guild position info: %d %d %d %s\n", guildId,
+ emblem, posMode, guildName.c_str());
+}
+
+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");
+ if (Ea::taGuild)
+ {
+ GuildMember *const m = Ea::taGuild->getMember(accountId, charId);
+ if (m)
+ {
+ m->setOnline(online);
+ if (guildTab)
+ guildTab->showOnline(m->getName(), fromBool(online, Online));
+ if (socialWindow)
+ socialWindow->updateGuildCounter();
+ }
+ }
+}
+
+void GuildRecv::processGuildExpulsion(Net::MessageIn &msg)
+{
+ std::string nick;
+ if (serverFeatures->haveNewGuild())
+ {
+ nick = msg.readString(24, "name");
+ msg.readString(40, "reason");
+ msg.readString(24, "kicker name");
+ }
+ else
+ {
+ msg.readInt16("len?");
+ nick = msg.readString(24, "name?");
+ msg.skip(24, "player name");
+ msg.readString(44, "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) / 88;
+
+ for (int i = 0; i < count; i++)
+ {
+ msg.readString(24, "name of expulsed");
+ msg.readString(24, "name of expluser");
+ msg.readString(24, "message");
+ }
+}
+
+} // namespace TmwAthena
diff --git a/src/net/tmwa/guildrecv.h b/src/net/tmwa/guildrecv.h
new file mode 100644
index 000000000..83d25bbaa
--- /dev/null
+++ b/src/net/tmwa/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_TMWA_GUILDRECV_H
+#define NET_TMWA_GUILDRECV_H
+
+#include "net/ea/guildhandler.h"
+
+#include "net/tmwa/messagehandler.h"
+
+namespace TmwAthena
+{
+ namespace GuildRecv
+ {
+ void processGuildPositionInfo(Net::MessageIn &msg);
+ void processGuildMemberLogin(Net::MessageIn &msg);
+ void processGuildExpulsion(Net::MessageIn &msg);
+ void processGuildExpulsionList(Net::MessageIn &msg);
+ } // namespace GuildRecv
+} // namespace TmwAthena
+
+extern GuildTab *guildTab;
+
+namespace Ea
+{
+ extern Guild *taGuild;
+}
+
+#endif // NET_TMWA_GUILDRECV_H