using Wonderking.Packets;

namespace Server.Packets;

using MassTransit;

[MessageUrn("packets")]
public class RawPacket
{
    public RawPacket(OperationCode operationCode, byte[] messageBody, uint aliveTime, byte unknownValue2,
        byte unknownValue, Guid sessionId, AuthSession session)
    {
        this.MessageBody = messageBody;
        this.UnknownValue2 = unknownValue2;
        this.UnknownValue = unknownValue;
        this.SessionId = sessionId;
        this.Session = session;
        this.OperationCode = operationCode;
        /*
         *  20s = 5
         *  15s = 4
         *  10s = 3
         *  client alive time * 5s => uptime
         */
        this.ClientAliveTime = TimeSpan.FromSeconds(5 * aliveTime);
    }

    public OperationCode OperationCode { get; }
    public byte[] MessageBody { get; }
    public TimeSpan ClientAliveTime { get; }
    public byte UnknownValue { get; }
    public byte UnknownValue2 { get; }
    public Guid SessionId { get; }

    public AuthSession Session { get; }
}