#pragma once

/**
 * \file LeaderBoard.h
 * \brief File containing the blitz::game::LeaderBoard class
 */

#include "blitz/game/Player.h"
#include <vector>

namespace blitz {
namespace game {

/**
 * \class LeaderBoard
 * \brief The leaderboard of the game
 */
class LeaderBoard {
  private:
	std::vector<Player*> m_Players;

  public:
	/**
	 * \brief Add a player to the leaderboard
	 * \param player The player to add
	 */
	void AddPlayer(Player* player);
	/**
	 * \brief Remove a player from the leaderboard
	 * \param player The player to remove
	 */
	void RemovePlayer(PlayerID player);

	/**
	 * \brief Update the leaderboard
	 */
	void Update();

	/**
	 * \brief Get the players in the leaderboard ordered by kills
	 * \return The players
	 */
	const std::vector<Player*>& GetPlayers() const {
		return m_Players;
	}
};

}  // namespace game
}  // namespace blitz
