Files
GoakeFlax/Source/Game/GameMode/Messages/WelcomePlayerMessage.cs
2023-12-31 16:03:26 +02:00

55 lines
1.7 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using FlaxEngine.Networking;
using FlaxEngine;
namespace Game;
public struct WelcomePlayerMessage
{
public struct PlayerInfo
{
public uint playerId;
public Float3 playerPosition;
}
public ulong frame;
public float time;
public PlayerInfo[] players;
public static WelcomePlayerMessage Read(ref NetworkMessage networkMessage)
{
WelcomePlayerMessage packet = new WelcomePlayerMessage();
packet.frame = networkMessage.ReadUInt64();
packet.time = networkMessage.ReadSingle();
int numActors = (int)networkMessage.ReadUInt32();
packet.players = new PlayerInfo[numActors];
for (int i = 0; i < numActors; i++)
{
packet.players[i].playerId = networkMessage.ReadUInt32();
packet.players[i].playerPosition.X = networkMessage.ReadSingle();
packet.players[i].playerPosition.Y = networkMessage.ReadSingle();
packet.players[i].playerPosition.Z = networkMessage.ReadSingle();
}
return packet;
}
public void Write(ref NetworkMessage networkMessage)
{
networkMessage.WriteByte((byte)GameModeMessageType.WelcomePlayer);
networkMessage.WriteUInt64(frame);
networkMessage.WriteSingle(time);
networkMessage.WriteUInt32((uint)players.Length);
foreach (PlayerInfo player in players)
{
networkMessage.WriteUInt32(player.playerId);
networkMessage.WriteSingle(player.playerPosition.X);
networkMessage.WriteSingle(player.playerPosition.Y);
networkMessage.WriteSingle(player.playerPosition.Z);
}
}
}