#pragma once

#include <cstdint>

namespace blitz {
namespace utils {

class TickCounter {
  private:
	float m_TPS;
	float m_MSPT;
	std::uint64_t m_LastTPSTime;
	std::uint8_t m_TickCount;
	int m_TargetTPS;

  public:
	TickCounter(int tps) : m_TargetTPS(tps) {}

	void Reset();
	bool Update();	// return true when tps is updated

	float GetTPS() const {
		return m_TPS;
	}

	float GetMSPT() const {
		return m_MSPT;
	}

	void SetMSPT(float mspt) {
		m_MSPT = mspt;
	}
};

}  // namespace utils
}  // namespace blitz