bad char
[vg.git] / vg_steam_friends.h
index 5815447f1d14adb06043f98988c2b65e21a5eb1c..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,26 @@
  #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
@@ -34,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();
 }
@@ -47,6 +73,10 @@ const char *SteamAPI_ISteamFriends_GetPersonaName( ISteamFriends* self );
 const char *SteamAPI_ISteamFriends_GetFriendPersonaName( ISteamFriends* self,
                                                          u64 steamIDFriend );
 
+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, 
@@ -57,6 +87,27 @@ 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 );
+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,
+};
 
-#endif /* VG_STEAM_FRIENDS_H */
+steamapi_bool SteamAPI_ISteamFriends_HasFriend( ISteamFriends* self, 
+                     u64_steamid steamIDFriend, int iFriendFlags );