Core/Conversations: Dropped time fields and calculate them using db2 data

Port From (https://github.com/TrinityCore/TrinityCore/commit/94b14e4f6355a7bab8004dcc2ecadadbc52833de)
This commit is contained in:
hondacrx
2021-11-03 11:44:33 -04:00
parent a715622d94
commit 0bfef874de
10 changed files with 153 additions and 26 deletions
@@ -5622,7 +5622,7 @@ namespace Game.Entities
public void WriteCreate(WorldPacket data, Conversation owner, Player receiver)
{
data.WriteUInt32(ConversationLineID);
data.WriteUInt32(StartTime);
data.WriteUInt32(GetViewerStartTime(this, owner, receiver));
data.WriteUInt32(UiCameraID);
data.WriteUInt8(ActorIndex);
data.WriteUInt8(Flags);
@@ -5632,12 +5632,24 @@ namespace Game.Entities
public void WriteUpdate(WorldPacket data, bool ignoreChangesMask, Conversation owner, Player receiver)
{
data.WriteUInt32(ConversationLineID);
data.WriteUInt32(StartTime);
data.WriteUInt32(GetViewerStartTime(this, owner, receiver));
data.WriteUInt32(UiCameraID);
data.WriteUInt8(ActorIndex);
data.WriteUInt8(Flags);
data.WriteUInt8(ChatType);
}
public uint GetViewerStartTime(ConversationLine conversationLine, Conversation conversation, Player receiver)
{
uint startTime = conversationLine.StartTime;
Locale locale = receiver.GetSession().GetSessionDbLocaleIndex();
TimeSpan localizedStartTime = conversation.GetLineStartTime(locale, (int)conversationLine.ConversationLineID);
if (localizedStartTime != TimeSpan.Zero)
startTime = (uint)localizedStartTime.TotalMilliseconds;
return startTime;
}
}
public class ConversationActorField
@@ -5685,7 +5697,7 @@ namespace Game.Entities
public void WriteCreate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Conversation owner, Player receiver)
{
data.WriteInt32(((List<ConversationLine>)Lines).Count);
data.WriteUInt32(LastLineEndTime);
data.WriteUInt32(GetViewerLastLineEndTime(this, owner, receiver));
data.WriteUInt32(Progress);
for (int i = 0; i < ((List<ConversationLine>)Lines).Count; ++i)
{
@@ -5751,7 +5763,7 @@ namespace Game.Entities
}
if (_changesMask[4])
{
data.WriteUInt32(LastLineEndTime);
data.WriteUInt32(GetViewerLastLineEndTime(this, owner, receiver));
}
if (_changesMask[5])
{
@@ -5770,5 +5782,11 @@ namespace Game.Entities
ClearChangesMask(Progress);
_changesMask.ResetAll();
}
public uint GetViewerLastLineEndTime(ConversationData conversationLineData, Conversation conversation, Player receiver)
{
Locale locale = receiver.GetSession().GetSessionDbLocaleIndex();
return (uint)conversation.GetLastLineEndTime(locale).TotalMilliseconds;
}
}
}