#pragma once

#include "td/protocol/Protocol.h"

namespace td {
namespace protocol {

class ServerTpsPacket : public Packet {
private:
	float m_TPS;
	float m_MSPT;
	std::uint64_t m_PacketSendTime; // used to calculate ping
public:
	ServerTpsPacket() {}
	ServerTpsPacket(float tps, float mspt, std::uint64_t sendTime) : m_TPS(tps), m_MSPT(mspt), m_PacketSendTime(sendTime) {}
	virtual ~ServerTpsPacket() {}

	virtual DataBuffer Serialize(bool packetID = true) const;
	virtual void Deserialize(DataBuffer& data);
	virtual void Dispatch(PacketHandler* handler) const;

	float GetTPS() const { return m_TPS; }
	float GetMSPT() const { return m_MSPT; }
	std::uint64_t GetPacketSendTime() const { return m_PacketSendTime; }

	virtual PacketType GetType() const { return PacketType::ServerTps; }
};

} // namespace protocol
} // namespace td
