84 lines
3.3 KiB
C++
84 lines
3.3 KiB
C++
//========= Copyright Valve Corporation, All rights reserved. ============//
|
|
//
|
|
// Purpose: Interface to a Steam Add On
|
|
//
|
|
//=============================================================================//
|
|
|
|
#ifndef ISTEAMADDON_H
|
|
#define ISTEAMADDON_H
|
|
#pragma once
|
|
|
|
#include <vgui_controls/Panel.h>
|
|
#include "AddOnTypes.h"
|
|
#include "interface.h"
|
|
|
|
class CUtlMsgBuffer;
|
|
|
|
class ISteamAddOn : public IBaseInterface {
|
|
public:
|
|
// allows SteamAddOn to link to the core vgui factories
|
|
virtual bool Initialize(CreateInterfaceFn *vguiFactories,
|
|
int factoryCount) = 0;
|
|
|
|
// allows SteamAddOns to link to all other modules
|
|
virtual bool PostInitialize(CreateInterfaceFn *modules,
|
|
int factoryCount) = 0;
|
|
|
|
// when Friends closes down - all SteamAddOns are notified
|
|
virtual void Deactivate() = 0;
|
|
|
|
// notifies the addon who its VGUI parent panel is
|
|
virtual void SetParent(vgui::Panel *parent) = 0;
|
|
|
|
// notifies the SteamAddOn of the user's ID and username.
|
|
// Note: username can be set mulitple times due to changing of name
|
|
virtual void SetUserID(unsigned int userID) = 0;
|
|
virtual void SetUserName(const char *userName) = 0;
|
|
|
|
// Query if there are any 'open' sessions - open meaning allowing new users
|
|
// to join the sessions
|
|
virtual int QueryOpenSessionCount() = 0;
|
|
|
|
// will be valid right after a call to QueryOpenInviteCount will set the
|
|
// addOnSessionID and hostname for any open sessions for this addOn. Return
|
|
// true if it's a valid index
|
|
virtual bool QueryOpenSessionInfo(int nOpenGameIndex,
|
|
SessionInt64 &addOnSessionID,
|
|
char *pszHostName) = 0;
|
|
|
|
// returns true if this userID is involved in an addOnSession with this ID
|
|
virtual bool QueryUserInvolved(SessionInt64 addOnSessionID,
|
|
unsigned int userID) = 0;
|
|
|
|
// if session doesn't exist, then the SteamAddOn body should deal with it
|
|
virtual bool OnReceiveMsg(SessionInt64 addOnSessionID,
|
|
CUtlMsgBuffer *msgBuffer) = 0;
|
|
|
|
// Let's the SteamAddOn know when when any friend's status has changed
|
|
virtual void OnFriendStatusChanged() = 0;
|
|
|
|
// A request to start/join this AddOn with this user ID/name. addOnSessionID
|
|
// will be zero if it's a new session request
|
|
virtual void OnInviteUser(unsigned int targetUserID, const char *username,
|
|
SessionInt64 addOnSessionID) = 0;
|
|
|
|
// user accepted this host's invite request
|
|
virtual void OnAcceptInviteRequest(unsigned int hostID,
|
|
const char *hostUserName,
|
|
SessionInt64 addOnSessionID,
|
|
const char *pAppData, int dataLen) = 0;
|
|
|
|
// user accepted this host's rejoin request
|
|
virtual void OnAcceptRejoinRequest(unsigned int hostID,
|
|
const char *hostUserName,
|
|
SessionInt64 addOnSessionID,
|
|
const char *pAppData, int dataLen) = 0;
|
|
|
|
// user starts this addOn from a menu
|
|
virtual void StartAddOn() = 0;
|
|
};
|
|
|
|
#define STEAMADDON_INTERFACE_VERSION "SteamAddOn007"
|
|
|
|
#endif // ISTEAMADDON_H
|