Core/Cache: Implement QueryCache system
Ideas/Port From (https://github.com/TrinityCore/TrinityCore/commit/b4d30bb92cbfc8411d8d91b0f4f2981f2cecc148)
This commit is contained in:
@@ -20,6 +20,8 @@ using Framework.Constants;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Framework.Dynamic;
|
||||
using Game.Network.Packets;
|
||||
using Game.Network;
|
||||
|
||||
namespace Game.Entities
|
||||
{
|
||||
@@ -91,6 +93,8 @@ namespace Game.Entities
|
||||
public CreatureFlagsExtra FlagsExtra;
|
||||
public uint ScriptID;
|
||||
|
||||
public QueryCreatureResponse QueryData;
|
||||
|
||||
public CreatureModel GetModelByIdx(int idx)
|
||||
{
|
||||
return idx < Models.Count ? Models[idx] : null;
|
||||
@@ -210,6 +214,58 @@ namespace Game.Entities
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
public void InitializeQueryData()
|
||||
{
|
||||
QueryData = new QueryCreatureResponse();
|
||||
|
||||
QueryData.CreatureID = Entry;
|
||||
QueryData.Allow = true;
|
||||
|
||||
CreatureStats stats = new CreatureStats();
|
||||
stats.Leader = RacialLeader;
|
||||
|
||||
stats.Name[0] = Name;
|
||||
stats.NameAlt[0] = FemaleName;
|
||||
|
||||
stats.Flags[0] = (uint)TypeFlags;
|
||||
stats.Flags[1] = TypeFlags2;
|
||||
|
||||
stats.CreatureType = (int)CreatureType;
|
||||
stats.CreatureFamily = (int)Family;
|
||||
stats.Classification = (int)Rank;
|
||||
|
||||
for (uint i = 0; i < SharedConst.MaxCreatureKillCredit; ++i)
|
||||
stats.ProxyCreatureID[i] = KillCredit[i];
|
||||
|
||||
foreach (var model in Models)
|
||||
{
|
||||
stats.Display.TotalProbability += model.Probability;
|
||||
stats.Display.CreatureDisplay.Add(new CreatureXDisplay(model.CreatureDisplayID, model.DisplayScale, model.Probability));
|
||||
}
|
||||
|
||||
stats.HpMulti = ModHealth;
|
||||
stats.EnergyMulti = ModMana;
|
||||
|
||||
stats.CreatureMovementInfoID = MovementId;
|
||||
stats.RequiredExpansion = RequiredExpansion;
|
||||
stats.HealthScalingExpansion = HealthScalingExpansion;
|
||||
stats.VignetteID = VignetteID;
|
||||
stats.Class = (int)UnitClass;
|
||||
stats.FadeRegionRadius = FadeRegionRadius;
|
||||
stats.WidgetSetID = WidgetSetID;
|
||||
stats.WidgetSetUnitConditionID = WidgetSetUnitConditionID;
|
||||
|
||||
stats.Title = SubName;
|
||||
stats.TitleAlt = TitleAlt;
|
||||
stats.CursorName = IconName;
|
||||
|
||||
var items = Global.ObjectMgr.GetCreatureQuestItemList(Entry);
|
||||
if (items != null)
|
||||
stats.QuestItems.AddRange(items);
|
||||
|
||||
QueryData.Stats = stats;
|
||||
}
|
||||
}
|
||||
|
||||
public class CreatureBaseStats
|
||||
|
||||
Reference in New Issue
Block a user