//////////////////////////////////////////////////////////////////////////////
//
// Asura_FriendsList.h
//
// Copyright (c) 2008 Rebellion. All rights reserved.
//
// Description:
//
//     platform-independent interface for online friends list. Also manages
//     interface to online blacklists and recent players lists.
//
//////////////////////////////////////////////////////////////////////////////

// B E G I N   F I L E   W R A P P E R ///////////////////////////////////////

#ifdef ASURA_USE_PRAGMA_ONCE
    #pragma once
#endif

#ifndef ASURA_FRIENDSLIST_H___
#define ASURA_FRIENDSLIST_H___ 1

#ifdef ASURA_SUPPORT_LOBBY

// F O R W A R D   D E C L A R A T I O N S ///////////////////////////////////
class Asura_Lobby_Player;

// C L A S S   D E C L A R A T I O N /////////////////////////////////////////
class Asura_FriendsList
{

public:

	static void Initialise();
	static void Shutdown();

	static void Refresh() { Platform_Refresh(); }	// called when friends list may be stale, e.g. after accepting friends requests.

	static void ShowFriendsGUI();
	static bool IsFriendsGUIActive() { return s_bFriendsGUIActive; }
	static void FriendsGUIDeactivated();	// called when platform GUI gets shutdown.

	static bool IsPlayerAFriend(const Asura_Lobby_Player& xPlayer) { return Platform_IsPlayerAFriend(xPlayer); }

private:

	static void Platform_Initialise();
	static void Platform_Shutdown();
	
	static void Platform_Refresh();

	static bool Platform_ShowFriendsGUI();
	static bool Platform_IsPlayerAFriend(const Asura_Lobby_Player& xPlayer);

	static bool s_bFriendsGUIActive;
};


#endif // #ifdef ASURA_SUPPORT_LOBBY

// E N D   F I L E   W R A P P E R ///////////////////////////////////////////

#endif // #ifndef ASURA_FRIENDSLIST_H___
