FriendsManager

From Valve Developer Community
Revision as of 22:38, 1 July 2006 by Scottloyd (talk | contribs) (Added interface, rest will come in a few minutes.)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

IFriendsManager.h

///////////// Copyright © 2006, Scott Loyd. All rights reserved. /////////////
// 
// File: IFriendsManager.h
// Description:
//			For use with CLIENT SIDE ONLY.
//			Provides an interface for working with friends data.
//
// Created On: 7/1/06 9:28 PM
// Created By: Scott Loyd <mailto:scottloyd@gmail.com> 
/////////////////////////////////////////////////////////////////////////////
#ifndef IFRIENDSMANAGER_H
#define IFRIENDSMANAGER_H

class IFriendsManager
{
public:
	//Optional: Sets the Tracker ID of the local player.
	virtual void SetTrackerID(unsigned int iTrackerID) = 0;

	//Returns true if iFriendTrackerID is in iMyTrackerIDs buddy list.
	//iFriendTrackerID - Tracker ID of a friend to search for
	//iMyTrackerID - Tracker ID of the local player (if 0, it uses value from SetTrackerID)
	virtual bool IsFriend(unsigned int iFriendTrackerID, unsigned int iMyTrackerID = 0) = 0;

	//Returns string of most recently used buddy name that friends has.  It returns NULL if
	//	no one was found using that TrackerID.
	//iTrackerID - ID of a buddy to lookup
	//iMyTrackerID - Tracker ID of the local player (if 0, it uses value from SetTrackerID)
	virtual const char *BuddyName(unsigned int iTrackerID, unsigned int iMyTrackerID = 0) = 0;
};

//Accessor
IFriendsManager *FriendsManager();

/*
//TODO: You need to set this next chunk up in your code!
//Used to get the TrackerID that can be compared in friends.
unsigned int C_PlayerResource::GetFriendsID( int iIndex )
{
	if ( !IsConnected( iIndex ) )
		return 0;

	player_info_t sPlayerInfo;
	if ( engine->GetPlayerInfo( iIndex, &sPlayerInfo ) )
		return sPlayerInfo.friendsID;
	return 0;
}


//Example Usage (ge_scoreboard.cpp)
void CGEScoreBoard::InitScoreboardSections()
{
	[snip]

	C_BasePlayer *pPlayer =	C_BasePlayer::GetLocalPlayer();
	if ( pPlayer )
		FriendsManager()->SetTrackerID(g_PR->GetFriendsID(pPlayer->entindex()));

	[snip]
}

bool CGEScoreBoard::GetPlayerScoreInfo(int playerIndex, KeyValues *kv)
{
	[snip]

	unsigned int trackerID = g_PR->GetFriendsID(playerIndex);

	//Now that we have a trackerID, is this guy on the local players buddy list?
	// Also if trackerID is the local players trackerID, it will return false.
	if(FriendsManager()->IsFriend(trackerID))
		kv->SetInt("tracker",TrackerImage); //You should find some more code for this in
											// CClientScoreBoardDialog

	[snip]
}
*/
#endif //IFRIENDSMANAGER_H