Files
CypherCore/Source/Game/Handlers/ScenarioHandler.cs
T
2023-01-18 17:25:32 -05:00

39 lines
1.5 KiB
C#

// Copyright (c) CypherCore <http://github.com/CypherCore> All rights reserved.
// Licensed under the GNU GENERAL PUBLIC LICENSE. See LICENSE file in the project root for full license information.
using Framework.Constants;
using Game.Networking;
using Game.Networking.Packets;
using System.Collections.Generic;
namespace Game
{
public partial class WorldSession
{
[WorldPacketHandler(ClientOpcodes.QueryScenarioPoi, Processing = PacketProcessing.Inplace)]
void HandleQueryScenarioPOI(QueryScenarioPOI queryScenarioPOI)
{
ScenarioPOIs response = new();
// Read criteria tree ids and add the in a unordered_set so we don't send POIs for the same criteria tree multiple times
List<int> criteriaTreeIds = new();
for (int i = 0; i < queryScenarioPOI.MissingScenarioPOIs.Count; ++i)
criteriaTreeIds.Add(queryScenarioPOI.MissingScenarioPOIs[i]); // CriteriaTreeID
foreach (int criteriaTreeId in criteriaTreeIds)
{
var poiVector = Global.ScenarioMgr.GetScenarioPOIs((uint)criteriaTreeId);
if (poiVector != null)
{
ScenarioPOIData scenarioPOIData = new();
scenarioPOIData.CriteriaTreeID = criteriaTreeId;
scenarioPOIData.ScenarioPOIs = poiVector;
response.ScenarioPOIDataStats.Add(scenarioPOIData);
}
}
SendPacket(response);
}
}
}