internal UpdateOutgoingMessage(MatchPlayer matchPlayer) { UpdateStatus status = matchPlayer.ToUpdate; ServerMessage message = new ServerMessage(); message.WriteUShort(UpdateOutgoingMessage.PACKET_HEADER); message.WriteUInt(matchPlayer.SocketId); message.WriteUInt((uint)status); if (status.HasFlag(UpdateStatus.X)) { message.WriteDouble(matchPlayer.X); } if (status.HasFlag(UpdateStatus.Y)) { message.WriteDouble(matchPlayer.Y); } if (status.HasFlag(UpdateStatus.VelX)) { message.WriteFloat(matchPlayer.VelX); } if (status.HasFlag(UpdateStatus.VelY)) { message.WriteFloat(matchPlayer.VelY); } if (status.HasFlag(UpdateStatus.ScaleX)) { message.WriteByte(matchPlayer.ScaleX); } if (status.HasFlag(UpdateStatus.Space)) { message.WriteBool(matchPlayer.Space); } if (status.HasFlag(UpdateStatus.Left)) { message.WriteBool(matchPlayer.Left); } if (status.HasFlag(UpdateStatus.Right)) { message.WriteBool(matchPlayer.Right); } if (status.HasFlag(UpdateStatus.Down)) { message.WriteBool(matchPlayer.Down); } if (status.HasFlag(UpdateStatus.Up)) { message.WriteBool(matchPlayer.Up); } if (status.HasFlag(UpdateStatus.Speed)) { message.WriteInt(matchPlayer.Speed); } if (status.HasFlag(UpdateStatus.Accel)) { message.WriteInt(matchPlayer.Accel); } if (status.HasFlag(UpdateStatus.Jump)) { message.WriteInt(matchPlayer.Jump); } if (status.HasFlag(UpdateStatus.Rot)) { message.WriteInt((int)matchPlayer.Rot); } if (status.HasFlag(UpdateStatus.Item)) { message.WriteString(matchPlayer.Item); } if (status.HasFlag(UpdateStatus.Life)) { message.WriteUInt(matchPlayer.Life); } if (status.HasFlag(UpdateStatus.Hurt)) { message.WriteBool(matchPlayer.Hurt); } if (status.HasFlag(UpdateStatus.Coins)) { message.WriteUInt(matchPlayer.Coins); } this.Bytes = message.GetBytes(); }
public UpdatePacketIncomingPacket Parse(ref PacketReader reader) { UpdateStatus status = (UpdateStatus)reader.ReadUInt32(); return(new UpdatePacketIncomingPacket( status: status, x: status.HasFlag(UpdateStatus.X) ? reader.ReadDouble() : 0, y: status.HasFlag(UpdateStatus.Y) ? reader.ReadDouble() : 0, velX: status.HasFlag(UpdateStatus.VelX) ? reader.ReadSingle() : 0, velY: status.HasFlag(UpdateStatus.VelY) ? reader.ReadSingle() : 0, scaleX: status.HasFlag(UpdateStatus.ScaleX) ? reader.ReadByte() : (byte)0, space: status.HasFlag(UpdateStatus.Space) ? reader.ReadBool() : false, left: status.HasFlag(UpdateStatus.Left) ? reader.ReadBool() : false, right: status.HasFlag(UpdateStatus.Right) ? reader.ReadBool() : false, down: status.HasFlag(UpdateStatus.Down) ? reader.ReadBool() : false, up: status.HasFlag(UpdateStatus.Up) ? reader.ReadBool() : false, speed: status.HasFlag(UpdateStatus.Speed) ? reader.ReadInt32() : 0, accel: status.HasFlag(UpdateStatus.Accel) ? reader.ReadInt32() : 0, jump: status.HasFlag(UpdateStatus.Jump) ? reader.ReadInt32() : 0, rotation: status.HasFlag(UpdateStatus.Rot) ? reader.ReadInt32() : 0, item: status.HasFlag(UpdateStatus.Item) ? reader.ReadFixedUInt16String() : null, life: status.HasFlag(UpdateStatus.Life) ? reader.ReadUInt32() : 0, hurt: status.HasFlag(UpdateStatus.Hurt) ? reader.ReadBool() : false, coins: status.HasFlag(UpdateStatus.Coins) ? reader.ReadUInt32() : 0, team: status.HasFlag(UpdateStatus.Team) ? reader.ReadFixedUInt16String() : null )); }
public void Handle(ClientSession session, IncomingMessage message) { MultiplayerMatch match = session.MultiplayerMatchSession?.Match; if (match != null) { MatchPlayer matchPlayer = session.MultiplayerMatchSession.MatchPlayer; UpdateStatus status = (UpdateStatus)message.ReadUInt(); if (status.HasFlag(UpdateStatus.X)) { matchPlayer.X = message.ReadDouble(); } if (status.HasFlag(UpdateStatus.Y)) { matchPlayer.Y = message.ReadDouble(); } if (status.HasFlag(UpdateStatus.VelX)) { matchPlayer.VelX = message.ReadFloat(); } if (status.HasFlag(UpdateStatus.VelY)) { matchPlayer.VelY = message.ReadFloat(); } if (status.HasFlag(UpdateStatus.ScaleX)) { matchPlayer.ScaleX = message.ReadByte(); } if (status.HasFlag(UpdateStatus.Space)) { matchPlayer.Space = message.ReadBool(); } if (status.HasFlag(UpdateStatus.Left)) { matchPlayer.Left = message.ReadBool(); } if (status.HasFlag(UpdateStatus.Right)) { matchPlayer.Right = message.ReadBool(); } if (status.HasFlag(UpdateStatus.Down)) { matchPlayer.Down = message.ReadBool(); } if (status.HasFlag(UpdateStatus.Up)) { matchPlayer.Up = message.ReadBool(); } if (status.HasFlag(UpdateStatus.Speed)) { matchPlayer.Speed = message.ReadInt(); } if (status.HasFlag(UpdateStatus.Accel)) { matchPlayer.Accel = message.ReadInt(); } if (status.HasFlag(UpdateStatus.Jump)) { matchPlayer.Jump = message.ReadInt(); } if (status.HasFlag(UpdateStatus.Rot)) { matchPlayer.Rot = message.ReadInt(); } if (status.HasFlag(UpdateStatus.Item)) { matchPlayer.Item = message.ReadString(); } if (status.HasFlag(UpdateStatus.Life)) { matchPlayer.Life = message.ReadUInt(); } if (status.HasFlag(UpdateStatus.Hurt)) { matchPlayer.Hurt = message.ReadBool(); } if (status.HasFlag(UpdateStatus.Coins)) { matchPlayer.Coins = message.ReadUInt(); } match.SendUpdateIfRequired(session, matchPlayer); } }