Core/Grids: Move packet sending functionality out of MessageDistDeliverer and into separate, customizable class and unify LocalizedPacketDo, LocalizedPacketListDo as generic localizable action

Port From (https://github.com/TrinityCore/TrinityCore/commit/fb66575d38d2ba7ffc24c29824fa75d7019de549)
This commit is contained in:
hondacrx
2021-05-02 13:41:19 -04:00
parent 7c83501ba7
commit aaa3964d49
16 changed files with 188 additions and 198 deletions
+4 -2
View File
@@ -1355,13 +1355,15 @@ namespace Game.Entities
public virtual void SendMessageToSetInRange(ServerPacket data, float dist, bool self)
{
MessageDistDeliverer notifier = new(this, data, dist);
PacketSenderRef sender = new(data);
MessageDistDeliverer<PacketSenderRef> notifier = new(this, sender, dist);
Cell.VisitWorldObjects(this, notifier, dist);
}
public virtual void SendMessageToSet(ServerPacket data, Player skip)
{
var notifier = new MessageDistDeliverer(this, data, GetVisibilityRange(), false, skip);
PacketSenderRef sender = new(data);
var notifier = new MessageDistDeliverer<PacketSenderRef>(this, sender, GetVisibilityRange(), false, skip);
Cell.VisitWorldObjects(this, notifier, GetVisibilityRange());
}
+6 -3
View File
@@ -5970,7 +5970,8 @@ namespace Game.Entities
if (self)
SendPacket(data);
MessageDistDeliverer notifier = new(this, data, dist);
PacketSenderRef sender = new(data);
var notifier = new MessageDistDeliverer<PacketSenderRef>(this, sender, dist);
Cell.VisitWorldObjects(this, notifier, dist);
}
@@ -5979,7 +5980,8 @@ namespace Game.Entities
if (self)
SendPacket(data);
MessageDistDeliverer notifier = new(this, data, dist, own_team_only);
PacketSenderRef sender = new(data);
var notifier = new MessageDistDeliverer<PacketSenderRef>(this, sender, dist, own_team_only);
Cell.VisitWorldObjects(this, notifier, dist);
}
@@ -5990,7 +5992,8 @@ namespace Game.Entities
// we use World.GetMaxVisibleDistance() because i cannot see why not use a distance
// update: replaced by GetMap().GetVisibilityDistance()
MessageDistDeliverer notifier = new(this, data, GetVisibilityRange(), false, skipped_rcvr);
PacketSenderRef sender = new(data);
var notifier = new MessageDistDeliverer<PacketSenderRef>(this, sender, GetVisibilityRange(), false, skipped_rcvr);
Cell.VisitWorldObjects(this, notifier, GetVisibilityRange());
}
public override void SendMessageToSet(ServerPacket data, bool self)
+1 -1
View File
@@ -1549,7 +1549,7 @@ namespace Game.Entities
internal void SendCombatLogMessage(CombatLogServerPacket combatLog)
{
CombatLogSender combatLogCustomizer = new(combatLog);
MessageDistDeliverer notifier = new(this, combatLogCustomizer, GetVisibilityRange());
var notifier = new MessageDistDeliverer<CombatLogSender>(this, combatLogCustomizer, GetVisibilityRange());
Cell.VisitWorldObjects(this, notifier, GetVisibilityRange());
}
+4 -3
View File
@@ -578,7 +578,7 @@ namespace Game.Entities
public StringArray name = new(SharedConst.MaxDeclinedNameCases);
}
class CombatLogSender : MessageDistDelivererCustomizer
class CombatLogSender : IDoWork<Player>
{
CombatLogServerPacket i_message;
@@ -587,11 +587,12 @@ namespace Game.Entities
i_message = msg;
}
public override ServerPacket Invoke(Player player)
public void Invoke(Player player)
{
i_message.Clear();
i_message.SetAdvancedCombatLogging(player.IsAdvancedCombatLoggingEnabled());
return i_message;
player.SendPacket(i_message);
}
}
}
+2 -2
View File
@@ -351,7 +351,7 @@ namespace Game.Entities
public virtual void Talk(string text, ChatMsg msgType, Language language, float textRange, WorldObject target)
{
var builder = new CustomChatTextBuilder(this, msgType, text, language, target);
var localizer = new LocalizedPacketDo(builder);
var localizer = new LocalizedDo(builder);
var worker = new PlayerDistWorker(this, textRange, localizer);
Cell.VisitWorldObjects(this, worker, textRange);
}
@@ -391,7 +391,7 @@ namespace Game.Entities
}
var builder = new BroadcastTextBuilder(this, msgType, textId, GetGender(), target);
var localizer = new LocalizedPacketDo(builder);
var localizer = new LocalizedDo(builder);
var worker = new PlayerDistWorker(this, textRange, localizer);
Cell.VisitWorldObjects(this, worker, textRange);
}