summaryrefslogtreecommitdiff
path: root/public/Friends
diff options
context:
space:
mode:
Diffstat (limited to 'public/Friends')
-rw-r--r--public/Friends/AddOns/AddOnMessages.h56
-rw-r--r--public/Friends/AddOns/AddOnTypes.h18
-rw-r--r--public/Friends/AddOns/ISteamAddOn.h69
-rw-r--r--public/Friends/IFriendsNET.h41
-rw-r--r--public/Friends/IFriendsUser.h62
5 files changed, 246 insertions, 0 deletions
diff --git a/public/Friends/AddOns/AddOnMessages.h b/public/Friends/AddOns/AddOnMessages.h
new file mode 100644
index 0000000..ca778f9
--- /dev/null
+++ b/public/Friends/AddOns/AddOnMessages.h
@@ -0,0 +1,56 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+//=============================================================================//
+
+#ifndef ADDONMESSAGES_H
+#define ADDONMESSAGES_H
+#pragma once
+
+enum GameMessageIDs
+{
+ GAME_MSG_TEXT = 1, // text chat message
+ GAME_MSG_DATA, // binary game data
+
+ GAME_MSG_INVITE_REQUEST,
+ GAME_MSG_INVITE_RESPONSE,
+ GAME_MSG_REJOIN_REQUEST,
+ GAME_MSG_REJOIN_RESPONSE,
+
+ GAME_MSG_INVITE_PERMISSION, // ask permission to invite someone
+ GAME_MSG_INVITE_NOTIFY, // tell everybody that we're inviting
+ GAME_MSG_INVITE_DENIED,
+
+ GAME_MSG_PLAYER_STATUS_UPDATE,
+ GAME_MSG_SETUP_INFO, // when user joins a game, host send the setup information of who's in the game
+ GAME_MSG_INVITE_CANCEL, // host has cancelled an invite
+ GAME_MSG_GAME_START, // if a game has a setup phase, this tells everybody the game has started
+
+ GAME_MSG_PLAYER_KICK, // player kicked from game
+ GAME_MSG_UPDATING,
+ GAME_MSG_UP_TO_DATE, // player is up to date and ready to get data
+
+ GAME_MSG_STARTING_CARD_HAND = 300,
+ GAME_MSG_STARTING_PLAYER,
+ GAME_MSG_CARD_PLAY,
+
+ GAME_MSG_CHEAT_POSSIBLE = 400, // when host detects a possible cheat
+
+ GAME_MSG_MOVE = 500,
+ GAME_MSG_COLOR_CHOICE,
+ GAME_MSG_RECONNECT_DATA,
+ GAME_MSG_QUIT,
+ GAME_MSG_PASS,
+
+ GAME_MSG_ABORT, // phase these out
+ GAME_MSG_WAITING_ABORT,
+
+// GAME_MSG_CLOSE_WINDOW,
+
+ // special individual game messages should take IDs 1000 and over
+};
+
+
+#endif // ADDONMESSAGES_H
+
diff --git a/public/Friends/AddOns/AddOnTypes.h b/public/Friends/AddOns/AddOnTypes.h
new file mode 100644
index 0000000..b6cf75f
--- /dev/null
+++ b/public/Friends/AddOns/AddOnTypes.h
@@ -0,0 +1,18 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+//=============================================================================//
+
+#ifndef ADDONTYPES_H
+#define ADDONTYPES_H
+#pragma once
+
+#ifndef WIN32
+ typedef unsigned long long SessionInt64;
+#else
+ typedef unsigned __int64 SessionInt64;
+#endif
+
+#endif // ADDONTYPES_H
+
diff --git a/public/Friends/AddOns/ISteamAddOn.h b/public/Friends/AddOns/ISteamAddOn.h
new file mode 100644
index 0000000..ff395c3
--- /dev/null
+++ b/public/Friends/AddOns/ISteamAddOn.h
@@ -0,0 +1,69 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose: Interface to a Steam Add On
+//
+//=============================================================================//
+
+#ifndef ISTEAMADDON_H
+#define ISTEAMADDON_H
+#pragma once
+
+#include "interface.h"
+#include "AddOnTypes.h"
+#include <vgui_controls/Panel.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
+
diff --git a/public/Friends/IFriendsNET.h b/public/Friends/IFriendsNET.h
new file mode 100644
index 0000000..b0b6c89
--- /dev/null
+++ b/public/Friends/IFriendsNET.h
@@ -0,0 +1,41 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+//=============================================================================//
+
+#ifndef FRIENDSNET_INTERFACE_H
+#define FRIENDSNET_INTERFACE_H
+#pragma once
+
+class CUtlMsgBuffer;
+class CServerSession;
+
+#include "interface.h"
+#include "Friends/AddOns/AddOnTypes.h"
+
+class IFriendsNET : public IBaseInterface
+{
+public:
+ // check if we have network information for this user
+ virtual bool CheckUserRegistered(unsigned int userID) = 0;
+
+ // update a user's network information
+ virtual void UpdateUserNetInfo(unsigned int userID, unsigned int netSessionID, int serverID, int IP, int port) = 0;
+
+ // set whether or not we send directly to user or through the server
+ virtual void SetUserSendViaServer(unsigned int userID, bool bSendViaServer) = 0;
+
+ // Gets a blob of data that represents this user's information
+ virtual bool GetUserNetInfoBlob(unsigned int userID, unsigned int dataBlob[8]) = 0;
+ // Sets a user's information using the same blob of data type
+ virtual bool SetUserNetInfoBlob(unsigned int userID, const unsigned int dataBlob[8]) = 0;
+
+ // send binary data to user, marked with game/sessionID
+ virtual void SendAddOnPacket(const char *pszGameID, SessionInt64 addOnSessionID, unsigned int userID, const CUtlMsgBuffer& buffer) = 0;
+};
+
+#define FRIENDSNET_INTERFACE_VERSION "FriendsNET003"
+
+#endif // FRIENDSNET_INTERFACE_H
+
diff --git a/public/Friends/IFriendsUser.h b/public/Friends/IFriendsUser.h
new file mode 100644
index 0000000..4c9375a
--- /dev/null
+++ b/public/Friends/IFriendsUser.h
@@ -0,0 +1,62 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#ifndef IFRIENDSUSER_H
+#define IFRIENDSUSER_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "interface.h"
+
+//-----------------------------------------------------------------------------
+// Purpose: Interface to accessing information about Friends Users
+//-----------------------------------------------------------------------------
+class IFriendsUser : public IBaseInterface
+{
+public:
+ // returns true if the interface is ready for use
+ virtual bool IsValid() = 0;
+
+ // returns the Friends ID of the current user
+ virtual unsigned int GetFriendsID() = 0;
+
+ // returns information about a user
+ // information may not be known about some users, "" will be returned
+ virtual const char *GetUserName(unsigned int friendsID) = 0;
+ virtual const char *GetFirstName(unsigned int friendsID) = 0;
+ virtual const char *GetLastName(unsigned int friendsID) = 0;
+ virtual const char *GetEmail(unsigned int friendsID) = 0;
+
+ // returns true if buddyID is a buddy of the current user
+ // ie. the current is authorized to see when the buddy is online
+ virtual bool IsBuddy(unsigned int buddyID) = 0;
+
+ // requests authorization from a user
+ virtual void RequestAuthorizationFromUser(unsigned int potentialBuddyID) = 0;
+
+ // returns the status of the buddy, > 0 is online, 4 is ingame
+ virtual int GetBuddyStatus(unsigned int friendsID) = 0;
+
+ // gets the IP address of the server the buddy is on, returns false if couldn't get
+ virtual bool GetBuddyGameAddress(unsigned int friendsID, int *ip, int *port) = 0;
+
+ // returns the number of buddies
+ virtual int GetNumberOfBuddies() = 0;
+
+ // returns the FriendsID of a buddy - buddyIndex is valid in the range [0, GetNumberOfBuddies)
+ virtual unsigned int GetBuddyFriendsID(int buddyIndex) = 0;
+
+ // sets whether or not the user can receive messages at this time
+ // messages will be queued until this is set to true
+ virtual void SetCanReceiveMessages(bool state) = 0;
+};
+
+#define FRIENDSUSER_INTERFACE_VERSION "FriendsUser001"
+
+
+#endif // IFRIENDSUSER_H