aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/DungeonFinding/LFGMgr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/DungeonFinding/LFGMgr.cpp')
-rwxr-xr-xsrc/server/game/DungeonFinding/LFGMgr.cpp40
1 files changed, 23 insertions, 17 deletions
diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp
index 16fda8952ac..357b7f1ecee 100755
--- a/src/server/game/DungeonFinding/LFGMgr.cpp
+++ b/src/server/game/DungeonFinding/LFGMgr.cpp
@@ -31,17 +31,20 @@
#include "GroupMgr.h"
#include "GameEventMgr.h"
-LFGMgr::LFGMgr(): m_QueueTimer(0), m_lfgProposalId(1),
- m_options(sWorld->getBoolConfig(CONFIG_DUNGEON_FINDER_ENABLE)),
- m_lfgPlayerScript(new LFGPlayerScript()), m_lfgGroupScript(new LFGGroupScript())
-{ }
+LFGMgr::LFGMgr(): m_QueueTimer(0), m_lfgProposalId(1)
+{
+ m_options = sWorld->getBoolConfig(CONFIG_DUNGEON_FINDER_ENABLE);
+ if (m_options)
+ {
+ new LFGPlayerScript();
+ new LFGGroupScript();
+ }
+}
LFGMgr::~LFGMgr()
{
for (LfgRewardMap::iterator itr = m_RewardMap.begin(); itr != m_RewardMap.end(); ++itr)
delete itr->second;
- delete m_lfgPlayerScript;
- delete m_lfgGroupScript;
}
void LFGMgr::_LoadFromDB(Field* fields, uint64 guid)
@@ -239,7 +242,7 @@ void LFGMgr::LoadRewards()
sLog->outInfo(LOG_FILTER_SERVER_LOADING, ">> Loaded %u lfg dungeon rewards in %u ms", count, GetMSTimeDiffToNow(oldMSTime));
}
-LFGDungeonEntry const* LFGMgr::GetLFGDungeon(uint32 id)
+LFGDungeonData const* LFGMgr::GetLFGDungeon(uint32 id)
{
LFGDungeonMap::const_iterator itr = m_LfgDungeonMap.find(id);
if (itr != m_LfgDungeonMap.end())
@@ -262,7 +265,7 @@ void LFGMgr::LoadLFGDungeons(bool reload /* = false */)
// Initialize Dungeon map with data from dbcs
for (uint32 i = 0; i < sLFGDungeonStore.GetNumRows(); ++i)
{
- LFGDungeonEntryDbc const* dungeon = sLFGDungeonStore.LookupEntry(i);
+ LFGDungeonEntry const* dungeon = sLFGDungeonStore.LookupEntry(i);
if (!dungeon)
continue;
@@ -272,7 +275,7 @@ void LFGMgr::LoadLFGDungeons(bool reload /* = false */)
case LFG_TYPE_HEROIC:
case LFG_TYPE_RAID:
case LFG_TYPE_RANDOM:
- m_LfgDungeonMap[dungeon->ID] = LFGDungeonEntry(dungeon);
+ m_LfgDungeonMap[dungeon->ID] = LFGDungeonData(dungeon);
break;
}
}
@@ -299,7 +302,7 @@ void LFGMgr::LoadLFGDungeons(bool reload /* = false */)
continue;
}
- LFGDungeonEntry& data = dungeonItr->second;
+ LFGDungeonData& data = dungeonItr->second;
data.x = fields[1].GetFloat();
data.y = fields[2].GetFloat();
data.z = fields[3].GetFloat();
@@ -314,7 +317,10 @@ void LFGMgr::LoadLFGDungeons(bool reload /* = false */)
// Fill all other teleport coords from areatriggers
for (LFGDungeonMap::iterator itr = m_LfgDungeonMap.begin(); itr != m_LfgDungeonMap.end(); ++itr)
{
- LFGDungeonEntry& dungeon = itr->second;
+ LFGDungeonData& dungeon = itr->second;
+ if (dungeon.type == LFG_TYPE_RANDOM)
+ continue;
+
// No teleport coords in database, load from areatriggers
if (dungeon.x == 0.0f && dungeon.y == 0.0f && dungeon.z == 0.0f)
{
@@ -462,7 +468,7 @@ void LFGMgr::InitializeLockedDungeons(Player* player, uint8 level /* = 0 */)
for (LfgDungeonSet::const_iterator it = dungeons.begin(); it != dungeons.end(); ++it)
{
- LFGDungeonEntry const* dungeon = GetLFGDungeon(*it);
+ LFGDungeonData const* dungeon = GetLFGDungeon(*it);
if (!dungeon) // should never happen - We provide a list from sLFGDungeonStore
continue;
@@ -1014,7 +1020,7 @@ void LFGMgr::MakeNewGroup(const LfgProposal& proposal)
}
// Set the dungeon difficulty
- LFGDungeonEntry const* dungeon = GetLFGDungeon(proposal.dungeonId);
+ LFGDungeonData const* dungeon = GetLFGDungeon(proposal.dungeonId);
ASSERT(dungeon);
Group* grp = proposal.group ? sGroupMgr->GetGroupByGUID(GUID_LOPART(proposal.group)) : NULL;
@@ -1384,7 +1390,7 @@ void LFGMgr::TeleportPlayer(Player* player, bool out, bool fromOpcode /*= false*
Group* grp = player->GetGroup();
uint64 gguid = grp->GetGUID();
- LFGDungeonEntry const* dungeon = GetLFGDungeon(GetDungeon(gguid));
+ LFGDungeonData const* dungeon = GetLFGDungeon(GetDungeon(gguid));
if (!dungeon || (out && player->GetMapId() != uint32(dungeon->map)))
return;
@@ -1501,7 +1507,7 @@ void LFGMgr::RewardDungeonDoneFor(const uint32 dungeonId, Player* player)
SetState(guid, LFG_STATE_FINISHED_DUNGEON);
// Give rewards only if its a random or seasonal dungeon
- LFGDungeonEntry const* dungeon = GetLFGDungeon(rDungeonId);
+ LFGDungeonData const* dungeon = GetLFGDungeon(rDungeonId);
if (!dungeon || (dungeon->type != LFG_TYPE_RANDOM && !dungeon->seasonal))
{
sLog->outDebug(LOG_FILTER_LFG, "LFGMgr::RewardDungeonDoneFor: [" UI64FMTD "] dungeon %u is not random nor seasonal", guid, rDungeonId);
@@ -1551,7 +1557,7 @@ void LFGMgr::RewardDungeonDoneFor(const uint32 dungeonId, Player* player)
*/
const LfgDungeonSet& LFGMgr::GetDungeonsByRandom(uint32 randomdungeon)
{
- LFGDungeonEntry const* dungeon = GetLFGDungeon(randomdungeon);
+ LFGDungeonData const* dungeon = GetLFGDungeon(randomdungeon);
uint32 group = dungeon ? dungeon->group : 0;
return m_CachedDungeonMap[group];
}
@@ -1586,7 +1592,7 @@ LfgReward const* LFGMgr::GetRandomDungeonReward(uint32 dungeon, uint8 level)
*/
LfgType LFGMgr::GetDungeonType(uint32 dungeonId)
{
- LFGDungeonEntry const* dungeon = GetLFGDungeon(dungeonId);
+ LFGDungeonData const* dungeon = GetLFGDungeon(dungeonId);
if (!dungeon)
return LFG_TYPE_NONE;