using UnityEngine; using NeonTea.Quakeball.TeaNet.Packets; using System.Collections.Generic; using NeonTea.Quakeball.Networking; namespace NeonTea.Quakeball.Networking.Packets { public class MultiplePlayerUpdatesPckt : Packet { public List Updates = new List(); public MultiplePlayerUpdatesPckt() { } public MultiplePlayerUpdatesPckt(List players) { foreach (NetPlayer p in players) { Updates.Add(p.Controlled.CreatePacket(p.Id)); } } public override void Read(ByteBuffer buffer) { Updates.Clear(); int count = buffer.ReadInt(); for (int i = 0; i < count; i++) { PlayerUpdatePckt pckt = new PlayerUpdatePckt(); pckt.Read(buffer); Updates.Add(pckt); } } public override void Write(ByteBuffer buffer) { buffer.Write(Updates.Count); foreach (PlayerUpdatePckt p in Updates) { p.Write(buffer); } } } public class PlayerUpdatePckt : Packet { public ulong PlayerId; public Vector3 MoveDirection; public byte MoveStyle; public bool Jumping; public float Pitch; public float Yaw; public PlayerUpdatePckt() { } public PlayerUpdatePckt(Vector3 moveDirection, byte moveStyle, bool jumping, float pitch, float yaw, ulong id = 0) { MoveDirection = moveDirection; MoveStyle = moveStyle; Jumping = jumping; Pitch = pitch; Yaw = yaw; PlayerId = id; } public override void Read(ByteBuffer buffer) { PlayerId = buffer.ReadULong(); float x = buffer.ReadFloat(); float y = buffer.ReadFloat(); float z = buffer.ReadFloat(); MoveDirection = new Vector3(x, y, z); MoveStyle = buffer.Read(); Jumping = buffer.ReadBool(); Pitch = buffer.ReadFloat(); Yaw = buffer.ReadFloat(); } public override void Write(ByteBuffer buffer) { buffer.Write(PlayerId); buffer.Write(MoveDirection.x); buffer.Write(MoveDirection.y); buffer.Write(MoveDirection.z); buffer.Write(MoveStyle); buffer.Write(Jumping); buffer.Write(Pitch); buffer.Write(Yaw); } } }