sex
This commit is contained in:
56
Packets/Game/GameVillager/VillagerSnapshotPacket.cs
Normal file
56
Packets/Game/GameVillager/VillagerSnapshotPacket.cs
Normal file
@@ -0,0 +1,56 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
|
||||
namespace KCM.Packets.Game.GameVillager
|
||||
{
|
||||
public class VillagerSnapshotPacket : Packet
|
||||
{
|
||||
public override ushort packetId => (ushort)Enums.Packets.VillagerSnapshot;
|
||||
|
||||
public List<Guid> guids { get; set; } = new List<Guid>();
|
||||
public List<Vector3> positions { get; set; } = new List<Vector3>();
|
||||
|
||||
public override void HandlePacketClient()
|
||||
{
|
||||
if (KCClient.client != null && clientId == KCClient.client.Id)
|
||||
return;
|
||||
|
||||
try
|
||||
{
|
||||
int count = Math.Min(guids?.Count ?? 0, positions?.Count ?? 0);
|
||||
if (count == 0)
|
||||
return;
|
||||
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
Guid guid = guids[i];
|
||||
Vector3 position = positions[i];
|
||||
|
||||
Villager villager = null;
|
||||
try
|
||||
{
|
||||
villager = Villager.villagers?.data.FirstOrDefault(v => v != null && v.guid == guid);
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
|
||||
if (villager == null)
|
||||
continue;
|
||||
|
||||
villager.TeleportTo(position);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Main.helper.Log("Error handling villager snapshot packet: " + e.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public override void HandlePacketServer()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -310,6 +310,27 @@ namespace KCM.Packets.Handlers
|
||||
message.AddInt(item);
|
||||
}
|
||||
|
||||
else if (prop.PropertyType == typeof(List<Guid>))
|
||||
{
|
||||
currentPropName = prop.Name;
|
||||
List<Guid> list = (List<Guid>)prop.GetValue(packet, null);
|
||||
message.AddInt(list.Count);
|
||||
foreach (var item in list)
|
||||
message.AddBytes(item.ToByteArray(), true);
|
||||
}
|
||||
else if (prop.PropertyType == typeof(List<Vector3>))
|
||||
{
|
||||
currentPropName = prop.Name;
|
||||
List<Vector3> list = (List<Vector3>)prop.GetValue(packet, null);
|
||||
message.AddInt(list.Count);
|
||||
foreach (var item in list)
|
||||
{
|
||||
message.AddFloat(item.x);
|
||||
message.AddFloat(item.y);
|
||||
message.AddFloat(item.z);
|
||||
}
|
||||
}
|
||||
|
||||
else if (prop.PropertyType.IsGenericType && prop.PropertyType.GetGenericTypeDefinition() == typeof(Dictionary<,>))
|
||||
{
|
||||
currentPropName = prop.Name;
|
||||
@@ -543,6 +564,29 @@ namespace KCM.Packets.Handlers
|
||||
|
||||
prop.SetValue(p, list);
|
||||
}
|
||||
else if (prop.PropertyType == typeof(List<Guid>))
|
||||
{
|
||||
int count = message.GetInt();
|
||||
List<Guid> list = new List<Guid>();
|
||||
|
||||
for (int i = 0; i < count; i++)
|
||||
list.Add(new Guid(message.GetBytes()));
|
||||
|
||||
prop.SetValue(p, list);
|
||||
}
|
||||
else if (prop.PropertyType == typeof(List<Vector3>))
|
||||
{
|
||||
int count = message.GetInt();
|
||||
List<Vector3> list = new List<Vector3>();
|
||||
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
Vector3 vector = new Vector3(message.GetFloat(), message.GetFloat(), message.GetFloat());
|
||||
list.Add(vector);
|
||||
}
|
||||
|
||||
prop.SetValue(p, list);
|
||||
}
|
||||
else if (prop.PropertyType.IsGenericType && prop.PropertyType.GetGenericTypeDefinition() == typeof(Dictionary<,>))
|
||||
{
|
||||
IDictionary dictionary = (IDictionary)prop.GetValue(p, null);
|
||||
|
||||
Reference in New Issue
Block a user