mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/DataStores: Updated hotfix database structure
* Updated handling for removed db2s
This commit is contained in:
@@ -146,8 +146,8 @@ void PhasingHandler::AddVisibleMapId(WorldObject* object, uint32 visibleMapId)
|
||||
TerrainSwapInfo const* terrainSwapInfo = sObjectMgr->GetTerrainSwapInfo(visibleMapId);
|
||||
bool changed = object->GetPhaseShift().AddVisibleMapId(visibleMapId, terrainSwapInfo);
|
||||
|
||||
for (uint32 uiWorldMapAreaIDSwap : terrainSwapInfo->UiWorldMapAreaIDSwaps)
|
||||
changed = object->GetPhaseShift().AddUiWorldMapAreaIdSwap(uiWorldMapAreaIDSwap) || changed;
|
||||
for (uint32 uiMapPhaseId : terrainSwapInfo->UiMapPhaseIDs)
|
||||
changed = object->GetPhaseShift().AddUiMapPhaseId(uiMapPhaseId) || changed;
|
||||
|
||||
if (Unit* unit = object->ToUnit())
|
||||
{
|
||||
@@ -165,8 +165,8 @@ void PhasingHandler::RemoveVisibleMapId(WorldObject* object, uint32 visibleMapId
|
||||
TerrainSwapInfo const* terrainSwapInfo = sObjectMgr->GetTerrainSwapInfo(visibleMapId);
|
||||
bool changed = object->GetPhaseShift().RemoveVisibleMapId(visibleMapId).Erased;
|
||||
|
||||
for (uint32 uiWorldMapAreaIDSwap : terrainSwapInfo->UiWorldMapAreaIDSwaps)
|
||||
changed = object->GetPhaseShift().RemoveUiWorldMapAreaIdSwap(uiWorldMapAreaIDSwap).Erased || changed;
|
||||
for (uint32 uiWorldMapAreaIDSwap : terrainSwapInfo->UiMapPhaseIDs)
|
||||
changed = object->GetPhaseShift().RemoveUiMapPhaseId(uiWorldMapAreaIDSwap).Erased || changed;
|
||||
|
||||
if (Unit* unit = object->ToUnit())
|
||||
{
|
||||
@@ -198,18 +198,21 @@ void PhasingHandler::OnMapChange(WorldObject* object)
|
||||
ConditionSourceInfo srcInfo = ConditionSourceInfo(object);
|
||||
|
||||
object->GetPhaseShift().VisibleMapIds.clear();
|
||||
object->GetPhaseShift().UiWorldMapAreaIdSwaps.clear();
|
||||
object->GetPhaseShift().UiMapPhaseIds.clear();
|
||||
object->GetSuppressedPhaseShift().VisibleMapIds.clear();
|
||||
|
||||
if (std::vector<TerrainSwapInfo*> const* visibleMapIds = sObjectMgr->GetTerrainSwapsForMap(object->GetMapId()))
|
||||
for (auto visibleMapPair : sObjectMgr->GetTerrainSwaps())
|
||||
{
|
||||
for (TerrainSwapInfo const* visibleMapInfo : *visibleMapIds)
|
||||
for (TerrainSwapInfo const* visibleMapInfo : visibleMapPair.second)
|
||||
{
|
||||
if (sConditionMgr->IsObjectMeetingNotGroupedConditions(CONDITION_SOURCE_TYPE_TERRAIN_SWAP, visibleMapInfo->Id, srcInfo))
|
||||
{
|
||||
phaseShift.AddVisibleMapId(visibleMapInfo->Id, visibleMapInfo);
|
||||
for (uint32 uiWorldMapAreaIdSwap : visibleMapInfo->UiWorldMapAreaIDSwaps)
|
||||
phaseShift.AddUiWorldMapAreaIdSwap(uiWorldMapAreaIdSwap);
|
||||
if (visibleMapPair.first == object->GetMapId())
|
||||
phaseShift.AddVisibleMapId(visibleMapInfo->Id, visibleMapInfo);
|
||||
|
||||
// ui map is visible on all maps
|
||||
for (uint32 uiMapPhaseId : visibleMapInfo->UiMapPhaseIDs)
|
||||
phaseShift.AddUiMapPhaseId(uiMapPhaseId);
|
||||
}
|
||||
else
|
||||
suppressedPhaseShift.AddVisibleMapId(visibleMapInfo->Id, visibleMapInfo);
|
||||
@@ -317,8 +320,8 @@ void PhasingHandler::OnConditionChange(WorldObject* object)
|
||||
if (!sConditionMgr->IsObjectMeetingNotGroupedConditions(CONDITION_SOURCE_TYPE_TERRAIN_SWAP, itr->first, srcInfo))
|
||||
{
|
||||
newSuppressions.AddVisibleMapId(itr->first, itr->second.VisibleMapInfo, itr->second.References);
|
||||
for (uint32 uiWorldMapAreaIdSwap : itr->second.VisibleMapInfo->UiWorldMapAreaIDSwaps)
|
||||
changed = phaseShift.RemoveUiWorldMapAreaIdSwap(uiWorldMapAreaIdSwap).Erased || changed;
|
||||
for (uint32 uiMapPhaseId : itr->second.VisibleMapInfo->UiMapPhaseIDs)
|
||||
changed = phaseShift.RemoveUiMapPhaseId(uiMapPhaseId).Erased || changed;
|
||||
|
||||
itr = phaseShift.VisibleMapIds.erase(itr);
|
||||
}
|
||||
@@ -331,8 +334,8 @@ void PhasingHandler::OnConditionChange(WorldObject* object)
|
||||
if (sConditionMgr->IsObjectMeetingNotGroupedConditions(CONDITION_SOURCE_TYPE_TERRAIN_SWAP, itr->first, srcInfo))
|
||||
{
|
||||
changed = phaseShift.AddVisibleMapId(itr->first, itr->second.VisibleMapInfo, itr->second.References) || changed;
|
||||
for (uint32 uiWorldMapAreaIdSwap : itr->second.VisibleMapInfo->UiWorldMapAreaIDSwaps)
|
||||
changed = phaseShift.AddUiWorldMapAreaIdSwap(uiWorldMapAreaIdSwap) || changed;
|
||||
for (uint32 uiMapPhaseId : itr->second.VisibleMapInfo->UiMapPhaseIDs)
|
||||
changed = phaseShift.AddUiMapPhaseId(uiMapPhaseId) || changed;
|
||||
|
||||
itr = suppressedPhaseShift.VisibleMapIds.erase(itr);
|
||||
}
|
||||
@@ -403,9 +406,9 @@ void PhasingHandler::SendToPlayer(Player const* player, PhaseShift const& phaseS
|
||||
phaseShiftChange.VisibleMapIDs.reserve(phaseShift.VisibleMapIds.size());
|
||||
std::transform(phaseShift.VisibleMapIds.begin(), phaseShift.VisibleMapIds.end(), std::back_inserter(phaseShiftChange.VisibleMapIDs),
|
||||
[](PhaseShift::VisibleMapIdContainer::value_type const& visibleMapId) { return visibleMapId.first; });
|
||||
phaseShiftChange.UiWorldMapAreaIDSwaps.reserve(phaseShift.UiWorldMapAreaIdSwaps.size());
|
||||
std::transform(phaseShift.UiWorldMapAreaIdSwaps.begin(), phaseShift.UiWorldMapAreaIdSwaps.end(), std::back_inserter(phaseShiftChange.UiWorldMapAreaIDSwaps),
|
||||
[](PhaseShift::UiWorldMapAreaIdSwapContainer::value_type const& uiWorldMapAreaIdSwap) { return uiWorldMapAreaIdSwap.first; });
|
||||
phaseShiftChange.UiMapPhaseIDs.reserve(phaseShift.UiMapPhaseIds.size());
|
||||
std::transform(phaseShift.UiMapPhaseIds.begin(), phaseShift.UiMapPhaseIds.end(), std::back_inserter(phaseShiftChange.UiMapPhaseIDs),
|
||||
[](PhaseShift::UiMapPhaseIdContainer::value_type const& uiWorldMapAreaIdSwap) { return uiWorldMapAreaIdSwap.first; });
|
||||
|
||||
player->SendDirectMessage(phaseShiftChange.Write());
|
||||
}
|
||||
@@ -545,10 +548,10 @@ void PhasingHandler::PrintToChat(ChatHandler* chat, PhaseShift const& phaseShift
|
||||
chat->PSendSysMessage(LANG_PHASESHIFT_VISIBLE_MAP_IDS, visibleMapIds.str().c_str());
|
||||
}
|
||||
|
||||
if (!phaseShift.UiWorldMapAreaIdSwaps.empty())
|
||||
if (!phaseShift.UiMapPhaseIds.empty())
|
||||
{
|
||||
std::ostringstream uiWorldMapAreaIdSwaps;
|
||||
for (PhaseShift::UiWorldMapAreaIdSwapContainer::value_type const& uiWorldMapAreaIdSwap : phaseShift.UiWorldMapAreaIdSwaps)
|
||||
for (PhaseShift::UiMapPhaseIdContainer::value_type const& uiWorldMapAreaIdSwap : phaseShift.UiMapPhaseIds)
|
||||
uiWorldMapAreaIdSwaps << uiWorldMapAreaIdSwap.first << ',' << ' ';
|
||||
|
||||
chat->PSendSysMessage(LANG_PHASESHIFT_UI_WORLD_MAP_AREA_SWAPS, uiWorldMapAreaIdSwaps.str().c_str());
|
||||
|
||||
Reference in New Issue
Block a user