aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/World
diff options
context:
space:
mode:
authorSpp <none@none>2010-12-05 17:50:26 +0100
committerSpp <none@none>2010-12-05 17:50:26 +0100
commite621f5fe98ac7f0c488ffb00b0d7844b7f4e27fd (patch)
tree7c44aeee468814baa1234d7d800d6b0ef3d14c81 /src/server/scripts/World
parent71c2698faffb22fcfd0370370d80e180c70e3141 (diff)
Core/Dungeon Finder: Code cleanup and minor optimizations
- Extend LfgState to keep control of the state of group and players using LFG - Move scripts to its own class and initialize only if Dungeon finder is enabled - Updated comments to doxygen format - Use constructor initialization list - All variables are declared in the inner most scope - Fix some mem leaks - Remove no longer needed code (Cleaner) - Normalize handler function names --HG-- branch : trunk
Diffstat (limited to 'src/server/scripts/World')
-rw-r--r--src/server/scripts/World/CMakeLists.txt1
-rw-r--r--src/server/scripts/World/dungeon_finder.cpp163
2 files changed, 0 insertions, 164 deletions
diff --git a/src/server/scripts/World/CMakeLists.txt b/src/server/scripts/World/CMakeLists.txt
index 3cc27cd8b5e..2f015db7cb4 100644
--- a/src/server/scripts/World/CMakeLists.txt
+++ b/src/server/scripts/World/CMakeLists.txt
@@ -7,7 +7,6 @@ set(scripts_STAT_SRCS
World/boss_taerar.cpp
World/boss_ysondre.cpp
World/chat_log.cpp
- World/dungeon_finder.cpp
World/go_scripts.cpp
World/guards.cpp
World/item_scripts.cpp
diff --git a/src/server/scripts/World/dungeon_finder.cpp b/src/server/scripts/World/dungeon_finder.cpp
deleted file mode 100644
index 60a8ede4360..00000000000
--- a/src/server/scripts/World/dungeon_finder.cpp
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Copyright (C) 2008-2010 TrinityCore <http://www.trinitycore.org/>
- *
- * 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 (at your
- * option) 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/>.
- */
-
-/*
- * Interaction between core and LFGMgr
- */
-
-#include "ScriptPCH.h"
-#include "LFGMgr.h"
-#include "Group.h"
-
-class DungeonFinderScript: public GroupScript, PlayerScript
-{
-public:
- DungeonFinderScript(): GroupScript("DungeonFinderScript"), PlayerScript("DungeonFinderScript") { }
-
- void OnAddMember(Group* group, uint64 guid)
- {
- uint64 gguid = group->GetGUID();
- sLog.outDebug("OnAddMember [" UI64FMTD "]: added [" UI64FMTD "]", gguid, guid);
- if (!gguid)
- return;
-
- for (GroupReference *itr = group->GetFirstMember(); itr != NULL; itr = itr->next())
- {
- if (Player *plrg = itr->getSource())
- {
- plrg->GetSession()->SendLfgUpdatePlayer(LFG_UPDATETYPE_CLEAR_LOCK_LIST);
- plrg->GetSession()->SendLfgUpdateParty(LFG_UPDATETYPE_CLEAR_LOCK_LIST);
- }
- }
-
- if (group->isLfgQueued())
- sLFGMgr.Leave(NULL, group);
-
- Player *plr = sObjectMgr.GetPlayer(guid);
- if (plr && plr->isUsingLfg())
- sLFGMgr.Leave(plr);
- }
-
- void OnRemoveMember(Group* group, uint64 guid, RemoveMethod& method, uint64 kicker, const char* reason)
- {
- uint64 gguid = group->GetGUID();
- sLog.outDebug("OnRemoveMember [" UI64FMTD "]: remove [" UI64FMTD "] Method: %d Kicker: [" UI64FMTD "] Reason: %s", gguid, guid, method, kicker, (reason ? reason : ""));
- if (!gguid)
- return;
-
- if (group->isLfgQueued())
- {
- // TODO - Do not remove, just remove the one leaving and rejoin queue with all other data
- sLFGMgr.Leave(NULL, group);
- }
-
- if (!group->isLFGGroup())
- return;
-
- if (method == GROUP_REMOVEMETHOD_KICK) // Player have been kicked
- {
- // TODO - Update internal kick cooldown of kicker
- std::string str_reason = "";
- if (reason)
- str_reason = std::string(reason);
- sLFGMgr.InitBoot(group, GUID_LOPART(kicker), GUID_LOPART(guid), str_reason);
- return;
- }
-
- if (Player *plr = sObjectMgr.GetPlayer(guid))
- {
- /*
- if (method == GROUP_REMOVEMETHOD_LEAVE)
- // Add deserter flag
- else if (group->isLfgKickActive())
- // Update internal kick cooldown of kicked
- */
-
- plr->GetSession()->SendLfgUpdateParty(LFG_UPDATETYPE_LEADER);
- if (plr->GetMap()->IsDungeon()) // Teleport player out the dungeon
- sLFGMgr.TeleportPlayer(plr, true);
- }
-
- if (!group->isLfgDungeonComplete()) // Need more players to finish the dungeon
- sLFGMgr.OfferContinue(group);
- }
-
- void OnDisband(Group* group)
- {
- uint64 gguid = group->GetGUID();
- sLog.outDebug("OnDisband [" UI64FMTD "]", gguid);
- if (!gguid)
- return;
-
- if (group->isLfgQueued())
- sLFGMgr.Leave(NULL, group);
-
- for (GroupReference *itr = group->GetFirstMember(); itr != NULL; itr = itr->next())
- {
- if (Player *plrg = itr->getSource())
- {
- plrg->GetSession()->SendLfgUpdateParty(LFG_UPDATETYPE_GROUP_DISBAND);
- plrg->GetSession()->SendLfgUpdateParty(LFG_UPDATETYPE_LEADER);
- if (plrg->GetMap()->IsDungeon()) // Teleport player out the dungeon
- sLFGMgr.TeleportPlayer(plrg, true);
- }
- }
- }
-
- void OnChangeLeader(Group* group, uint64 newLeaderGuid, uint64 oldLeaderGuid)
- {
- uint64 gguid = group->GetGUID();
- sLog.outDebug("OnChangeLeader [" UI64FMTD "]: old [" UI64FMTD "] new [" UI64FMTD "]", gguid, newLeaderGuid, oldLeaderGuid);
- if (!gguid)
- return;
-
- Player *plr = sObjectMgr.GetPlayer(newLeaderGuid);
- if (plr)
- plr->GetSession()->SendLfgUpdateParty(LFG_UPDATETYPE_LEADER);
-
- plr = sObjectMgr.GetPlayer(oldLeaderGuid);
- if (plr)
- plr->GetSession()->SendLfgUpdateParty(LFG_UPDATETYPE_GROUP_DISBAND);
- }
-
- void OnInviteMember(Group* group, uint64 guid)
- {
- uint64 gguid = group->GetGUID();
- sLog.outDebug("OnInviteMember [" UI64FMTD "]: invite [" UI64FMTD "] leader [" UI64FMTD "]", gguid, guid, group->GetLeaderGUID());
- if (!gguid)
- return;
-
- sLFGMgr.Leave(NULL, group);
- }
-
- void OnLevelChanged(Player* /*player*/, uint8 /*newLevel*/)
- {
- }
-
- void OnLogout(Player* player)
- {
- sLFGMgr.Leave(player);
- player->GetSession()->SendLfgUpdateParty(LFG_UPDATETYPE_REMOVED_FROM_QUEUE);
- player->GetSession()->SendLfgUpdatePlayer(LFG_UPDATETYPE_REMOVED_FROM_QUEUE);
- player->GetSession()->SendLfgUpdateSearch(false);
- }
-};
-
-void AddSC_dungeon_finder()
-{
- new DungeonFinderScript();
-}