summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/net/ea/guildhandler.cpp82
-rw-r--r--src/net/ea/guildhandler.h4
-rw-r--r--src/net/eathena/guildhandler.cpp15
-rw-r--r--src/net/eathena/guildhandler.h2
-rw-r--r--src/net/tmwa/guildhandler.cpp15
-rw-r--r--src/net/tmwa/guildhandler.h2
6 files changed, 75 insertions, 45 deletions
diff --git a/src/net/ea/guildhandler.cpp b/src/net/ea/guildhandler.cpp
index 2364cfa9a..0cc03d805 100644
--- a/src/net/ea/guildhandler.cpp
+++ b/src/net/ea/guildhandler.cpp
@@ -448,49 +448,6 @@ void GuildHandler::processGuildLeave(Net::MessageIn &msg) const
}
}
-void GuildHandler::processGuildExpulsion(Net::MessageIn &msg) const
-{
- msg.skip(2); // size (can be many explusions in list)
- const std::string nick = msg.readString(24); // Name (of expulsed?)
- msg.skip(24); // acc
- msg.readString(44); // Message
- if (taGuild)
- taGuild->removeMember(nick);
-
- if (!localPlayer)
- return;
-
- if (nick == localPlayer->getName())
- {
- if (taGuild)
- {
- taGuild->removeFromMembers();
- taGuild->clearMembers();
- }
- NotifyManager::notify(NotifyTypes::GUILD_KICKED);
- delete2(guildTab)
-
- if (socialWindow && taGuild)
- socialWindow->removeTab(taGuild);
- if (actorManager)
- actorManager->updatePlayerColors();
- }
- else
- {
- NotifyManager::notify(NotifyTypes::GUILD_USER_KICKED, nick);
- if (actorManager)
- {
- Being *const b = actorManager->findBeingByName(
- nick, ActorType::Player);
-
- if (b)
- b->clearGuilds();
- if (taGuild)
- taGuild->removeMember(nick);
- }
- }
-}
-
void GuildHandler::processGuildExpulsionList(Net::MessageIn &msg) const
{
const int length = msg.readInt16();
@@ -577,4 +534,43 @@ ChatTab *GuildHandler::getTab() const
return guildTab;
}
+void GuildHandler::processGuildExpulsionContinue(const std::string &nick) const
+{
+ if (taGuild)
+ taGuild->removeMember(nick);
+
+ if (!localPlayer)
+ return;
+
+ if (nick == localPlayer->getName())
+ {
+ if (taGuild)
+ {
+ taGuild->removeFromMembers();
+ taGuild->clearMembers();
+ }
+ NotifyManager::notify(NotifyTypes::GUILD_KICKED);
+ delete2(guildTab)
+
+ if (socialWindow && taGuild)
+ socialWindow->removeTab(taGuild);
+ if (actorManager)
+ actorManager->updatePlayerColors();
+ }
+ else
+ {
+ NotifyManager::notify(NotifyTypes::GUILD_USER_KICKED, nick);
+ if (actorManager)
+ {
+ Being *const b = actorManager->findBeingByName(
+ nick, ActorType::Player);
+
+ if (b)
+ b->clearGuilds();
+ if (taGuild)
+ taGuild->removeMember(nick);
+ }
+ }
+}
+
} // namespace Ea
diff --git a/src/net/ea/guildhandler.h b/src/net/ea/guildhandler.h
index ee3ce2672..2bfa4c4a2 100644
--- a/src/net/ea/guildhandler.h
+++ b/src/net/ea/guildhandler.h
@@ -81,8 +81,6 @@ class GuildHandler notfinal : public Net::GuildHandler
virtual void processGuildLeave(Net::MessageIn &msg) const;
- virtual void processGuildExpulsion(Net::MessageIn &msg) const;
-
virtual void processGuildExpulsionList(Net::MessageIn &msg) const;
virtual void processGuildMessage(Net::MessageIn &msg) const;
@@ -99,6 +97,8 @@ class GuildHandler notfinal : public Net::GuildHandler
virtual void processGuildBroken(Net::MessageIn &msg) const;
+ void processGuildExpulsionContinue(const std::string &nick) const;
+
void clear() const override final;
ChatTab *getTab() const override final;
diff --git a/src/net/eathena/guildhandler.cpp b/src/net/eathena/guildhandler.cpp
index 51ff00cce..6c740c945 100644
--- a/src/net/eathena/guildhandler.cpp
+++ b/src/net/eathena/guildhandler.cpp
@@ -23,6 +23,7 @@
#include "actormanager.h"
#include "configuration.h"
+#include "notifymanager.h"
#include "being/localplayer.h"
#include "being/playerinfo.h"
@@ -35,6 +36,10 @@
#include "net/eathena/messageout.h"
#include "net/eathena/protocol.h"
+#include "resources/notifytypes.h"
+
+#include "utils/delete2.h"
+
#include "debug.h"
extern Net::GuildHandler *guildHandler;
@@ -414,4 +419,14 @@ void GuildHandler::processGuildMemberLogin(Net::MessageIn &msg) const
}
}
+void GuildHandler::processGuildExpulsion(Net::MessageIn &msg) const
+{
+ msg.skip(2); // size (can be many explusions in list)
+ const std::string nick = msg.readString(24); // Name (of expulsed?)
+ msg.skip(24); // acc
+ msg.readString(44); // Message
+
+ processGuildExpulsionContinue(nick);
+}
+
} // namespace EAthena
diff --git a/src/net/eathena/guildhandler.h b/src/net/eathena/guildhandler.h
index 7f8d4ba6a..7370da44e 100644
--- a/src/net/eathena/guildhandler.h
+++ b/src/net/eathena/guildhandler.h
@@ -79,6 +79,8 @@ class GuildHandler final : public Ea::GuildHandler, public MessageHandler
void processGuildPositionInfo(Net::MessageIn &msg) const;
void processGuildMemberLogin(Net::MessageIn &msg) const;
+
+ void processGuildExpulsion(Net::MessageIn &msg) const;
};
// extern Ea::GuildTab *guildTab;
diff --git a/src/net/tmwa/guildhandler.cpp b/src/net/tmwa/guildhandler.cpp
index 8226bea3f..ec7c9541a 100644
--- a/src/net/tmwa/guildhandler.cpp
+++ b/src/net/tmwa/guildhandler.cpp
@@ -23,6 +23,7 @@
#include "actormanager.h"
#include "configuration.h"
+#include "notifymanager.h"
#include "being/localplayer.h"
#include "being/playerinfo.h"
@@ -37,6 +38,10 @@
#include "net/tmwa/messageout.h"
#include "net/tmwa/protocol.h"
+#include "resources/notifytypes.h"
+
+#include "utils/delete2.h"
+
#include "debug.h"
extern Net::GuildHandler *guildHandler;
@@ -399,4 +404,14 @@ void GuildHandler::processGuildMemberLogin(Net::MessageIn &msg) const
}
}
+void GuildHandler::processGuildExpulsion(Net::MessageIn &msg) const
+{
+ msg.skip(2, "len?");
+ const std::string nick = msg.readString(24, "name?");
+ msg.skip(24, "player name");
+ msg.readString(44, "message"); // Message
+
+ processGuildExpulsionContinue(nick);
+}
+
} // namespace TmwAthena
diff --git a/src/net/tmwa/guildhandler.h b/src/net/tmwa/guildhandler.h
index a7f32c9c6..acc32e70b 100644
--- a/src/net/tmwa/guildhandler.h
+++ b/src/net/tmwa/guildhandler.h
@@ -77,6 +77,8 @@ class GuildHandler final : public Ea::GuildHandler, public MessageHandler
void processGuildPositionInfo(Net::MessageIn &msg) const;
void processGuildMemberLogin(Net::MessageIn &msg) const;
+
+ void processGuildExpulsion(Net::MessageIn &msg) const;
};
extern Ea::GuildTab *guildTab;