104 lines
3.1 KiB
C++
104 lines
3.1 KiB
C++
// Copyright (C) 2007 Id Software, Inc.
|
|
//
|
|
|
|
#if !defined( __SDNETTEAMMANAGER_H__ )
|
|
#define __SDNETTEAMMANAGER_H__
|
|
|
|
#if !defined( SD_DEMO_BUILD )
|
|
|
|
#include "SDNetTeamManager.h"
|
|
|
|
#include "SDNet.h"
|
|
#include "SDNetTeamMember.h"
|
|
#include "SDNetSession.h"
|
|
|
|
//===============================================================
|
|
//
|
|
// sdNetTeamManager
|
|
//
|
|
//===============================================================
|
|
|
|
struct sdNetTeamId : public sdNetEntityId {};
|
|
|
|
struct sdNetTeamInvite {
|
|
sdNetTeamId netTeamId;
|
|
char text[ MAX_TEAMNAME_LENGTH ];
|
|
};
|
|
|
|
typedef idList< sdNetTeamMember* > sdNetTeamMemberList;
|
|
|
|
class sdNetTeamManager {
|
|
public:
|
|
virtual ~sdNetTeamManager() {}
|
|
|
|
virtual bool IsTeamMember() const = 0;
|
|
|
|
virtual const char* GetTeamName() const = 0;
|
|
|
|
virtual const sdNetTeamMemberList& GetMemberList() const = 0;
|
|
|
|
virtual const sdNetTeamMemberList& GetPendingMemberList() const = 0;
|
|
|
|
virtual const sdNetTeamMemberList& GetPendingInvitesList() const = 0;
|
|
|
|
virtual const sdNetTeamMember::memberStatus_e GetMemberStatus() const = 0;
|
|
|
|
virtual sdNetTeamMember* FindMember( const sdNetTeamMemberList& list, const char* username ) = 0;
|
|
virtual int FindMemberIndex( const sdNetTeamMemberList& list, const char* username ) = 0;
|
|
|
|
virtual sdLock& GetLock() = 0;
|
|
|
|
//
|
|
// Online functionality
|
|
//
|
|
|
|
// Initialize team list
|
|
virtual sdNetTask* Init() = 0;
|
|
|
|
// Create a team
|
|
virtual sdNetTask* CreateTeam( const char* teamname ) = 0;
|
|
|
|
// Invite a user to become a team member
|
|
virtual sdNetTask* ProposeMembership( const char* username, const wchar_t* reason ) = 0;
|
|
|
|
// Withdraw a membership proposal
|
|
virtual sdNetTask* WithdrawMembership( const char* username ) = 0;
|
|
|
|
// Accept a membership proposal
|
|
virtual sdNetTask* AcceptMembership( const char* username, const sdNetTeamId& teamId ) = 0;
|
|
|
|
// Reject a membership proposal
|
|
virtual sdNetTask* RejectMembership( const char* username, const sdNetTeamId& teamId ) = 0;
|
|
|
|
// Remove a member from the team
|
|
virtual sdNetTask* RemoveMember( const char* username ) = 0;
|
|
|
|
// Send a message to a member
|
|
virtual sdNetTask* SendMessage( const char* username, const wchar_t* text ) = 0;
|
|
|
|
// Send a message to the whole team
|
|
virtual sdNetTask* BroadcastMessage( const wchar_t* text ) = 0;
|
|
|
|
// Invite a member to a session
|
|
virtual sdNetTask* Invite( const char* username, const netadr_t& sessionAddress ) = 0;
|
|
|
|
// Promote a user to administrator
|
|
virtual sdNetTask* PromoteMember( const char* username ) = 0;
|
|
|
|
// Demote an administrator to a normal member
|
|
virtual sdNetTask* DemoteMember( const char* username ) = 0;
|
|
|
|
// Transfer ownership to another member
|
|
virtual sdNetTask* TransferOwnership( const char* username ) = 0;
|
|
|
|
// Disband the team
|
|
virtual sdNetTask* DisbandTeam() = 0;
|
|
|
|
// Leave the team, must specify a new member to be the owner if this member is the current owner
|
|
virtual sdNetTask* LeaveTeam( const char* username = NULL ) = 0;
|
|
};
|
|
|
|
#endif /* !SD_DEMO_BUILD */
|
|
|
|
#endif /* !__SDNETTEAMMANAGER_H__ */
|