Files
zzz_REBIRTH__Utils/Scripts/Network/NPCs/NetPackageEntityLootContainerWriteRebirth.cs
2025-06-04 16:44:53 +09:30

73 lines
2.2 KiB
C#

public class NetPackageEntityLootContainerWriteRebirth : NetPackage
{
private int entityId;
private ItemStack[] items;
public NetPackageEntityLootContainerWriteRebirth Setup(int _lootEntityId, ItemStack[] _items)
{
this.entityId = _lootEntityId;
this.items = _items;
return this;
}
public override void read(PooledBinaryReader _reader)
{
this.entityId = _reader.ReadInt32();
this.items = GameUtils.ReadItemStack(_reader);
}
public override void write(PooledBinaryWriter _writer)
{
base.write(_writer);
_writer.Write(this.entityId);
_writer.Write((ushort)this.items.Length);
for (int i = 0; i < this.items.Length; i++)
{
this.items[i].Write(_writer);
}
}
public override void ProcessPackage(World _world, GameManager _callbacks)
{
if (_world == null)
{
return;
}
//Log.Out("NetPackageEntityLootContainerWriteRebirth-ProcessPackage this.entityId: " + this.entityId);
Entity entity = GameManager.Instance.World.GetEntity(this.entityId);
if (entity != null && entity is EntityNPCRebirth)
{
EntityNPCRebirth entityAlive = (EntityNPCRebirth)entity;
if (entityAlive != null && entityAlive.lootContainer != null && this.items.Length > 0)
{
//Log.Out("NetPackageEntityLootContainerWriteRebirth-ProcessPackage entityAlive: " + entityAlive.EntityName);
for (int i = 0; i < this.items.Length; i++)
{
if (this.items[i].count > 0)
{
entityAlive.lootContainer.items[i] = this.items[i];
}
else
{
entityAlive.lootContainer.items[i] = ItemStack.Empty.Clone();
}
}
PooledBinaryWriter stream = new PooledBinaryWriter();
TileEntity.StreamModeWrite _eStreamMode = new TileEntity.StreamModeWrite();
entityAlive.lootContainer.write(stream, _eStreamMode);
}
}
}
public override int GetLength()
{
return 8;
}
}