ModernUO/Projects/UOContent.Tests/Tests/Network/Packets/BuffIconPackets.cs
Kamron Batman 6c4308bce6
fix(core): Caches DateTime.NowUtc (#548)
- [X] Caches DateTime.NowUtc on the game loop (not other threads)
- [X] Replaces all locations where it makes sense
- [X] Adds Min/Max for `IComparable` (TimeSpan, DateTimes, etc)

Closes #261
2021-03-13 01:32:04 -08:00

85 lines
2.5 KiB
C#

using System;
namespace Server.Network
{
public sealed class AddBuffPacket : Packet
{
public AddBuffPacket(Serial m, BuffInfo info)
: this(
m,
info.ID,
info.TitleCliloc,
info.SecondaryCliloc,
info.Args,
info.TimeStart != 0 ?
TimeSpan.FromMilliseconds(info.TimeStart + (long)info.TimeLength.TotalMilliseconds - Core.TickCount) :
TimeSpan.Zero
)
{
}
public AddBuffPacket(
Serial mob, BuffIcon iconID, int titleCliloc, int secondaryCliloc, TextDefinition args,
TimeSpan length
)
: base(0xDF)
{
var hasArgs = args != null;
EnsureCapacity(hasArgs ? 48 + args.ToString().Length * 2 : 44);
Stream.Write(mob);
Stream.Write((short)iconID); // ID
Stream.Write((short)0x1); // Type 0 for removal. 1 for add 2 for Data
Stream.Fill(4);
Stream.Write((short)iconID); // ID
Stream.Write((short)0x01); // Type 0 for removal. 1 for add 2 for Data
Stream.Fill(4);
Stream.Write((short)Math.Max(length.TotalSeconds, 0)); // Time in seconds
Stream.Fill(3);
Stream.Write(titleCliloc);
Stream.Write(secondaryCliloc);
if (!hasArgs)
{
// m_Stream.Fill( 2 );
Stream.Fill(10);
}
else
{
Stream.Fill(4);
Stream.Write((short)0x1); // Unknown -> Possibly something saying 'hey, I have more data!'?
Stream.Fill(2);
// m_Stream.WriteLittleUniNull( "\t#1018280" );
Stream.WriteLittleUniNull($"\t{args}");
Stream.Write((short)0x1); // Even more Unknown -> Possibly something saying 'hey, I have more data!'?
Stream.Fill(2);
}
}
}
public sealed class RemoveBuffPacket : Packet
{
public RemoveBuffPacket(Serial mob, BuffInfo info) : this(mob, info.ID)
{
}
public RemoveBuffPacket(Serial mob, BuffIcon iconID) : base(0xDF)
{
EnsureCapacity(13);
Stream.Write(mob);
Stream.Write((short)iconID); // ID
Stream.Write((short)0x0); // Type 0 for removal. 1 for add 2 for Data
Stream.Fill(4);
}
}
}