bad char
[vg.git] / vg_steam_friends.h
index eb30f6a5af21c12d570ab3ec47ee2b6b7fa94ef0..04685a86b91c3e86e418dd163f8f59ab83c0423a 100644 (file)
@@ -1,6 +1,4 @@
-#ifndef VG_STEAM_FRIENDS_H
-#define VG_STEAM_FRIENDS_H
-
+#pragma once
 #include "vg_steam.h"
 
 #if defined( VALVE_CALLBACK_PACK_SMALL )
@@ -10,6 +8,42 @@
  #pragma pack( push, 8 )
 #endif 
 
+typedef enum EPersonaChange EPersonaChange;
+enum EPersonaChange
+{
+       k_EPersonaChangeName            = 0x0001,
+       k_EPersonaChangeStatus          = 0x0002,
+       k_EPersonaChangeComeOnline      = 0x0004,
+       k_EPersonaChangeGoneOffline     = 0x0008,
+       k_EPersonaChangeGamePlayed      = 0x0010,
+       k_EPersonaChangeGameServer      = 0x0020,
+       k_EPersonaChangeAvatar          = 0x0040,
+       k_EPersonaChangeJoinedSource= 0x0080,
+       k_EPersonaChangeLeftSource      = 0x0100,
+       k_EPersonaChangeRelationshipChanged = 0x0200,
+       k_EPersonaChangeNameFirstSet = 0x0400,
+       k_EPersonaChangeBroadcast = 0x0800,
+       k_EPersonaChangeNickname =      0x1000,
+       k_EPersonaChangeSteamLevel = 0x2000,
+       k_EPersonaChangeRichPresence = 0x4000,
+};
+
+typedef enum EActivateGameOverlayToWebPageMode 
+             EActivateGameOverlayToWebPageMode;
+enum EActivateGameOverlayToWebPageMode
+{
+       k_EActivateGameOverlayToWebPageMode_Default = 0,
+       k_EActivateGameOverlayToWebPageMode_Modal = 1
+};
+
+typedef enum EOverlayToStoreFlag EOverlayToStoreFlag;
+enum EOverlayToStoreFlag
+{
+       k_EOverlayToStoreFlag_None = 0,
+       k_EOverlayToStoreFlag_AddToCart = 1,
+       k_EOverlayToStoreFlag_AddToCartAndShow = 2,
+};
+
 /* ... */
 typedef struct GameOverlayActivated_t GameOverlayActivated_t;
 struct GameOverlayActivated_t
@@ -18,11 +52,19 @@ struct GameOverlayActivated_t
 };
 enum { k_iGameOverlayActivated = k_iSteamFriendsCallbacks + 31 };
 
+typedef struct PersonaStateChange_t PersonaStateChange_t;
+struct PersonaStateChange_t
+{
+       u64 m_ulSteamID;                // steamID of the friend who changed
+       int m_nChangeFlags;             // what's changed
+};
+enum { k_iPersonaStateChange = k_iSteamFriendsCallbacks + 4 };
+
 #pragma pack(pop)
 
 typedef void ISteamFriends;
 ISteamFriends *SteamAPI_SteamFriends_v017(void);
-ISteamFriends *SteamAPI_SteamFriends(void)
+static inline ISteamFriends *SteamAPI_SteamFriends(void)
 {
    return SteamAPI_SteamFriends_v017();
 }
@@ -31,4 +73,41 @@ const char *SteamAPI_ISteamFriends_GetPersonaName( ISteamFriends* self );
 const char *SteamAPI_ISteamFriends_GetFriendPersonaName( ISteamFriends* self,
                                                          u64 steamIDFriend );
 
-#endif /* VG_STEAM_FRIENDS_H */
+steamapi_bool SteamAPI_ISteamFriends_RequestUserInformation( 
+      ISteamFriends* self, u64_steamid steamIDUser, 
+      steamapi_bool bRequireNameOnly );
+
+void SteamAPI_ISteamFriends_ActivateGameOverlay( ISteamFriends* self, 
+      const char * pchDialog );
+void SteamAPI_ISteamFriends_ActivateGameOverlayToUser( ISteamFriends* self, 
+      const char * pchDialog, u64_steamid steamID );
+void SteamAPI_ISteamFriends_ActivateGameOverlayToWebPage( ISteamFriends* self, 
+      const char * pchURL, EActivateGameOverlayToWebPageMode eMode );
+void SteamAPI_ISteamFriends_ActivateGameOverlayToStore( ISteamFriends* self, 
+      AppId_t nAppID, EOverlayToStoreFlag eFlag );
+void SteamAPI_ISteamFriends_SetPlayedWith( ISteamFriends* self, 
+      u64_steamid steamIDUserPlayedWith );
+void SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialog( 
+      ISteamFriends* self, u64_steamid steamIDLobby );
+
+
+enum EFriendFlags{
+       k_EFriendFlagNone                       = 0x00,
+       k_EFriendFlagBlocked            = 0x01,
+       k_EFriendFlagFriendshipRequested        = 0x02,
+       k_EFriendFlagImmediate          = 0x04,                 // "regular" friend
+       k_EFriendFlagClanMember         = 0x08,
+       k_EFriendFlagOnGameServer       = 0x10, 
+       // k_EFriendFlagHasPlayedWith   = 0x20, // not currently used
+       // k_EFriendFlagFriendOfFriend  = 0x40, // not currently used
+       k_EFriendFlagRequestingFriendship = 0x80,
+       k_EFriendFlagRequestingInfo = 0x100,
+       k_EFriendFlagIgnored            = 0x200,
+       k_EFriendFlagIgnoredFriend      = 0x400,
+       // k_EFriendFlagSuggested               = 0x800,        // not used
+       k_EFriendFlagChatMember         = 0x1000,
+       k_EFriendFlagAll                        = 0xFFFF,
+};
+
+steamapi_bool SteamAPI_ISteamFriends_HasFriend( ISteamFriends* self, 
+                     u64_steamid steamIDFriend, int iFriendFlags );