14 Commits

Author SHA1 Message Date
Michael Fabian Dirks 0327f30d5a Fix ISteamUserStats linking 2016-07-29 22:20:13 +02:00
Michael Fabain Dirks a63d893a18 Duplicate decls file - how did this not get noticed for so long ... 2016-07-01 14:17:52 +02:00
Michael Fabain Dirks 6a5f4588ed Create Readme with list of APIs and build instructions. Also include license. 2016-06-29 21:59:24 +02:00
Michael Fabain Dirks 6a44064f25 Update 2016-05-08 22:46:41 +02:00
Michael Fabian Dirks d4de6a5e7b Update 2016-03-19 14:22:11 +01:00
Michael Fabian Dirks a52326d80a Update 2016-03-11 14:13:25 +01:00
Michael Fabian Dirks 2bf8361797 More Steam functionality, less renaming. functions now closely relate to the original function/class/method structure and many helper types have been added native to BlitzSteam (no need for BlitzUtility). 2016-03-04 03:47:32 +01:00
Michael Dirks 7209e0936e Blitz Project stuff 2016-02-23 23:41:41 +01:00
Michael Dirks f0b7cd1471 * Update to Steamworks 1.36 - SteamClient and SteamController changes implemented.
* Add Examples for SteamAPI, SteamAppList, SteamApps and SteamController.
* Update SteamHTMLSurface example.
* Update Project file to automatically add & copy resources after successful build.
2016-02-23 23:39:40 +01:00
Michael Dirks 30beba2ada * Fix BlitzSteam.h including uneccessary headers.
* Rename Callback class to BlitzCallback and add state-aware functionality (Register, RegisterResult, automatic unregistering).
* Add functionality to delete Long pointers.
* Add functionality to create and delete Doubles.
* Add memory management functionality.
* Reimplement SteamController Wrapper.
* Implement SteamHTMLSurface Wrapper.
* Fix up Declaration File and make it more descriptive.
* Add Blitz Examples and Project.
2016-02-23 13:25:34 +01:00
Michael Dirks 0ebbd7e9a0 BlitzSteam update 06.02.2016 2016-02-06 00:17:29 +01:00
Michael Dirks d6ef2b46f0 Implement SteamUser and SteamUserStats. Fix return of SteamAPICall_t to be a pointer to a uint64_t instead. 2016-01-11 20:07:57 +01:00
Michael Dirks ee7f4f280f Implement SteamUser Wrapper 2016-01-11 16:56:07 +01:00
Michael Dirks cbe923944c Upgrade to Visual Studio 2015 2015-12-30 06:40:50 +01:00
102 changed files with 10391 additions and 2604 deletions
+1 -1
View File
@@ -1 +1 @@
/SteamworksSDK/* /SteamworksSDK/*
-226
View File
@@ -1,226 +0,0 @@
; BlitzSteam - Steam wrapper for Blitz.
; Copyright (C) 2015 Project Kube (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http:;www.gnu.org/licenses/>.
; Steam -------------------------------------------------------------------------
; SteamClient -------------------------------------------------------------------
Const BLITZSTEAM_EAccountType_Invalid = 0
Const BLITZSTEAM_EAccountType_Individual = 1
Const BLITZSTEAM_EAccountType_Multiseat = 2
Const BLITZSTEAM_EAccountType_Gameserver = 3
Const BLITZSTEAM_EAccountType_AnonGamerserver = 4
Const BLITZSTEAM_EAccountType_Pending = 5
Const BLITZSTEAM_EAccountType_ContentServer = 6
Const BLITZSTEAM_EAccountType_Clan = 7
Const BLITZSTEAM_EAccountType_Chat = 8
Const BLITZSTEAM_EAccountType_ConsoleUser = 9
Const BLITZSTEAM_EAccountType_AnonUser = 10
Const BLITZSTEAM_ECallback_SteamAppListCallbacks = 3900
Const BLITZSTEAM_ECallback_SteamAppsCallbacks = 1000
Const BLITZSTEAM_ECallback_SteamBillingCallbacks = 400
Const BLITZSTEAM_ECallback_SteamContentServerCallbacks = 600
Const BLITZSTEAM_ECallback_SteamControllerCallbacks = 2800
Const BLITZSTEAM_ECallback_SteamFriendsCallbacks = 300
Const BLITZSTEAM_ECallback_SteamGameCoordinatorCallbacks = 1700
Const BLITZSTEAM_ECallback_SteamGameServerCallbacks = 200
Const BLITZSTEAM_ECallback_SteamGameServerItemsCallbacks = 1500
Const BLITZSTEAM_ECallback_SteamGameServerStatsCallbacks = 1800
Const BLITZSTEAM_ECallback_SteamGameStatsCallbacks = 2000
Const BLITZSTEAM_ECallback_SteamHTMLSurfacECallback_s = 4500
Const BLITZSTEAM_ECallback_SteamMatchmakingCallbacks = 500
Const BLITZSTEAM_ECallback_SteamMusicCallbacks = 4000
Const BLITZSTEAM_ECallback_SteamMusicRemotECallback_s = 4100
Const BLITZSTEAM_ECallback_SteamNetworkingCallbacks = 1200
Const BLITZSTEAM_ECallback_SteamReservedCallbacks = 4400
Const BLITZSTEAM_ECallback_SteamScreenshotsCallbacks = 2300
Const BLITZSTEAM_ECallback_SteamStreamLauncherCallbacks = 2600
Const BLITZSTEAM_ECallback_SteamStreamClientCallbacks = 3500
Const BLITZSTEAM_ECallback_SteamUserCallbacks = 100
Const BLITZSTEAM_ECallback_SteamUserStatsCallbacks = 1100
Const BLITZSTEAM_ECallback_SteamUtilsCallbacks = 700
Const BLITZSTEAM_ECallback_Steam2AsyncCallbacks = 1900
Const BLITZSTEAM_ECallback_ClientAudioCallbacks = 2400
Const BLITZSTEAM_ECallback_ClientControllerCallbacks = 2700
Const BLITZSTEAM_ECallback_ClientDepotBuilderCallbacks = 1400
Const BLITZSTEAM_ECallback_ClientDeviceAuthCallbacks = 3000
Const BLITZSTEAM_ECallback_ClientFriendsCallbacks = 800
Const BLITZSTEAM_ECallback_ClientHTTPCallbacks = 2100
Const BLITZSTEAM_ECallback_ClientInventoryCallbacks = 4700
Const BLITZSTEAM_ECallback_ClientMusicCallbacks = 3200
Const BLITZSTEAM_ECallback_ClientNetworkDeviceManagerCallbacks = 3100
Const BLITZSTEAM_ECallback_ClientParentalSettingsCallbacks = 2900
Const BLITZSTEAM_ECallback_ClientProductBuilderCallbacks = 3600
Const BLITZSTEAM_ECallback_ClientRemoteStoragECallback_s = 1300
Const BLITZSTEAM_ECallback_ClientRemoteClientManagerCallbacks = 3300
Const BLITZSTEAM_ECallback_ClientRemoteControlManagerCallbacks = 3800
Const BLITZSTEAM_ECallback_ClientReservedCallbacks = 4300
Const BLITZSTEAM_ECallback_ClientScreenshotsCallbacks = 2200
Const BLITZSTEAM_ECallback_ClientShortcutsCallbacks = 3700
Const BLITZSTEAM_ECallback_ClientUGCCallbacks = 3400
Const BLITZSTEAM_ECallback_ClientUnifiedMessagesCallbacks = 2500
Const BLITZSTEAM_ECallback_ClientUserCallbacks = 900
Const BLITZSTEAM_ECallback_ClientUtilsCallbacks = 1600
Const BLITZSTEAM_ECallback_ClientVideoCallbacks = 4600
Const BLITZSTEAM_ECallback_ClientVRCallbacks = 4200
; SteamAppList ------------------------------------------------------------------
Const BLITZSTEAM_CALLBACK_AppInstalled = BLITZSTEAM_ECallback_SteamAppListCallbacks + 1
Const BLITZSTEAM_CALLBACK_AppUninstalled = BLITZSTEAM_ECallback_SteamAppListCallbacks + 2
; SteamApps ---------------------------------------------------------------------
Const BLITZSTEAM_CALLBACK_DLCInstalled = BLITZSTEAM_ECallback_SteamAppsCallbacks + 5
Const BLITZSTEAM_CALLBACK_APPProofOfPurchaseKeyResponse = BLITZSTEAM_ECallback_SteamAppsCallbacks + 13
Const BLITZSTEAM_CALLBACK_NewLaunchQueryParameters = BLITZSTEAM_ECallback_SteamAppsCallbacks + 14
; The following things are PS3 only:
; ERegisterActivationCodeResult
; RegisterActivationCodeResponse_t
; SteamController ---------------------------------------------------------------
Const BLITZSTEAM_MASK_RIGHT_TRIGGER = $00000001
Const BLITZSTEAM_MASK_LEFT_TRIGGER = $00000002
Const BLITZSTEAM_MASK_RIGHT_BUMPER = $00000004
Const BLITZSTEAM_MASK_LEFT_BUMPER = $00000008
Const BLITZSTEAM_MASK_BUTTON_0 = $00000010
Const BLITZSTEAM_MASK_BUTTON_1 = $00000020
Const BLITZSTEAM_MASK_BUTTON_2 = $00000040
Const BLITZSTEAM_MASK_BUTTON_3 = $00000080
Const BLITZSTEAM_MASK_TOUCH_0 = $00000100
Const BLITZSTEAM_MASK_TOUCH_1 = $00000200
Const BLITZSTEAM_MASK_TOUCH_2 = $00000400
Const BLITZSTEAM_MASK_TOUCH_3 = $00000800
Const BLITZSTEAM_MASK_BUTTON_MENU = $0001000
Const BLITZSTEAM_MASK_BUTTON_STEAM = $0002000
Const BLITZSTEAM_MASK_BUTTON_ESCAPE = $0004000
Const BLITZSTEAM_MASK_BUTTON_BACK_LEFT = $0008000
Const BLITZSTEAM_MASK_BUTTON_BACK_RIGHT = $0010000
Const BLITZSTEAM_MASK_BUTTON_LEFTPAD_CLICKED = $0020000
Const BLITZSTEAM_MASK_BUTTON_RIGHTPAD_CLICKED = $0040000
Const BLITZSTEAM_MASK_LEFTPAD_FINGERDOWN = $0080000
Const BLITZSTEAM_MASK_RIGHTPAD_FINGERDOWN = $0100000
Const BLITZSTEAM_MASK_JOYSTICK_BUTTON = $0400000
Const BLITZSTEAM_ESteamControllerPad_Left = 0
Const BLITZSTEAM_ESteamControllerPad_Right = 1
Type BlitzSteamControllerState
Field unPacketNum%
Field ulButtonsL%, ulButtonsR%
Field sLeftPadXY ; Left/High = X, Right/Low = Y
Field sRightPadXY ; Left/High = X, Right/Low = Y
End Type
; SteamFriends ------------------------------------------------------------------
Const BLITZSTEAM_EFriendRelationShip_None = 0
Const BLITZSTEAM_EFriendRelationShip_Blocked = 1
Const BLITZSTEAM_EFriendRelationShip_RequestRecipient = 2
Const BLITZSTEAM_EFriendRelationShip_Friend = 3
Const BLITZSTEAM_EFriendRelationShip_RequestInitiator = 4
Const BLITZSTEAM_EFriendRelationShip_Ignored = 5
Const BLITZSTEAM_EFriendRelationShip_IgnoredFriend = 6
Const BLITZSTEAM_EFriendRelationShip_Suggested = 7
Const BLITZSTEAM_EPersonaState_Offline = 0
Const BLITZSTEAM_EPersonaState_Online = 1
Const BLITZSTEAM_EPersonaState_Busy = 2
Const BLITZSTEAM_EPersonaState_Away = 3
Const BLITZSTEAM_EPersonaState_Snooze = 4
Const BLITZSTEAM_EPersonaState_LookingToTrade = 5
Const BLITZSTEAM_EPersonaState_LookingToPlay = 6
Const BLITZSTEAM_EFriendFlags_None = $00000000
Const BLITZSTEAM_EFriendFlags_Blocked = $00000001
Const BLITZSTEAM_EFriendFlags_FriendshipRequested = $00000002
Const BLITZSTEAM_EFriendFlags_Immediate = $00000004
Const BLITZSTEAM_EFriendFlags_ClanMember = $00000008
Const BLITZSTEAM_EFriendFlags_OnGameServer = $00000010
Const BLITZSTEAM_EFriendFlags_RequestingFriendship = $00000080
Const BLITZSTEAM_EFriendFlags_RequestingInfo = $00000100
Const BLITZSTEAM_EFriendFlags_Ignored = $00000200
Const BLITZSTEAM_EFriendFlags_IgnoredFriend = $00000400
Const BLITZSTEAM_EFriendFlags_Suggested = $00000800
Const BLITZSTEAM_EFriendFlags_All = $0000FFFF
Const BLITZSTEAM_cchMaxFriendsGroupName = 64
Const BLITZSTEAM_cFriendsGroupLimit = 100
Const BLITZSTEAM_FriendsGroupID_Invalid = -1
Const BLITZSTEAM_cEnumerateFollowersMax = 50
Const BLITZSTEAM_cchPersonaNameMax = 128
Const BLITZSTEAM_cwchPersonaNameMax = 32
Type BlitzSteamFriendGameInfo
Field m_gameID%
Field m_unGameIP%
Field m_usGamePortQueryPort% ; Left/High GamePort, Right/Low QueryPort
Field m_steamIDLobby%
End Type
Const BLITZSTEAM_EUserRestrictionNone = 0
Const BLITZSTEAM_EUserRestrictionUnknown = 1
Const BLITZSTEAM_EUserRestrictionAnyChat = 2
Const BLITZSTEAM_EUserRestrictionVoiceChat = 4
Const BLITZSTEAM_EUserRestrictionGroupChat = 8
Const BLITZSTEAM_EUserRestrictionRating = 16
Const BLITZSTEAM_EUserRestrictionGameInvites = 32
Const BLITZSTEAM_EUserRestrictionTrading = 64
Type BlitzSteamFriendSessionStateInfo
Field m_uiOnlineSessionInstances
Field m_uiPublishedToFriendsSessionInstance
End Type
Const BLITZSTEAM_cubChatMetadataMax = 8192
Const BLITZSTEAM_cchMaxRichPresenceKeys = 20
Const BLITZSTEAM_cchMaxRichPresenceKeyLength = 64
Const BLITZSTEAM_cchMaxRichPresenceValueLength = 256
Const BLITZSTEAM_EOverlayToStoreFlag_None = 0
Const BLITZSTEAM_EOverlayToStoreFlag_AddToCart = 1
Const BLITZSTEAM_EOverlayToStoreFlag_AddToCartAndShow = 2
Const BLITZSTEAM_CALLBACK_PersonaStateChange = BLITZSTEAM_ECallback_SteamFriendsCallbacks + 4
Const BLITZSTEAM_EPersonaChange_Name = $0001
Const BLITZSTEAM_EPersonaChange_Status = $0002
Const BLITZSTEAM_EPersonaChange_ComeOnline = $0004
Const BLITZSTEAM_EPersonaChange_GoneOffline = $0008
Const BLITZSTEAM_EPersonaChange_GamePlayed = $0010
Const BLITZSTEAM_EPersonaChange_GameServer = $0020
Const BLITZSTEAM_EPersonaChange_Avatar = $0040
Const BLITZSTEAM_EPersonaChange_JoinedSource = $0080
Const BLITZSTEAM_EPersonaChange_LeftSource = $0100
Const BLITZSTEAM_EPersonaChange_RelationshipChanged = $0200
Const BLITZSTEAM_EPersonaChange_NameFirstSet = $0400
Const BLITZSTEAM_EPersonaChange_FacebookInfo = $0800
Const BLITZSTEAM_EPersonaChange_Nickname = $1000
Const BLITZSTEAM_EPersonaChange_SteamLevel = $2000
Const BLITZSTEAM_CALLBACK_GameOverlayActivated = BLITZSTEAM_ECallback_SteamFriendsCallbacks + 31
Const BLITZSTEAM_CALLBACK_GameServerChangeRequested = BLITZSTEAM_ECallback_SteamFriendsCallbacks + 32
Const BLITZSTEAM_CALLBACK_GameLobbyJoinRequested = BLITZSTEAM_ECallback_SteamFriendsCallbacks + 33
Const BLITZSTEAM_CALLBACK_AvatarImageLoaded = BLITZSTEAM_ECallback_SteamFriendsCallbacks + 34
Const BLITZSTEAM_CALLBACK_ClanOfficerListResponse = BLITZSTEAM_ECallback_SteamFriendsCallbacks + 35
Const BLITZSTEAM_CALLBACK_FriendRichPresenceUpdate = BLITZSTEAM_ECallback_SteamFriendsCallbacks + 36
Const BLITZSTEAM_CALLBACK_GameRichPresenceJoinRequested = BLITZSTEAM_ECallback_SteamFriendsCallbacks + 37
Const BLITZSTEAM_CALLBACK_GameConnectedClanChatMsg = BLITZSTEAM_ECallback_SteamFriendsCallbacks + 38
Const BLITZSTEAM_CALLBACK_GameConnectedChatJoin = BLITZSTEAM_ECallback_SteamFriendsCallbacks + 39
Const BLITZSTEAM_CALLBACK_GameConnectedChatLeave = BLITZSTEAM_ECallback_SteamFriendsCallbacks + 40
Const BLITZSTEAM_CALLBACK_DownloadClanActivityCountsResult = BLITZSTEAM_ECallback_SteamFriendsCallbacks + 41
Const BLITZSTEAM_CALLBACK_JoinClanChatRoomCompletionResult = BLITZSTEAM_ECallback_SteamFriendsCallbacks + 42
Const BLITZSTEAM_CALLBACK_GameConnectedFriendChatMsg = BLITZSTEAM_ECallback_SteamFriendsCallbacks + 43
Const BLITZSTEAM_CALLBACK_FriendsGetFollowerCount = BLITZSTEAM_ECallback_SteamFriendsCallbacks + 44
Const BLITZSTEAM_CALLBACK_FriendsIsFollowing = BLITZSTEAM_ECallback_SteamFriendsCallbacks + 45
Const BLITZSTEAM_CALLBACK_FriendsEnumerateFollowingList = BLITZSTEAM_ECallback_SteamFriendsCallbacks + 46
Const BLITZSTEAM_CALLBACK_SetPersonaNameResponse = BLITZSTEAM_ECallback_SteamFriendsCallbacks + 47
; SteamGameServer ---------------------------------------------------------------
Const BLITZSTEAM_EServerMode_Invalid = 0
Const BLITZSTEAM_EServerMode_NoAuthentication = 1
Const BLITZSTEAM_EServerMode_Authentication = 2
Const BLITZSTEAM_EServerMode_AuthenticationAndSecure = 3
-307
View File
@@ -1,307 +0,0 @@
; BlitzSteam - Steam wrapper for Blitz.
; Copyright (C) 2015 Project Kube (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http:;www.gnu.org/licenses/>.
.lib "BlitzSteam.dll"
; Helpers -----------------------------------------------------------------------
; -- CSteamID
BlitzSteamCSteamID_New%()
BlitzSteamCSteamID_FromID%(unAccountID%, eUniverse%, eAccountType%)
BlitzSteamCSteamID_FromIDInstance%(unAccountID%, unInstance%, eUniverse%, eAccountType%)
BlitzSteamCSteamID_FromSteamID%(ulSteamID%)
BlitzSteamCSteamID_Copy%(pSteamID%)
BlitzSteamCSteamID_Destroy(pSteamID%)
BlitzSteamCSteamID_Set(pSteamID%, unAccountID%, eUniverse%, eAccountType%)
BlitzSteamCSteamID_InstancedSet(pSteamID%, unAccountID%, unInstance%, eUniverse%, eAccountType%)
BlitzSteamCSteamID_FullSet(pSteamID%, ulIdentifier%, eUniverse%, eAccountType%)
BlitzSteamCSteamID_SetFromUInt64(pSteamID%, ulSteamID%)
BlitzSteamCSteamID_Clear(pSteamID%)
BlitzSteamCSteamID_ConvertToUInt64%(pSteamID%)
BlitzSteamCSteamID_GetStaticAccountKey%(pSteamID%)
BlitzSteamCSteamID_CreateBlankAnonLogon(pSteamID%, eUniverse%)
BlitzSteamCSteamID_CreateBlankAnonUserLogon(pSteamID%, eUniverse%)
BlitzSteamCSteamID_BlankAnonAccount%(pSteamID%)
BlitzSteamCSteamID_GameServerAccount%(pSteamID%)
BlitzSteamCSteamID_PersistentGameServerAccount%(pSteamID%)
BlitzSteamCSteamID_AnonGameServerAccount%(pSteamID%)
BlitzSteamCSteamID_ContentServerAccount%(pSteamID%)
BlitzSteamCSteamID_ClanAccount%(pSteamID%)
BlitzSteamCSteamID_ChatAccount%(pSteamID%)
BlitzSteamCSteamID_IsLobby%(pSteamID%)
BlitzSteamCSteamID_IndividualAccount%(pSteamID%)
BlitzSteamCSteamID_AnonAccount%(pSteamID%)
BlitzSteamCSteamID_AnonUserAccount%(pSteamID%)
BlitzSteamCSteamID_ConsoleUserAccount%(pSteamID%)
BlitzSteamCSteamID_SetAccountID(pSteamID%, unAccountID%)
BlitzSteamCSteamID_SetAccountInstance(pSteamID, unInstance%)
BlitzSteamCSteamID_ClearIndividualInstance(pSteamID%)
BlitzSteamCSteamID_HasNoIndividualInstance%(pSteamID%)
BlitzSteamCSteamID_GetAccountID%(pSteamID%)
BlitzSteamCSteamID_GetAccountInstance%(pSteamID%)
BlitzSteamCSteamID_GetEAccountType%(pSteamID%)
BlitzSteamCSteamID_GetEUniverse%(pSteamID%)
BlitzSteamCSteamID_SetEUniverse(pSteamID%, eUniverse%)
BlitzSteamCSteamID_IsValid%(pSteamID%)
BlitzSteamCSteamID_Compare%(pSteamID%, pSteamIDOther%)
; -- Double
BlitzSteamDouble_New%()
BlitzSteamDouble_Copy%(other%)
BlitzSteamDouble_Destroy(this%)
BlitzSteamDouble_SetP(this%, other%)
BlitzSteamDouble_SetV(this%, left%, right%)
BlitzSteamDouble_AddP(this%, other%)
BlitzSteamDouble_AddV(this%, left%, right%)
BlitzSteamDouble_SubP(this%, other%)
BlitzSteamDouble_SubV(this%, left%, right%)
BlitzSteamDouble_MulP(this%, other%)
BlitzSteamDouble_MulV(this%, left%, right%)
BlitzSteamDouble_DivP(this%, other%)
BlitzSteamDouble_DivV(this%, left%, right%)
BlitzSteamDouble_CompareP%(this%, other%)
BlitzSteamDouble_CompareF%(this%, other#)
BlitzSteamDouble_ToString$(this%)
BlitzSteamDouble_ToFloat#(this%)
BlitzSteamDouble_FromFloat%(value#)
BlitzSteamDouble_ToInt32%(this%)
BlitzSteamDouble_FromInt32%(value%)
BlitzSteamDouble_ToInt64%(this%)
; -- Int64
BlitzSteamInt64_New%()
BlitzSteamInt64_Copy%(other%)
BlitzSteamInt64_Destroy(this%)
BlitzSteamInt64_SetP(this%, other%)
BlitzSteamInt64_SetV(this%, left%, right%)
BlitzSteamInt64_AddP(this%, other%)
BlitzSteamInt64_AddV(this%, left%, right%)
BlitzSteamInt64_SubP(this%, other%)
BlitzSteamInt64_SubV(this%, left%, right%)
BlitzSteamInt64_MulP(this%, other%)
BlitzSteamInt64_MulV(this%, left%, right%)
BlitzSteamInt64_DivP(this%, other%)
BlitzSteamInt64_DivV(this%, left%, right%)
BlitzSteamInt64_CompareP%(this%, other%)
BlitzSteamInt64_CompareV%(this%, left%, right%)
BlitzSteamInt64_ToString$(this%)
BlitzSteamInt64_ValueL%(this%)
BlitzSteamInt64_ValueR%(this%)
BlitzSteamInt64_FromFloat%(value#)
BlitzSteamInt64_ToFloat#(this%)
BlitzSteamInt64_ToDouble%(this%)
; Steam -------------------------------------------------------------------------
BlitzSteam_Init%()
BlitzSteam_Shutdown()
BlitzSteam_IsSteamRunning%()
BlitzSteam_RestartAppIfNecessary%(unOwnAppID%)
BlitzSteam_SetMiniDumpComment(pchMsg$)
BlitzSteam_WriteMiniDumpEx(uStructuredExceptionCode%, pvExceptionInfo%, uBuildID%) : "BlitzSteam_WriteMiniDump"
BlitzSteam_WriteMiniDump(uStructuredExceptionCode%, pvExceptionInfo*, uBuildID%)
; -- Interfaces
BlitzSteamAppList%()
BlitzSteamApps%()
BlitzSteamClient%()
BlitzSteamController%()
BlitzSteamFriends%()
BlitzSteamHTTP%()
BlitzSteamHTMLSurface%()
BlitzSteamInventory%()
BlitzSteamMatchmaking%()
BlitzSteamMatchmakingServers%()
BlitzSteamMusic%()
BlitzSteamMusicRemote%()
BlitzSteamNetworking%()
BlitzSteamRemoteStorage%()
BlitzSteamScreenshots%()
BlitzSteamUGC%()
BlitzSteamUnifiedMessages%()
BlitzSteamUser%()
BlitzSteamUserStats%()
BlitzSteamUtils%()
BlitzSteamVideo%()
; -- Callbacks & Hooks
BlitzSteam_RunCallbacks()
BlitzSteam_RegisterCallback(pCallback%, iCallback%)
BlitzSteam_UnregisterCallback(pCallback%)
BlitzSteam_RegisterCallResult(pCallback%, hAPICall_L%, hAPICall_R%)
BlitzSteam_UnregisterCallResult(pCallback%, hAPICall_L%, hAPICall_R%)
; SteamAppList ------------------------------------------------------------------
BlitzSteamAppList_GetNumInstalledApps%(lpSteamAppList%)
BlitzSteamAppList_GetInstalledAppsEx%(lpSteamAppList%, pvecAppID%, unMaxIDs%) : "BlitzSteamAppList_GetInstalledApps"
BlitzSteamAppList_GetInstalledApps%(lpSteamAppList%, pvecAppID*, unMaxIDs%)
BlitzSteamAppList_GetAppNameEx%(lpSteamAppList%, nAppId%, pchName%, cchNameMax%) : "BlitzSteamAppList_GetAppName"
BlitzSteamAppList_GetAppName%(lpSteamAppList%, nAppId%, pchName*, cchNameMax%)
BlitzSteamAppList_GetAppInstallDirEx%(lpSteamAppList%, nAppId%, pchDirectory%, cchDirectoryMax%) : "BlitzSteamAppList_GetAppInstallDir"
BlitzSteamAppList_GetAppInstallDir%(lpSteamAppList%, nAppId%, pchDirectory*, cchDirectoryMax%)
BlitzSteamAppList_GetAppBuildId%(lpSteamAppList%, nAppId%)
; SteamApps ---------------------------------------------------------------------
BlitzSteamApps_IsSubscribed%(lpSteamApps%)
BlitzSteamApps_IsLowViolence%(lpSteamApps%)
BlitzSteamApps_IsCybercafe%(lpSteamApps%)
BlitzSteamApps_IsVACBanned%(lpSteamApps%)
BlitzSteamApps_GetCurrentGameLanguage$(lpSteamApps%)
BlitzSteamApps_GetAvailableGameLanguages$(lpSteamApps%)
BlitzSteamApps_IsSubscribedApp%(lpSteamApps%, appID%)
BlitzSteamApps_IsDlcInstalled%(lpSteamApps%, appID%)
BlitzSteamApps_GetEarliestPurchaseUnixTime%(lpSteamApps%, appID%)
BlitzSteamApps_IsSubscribedFromFreeWeekend%(lpSteamApps%)
BlitzSteamApps_GetDLCCount%(lpSteamApps%)
BlitzSteamApps_GetDLCDataByIndexEx%(lpSteamApps%, iDLC%, pAppId%, pbAvailable%, pchName%, cchNameBufferSize%) : "BlitzSteamApps_GetDLCDataByIndex"
BlitzSteamApps_GetDLCDataByIndex%(lpSteamApps%, iDLC%, pAppId*, pbAvailable*, pchName*, cchNameBufferSize%)
BlitzSteamApps_InstallDLC(lpSteamApps%, nAppID%)
BlitzSteamApps_UninstallDLC(lpSteamApps%, nAppID%)
BlitzSteamApps_RequestAppProofOfPurchaseKey(lpSteamApps%, nAppID%)
BlitzSteamApps_GetCurrentBetaNameEx%(lpSteamApps%, pchName%, cchNameBufferSize%) : "BlitzSteamApps_GetCurrentBetaName"
BlitzSteamApps_GetCurrentBetaName%(lpSteamApps%, pchName*, cchNameBufferSize%)
BlitzSteamApps_MarkContentCorrupt%(lpSteamApps%, bMissingFilesOnly%)
BlitzSteamApps_GetInstalledDepotsEx%(lpSteamApps%, nAppID%, pvecDepots%, cMaxDepots%) : "BlitzSteamApps_GetInstalledDepots"
BlitzSteamApps_GetInstalledDepots%(lpSteamApps%, nAppID%, pvecDepots*, cMaxDepots%)
BlitzSteamApps_GetAppInstallDirEx%(lpSteamApps%, nAppID%, pchFolder%, cchFolderBufferSize%) : "BlitzSteamApps_GetAppInstallDir"
BlitzSteamApps_GetAppInstallDir%(lpSteamApps%, nAppID%, pchFolder*, cchFolderBufferSize%)
BlitzSteamApps_IsAppInstalled%(lpSteamApps%, nAppID%)
BlitzSteamApps_GetAppOwner%(lpSteamApps%)
BlitzSteamApps_GetLaunchQueryParam$(lpSteamApps%, pchKey$)
BlitzSteamApps_GetDlcDownloadProgressEx%(lpSteamApps%, nAppID%, punBytesDownloaded%, punBytesTotal%) : "BlitzSteamApps_GetDlcDownloadProgress"
BlitzSteamApps_GetDlcDownloadProgress%(lpSteamApps%, nAppID%, punBytesDownloaded*, punBytesTotal*)
BlitzSteamApps_GetAppBuildId%(lpSteamApps%)
; SteamClient -------------------------------------------------------------------
BlitzSteamClient_CreateSteamPipe%(lpSteamClient%)
BlitzSteamClient_ReleaseSteamPipe%(lpSteamClient%, hSteamPipe%)
BlitzSteamClient_ConnectToGlobalUser%(lpSteamClient%, hSteamPipe%)
BlitzSteamClient_SetLocalIPBinding(lpSteamClient, unIP%, usPort%)
BlitzSteamClient_CreateLocalUserEx%(lpSteamClient%, phSteamPipe*, eAccountType%) : "BlitzSteamClient_CreateLocalUser"
BlitzSteamClient_CreateLocalUser%(lpSteamClient%, phSteamPipe*, eAccountType%)
BlitzSteamClient_ReleaseUser(lpSteamClient%, hSteamPipe%, hSteamUser%)
BlitzSteamClient_RunFrame(lpSteamClient%)
BlitzSteamClient_GetIPCCallCount%(lpSteamClient%)
BlitzSteamClient_ShutdownIfAllPipesClosed%(lpSteamClient%)
; -- Interfaces
BlitzSteamClient_GetSteamAppList%(lpSteamClient%, hSteamUser%, hSteamPipe%, pchVersion$)
BlitzSteamClient_GetSteamApps%(lpSteamClient%, hSteamUser%, hSteamPipe%, pchVersion$)
BlitzSteamClient_GetSteamController%(lpSteamClient%, hSteamUser%, hSteamPipe%, pchVersion$)
BlitzSteamClient_GetSteamFriends%(lpSteamClient%, hSteamUser%, hSteamPipe%, pchVersion$)
BlitzSteamClient_GetSteamGameServer%(lpSteamClient%, hSteamUser%, hSteamPipe%, pchVersion$)
BlitzSteamClient_GetSteamGameServerStats%(lpSteamClient%, hSteamUser%, hSteamPipe%, pchVersion$)
BlitzSteamClient_GetSteamHTMLSurface%(lpSteamClient%, hSteamUser%, hSteamPipe%, pchVersion$)
BlitzSteamClient_GetSteamHTTP%(lpSteamClient%, hSteamUser%, hSteamPipe%, pchVersion$)
BlitzSteamClient_GetSteamInventory%(lpSteamClient%, hSteamUser%, hSteamPipe%, pchVersion$)
BlitzSteamClient_GetSteamMatchmaking%(lpSteamClient%, hSteamUser%, hSteamPipe%, pchVersion$)
BlitzSteamClient_GetSteamMatchmakingServers%(lpSteamClient%, hSteamUser%, hSteamPipe%, pchVersion$)
BlitzSteamClient_GetSteamMusic%(lpSteamClient%, hSteamUser%, hSteamPipe%, pchVersion$)
BlitzSteamClient_GetSteamMusicRemote%(lpSteamClient%, hSteamUser%, hSteamPipe%, pchVersion$)
BlitzSteamClient_GetSteamNetworking%(lpSteamClient%, hSteamUser%, hSteamPipe%, pchVersion$)
BlitzSteamClient_GetSteamRemoteStorage%(lpSteamClient%, hSteamUser%, hSteamPipe%, pchVersion$)
BlitzSteamClient_GetSteamScreenshots%(lpSteamClient%, hSteamUser%, hSteamPipe%, pchVersion$)
BlitzSteamClient_GetSteamUGC%(lpSteamClient%, hSteamUser%, hSteamPipe%, pchVersion$)
BlitzSteamClient_GetSteamUnifiedMessages%(lpSteamClient%, hSteamUser%, hSteamPipe%, pchVersion$)
BlitzSteamClient_GetSteamUser%(lpSteamClient%, hSteamUser%, hSteamPipe%, pchVersion$)
BlitzSteamClient_GetSteamUserStats%(lpSteamClient%, hSteamUser%, hSteamPipe%, pchVersion$)
BlitzSteamClient_GetSteamUtils%(lpSteamClient%, hSteamPipe%, pchVersion$)
BlitzSteamClient_GetSteamVideo%(lpSteamClient%, hSteamUser%, hSteamPipe%, pchVersion$)
; -- Callbacks & Hooks
BlitzSteamClient_SetWarningMessageHook(lpSteamClient%, fpFunction%)
BlitzSteamClient_Set_SteamAPI_CPostAPIResultInProcess(lpSteamClient%, fpFunction%)
BlitzSteamClient_Remove_SteamAPI_CPostAPIResultInProcess(lpSteamClient%, fpFunction%)
BlitzSteamClient_Set_SteamAPI_CCheckCallbackRegisteredInProcess(lpSteamClient%, fpFunction%)
; SteamController ---------------------------------------------------------------
BlitzSteamController_Init%(lpSteamController%, pchAbsolutePathToControllerConfigVDF$)
BlitzSteamController_Shutdown%(lpSteamController%)
BlitzSteamController_RunFrame(lpSteamController%)
BlitzSteamController_GetControllerStateEx%(lpSteamController%, unControllerIndex%, pState%) : "BlitzSteamController_GetControllerState"
BlitzSteamController_GetControllerState%(lpSteamController%, unControllerIndex%, pState*)
BlitzSteamController_TriggerHapticPulse(lpSteamController%, unControllerIndex%, eTargetPad%, usDurationMicroSec%)
BlitzSteamController_SetOverrideMode(lpSteamController%, pchMode$)
; SteamFriends ------------------------------------------------------------------
BlitzSteamFriends_GetPersonaName$(lpSteamFriends%)
BlitzSteamFriends_SetPersonaName%(lpSteamFriends%, pchPersonaName$)
BlitzSteamFriends_GetPersonaState%(lpSteamFriends%)
BlitzSteamFriends_GetFriendCount%(lpSteamFriends%, iFriendFlags%)
BlitzSteamFriends_GetFriendByIndex%(lpSteamFriends%, iFriend%, iFriendFlags%)
BlitzSteamFriends_GetFriendRelationship%(lpSteamFriends%, steamIDFriend%)
BlitzSteamFriends_GetFriendPersonaState%(lpSteamFriends%, steamIDFriend%)
BlitzSteamFriends_GetFriendPersonaName$(lpSteamFriends%, steamIDFriend%)
BlitzSteamFriends_GetFriendGamePlayedEx%(lpSteamFriends%, steamIDFriend%, pFriendGameInfo%) : "BlitzSteamFriends_GetFriendGamePlayed"
BlitzSteamFriends_GetFriendGamePlayed%(lpSteamFriends%, steamIDFriend%, pFriendGameInfo*)
BlitzSteamFriends_GetFriendPersonaNameHistory$(lpSteamFriends%, steamIDFriend%, iPersonaName%)
BlitzSteamFriends_GetFriendSteamLevel%(lpSteamFriends%, steamIDFriend%)
BlitzSteamFriends_GetPlayerNickname$(lpSteamFriends%, steamIDFriend%)
BlitzSteamFriends_GetFriendsGroupCount%(lpSteamFriends%)
BlitzSteamFriends_GetFriendsGroupIDByIndex%(lpSteamFriends%, friendsGroupID%)
BlitzSteamFriends_GetFriendsGroupName$(lpSteamFriends%, friendsGroupID%)
BlitzSteamFriends_GetFriendsGroupMembersCount%(lpSteamFriends%, friendsGroupID%)
BlitzSteamFriends_GetFriendsGroupMembersListEx(lpSteamFriends%, friendsGroupID%, pOutSteamIDMembers%, nMembersCount%) : "BlitzSteamFriends_GetFriendsGroupMembersList"
BlitzSteamFriends_GetFriendsGroupMembersList(lpSteamFriends%, friendsGroupID%, pOutSteamIDMembers*, nMembersCount%)
BlitzSteamFriends_HasFriend(lpSteamFriends%, steamIDFriend%, iFriendFlags%)
BlitzSteamFriends_GetClanCount%(lpSteamFriends%)
BlitzSteamFriends_GetClanByIndex%(lpSteamFriends%, iClan%)
BlitzSteamFriends_GetClanName$(lpSteamFriends%, steamIDClan%)
BlitzSteamFriends_GetClanTag$(lpSteamFriends%, steamIDClan%)
BlitzSteamFriends_GetClanActivityCountsEx%(lpSteamFriends%, steamIDClan%, pnOnline%, pnInGame%, pnChatting%) : "BlitzSteamFriends_GetClanActivityCounts"
BlitzSteamFriends_GetClanActivityCounts%(lpSteamFriends%, steamIDClan%, pnOnline*, pnInGame*, pnChatting*)
BlitzSteamFriends_DownloadClanActivityCounts%(lpSteamFriends%, steamIDClan%, cClansToRequest%)
BlitzSteamFriends_GetFriendCountFromSource%(lpSteamFriends%, steamIDSource%)
BlitzSteamFriends_GetFriendFromSourceByIndex%(lpSteamFriends%, steamIDSource%, iFriend%)
BlitzSteamFriends_IsUserInSource%(lpSteamFriends%, steamIDUser%, steamIDSource%)
BlitzSteamFriends_SetInGameVoiceSpeaking(lpSteamFriends%, steamIDUser%, bSpeaking%)
BlitzSteamFriends_ActivateGameOverlay(lpSteamFriends%, pchDialog$)
BlitzSteamFriends_ActivateGameOverlayToUser(lpSteamFriends%, pchDialog$, steamID%)
BlitzSteamFriends_ActivateGameOverlayToWebPage(lpSteamFriends%, pchURL$)
BlitzSteamFriends_ActivateGameOverlayToStore(lpSteamFriends%, nAppID%, eFlag%)
BlitzSteamFriends_SetPlayedWith(lpSteamFriends%, steamIDUserPlayedWith%)
BlitzSteamFriends_ActivateGameOverlayInviteDialog(lpSteamFriends%, steamIDLobby%)
BlitzSteamFriends_GetSmallFriendAvatar%(lpSteamFriends%, steamIDFriend%)
BlitzSteamFriends_GetMediumFriendAvatar%(lpSteamFriends%, steamIDFriend%)
BlitzSteamFriends_GetLargeFriendAvatar%(lpSteamFriends%, steamIDFriend%)
BlitzSteamFriends_RequestUserInformation%(lpSteamFriends%, steamIDUser%, bRequireNameOnly%)
BlitzSteamFriends_RequestClanOfficerList%(lpSteamFriends%, steamIDClan%)
BlitzSteamFriends_GetClanOwner%(lpSteamFriends%, steamIDClan%)
BlitzSteamFriends_GetClanOfficerCount%(lpSteamFriends%, steamIDClan%)
BlitzSteamFriends_GetClanOfficerByIndex%(lpSteamFriends%, steamIDClan%, iOfficer%)
BlitzSteamFriends_GetUserRestrictions%(lpSteamFriends%)
BlitzSteamFriends_SetRichPresence%(lpSteamFriends%, pchKey$, pchValue$)
BlitzSteamFriends_ClearRichPresence(lpSteamFriends%)
BlitzSteamFriends_GetFriendRichPresence$(lpSteamFriends%, steamIDFriend%, pchKey$)
BlitzSteamFriends_GetFriendRichPresenceKeyCount%(lpSteamFriends%, steamIDFriend%)
BlitzSteamFriends_GetFriendRichPresenceKeyByIndex$(lpSteamFriends%, steamIDFriend%, iKey%)
BlitzSteamFriends_RequestFriendRichPresence(lpSteamFriends%, steamIDFriend%)
BlitzSteamFriends_InviteUserToGame%(lpSteamFriends%, steamIDFriend%, pchConnectString%)
BlitzSteamFriends_GetCoplayFriendCount%(lpSteamFriends%)
BlitzSteamFriends_GetCoplayFriend%(lpSteamFriends%, iCoplayFriend%)
BlitzSteamFriends_GetFriendCoplayTime%(lpSteamFriends%, steamIDFriend%)
BlitzSteamFriends_GetFriendCoplayGame%(lpSteamFriends%, steamIDFriend%)
BlitzSteamFriends_JoinClanChatRoom%(lpSteamFriends%, steamIDClan%)
BlitzSteamFriends_LeaveClanChatRoom%(lpSteamFriends%, steamIDClan%)
BlitzSteamFriends_GetClanChatMemberCount%(lpSteamFriends%, steamIDClan%)
BlitzSteamFriends_GetChatMemberByIndex%(lpSteamFriends%, steamIDClan%, iUser%)
BlitzSteamFriends_SendClanChatMessage%(lpSteamFriends%, steamIDClanChat%, pchText$)
BlitzSteamFriends_GetClanChatMessageEx%(lpSteamFriends%, steamIDClanChat%, iMessage%, prgchText%, cchTextMax%, peChatEntryType%, psteamidChatter%) : "BlitzSteamFriends_GetClanChatMessage"
BlitzSteamFriends_GetClanChatMessage%(lpSteamFriends%, steamIDClanChat%, iMessage%, prgchText*, cchTextMax%, peChatEntryType*, psteamidChatter*)
BlitzSteamFriends_IsClanChatAdmin%(lpSteamFriends%, steamIDClanChat%, steamIDUser%)
BlitzSteamFriends_IsClanChatWindowOpenInSteam%(lpSteamFriends%, steamIDClanChat%)
BlitzSteamFriends_OpenClanChatWindowInSteam%(lpSteamFriends%, steamIDClanChat%)
BlitzSteamFriends_CloseClanChatWindowInSteam%(lpSteamFriends%, steamIDClanChat%)
BlitzSteamFriends_SetListenForFriendsMessages%(lpSteamFriends%, bInterceptEnabled%)
BlitzSteamFriends_ReplyToFriendMessage%(lpSteamFriends%, steamIDFriend%, pchMsgToSend$)
BlitzSteamFriends_GetFriendMessageEx%(lpSteamFriends%, steamIDFriend%, iMessageID%, pvData%, cubData%, peChatEntryType%) : "BlitzSteamFriends_GetFriendMessage"
BlitzSteamFriends_GetFriendMessage%(lpSteamFriends%, steamIDFriend%, iMessageID%, pvData*, cubData%, peChatEntryType*)
BlitzSteamFriends_GetFollowerCount%(lpSteamFriends%, steamID%)
BlitzSteamFriends_IsFollowing%(lpSteamFriends%, steamID%)
BlitzSteamFriends_EnumerateFollowingList%(lpSteamFriends%, unStartIndex%)
; SteamGameServer ---------------------------------------------------------------
+32 -33
View File
@@ -1,34 +1,33 @@
// BlitzSteam - Steam wrapper for Blitz. // BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Project Kube (Michael Fabian Dirks) // Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as // it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the // published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version. // License, or (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// //
// You should have received a copy of the GNU Lesser General Public License // You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "dllmain.h" #include "BlitzSteam.h"
#include "Libraries/BlitzPointer.h"
#include <windows.h>
bool WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) { uint32_t WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) {
switch (fdwReason) { switch (fdwReason) {
case DLL_PROCESS_ATTACH: case DLL_PROCESS_ATTACH:
BlitzPointer_Initialize(); break;
break; case DLL_PROCESS_DETACH:
case DLL_PROCESS_DETACH: break;
break; case DLL_THREAD_ATTACH:
case DLL_THREAD_ATTACH: break;
break; case DLL_THREAD_DETACH:
case DLL_THREAD_DETACH: break;
break; }
}
return true;
return true;
} }
+26
View File
@@ -0,0 +1,26 @@
// BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
#include "BlitzSteamInternal.h"
// Our Stuff
#include "Helpers/BlitzPointer.h"
#include "Types/BlitzCallback.h"
#include "Types/CSteamID.h"
#include "Types/Double.h"
#include "Types/Long.h"
#include "Types/Memory.h"
+114 -74
View File
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations"> <ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32"> <ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration> <Configuration>Debug</Configuration>
@@ -13,19 +13,20 @@
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectGuid>{805CB1EB-82F0-405E-AC0B-03FBE82CC77D}</ProjectGuid> <ProjectGuid>{805CB1EB-82F0-405E-AC0B-03FBE82CC77D}</ProjectGuid>
<RootNamespace>BlitzSteam</RootNamespace> <RootNamespace>BlitzSteam</RootNamespace>
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType> <ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries> <UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset> <PlatformToolset>v140</PlatformToolset>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization> <WholeProgramOptimization>false</WholeProgramOptimization>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType> <ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries> <UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset> <PlatformToolset>v140</PlatformToolset>
<WholeProgramOptimization>false</WholeProgramOptimization> <WholeProgramOptimization>false</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
</PropertyGroup> </PropertyGroup>
@@ -40,38 +41,35 @@
</ImportGroup> </ImportGroup>
<PropertyGroup Label="UserMacros" /> <PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>$(SolutionDir)\#Build\$(ProjectName)\$(Configuration)\</OutDir> <OutDir>$(SolutionDir)#Build\$(ProjectName)\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)\#Intermediate\$(ProjectName)\$(Configuration)\</IntDir> <IntDir>$(SolutionDir)#Intermediate\$(ProjectName)\$(Configuration)\</IntDir>
<TargetExt>.dll</TargetExt> <TargetExt>.dll</TargetExt>
<LinkIncremental>true</LinkIncremental>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>$(SolutionDir)\#Build\$(ProjectName)\$(Configuration)\</OutDir> <OutDir>$(SolutionDir)#Build\$(ProjectName)\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)\#Intermediate\$(ProjectName)\$(Configuration)\</IntDir> <IntDir>$(SolutionDir)#Intermediate\$(ProjectName)\$(Configuration)\</IntDir>
<TargetExt>.dll</TargetExt> <TargetExt>.dll</TargetExt>
<LinkIncremental>false</LinkIncremental> <LinkIncremental>true</LinkIncremental>
</PropertyGroup> </PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile> <ClCompile>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
<SDLCheck>
</SDLCheck>
<FavorSizeOrSpeed>Neither</FavorSizeOrSpeed> <FavorSizeOrSpeed>Neither</FavorSizeOrSpeed>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<WholeProgramOptimization>false</WholeProgramOptimization> <WholeProgramOptimization>false</WholeProgramOptimization>
<AdditionalIncludeDirectories>$(ProjectDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ProjectDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat> <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<BufferSecurityCheck>false</BufferSecurityCheck> <BufferSecurityCheck>false</BufferSecurityCheck>
<BasicRuntimeChecks>Default</BasicRuntimeChecks> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<StructMemberAlignment>4Bytes</StructMemberAlignment> <StructMemberAlignment>4Bytes</StructMemberAlignment>
<EnableParallelCodeGeneration>true</EnableParallelCodeGeneration> <EnableParallelCodeGeneration>true</EnableParallelCodeGeneration>
<CompileAsManaged>false</CompileAsManaged> <CompileAsManaged>false</CompileAsManaged>
<CompileAsWinRT>false</CompileAsWinRT> <CompileAsWinRT>false</CompileAsWinRT>
<MultiProcessorCompilation>true</MultiProcessorCompilation> <MultiProcessorCompilation>true</MultiProcessorCompilation>
<FunctionLevelLinking>false</FunctionLevelLinking> <FunctionLevelLinking>true</FunctionLevelLinking>
<CreateHotpatchableImage>false</CreateHotpatchableImage> <CreateHotpatchableImage>true</CreateHotpatchableImage>
<RuntimeTypeInfo>false</RuntimeTypeInfo> <RuntimeTypeInfo>true</RuntimeTypeInfo>
<OpenMPSupport>false</OpenMPSupport> <OpenMPSupport>false</OpenMPSupport>
<ForcedIncludeFiles> <ForcedIncludeFiles>
</ForcedIncludeFiles> </ForcedIncludeFiles>
@@ -80,38 +78,37 @@
<InlineFunctionExpansion>Disabled</InlineFunctionExpansion> <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>
<IntrinsicFunctions>false</IntrinsicFunctions> <IntrinsicFunctions>false</IntrinsicFunctions>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<EnableEnhancedInstructionSet>NoExtensions</EnableEnhancedInstructionSet> <EnableEnhancedInstructionSet>NotSet</EnableEnhancedInstructionSet>
<FloatingPointExceptions>false</FloatingPointExceptions> <FloatingPointExceptions>true</FloatingPointExceptions>
<UseUnicodeForAssemblerListing>true</UseUnicodeForAssemblerListing> <UseUnicodeForAssemblerListing>true</UseUnicodeForAssemblerListing>
<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ControlFlowGuard>false</ControlFlowGuard>
<EnforceTypeConversionRules>true</EnforceTypeConversionRules>
</ClCompile> </ClCompile>
<Link> <Link>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>Debug</GenerateDebugInformation>
<Version>1.0</Version>
<AdditionalLibraryDirectories>$(ProjectDir)\SteamworksSDK\redistributable_bin</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(ProjectDir)\SteamworksSDK\redistributable_bin</AdditionalLibraryDirectories>
<AdditionalDependencies>steam_api.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>steam_api.lib;%(AdditionalDependencies)</AdditionalDependencies>
<LinkTimeCodeGeneration> <LinkTimeCodeGeneration>
</LinkTimeCodeGeneration> </LinkTimeCodeGeneration>
<OptimizeReferences> <OptimizeReferences>false</OptimizeReferences>
</OptimizeReferences>
<LinkStatus> <LinkStatus>
</LinkStatus> </LinkStatus>
<CreateHotPatchableImage>Enabled</CreateHotPatchableImage> <CreateHotPatchableImage>Enabled</CreateHotPatchableImage>
<EnableCOMDATFolding>false</EnableCOMDATFolding> <EnableCOMDATFolding>false</EnableCOMDATFolding>
<FixedBaseAddress>false</FixedBaseAddress> <FixedBaseAddress>false</FixedBaseAddress>
<LargeAddressAware>false</LargeAddressAware>
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
<FullProgramDatabaseFile>true</FullProgramDatabaseFile>
</Link> </Link>
<ProjectReference> <ProjectReference />
<LinkLibraryDependencies>true</LinkLibraryDependencies>
</ProjectReference>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile> <ClCompile>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<Optimization>Full</Optimization> <Optimization>Full</Optimization>
<FunctionLevelLinking>false</FunctionLevelLinking> <FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions> <IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>
</SDLCheck>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed> <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<AdditionalIncludeDirectories>$(ProjectDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ProjectDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
@@ -122,43 +119,52 @@
<CompileAsWinRT>false</CompileAsWinRT> <CompileAsWinRT>false</CompileAsWinRT>
<MultiProcessorCompilation>true</MultiProcessorCompilation> <MultiProcessorCompilation>true</MultiProcessorCompilation>
<CreateHotpatchableImage>false</CreateHotpatchableImage> <CreateHotpatchableImage>false</CreateHotpatchableImage>
<RuntimeTypeInfo>false</RuntimeTypeInfo> <RuntimeTypeInfo>true</RuntimeTypeInfo>
<OpenMPSupport>false</OpenMPSupport> <OpenMPSupport>false</OpenMPSupport>
<ForcedIncludeFiles> <ForcedIncludeFiles>
</ForcedIncludeFiles> </ForcedIncludeFiles>
<BasicRuntimeChecks>Default</BasicRuntimeChecks> <BasicRuntimeChecks>Default</BasicRuntimeChecks>
<MinimalRebuild>false</MinimalRebuild> <MinimalRebuild>false</MinimalRebuild>
<CallingConvention>Cdecl</CallingConvention> <CallingConvention>Cdecl</CallingConvention>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion> <InlineFunctionExpansion>Default</InlineFunctionExpansion>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<EnableEnhancedInstructionSet>NoExtensions</EnableEnhancedInstructionSet> <EnableEnhancedInstructionSet>NotSet</EnableEnhancedInstructionSet>
<FloatingPointExceptions>false</FloatingPointExceptions> <FloatingPointExceptions>true</FloatingPointExceptions>
<UseUnicodeForAssemblerListing>true</UseUnicodeForAssemblerListing> <UseUnicodeForAssemblerListing>true</UseUnicodeForAssemblerListing>
<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<DebugInformationFormat>None</DebugInformationFormat>
<ControlFlowGuard>false</ControlFlowGuard>
<EnforceTypeConversionRules>true</EnforceTypeConversionRules>
</ClCompile> </ClCompile>
<Link> <Link>
<GenerateDebugInformation>false</GenerateDebugInformation> <GenerateDebugInformation>No</GenerateDebugInformation>
<EnableCOMDATFolding>false</EnableCOMDATFolding> <EnableCOMDATFolding>false</EnableCOMDATFolding>
<OptimizeReferences> <OptimizeReferences>false</OptimizeReferences>
</OptimizeReferences>
<Version>1.0</Version>
<AdditionalLibraryDirectories>$(ProjectDir)\SteamworksSDK\redistributable_bin</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(ProjectDir)\SteamworksSDK\redistributable_bin</AdditionalLibraryDirectories>
<AdditionalDependencies>steam_api.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>steam_api.lib;%(AdditionalDependencies)</AdditionalDependencies>
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration> <LinkTimeCodeGeneration>
</LinkTimeCodeGeneration>
<LinkStatus> <LinkStatus>
</LinkStatus> </LinkStatus>
<CreateHotPatchableImage>Enabled</CreateHotPatchableImage> <CreateHotPatchableImage>Enabled</CreateHotPatchableImage>
<FixedBaseAddress>false</FixedBaseAddress> <FixedBaseAddress>false</FixedBaseAddress>
<LargeAddressAware>false</LargeAddressAware>
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
<FullProgramDatabaseFile>false</FullProgramDatabaseFile>
</Link> </Link>
<ProjectReference> <ProjectReference />
<LinkLibraryDependencies>true</LinkLibraryDependencies>
</ProjectReference>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="dllmain.cpp" /> <ClCompile Include="BlitzSteam.cpp" />
<ClCompile Include="Helpers\CSteamID.cpp" /> <ClCompile Include="Helpers\BlitzPointer.cpp" />
<ClCompile Include="Helpers\Callbacks.cpp" /> <ClCompile Include="Helpers\Helper.cpp" />
<ClCompile Include="Libraries\BlitzPointer.cpp" /> <ClCompile Include="Types\BlitzCallback.cpp" />
<ClCompile Include="Types\CSteamID.cpp" />
<ClCompile Include="Types\Double.cpp" />
<ClCompile Include="Types\SteamMatchmakingTypes.cpp" />
<ClCompile Include="Types\Long.cpp" />
<ClCompile Include="Types\Memory.cpp" />
<ClCompile Include="Types\SteamTypes.cpp" />
<ClCompile Include="Wrapper\Steam.cpp" /> <ClCompile Include="Wrapper\Steam.cpp" />
<ClCompile Include="Wrapper\SteamAppList.cpp" /> <ClCompile Include="Wrapper\SteamAppList.cpp" />
<ClCompile Include="Wrapper\SteamApps.cpp" /> <ClCompile Include="Wrapper\SteamApps.cpp" />
@@ -171,7 +177,7 @@
<ClCompile Include="Wrapper\SteamHTTP.cpp" /> <ClCompile Include="Wrapper\SteamHTTP.cpp" />
<ClCompile Include="Wrapper\SteamInventory.cpp" /> <ClCompile Include="Wrapper\SteamInventory.cpp" />
<ClCompile Include="Wrapper\SteamMatchmaking.cpp" /> <ClCompile Include="Wrapper\SteamMatchmaking.cpp" />
<ClCompile Include="Wrapper\SteamMatchmakingServer.cpp" /> <ClCompile Include="Wrapper\SteamMatchmakingServers.cpp" />
<ClCompile Include="Wrapper\SteamMusic.cpp" /> <ClCompile Include="Wrapper\SteamMusic.cpp" />
<ClCompile Include="Wrapper\SteamMusicRemote.cpp" /> <ClCompile Include="Wrapper\SteamMusicRemote.cpp" />
<ClCompile Include="Wrapper\SteamNetworking.cpp" /> <ClCompile Include="Wrapper\SteamNetworking.cpp" />
@@ -185,37 +191,71 @@
<ClCompile Include="Wrapper\SteamVideo.cpp" /> <ClCompile Include="Wrapper\SteamVideo.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="dllmain.h" /> <ClInclude Include="BlitzSteam.h" />
<ClInclude Include="Helpers\Callbacks.h" /> <ClInclude Include="BlitzSteamInternal.h" />
<ClInclude Include="Helpers\CSteamID.h" /> <ClInclude Include="Helpers\BlitzPointer.h" />
<ClInclude Include="Libraries\BlitzPointer.h" /> <ClInclude Include="Helpers\Helper.h" />
<ClInclude Include="Types\BlitzCallback.h" />
<ClInclude Include="Types\CSteamID.h" />
<ClInclude Include="Types\Double.h" />
<ClInclude Include="Types\SteamMatchmakingTypes.h" />
<ClInclude Include="Types\Long.h" />
<ClInclude Include="Types\Memory.h" />
<ClInclude Include="Types\SteamTypes.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="LICENSE"> <None Include="Resources\BlitzSteam.bb" />
<Link>LICENSE</Link> <None Include="Resources\BlitzSteam.ipf" />
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <None Include="Resources\BlitzSteamUtility.bb" />
</None> <None Include="Resources\Decls\BlitzSteam.decls" />
<None Include="LICENSE.lesser"> <None Include="Resources\Decls\BlitzSteam_Callback.decls" />
<Link>LICENSE.lesser</Link> <None Include="Resources\Decls\BlitzSteam_CSteamID.decls" />
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <None Include="Resources\Decls\BlitzSteam_Double.decls" />
</None> <None Include="Resources\Decls\BlitzSteam_Long.decls" />
<None Include="Blitz\BlitzSteam.bb"> <None Include="Resources\Decls\BlitzSteam_Memory.decls" />
<Link>BlitzSteam.bb</Link> <None Include="Resources\Decls\BlitzSteam_Steam.decls" />
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <None Include="Resources\Decls\BlitzSteam_SteamAppList.decls" />
</None> <None Include="Resources\Decls\BlitzSteam_SteamApps.decls" />
<None Include="Blitz\BlitzSteamUtility.bb"> <None Include="Resources\Decls\BlitzSteam_SteamClient.decls" />
<Link>BlitzSteamUtility.bb</Link> <None Include="Resources\Decls\BlitzSteam_SteamController.decls" />
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <None Include="Resources\Decls\BlitzSteam_SteamFriends.decls" />
</None> <None Include="Resources\Decls\BlitzSteam_SteamGameServer.decls" />
<None Include="Blitz\BlitzSteam.decls"> <None Include="Resources\Decls\BlitzSteam_SteamGameServerStats.decls" />
<Link>BlitzSteam.decls</Link> <None Include="Resources\Decls\BlitzSteam_SteamHTMLSurface.decls" />
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <None Include="Resources\Decls\BlitzSteam_SteamHTTP.decls" />
</None> <None Include="Resources\Decls\BlitzSteam_SteamInventory.decls" />
<None Include="SteamworksSDK\redistributable_bin\steam_api.dll"> <None Include="Resources\Decls\BlitzSteam_SteamMatchmaking.decls" />
<Link>steam_api.dll</Link> <None Include="Resources\Decls\BlitzSteam_SteamMatchmakingServers.decls" />
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <None Include="Resources\Decls\BlitzSteam_SteamMatchmakingTypes.decls" />
</None> <None Include="Resources\Decls\BlitzSteam_SteamMusic.decls" />
<None Include="Resources\Decls\BlitzSteam_SteamMusicRemote.decls" />
<None Include="Resources\Decls\BlitzSteam_SteamNetworking.decls" />
<None Include="Resources\Decls\BlitzSteam_SteamRemoteStorage.decls" />
<None Include="Resources\Decls\BlitzSteam_SteamScreenshots.decls" />
<None Include="Resources\Decls\BlitzSteam_SteamUGC.decls" />
<None Include="Resources\Decls\BlitzSteam_SteamUnifiedMessages.decls" />
<None Include="Resources\Decls\BlitzSteam_SteamUser.decls" />
<None Include="Resources\Decls\BlitzSteam_SteamUserStats.decls" />
<None Include="Resources\Decls\BlitzSteam_SteamUtils.decls" />
<None Include="Resources\Decls\BlitzSteam_SteamVideo.decls" />
<None Include="Resources\Examples\SteamAPI_Example.bb" />
<None Include="Resources\Examples\SteamAppList_Example.bb" />
<None Include="Resources\Examples\SteamApps_Example.bb" />
<None Include="Resources\Examples\SteamController_Example.bb" />
<None Include="Resources\Examples\SteamHTMLSurface_Example.bb" />
<None Include="Resources\BlitzSteam.LICENSE" />
<None Include="Resources\BlitzSteam.LICENSE.lesser" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Text Include="Resources\Examples\steam_appid.txt" />
</ItemGroup>
<Target Name="CopyResources" BeforeTargets="Build">
<ItemGroup>
<Resources Include="$(ProjectDir)\Resources\**\*.*" />
<Resources Include="$(ProjectDir)\SteamworksSDK\redistributable_bin\steam_api.dll" />
</ItemGroup>
<Copy SourceFiles="@(Resources)" DestinationFiles="@(Resources->'$(TargetDir)%(RecursiveDir)\%(Filename)%(Extension)')" SkipUnchangedFiles="True" UseHardlinksIfPossible="True" />
</Target>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">
</ImportGroup> </ImportGroup>
+225 -46
View File
@@ -8,27 +8,33 @@
<Filter Include="Source Files\Wrapper"> <Filter Include="Source Files\Wrapper">
<UniqueIdentifier>{8f00e86e-e1bc-499e-8b2c-da93e9e8f287}</UniqueIdentifier> <UniqueIdentifier>{8f00e86e-e1bc-499e-8b2c-da93e9e8f287}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="SteamworksSDK">
<UniqueIdentifier>{14616756-e67f-4b1c-ac90-776c00a0271d}</UniqueIdentifier>
</Filter>
<Filter Include="Blitz Files">
<UniqueIdentifier>{3072c53c-2be5-4712-b853-1bc1438cdc6e}</UniqueIdentifier>
<Extensions>bb;decls;ipf</Extensions>
</Filter>
<Filter Include="Source Files\Helpers"> <Filter Include="Source Files\Helpers">
<UniqueIdentifier>{a6fc08f6-97d9-4a53-a803-34b985d9ae7c}</UniqueIdentifier> <UniqueIdentifier>{a6fc08f6-97d9-4a53-a803-34b985d9ae7c}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="Source Files\Libraries"> <Filter Include="Header Files">
<UniqueIdentifier>{74b261a6-6880-4cd8-95af-bdc05dffde9d}</UniqueIdentifier> <UniqueIdentifier>{a799678b-8efc-42a0-97b2-f3a23da99e17}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Header Files\Helpers">
<UniqueIdentifier>{6cebc940-92bb-4a55-a125-ec97956636f2}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\Types">
<UniqueIdentifier>{f9d810ff-605b-4b00-a607-4b7f1d918286}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\Types">
<UniqueIdentifier>{812e0ab3-866c-4b15-ae9d-a24d92b05c9a}</UniqueIdentifier>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{65d7146d-e626-44dd-bd9e-525ea8e9252f}</UniqueIdentifier>
</Filter>
<Filter Include="Resource Files\Examples">
<UniqueIdentifier>{65e28d96-6d00-47b5-8211-0cf2753aef67}</UniqueIdentifier>
</Filter>
<Filter Include="Resource Files\Decls">
<UniqueIdentifier>{59a50312-f52e-475b-9362-7cbb22381620}</UniqueIdentifier>
</Filter> </Filter>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="dllmain.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Wrapper\Steam.cpp">
<Filter>Source Files\Wrapper</Filter>
</ClCompile>
<ClCompile Include="Wrapper\SteamClient.cpp"> <ClCompile Include="Wrapper\SteamClient.cpp">
<Filter>Source Files\Wrapper</Filter> <Filter>Source Files\Wrapper</Filter>
</ClCompile> </ClCompile>
@@ -56,9 +62,6 @@
<ClCompile Include="Wrapper\SteamMatchmaking.cpp"> <ClCompile Include="Wrapper\SteamMatchmaking.cpp">
<Filter>Source Files\Wrapper</Filter> <Filter>Source Files\Wrapper</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="Wrapper\SteamMatchmakingServer.cpp">
<Filter>Source Files\Wrapper</Filter>
</ClCompile>
<ClCompile Include="Wrapper\SteamUserStats.cpp"> <ClCompile Include="Wrapper\SteamUserStats.cpp">
<Filter>Source Files\Wrapper</Filter> <Filter>Source Files\Wrapper</Filter>
</ClCompile> </ClCompile>
@@ -98,44 +101,220 @@
<ClCompile Include="Wrapper\SteamVideo.cpp"> <ClCompile Include="Wrapper\SteamVideo.cpp">
<Filter>Source Files\Wrapper</Filter> <Filter>Source Files\Wrapper</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="Helpers\CSteamID.cpp"> <ClCompile Include="BlitzSteam.cpp">
<Filter>Source Files\Helpers</Filter>
</ClCompile>
<ClCompile Include="Helpers\Callbacks.cpp">
<Filter>Source Files\Helpers</Filter>
</ClCompile>
<ClCompile Include="Libraries\BlitzPointer.cpp">
<Filter>Source Files\Libraries</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="dllmain.h">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClInclude> </ClCompile>
<ClInclude Include="Helpers\Callbacks.h"> <ClCompile Include="Helpers\Helper.cpp">
<Filter>Source Files\Helpers</Filter> <Filter>Source Files\Helpers</Filter>
</ClInclude> </ClCompile>
<ClInclude Include="Helpers\CSteamID.h"> <ClCompile Include="Wrapper\SteamMatchmakingServers.cpp">
<Filter>Source Files\Wrapper</Filter>
</ClCompile>
<ClCompile Include="Types\Long.cpp">
<Filter>Source Files\Types</Filter>
</ClCompile>
<ClCompile Include="Types\Double.cpp">
<Filter>Source Files\Types</Filter>
</ClCompile>
<ClCompile Include="Types\CSteamID.cpp">
<Filter>Source Files\Types</Filter>
</ClCompile>
<ClCompile Include="Wrapper\Steam.cpp">
<Filter>Source Files\Wrapper</Filter>
</ClCompile>
<ClCompile Include="Types\BlitzCallback.cpp">
<Filter>Source Files\Types</Filter>
</ClCompile>
<ClCompile Include="Types\Memory.cpp">
<Filter>Source Files\Types</Filter>
</ClCompile>
<ClCompile Include="Types\SteamMatchmakingTypes.cpp">
<Filter>Source Files\Types</Filter>
</ClCompile>
<ClCompile Include="Types\SteamTypes.cpp">
<Filter>Source Files\Types</Filter>
</ClCompile>
<ClCompile Include="Helpers\BlitzPointer.cpp">
<Filter>Source Files\Helpers</Filter> <Filter>Source Files\Helpers</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="BlitzSteam.h">
<Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="Libraries\BlitzPointer.h"> <ClInclude Include="Helpers\BlitzPointer.h">
<Filter>Source Files\Libraries</Filter> <Filter>Header Files\Helpers</Filter>
</ClInclude>
<ClInclude Include="Helpers\Helper.h">
<Filter>Header Files\Helpers</Filter>
</ClInclude>
<ClInclude Include="Types\Long.h">
<Filter>Header Files\Types</Filter>
</ClInclude>
<ClInclude Include="Types\Double.h">
<Filter>Header Files\Types</Filter>
</ClInclude>
<ClInclude Include="Types\CSteamID.h">
<Filter>Header Files\Types</Filter>
</ClInclude>
<ClInclude Include="Types\BlitzCallback.h">
<Filter>Header Files\Types</Filter>
</ClInclude>
<ClInclude Include="Types\Memory.h">
<Filter>Header Files\Types</Filter>
</ClInclude>
<ClInclude Include="BlitzSteamInternal.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Types\SteamMatchmakingTypes.h">
<Filter>Header Files\Types</Filter>
</ClInclude>
<ClInclude Include="Types\SteamTypes.h">
<Filter>Header Files\Types</Filter>
</ClInclude> </ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="SteamworksSDK\redistributable_bin\steam_api.dll"> <None Include="$(ProjectDir)\Blitz\*.*" />
<Filter>SteamworksSDK</Filter> <None Include="$(ProjectDir)\Blitz\*.*" />
<None Include="$(ProjectDir)\Blitz\*.*" />
<None Include="$(ProjectDir)\Blitz\*.*" />
<None Include="$(ProjectDir)\Blitz\**\*.*" />
<None Include="$(ProjectDir)\Blitz\**\*.*" />
<None Include="$(ProjectDir)\Blitz\**\*.*" />
<None Include="$(ProjectDir)\Blitz\**\*.*" />
<None Include="$(ProjectDir)\Blitz\**\*.*" />
<None Include="$(ProjectDir)\Blitz\**\*.*" />
<None Include="$(ProjectDir)\Blitz\**\*.*" />
<None Include="$(ProjectDir)\Blitz\**\*.*" />
<None Include="$(ProjectDir)\Blitz\**\*.*" />
<None Include="$(ProjectDir)\Blitz\**\*.*" />
<None Include="Resources\BlitzSteam.bb">
<Filter>Resource Files</Filter>
</None> </None>
<None Include="Blitz\BlitzSteam.bb"> <None Include="Resources\BlitzSteamUtility.bb">
<Filter>Blitz Files</Filter> <Filter>Resource Files</Filter>
</None> </None>
<None Include="Blitz\BlitzSteam.decls"> <None Include="Resources\BlitzSteam.ipf">
<Filter>Blitz Files</Filter> <Filter>Resource Files</Filter>
</None> </None>
<None Include="Blitz\BlitzSteamUtility.bb"> <None Include="Resources\Examples\SteamAPI_Example.bb">
<Filter>Blitz Files</Filter> <Filter>Resource Files\Examples</Filter>
</None> </None>
<None Include="LICENSE" /> <None Include="Resources\Examples\SteamAppList_Example.bb">
<None Include="LICENSE.lesser" /> <Filter>Resource Files\Examples</Filter>
</None>
<None Include="Resources\Examples\SteamApps_Example.bb">
<Filter>Resource Files\Examples</Filter>
</None>
<None Include="Resources\Examples\SteamController_Example.bb">
<Filter>Resource Files\Examples</Filter>
</None>
<None Include="Resources\Examples\SteamHTMLSurface_Example.bb">
<Filter>Resource Files\Examples</Filter>
</None>
<None Include="Resources\Decls\BlitzSteam.decls">
<Filter>Resource Files\Decls</Filter>
</None>
<None Include="Resources\Decls\BlitzSteam_CSteamID.decls">
<Filter>Resource Files\Decls</Filter>
</None>
<None Include="Resources\Decls\BlitzSteam_Double.decls">
<Filter>Resource Files\Decls</Filter>
</None>
<None Include="Resources\Decls\BlitzSteam_Long.decls">
<Filter>Resource Files\Decls</Filter>
</None>
<None Include="Resources\Decls\BlitzSteam_Memory.decls">
<Filter>Resource Files\Decls</Filter>
</None>
<None Include="Resources\Decls\BlitzSteam_Steam.decls">
<Filter>Resource Files\Decls</Filter>
</None>
<None Include="Resources\Decls\BlitzSteam_SteamAppList.decls">
<Filter>Resource Files\Decls</Filter>
</None>
<None Include="Resources\Decls\BlitzSteam_SteamApps.decls">
<Filter>Resource Files\Decls</Filter>
</None>
<None Include="Resources\Decls\BlitzSteam_SteamClient.decls">
<Filter>Resource Files\Decls</Filter>
</None>
<None Include="Resources\Decls\BlitzSteam_SteamController.decls">
<Filter>Resource Files\Decls</Filter>
</None>
<None Include="Resources\Decls\BlitzSteam_SteamFriends.decls">
<Filter>Resource Files\Decls</Filter>
</None>
<None Include="Resources\Decls\BlitzSteam_SteamGameServer.decls">
<Filter>Resource Files\Decls</Filter>
</None>
<None Include="Resources\Decls\BlitzSteam_SteamGameServerStats.decls">
<Filter>Resource Files\Decls</Filter>
</None>
<None Include="Resources\Decls\BlitzSteam_SteamHTMLSurface.decls">
<Filter>Resource Files\Decls</Filter>
</None>
<None Include="Resources\Decls\BlitzSteam_SteamHTTP.decls">
<Filter>Resource Files\Decls</Filter>
</None>
<None Include="Resources\Decls\BlitzSteam_SteamInventory.decls">
<Filter>Resource Files\Decls</Filter>
</None>
<None Include="Resources\Decls\BlitzSteam_SteamMatchmaking.decls">
<Filter>Resource Files\Decls</Filter>
</None>
<None Include="Resources\Decls\BlitzSteam_SteamMatchmakingServers.decls">
<Filter>Resource Files\Decls</Filter>
</None>
<None Include="Resources\Decls\BlitzSteam_SteamMusic.decls">
<Filter>Resource Files\Decls</Filter>
</None>
<None Include="Resources\Decls\BlitzSteam_SteamMusicRemote.decls">
<Filter>Resource Files\Decls</Filter>
</None>
<None Include="Resources\Decls\BlitzSteam_SteamNetworking.decls">
<Filter>Resource Files\Decls</Filter>
</None>
<None Include="Resources\Decls\BlitzSteam_SteamRemoteStorage.decls">
<Filter>Resource Files\Decls</Filter>
</None>
<None Include="Resources\Decls\BlitzSteam_SteamScreenshots.decls">
<Filter>Resource Files\Decls</Filter>
</None>
<None Include="Resources\Decls\BlitzSteam_SteamUGC.decls">
<Filter>Resource Files\Decls</Filter>
</None>
<None Include="Resources\Decls\BlitzSteam_SteamUnifiedMessages.decls">
<Filter>Resource Files\Decls</Filter>
</None>
<None Include="Resources\Decls\BlitzSteam_SteamUser.decls">
<Filter>Resource Files\Decls</Filter>
</None>
<None Include="Resources\Decls\BlitzSteam_SteamUserStats.decls">
<Filter>Resource Files\Decls</Filter>
</None>
<None Include="Resources\Decls\BlitzSteam_SteamUtils.decls">
<Filter>Resource Files\Decls</Filter>
</None>
<None Include="Resources\Decls\BlitzSteam_SteamVideo.decls">
<Filter>Resource Files\Decls</Filter>
</None>
<None Include="Resources\BlitzSteam.LICENSE">
<Filter>Resource Files</Filter>
</None>
<None Include="Resources\BlitzSteam.LICENSE.lesser">
<Filter>Resource Files</Filter>
</None>
<None Include="Resources\Decls\BlitzSteam_SteamMatchmakingTypes.decls">
<Filter>Resource Files\Decls</Filter>
</None>
<None Include="Resources\Decls\BlitzSteam_Callback.decls">
<Filter>Resource Files\Decls</Filter>
</None>
</ItemGroup>
<ItemGroup>
<Text Include="Resources\Examples\steam_appid.txt">
<Filter>Resource Files\Examples</Filter>
</Text>
</ItemGroup> </ItemGroup>
</Project> </Project>
+3 -3
View File
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup /> <PropertyGroup />
</Project> </Project>
+31 -38
View File
@@ -1,38 +1,31 @@
// BlitzSteam - Steam wrapper for Blitz. // BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Project Kube (Michael Fabian Dirks) // Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as // it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the // published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version. // License, or (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// //
// You should have received a copy of the GNU Lesser General Public License // You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
// STL Exceptions #pragma once
#include <exception>
#include <stdexcept> // Macros
//#define DLL_FUNCTION(type) extern "C" type __stdcall
// Memory Management #define DLL(type) extern "C" __declspec(dllexport) type __stdcall
#include <memory>
// C/C++ Includes
// Platform specific: Windows #include <math.h>
#include <windows.h> #include <stddef.h>
#include <float.h>
// Macros #include <inttypes.h>
#define DLL_EXPORT extern "C" //__declspec(dllexport)
#define DLL_CALL __stdcall // Steam
#include "SteamworksSDK/public/steam/steam_api.h"
// Steam #include "SteamworksSDK/public/steam/steam_gameserver.h"
#include "SteamworksSDK/public/steam/steam_api.h"
// Error Messages
#define ERROR_TITLE_001 TEXT("Error 001")
#define ERROR_TEXT_001 TEXT("E001: Could not load 'BlitzPointer.dll'.")
#define ERROR_TITLE_002 TEXT("Error 002")
#define ERROR_TEXT_002 TEXT("E002: Unable to find one or multiple function addresses in 'BlitzPointer.dll'.")
+52
View File
@@ -0,0 +1,52 @@
// BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "BlitzPointer.h"
DLL(intptr_t) BS_BlitzPointer_GetReturnAddress() {
intptr_t BasePointer, ReturnAddress;
__asm { //ASM. Do touch if suicidal.
mov BasePointer, ebp; // Store current BasePointer
}
// Blitz uses X86 Call-Near (E8) instructions to call its own functions.
// We can simply deduce the Return Address like this because of that.
//-- Parent_EBP = *EBP
//-- Parent_RP = Parent_EBP + 16
ReturnAddress = *(intptr_t*)((*(intptr_t*)BasePointer) + 16);
return ReturnAddress;
}
DLL(intptr_t) BS_BlitzPointer_GetFunctionPointer() {
intptr_t BasePointer, ReturnAddress, FunctionPointer;
__asm { //ASM. Do touch if suicidal.
mov BasePointer, ebp; // Store current BasePointer
}
// Blitz uses X86 Call-Near (E8) instructions to call its own functions.
// We can simply deduce the Return Address like this because of that.
//-- Parent_EBP = *EBP
//-- Parent_RP = Parent_EBP + 16
ReturnAddress = *(intptr_t*)((*(intptr_t*)BasePointer) + 16);
// And since it's a Call-Near, the call is offset to the return address.
FunctionPointer = ReturnAddress + *(intptr_t*)(ReturnAddress - 4);
return FunctionPointer;
}
+36
View File
@@ -0,0 +1,36 @@
// BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
#include "BlitzSteamInternal.h"
DLL(intptr_t) BS_BlitzPointer_GetReturnAddress();
DLL(intptr_t) BS_BlitzPointer_GetFunctionPointer();
// Types of Blitz Functions.
typedef int32_t(__stdcall *BP_BlitzFunction0_t)();
typedef int32_t(__stdcall *BP_BlitzFunction1_t)(int32_t);
typedef int32_t(__stdcall *BP_BlitzFunction2_t)(int32_t, int32_t);
typedef int32_t(__stdcall *BP_BlitzFunction3_t)(int32_t, int32_t, int32_t);
typedef int32_t(__stdcall *BP_BlitzFunction4_t)(int32_t, int32_t, int32_t, int32_t);
typedef int32_t(__stdcall *BP_BlitzFunction5_t)(int32_t, int32_t, int32_t, int32_t, int32_t);
#define BP_CallFunction0(ptr) (ptr)()
#define BP_CallFunction1(ptr, p1) (ptr)(p1)
#define BP_CallFunction2(ptr, p1, p2) (ptr)(p1, p2)
#define BP_CallFunction3(ptr, p1, p2, p3) (ptr)(p1, p2, p3)
#define BP_CallFunction4(ptr, p1, p2, p3, p4) (ptr)(p1, p2, p3, p4)
#define BP_CallFunction5(ptr, p1, p2, p3, p4, p5) (ptr)(p1, p2, p3, p4, p5)
-211
View File
@@ -1,211 +0,0 @@
// BlitzSteam - Steam wrapper for Blitz.
// Copyright (C) 2015 Project Kube (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "dllmain.h"
DLL_EXPORT CSteamID* DLL_CALL BlitzSteamCSteamID_New() {
return new CSteamID();
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_New=_BlitzSteamCSteamID_New@0")
DLL_EXPORT CSteamID* DLL_CALL BlitzSteamCSteamID_FromID(uint32_t unAccountID, EUniverse eUniverse, EAccountType eAccountType) {
return new CSteamID(unAccountID, eUniverse, eAccountType);
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_FromID=_BlitzSteamCSteamID_FromID@12")
DLL_EXPORT CSteamID* DLL_CALL BlitzSteamCSteamID_FromIDInstance(uint32_t unAccountID, uint32_t unInstance, EUniverse eUniverse, EAccountType eAccountType) {
return new CSteamID(unAccountID, unInstance, eUniverse, eAccountType);
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_FromIDInstance=_BlitzSteamCSteamID_FromIDInstance@16")
DLL_EXPORT CSteamID* DLL_CALL BlitzSteamCSteamID_FromSteamID(uint64_t* ulSteamID) {
return new CSteamID(*ulSteamID);
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_FromSteamID=_BlitzSteamCSteamID_FromSteamID@4")
DLL_EXPORT CSteamID* DLL_CALL BlitzSteamCSteamID_Copy(CSteamID* pSteamID) {
return new CSteamID(*pSteamID);
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_Copy=_BlitzSteamCSteamID_Copy@4")
DLL_EXPORT void DLL_CALL BlitzSteamCSteamID_Destroy(CSteamID* pSteamID) {
delete pSteamID;
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_Destroy=_BlitzSteamCSteamID_Destroy@4")
DLL_EXPORT void DLL_CALL BlitzSteamCSteamID_Set(CSteamID* pSteamID, uint32_t unAccountID, EUniverse eUniverse, EAccountType eAccountType) {
pSteamID->Set(unAccountID, eUniverse, eAccountType);
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_Set=_BlitzSteamCSteamID_Set@16")
DLL_EXPORT void DLL_CALL BlitzSteamCSteamID_InstancedSet(CSteamID* pSteamID, uint32_t unAccountID, uint32_t unInstance, EUniverse eUniverse, EAccountType eAccountType) {
pSteamID->InstancedSet(unAccountID, unInstance, eUniverse, eAccountType);
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_InstancedSet=_BlitzSteamCSteamID_InstancedSet@20")
DLL_EXPORT void DLL_CALL BlitzSteamCSteamID_FullSet(CSteamID* pSteamID, uint64_t* ulIdentifier, EUniverse eUniverse, EAccountType eAccountType) {
pSteamID->FullSet(*ulIdentifier, eUniverse, eAccountType);
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_FullSet=_BlitzSteamCSteamID_FullSet@16")
DLL_EXPORT void DLL_CALL BlitzSteamCSteamID_SetFromUInt64(CSteamID* pSteamID, uint64_t* ulSteamID) {
pSteamID->SetFromUint64(*ulSteamID);
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_SetFromUInt64=_BlitzSteamCSteamID_SetFromUInt64@8")
DLL_EXPORT void DLL_CALL BlitzSteamCSteamID_Clear(CSteamID* pSteamID) {
pSteamID->Clear();
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_Clear=_BlitzSteamCSteamID_Clear@4")
DLL_EXPORT uint64_t* DLL_CALL BlitzSteamCSteamID_ConvertToUInt64(CSteamID* pSteamID) {
uint64_t* val = new uint64_t;
*val = pSteamID->ConvertToUint64();
return val;
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_ConvertToUInt64=_BlitzSteamCSteamID_ConvertToUInt64@4")
DLL_EXPORT uint64_t* DLL_CALL BlitzSteamCSteamID_GetStaticAccountKey(CSteamID* pSteamID) {
uint64_t* val = new uint64_t;
*val = pSteamID->GetStaticAccountKey();
return val;
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_GetStaticAccountKey=_BlitzSteamCSteamID_GetStaticAccountKey@4")
DLL_EXPORT void DLL_CALL BlitzSteamCSteamID_CreateBlankAnonLogon(CSteamID* pSteamID, EUniverse eUniverse) {
pSteamID->CreateBlankAnonLogon(eUniverse);
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_CreateBlankAnonLogon=_BlitzSteamCSteamID_CreateBlankAnonLogon@8")
DLL_EXPORT void DLL_CALL BlitzSteamCSteamID_CreateBlankAnonUserLogon(CSteamID* pSteamID, EUniverse eUniverse) {
pSteamID->CreateBlankAnonUserLogon(eUniverse);
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_CreateBlankAnonUserLogon=_BlitzSteamCSteamID_CreateBlankAnonUserLogon@8")
DLL_EXPORT uint32_t DLL_CALL BlitzSteamCSteamID_BlankAnonAccount(CSteamID* pSteamID) {
return pSteamID->BBlankAnonAccount();
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_BlankAnonAccount=_BlitzSteamCSteamID_BlankAnonAccount@4")
DLL_EXPORT uint32_t DLL_CALL BlitzSteamCSteamID_GameServerAccount(CSteamID* pSteamID) {
return pSteamID->BGameServerAccount();
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_GameServerAccount=_BlitzSteamCSteamID_GameServerAccount@4")
DLL_EXPORT uint32_t DLL_CALL BlitzSteamCSteamID_PersistentGameServerAccount(CSteamID* pSteamID) {
return pSteamID->BPersistentGameServerAccount();
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_PersistentGameServerAccount=_BlitzSteamCSteamID_PersistentGameServerAccount@4")
DLL_EXPORT uint32_t DLL_CALL BlitzSteamCSteamID_AnonGameServerAccount(CSteamID* pSteamID) {
return pSteamID->BAnonGameServerAccount();
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_AnonGameServerAccount=_BlitzSteamCSteamID_AnonGameServerAccount@4")
DLL_EXPORT uint32_t DLL_CALL BlitzSteamCSteamID_ContentServerAccount(CSteamID* pSteamID) {
return pSteamID->BContentServerAccount();
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_ContentServerAccount=_BlitzSteamCSteamID_ContentServerAccount@4")
DLL_EXPORT uint32_t DLL_CALL BlitzSteamCSteamID_ClanAccount(CSteamID* pSteamID) {
return pSteamID->BClanAccount();
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_ClanAccount=_BlitzSteamCSteamID_ClanAccount@4")
DLL_EXPORT uint32_t DLL_CALL BlitzSteamCSteamID_ChatAccount(CSteamID* pSteamID) {
return pSteamID->BChatAccount();
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_ChatAccount=_BlitzSteamCSteamID_ChatAccount@4")
DLL_EXPORT uint32_t DLL_CALL BlitzSteamCSteamID_IsLobby(CSteamID* pSteamID) {
return pSteamID->IsLobby();
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_IsLobby=_BlitzSteamCSteamID_IsLobby@4")
DLL_EXPORT uint32_t DLL_CALL BlitzSteamCSteamID_IndividualAccount(CSteamID* pSteamID) {
return pSteamID->BIndividualAccount();
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_IndividualAccount=_BlitzSteamCSteamID_IndividualAccount@4")
DLL_EXPORT uint32_t DLL_CALL BlitzSteamCSteamID_AnonAccount(CSteamID* pSteamID) {
return pSteamID->BAnonAccount();
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_AnonAccount=_BlitzSteamCSteamID_AnonAccount@4")
DLL_EXPORT uint32_t DLL_CALL BlitzSteamCSteamID_AnonUserAccount(CSteamID* pSteamID) {
return pSteamID->BAnonUserAccount();
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_AnonUserAccount=_BlitzSteamCSteamID_AnonUserAccount@4")
DLL_EXPORT uint32_t DLL_CALL BlitzSteamCSteamID_ConsoleUserAccount(CSteamID* pSteamID) {
return pSteamID->BConsoleUserAccount();
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_ConsoleUserAccount=_BlitzSteamCSteamID_ConsoleUserAccount@4")
DLL_EXPORT void DLL_CALL BlitzSteamCSteamID_SetAccountID(CSteamID* pSteamID, AccountID_t unAccountID) {
pSteamID->SetAccountID(unAccountID);
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_SetAccountID=_BlitzSteamCSteamID_SetAccountID@8")
DLL_EXPORT void DLL_CALL BlitzSteamCSteamID_SetAccountInstance(CSteamID* pSteamID, uint32_t unInstance) {
pSteamID->SetAccountInstance(unInstance);
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_SetAccountInstance=_BlitzSteamCSteamID_SetAccountInstance@8")
DLL_EXPORT void DLL_CALL BlitzSteamCSteamID_ClearIndividualInstance(CSteamID* pSteamID) {
pSteamID->ClearIndividualInstance();
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_ClearIndividualInstance=_BlitzSteamCSteamID_ClearIndividualInstance@4")
DLL_EXPORT uint32_t DLL_CALL BlitzSteamCSteamID_HasNoIndividualInstance(CSteamID* pSteamID) {
return pSteamID->HasNoIndividualInstance();
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_HasNoIndividualInstance=_BlitzSteamCSteamID_HasNoIndividualInstance@4")
DLL_EXPORT AccountID_t DLL_CALL BlitzSteamCSteamID_GetAccountID(CSteamID* pSteamID) {
return pSteamID->GetAccountID();
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_GetAccountID=_BlitzSteamCSteamID_GetAccountID@4")
DLL_EXPORT uint32_t DLL_CALL BlitzSteamCSteamID_GetAccountInstance(CSteamID* pSteamID) {
return pSteamID->GetUnAccountInstance();
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_GetAccountInstance=_BlitzSteamCSteamID_GetAccountInstance@4")
DLL_EXPORT EAccountType DLL_CALL BlitzSteamCSteamID_GetEAccountType(CSteamID* pSteamID) {
return pSteamID->GetEAccountType();
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_GetEAccountType=_BlitzSteamCSteamID_GetEAccountType@4")
DLL_EXPORT EUniverse DLL_CALL BlitzSteamCSteamID_GetEUniverse(CSteamID* pSteamID) {
return pSteamID->GetEUniverse();
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_GetEUniverse=_BlitzSteamCSteamID_GetEUniverse@4")
DLL_EXPORT void DLL_CALL BlitzSteamCSteamID_SetEUniverse(CSteamID* pSteamID, EUniverse eUniverse) {
pSteamID->SetEUniverse(eUniverse);
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_SetEUniverse=_BlitzSteamCSteamID_SetEUniverse@8")
DLL_EXPORT uint32_t DLL_CALL BlitzSteamCSteamID_IsValid(CSteamID* pSteamID) {
return pSteamID->IsValid();
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_IsValid=_BlitzSteamCSteamID_IsValid@4")
DLL_EXPORT uint32_t DLL_CALL BlitzSteamCSteamID_Compare(CSteamID* pSteamID, CSteamID* pSteamIDOther) {
return (pSteamID == pSteamIDOther ? 1 : 0) + (pSteamID < pSteamIDOther ? 2 : 0) + (pSteamID > pSteamIDOther ? 4 : 0);
}
#pragma comment(linker, "/EXPORT:BlitzSteamCSteamID_Compare=_BlitzSteamCSteamID_Compare@8")
-56
View File
@@ -1,56 +0,0 @@
// BlitzSteam - Steam wrapper for Blitz.
// Copyright (C) 2015 Project Kube (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "dllmain.h"
DLL_EXPORT CSteamID* DLL_CALL BlitzSteamCSteamID_New();
DLL_EXPORT CSteamID* DLL_CALL BlitzSteamCSteamID_FromID(uint32_t unAccountID, EUniverse eUniverse, EAccountType eAccountType);
DLL_EXPORT CSteamID* DLL_CALL BlitzSteamCSteamID_FromIDInstance(uint32_t unAccountID, uint32_t unInstance, EUniverse eUniverse, EAccountType eAccountType);
DLL_EXPORT CSteamID* DLL_CALL BlitzSteamCSteamID_FromSteamID(uint64_t* ulSteamID);
DLL_EXPORT CSteamID* DLL_CALL BlitzSteamCSteamID_Copy(CSteamID* pSteamID);
DLL_EXPORT void DLL_CALL BlitzSteamCSteamID_Destroy(CSteamID* pSteamID);
DLL_EXPORT void DLL_CALL BlitzSteamCSteamID_Set(CSteamID* pSteamID, uint32_t unAccountID, EUniverse eUniverse, EAccountType eAccountType);
DLL_EXPORT void DLL_CALL BlitzSteamCSteamID_InstancedSet(CSteamID* pSteamID, uint32_t unAccountID, uint32_t unInstance, EUniverse eUniverse, EAccountType eAccountType);
DLL_EXPORT void DLL_CALL BlitzSteamCSteamID_FullSet(CSteamID* pSteamID, uint64_t* ulIdentifier, EUniverse eUniverse, EAccountType eAccountType);
DLL_EXPORT void DLL_CALL BlitzSteamCSteamID_SetFromUInt64(CSteamID* pSteamID, uint64_t* ulSteamID);
DLL_EXPORT void DLL_CALL BlitzSteamCSteamID_Clear(CSteamID* pSteamID);
DLL_EXPORT uint64_t* DLL_CALL BlitzSteamCSteamID_ConvertToUInt64(CSteamID* pSteamID);
DLL_EXPORT uint64_t* DLL_CALL BlitzSteamCSteamID_GetStaticAccountKey(CSteamID* pSteamID);
DLL_EXPORT void DLL_CALL BlitzSteamCSteamID_CreateBlankAnonLogon(CSteamID* pSteamID, EUniverse eUniverse);
DLL_EXPORT void DLL_CALL BlitzSteamCSteamID_CreateBlankAnonUserLogon(CSteamID* pSteamID, EUniverse eUniverse);
DLL_EXPORT uint32_t DLL_CALL BlitzSteamCSteamID_BlankAnonAccount(CSteamID* pSteamID);
DLL_EXPORT uint32_t DLL_CALL BlitzSteamCSteamID_GameServerAccount(CSteamID* pSteamID);
DLL_EXPORT uint32_t DLL_CALL BlitzSteamCSteamID_PersistentGameServerAccount(CSteamID* pSteamID);
DLL_EXPORT uint32_t DLL_CALL BlitzSteamCSteamID_AnonGameServerAccount(CSteamID* pSteamID);
DLL_EXPORT uint32_t DLL_CALL BlitzSteamCSteamID_ContentServerAccount(CSteamID* pSteamID);
DLL_EXPORT uint32_t DLL_CALL BlitzSteamCSteamID_ClanAccount(CSteamID* pSteamID);
DLL_EXPORT uint32_t DLL_CALL BlitzSteamCSteamID_ChatAccount(CSteamID* pSteamID);
DLL_EXPORT uint32_t DLL_CALL BlitzSteamCSteamID_IsLobby(CSteamID* pSteamID);
DLL_EXPORT uint32_t DLL_CALL BlitzSteamCSteamID_IndividualAccount(CSteamID* pSteamID);
DLL_EXPORT uint32_t DLL_CALL BlitzSteamCSteamID_AnonAccount(CSteamID* pSteamID);
DLL_EXPORT uint32_t DLL_CALL BlitzSteamCSteamID_AnonUserAccount(CSteamID* pSteamID);
DLL_EXPORT uint32_t DLL_CALL BlitzSteamCSteamID_ConsoleUserAccount(CSteamID* pSteamID);
DLL_EXPORT void DLL_CALL BlitzSteamCSteamID_SetAccountID(CSteamID* pSteamID, AccountID_t unAccountID);
DLL_EXPORT void DLL_CALL BlitzSteamCSteamID_SetAccountInstance(CSteamID* pSteamID, uint32_t unInstance);
DLL_EXPORT void DLL_CALL BlitzSteamCSteamID_ClearIndividualInstance(CSteamID* pSteamID);
DLL_EXPORT uint32_t DLL_CALL BlitzSteamCSteamID_HasNoIndividualInstance(CSteamID* pSteamID);
DLL_EXPORT AccountID_t DLL_CALL BlitzSteamCSteamID_GetAccountID(CSteamID* pSteamID);
DLL_EXPORT uint32_t DLL_CALL BlitzSteamCSteamID_GetAccountInstance(CSteamID* pSteamID);
DLL_EXPORT EAccountType DLL_CALL BlitzSteamCSteamID_GetEAccountType(CSteamID* pSteamID);
DLL_EXPORT EUniverse DLL_CALL BlitzSteamCSteamID_GetEUniverse(CSteamID* pSteamID);
DLL_EXPORT void DLL_CALL BlitzSteamCSteamID_SetEUniverse(CSteamID* pSteamID, EUniverse eUniverse);
DLL_EXPORT uint32_t DLL_CALL BlitzSteamCSteamID_IsValid(CSteamID* pSteamID);
DLL_EXPORT uint32_t DLL_CALL BlitzSteamCSteamID_Compare(CSteamID* pSteamID, CSteamID* pSteamIDOther);
-62
View File
@@ -1,62 +0,0 @@
// BlitzSteam - Steam wrapper for Blitz.
// Copyright (C) 2015 Project Kube (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "dllmain.h"
#include "Libraries/BlitzPointer.h"
#include <time.h>
// Callbacks
class BlitzSteamCallback : CCallbackBase {
public:
uint32_t blitzFunctionPointer;
virtual void Run(void *pvParam) {
BlitzPointer_CallFunction4((uint32_t)blitzFunctionPointer, (uint32_t)pvParam, 0, 0, 0);
}
virtual void Run(void *pvParam, bool bIOFailure, SteamAPICall_t hSteamAPICall) {
BlitzPointer_CallFunction4((uint32_t)blitzFunctionPointer, (uint32_t)pvParam, bIOFailure, (uint32_t)(hSteamAPICall & 0xFFFFFFFF), (uint32_t)(hSteamAPICall >> 32));
}
virtual int GetCallbackSizeBytes() {
return sizeof(BlitzSteamCallback);
}
};
DLL_EXPORT void* DLL_CALL BlitzSteamHelper_CreateCallback(uint32_t fpFunctionPointer) {
BlitzSteamCallback* lpBSCallback = new BlitzSteamCallback();
lpBSCallback->blitzFunctionPointer = fpFunctionPointer;
return lpBSCallback;
}
#pragma comment(linker, "/EXPORT:BlitzSteamHelper_CreateCallback=_BlitzSteamHelper_CreateCallback@4")
DLL_EXPORT void DLL_CALL BlitzSteamHelper_DestroyCallback(uint32_t lpCallback) {
BlitzSteamCallback* lpBSCallback = (BlitzSteamCallback*)lpCallback;
if (lpBSCallback != nullptr) {
delete lpBSCallback;
}
}
#pragma comment(linker, "/EXPORT:BlitzSteamHelper_DestroyCallback=_BlitzSteamHelper_DestroyCallback@4")
DLL_EXPORT const char* DLL_CALL BlitzSteamHelper_FormatUnixTime(uint32_t unTime, const char* pchFormat) {
char* output = new char[strlen(pchFormat) * 4];
time_t t = unTime;
struct tm *tm = localtime(&t);
strftime(output, sizeof(output), pchFormat, tm);
delete tm;
return output;
}
#pragma comment(linker, "/EXPORT:BlitzSteamHelper_FormatUnixTime=_BlitzSteamHelper_FormatUnixTime@8")
View File
+60
View File
@@ -0,0 +1,60 @@
// BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "Helper.h"
DLL(const char*) BS_Helper_FormatUnixTime(uint32_t unTime, const char* pchFormat) {
char* output = new char[strlen(pchFormat) * 4];
time_t t = unTime;
struct tm *tm = localtime(&t);
strftime(output, sizeof(output), pchFormat, tm);
delete tm;
return output;
}
DLL(void) BS_Helper_CopyMemoryIntMangle(void* pSource, void* pDest, int32_t iMangling,
uint32_t iSourceW, uint32_t iSourceH, uint32_t iDestW, uint32_t iDestH,
uint32_t iAreaX, uint32_t iAreaY, uint32_t iAreaW, uint32_t iAreaH) {
int8_t iMangleByte0 = static_cast<int8_t>((iMangling & 0xFF));
int8_t iMangleByte1 = static_cast<int8_t>((iMangling & 0xFF00) >> 8);
int8_t iMangleByte2 = static_cast<int8_t>((iMangling & 0xFF0000) >> 16);
int8_t iMangleByte3 = static_cast<int8_t>((iMangling & 0xFF000000) >> 24);
// Start at beginning
for (uint32_t iY = iAreaY; iY < (iAreaY + iAreaH); iY++) {
// Only do this once per loop
for (uint32_t iX = iAreaX; iX < (iAreaX + iAreaW); iX++) {
// Could technically optimize the following into single instructions, but this is fast enough for now.
uint32_t* pSourceOff = reinterpret_cast<uint32_t*>(pSource) + ((iSourceW * iY) + iX);
uint32_t* pDestOff = reinterpret_cast<uint32_t*>(pDest) + ((iDestW * iY) + iX);
// Allow Mangling using just a single integer and checking on the fly if it's positive or negative to branch out to the correct shift.
*pDestOff =
(iMangleByte0 > 0 ?
(*pSourceOff & 0xFF) >> iMangleByte0 :
(*pSourceOff & 0xFF) << -iMangleByte0)
+ (iMangleByte1 > 0 ?
(*pSourceOff & 0xFF00) >> iMangleByte1 :
(*pSourceOff & 0xFF00) << -iMangleByte1)
+ (iMangleByte2 > 0 ?
(*pSourceOff & 0xFF0000) >> iMangleByte2 :
(*pSourceOff & 0xFF0000) << -iMangleByte2)
+ (iMangleByte3 > 0 ?
(*pSourceOff & 0xFF000000) >> iMangleByte3 :
(*pSourceOff & 0xFF000000) << -iMangleByte3);
}
}
}
+21
View File
@@ -0,0 +1,21 @@
// BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
#include "BlitzSteam.h"
#include <time.h>
DLL(const char*) BS_Helper_FormatUnixTime(uint32_t unTime, const char* pchFormat);
-46
View File
@@ -1,46 +0,0 @@
// BlitzSteam - Steam wrapper for Blitz.
// Copyright (C) 2015 Project Kube (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
#include "BlitzPointer.h"
BlitzPointer_CallFunction0_t BlitzPointer_CallFunction0 = 0;
BlitzPointer_CallFunction1_t BlitzPointer_CallFunction1 = 0;
BlitzPointer_CallFunction2_t BlitzPointer_CallFunction2 = 0;
BlitzPointer_CallFunction3_t BlitzPointer_CallFunction3 = 0;
BlitzPointer_CallFunction4_t BlitzPointer_CallFunction4 = 0;
HMODULE hmBlitzPointerDLL;
void BlitzPointer_Initialize() {
hmBlitzPointerDLL = LoadLibrary(TEXT("BlitzPointer.dll"));
if (hmBlitzPointerDLL != nullptr) {
BlitzPointer_CallFunction0 = (BlitzPointer_CallFunction0_t)GetProcAddress(hmBlitzPointerDLL, "BlitzPointer_CallFunction0");
BlitzPointer_CallFunction1 = (BlitzPointer_CallFunction1_t)GetProcAddress(hmBlitzPointerDLL, "BlitzPointer_CallFunction1");
BlitzPointer_CallFunction2 = (BlitzPointer_CallFunction2_t)GetProcAddress(hmBlitzPointerDLL, "BlitzPointer_CallFunction2");
BlitzPointer_CallFunction3 = (BlitzPointer_CallFunction3_t)GetProcAddress(hmBlitzPointerDLL, "BlitzPointer_CallFunction3");
BlitzPointer_CallFunction4 = (BlitzPointer_CallFunction4_t)GetProcAddress(hmBlitzPointerDLL, "BlitzPointer_CallFunction4");
if (BlitzPointer_CallFunction0 == nullptr
|| BlitzPointer_CallFunction1 == nullptr
|| BlitzPointer_CallFunction2 == nullptr
|| BlitzPointer_CallFunction3 == nullptr
|| BlitzPointer_CallFunction4 == nullptr) {
MessageBox(0, ERROR_TEXT_001, ERROR_TITLE_001, 0);
}
} else {
MessageBox(0, ERROR_TEXT_001, ERROR_TITLE_001, 0);
}
}
-31
View File
@@ -1,31 +0,0 @@
// BlitzSteam - Steam wrapper for Blitz.
// Copyright (C) 2015 Project Kube (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "dllmain.h"
typedef uint32_t(__stdcall *BlitzPointer_CallFunction0_t)(uint32_t);
typedef uint32_t(__stdcall *BlitzPointer_CallFunction1_t)(uint32_t, uint32_t);
typedef uint32_t(__stdcall *BlitzPointer_CallFunction2_t)(uint32_t, uint32_t, uint32_t);
typedef uint32_t(__stdcall *BlitzPointer_CallFunction3_t)(uint32_t, uint32_t, uint32_t, uint32_t);
typedef uint32_t(__stdcall *BlitzPointer_CallFunction4_t)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t);
extern BlitzPointer_CallFunction0_t BlitzPointer_CallFunction0;
extern BlitzPointer_CallFunction1_t BlitzPointer_CallFunction1;
extern BlitzPointer_CallFunction2_t BlitzPointer_CallFunction2;
extern BlitzPointer_CallFunction3_t BlitzPointer_CallFunction3;
extern BlitzPointer_CallFunction4_t BlitzPointer_CallFunction4;
void BlitzPointer_Initialize();
+41
View File
@@ -0,0 +1,41 @@
# BlitzSteam - Steam wrapper for Blitz
## Wrapped APIs
* Steam: v1.36
* SteamAppList: v1.36
* SteamApps: v1.36
* SteamClient: v1.36
* SteamController: v1.36
* SteamFriends: v1.36
* SteamGameServer: v1.36
* SteamGameServerStats: v1.36
* SteamHTMLSurface: v1.36
* SteamHTTP: v1.36
* SteamInventory: v1.36
* SteamMatchmaking: v1.36
* SteamMatchmakingServers: v1.36
* SteamMusic: -
* SteamMusicRemote: -
* SteamNetworking: v1.36
* SteamRemoteStorage: -
* SteamScreenshots: -
* SteamUGC: -
* SteamUnifiedMessages: -
* SteamUser: v1.36
* SteamUserStats: v1.36
* SteamUtils: -
* SteamVideo: -
# Helping Out
Install the Steamworks SDK to 'SteamworksSDK/' and then it should compile.
# License
Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
@@ -1,165 +1,165 @@
GNU LESSER GENERAL PUBLIC LICENSE GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007 Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed. of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below. License, supplemented by the additional permissions listed below.
0. Additional Definitions. 0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License. General Public License.
"The Library" refers to a covered work governed by this License, "The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below. other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library. by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library. of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked with which the Combined Work was made is also called the "Linked
Version". Version".
The "Minimal Corresponding Source" for a Combined Work means the The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version. based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work. Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL. 1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL. without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions. 2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified facility is invoked), then you may convey a copy of the modified
version: version:
a) under this License, provided that you make a good faith effort to a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy. this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files. 3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following: (ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are Library is used in it and that the Library and its use are
covered by this License. covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license b) Accompany the object code with a copy of the GNU GPL and this license
document. document.
4. Combined Works. 4. Combined Works.
You may convey a Combined Work under terms of your choice that, You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of engineering for debugging such modifications, if you also do each of
the following: the following:
a) Give prominent notice with each copy of the Combined Work that a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are the Library is used in it and that the Library and its use are
covered by this License. covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license b) Accompany the Combined Work with a copy of the GNU GPL and this license
document. document.
c) For a Combined Work that displays copyright notices during c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document. copies of the GNU GPL and this license document.
d) Do one of the following: d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this 0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying manner specified by section 6 of the GNU GPL for conveying
Corresponding Source. Corresponding Source.
1) Use a suitable shared library mechanism for linking with the 1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked of the Library that is interface-compatible with the Linked
Version. Version.
e) Provide Installation Information, but only if you would otherwise e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.) for conveying Corresponding Source.)
5. Combined Libraries. 5. Combined Libraries.
You may place library facilities that are a work based on the You may place library facilities that are a work based on the
Library side by side in a single library together with other library Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your License, and convey such a combined library under terms of your
choice, if you do both of the following: choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities, on the Library, uncombined with any other library facilities,
conveyed under the terms of this License. conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work. accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License. 6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns. differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version" of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and applies to it, you have the option of following the terms and
conditions either of that published version or of any later version conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation. General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the permanent authorization for you to choose that version for the
Library. Library.
File diff suppressed because it is too large Load Diff
+22
View File
@@ -0,0 +1,22 @@
[IDEal Project file]
<Settings>
Version="1"
Expanded="True"
Icon=""
MainFile="SteamHTMLSurface_Example.bb"
Compiler="Blitz3D"
CommandLine=""
</Settings>
<Folders>
AbsPath="\Examples" Expanded="True"
</Folders>
<Files>
AbsPath="\BlitzSteam.bb" PrjFolder="" Line="0" Column="0" Tip="0" Visible="False"
AbsPath="\BlitzSteamUtility.bb" PrjFolder="" Line="0" Column="0" Tip="0" Visible="False"
AbsPath="\Examples\SteamAPI_Example.bb" PrjFolder="\Examples" Line="0" Column="0" Tip="0" Visible="False"
AbsPath="\Examples\SteamAppList_Example.bb" PrjFolder="\Examples" Line="0" Column="0" Tip="0" Visible="False"
AbsPath="\Examples\SteamApps_Example.bb" PrjFolder="\Examples" Line="0" Column="0" Tip="0" Visible="False"
AbsPath="\Examples\SteamController_Example.bb" PrjFolder="\Examples" Line="0" Column="0" Tip="0" Visible="False"
AbsPath="\Examples\SteamHTMLSurface_Example.bb" PrjFolder="\Examples" Line="0" Column="0" Tip="0" Visible="False"
AbsPath="\Examples\SteamMatchmakingServers_Example.bb" PrjFolder="\Examples" Line="0" Column="0" Tip="0" Visible="False"
</Files>
@@ -1,204 +1,149 @@
; BlitzSteam - Steam wrapper for Blitz. ; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Project Kube (Michael Fabian Dirks) ; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
; ;
; This program is free software: you can redistribute it and/or modify ; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as ; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the ; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version. ; License, or (at your option) any later version.
; ;
; This program is distributed in the hope that it will be useful, ; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of ; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details. ; GNU General Public License for more details.
; ;
; You should have received a copy of the GNU Lesser General Public License ; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http:;www.gnu.org/licenses/>. ; along with this program. If not, see <http:;www.gnu.org/licenses/>.
;---------------------------------------------------------------- ;------------------------------------------------------------------------------
; -- Constants ;! Constants
;---------------------------------------------------------------- ;------------------------------------------------------------------------------
Const BSU_NAME_LENGTH = 4096 Const BSU_NAME_LENGTH = 4096
Const BSU_INSTALLDIR_LENGTH = 4096 Const BSU_INSTALLDIR_LENGTH = 4096
Const BSU_APPID_COUNT = 4096 Const BSU_APPID_COUNT = 4096
Const BSU_INSTALLEDDEPOTS_COUNT = 4096 Const BSU_INSTALLEDDEPOTS_COUNT = 4096
;---------------------------------------------------------------- ;------------------------------------------------------------------------------
; -- Globals ;! Globals
;---------------------------------------------------------------- ;------------------------------------------------------------------------------
Global BSUInitialized = False Global BSU_Initialized = False
Global BSUIsSteamRunning% = False Global BSU_IsSteamRunning% = False
; -- Interfaces ; -- Interfaces
Global BSUAppList%, BSUApps%, BSUClient%, BSUController% Global BSU_AppList%
Global BSUFriends%, BSUHTTP%, BSUHTMLSurface%, BSUInventory% Global BSU_Apps%
Global BSUMatchmaking%, BSUMatchmakingServers%, BSUMusic% Global BSU_Client%
Global BSUMusicRemote%, BSUNetworking%, BSURemoteStorage% Global BSU_Controller%
Global BSUScreenshots%, BSUUGC%, BSUUnifiedMessages%, BSUUser% Global BSU_Friends%
Global BSUUserStats%, BSUUtils%, BSUVideo% Global BSU_GameServer%
Global BSU_GameServerStats%
Global BSU_HTMLSurface%
Global BSU_HTTP%
Global BSU_Inventory%
Global BSU_Matchmaking%
Global BSU_MatchmakingServers%
Global BSU_Music%
Global BSU_MusicRemote%
Global BSU_Networking%
Global BSU_RemoteStorage%
Global BSU_Screenshots%
Global BSU_UGC%
Global BSU_UnifiedMessages%
Global BSU_User%
Global BSU_UserStats%
Global BSU_Utils%
Global BSU_Video%
;---------------------------------------------------------------- ;[Block] API: Steam
; -- Types ;------------------------------------------------------------------------------
;---------------------------------------------------------------- ;! API: Steam
;------------------------------------------------------------------------------
Function BSU_Init()
BSU_IsSteamRunning = BS_Steam_IsSteamRunning()
If BSU_IsSteamRunning And BS_Steam_Init() Then
BSU_AppList = BS_AppList()
BSU_Apps = BS_Apps()
BSU_Client = BS_Client()
BSU_Controller = BS_Controller()
BSU_Friends = BS_Friends()
BSU_GameServer = BS_GameServer()
BSU_GameServerStats = BS_GameServerStats()
BSU_HTMLSurface = BS_HTMLSurface()
BSU_HTTP = BS_HTTP()
BSU_Inventory = BS_Inventory()
BSU_Matchmaking = BS_Matchmaking()
BSU_MatchmakingServers = BS_MatchmakingServers()
BSU_Music = BS_Music()
BSU_MusicRemote = BS_MusicRemote()
BSU_Networking = BS_Networking()
BSU_RemoteStorage = BS_RemoteStorage()
BSU_Screenshots = BS_Screenshots()
BSU_UGC = BS_UGC()
BSU_UnifiedMessages = BS_UnifiedMessages()
BSU_User = BS_User()
BSU_UserStats = BS_ISteamUserStats()
BSU_Utils = BS_Utils()
BSU_Video = BS_Video()
BSU_Initialized = True
EndIf
End Function
Function BSU_Shutdown()
If BSU_IsSteamRunning
BS_GameServer_Shutdown()
BS_Steam_Shutdown()
BSU_AppList=0
BSU_Apps=0
BSU_Client=0
BSU_Controller=0
BSU_Friends=0
BSU_GameServer=0
BSU_GameServerStats=0
BSU_HTTP=0
BSU_HTMLSurface=0
BSU_Matchmaking=0
BSU_MatchmakingServers=0
BSU_Music=0
BSU_MusicRemote=0
BSU_Networking=0
BSU_RemoteStorage=0
BSU_Screenshots=0
BSU_UGC=0
BSU_UnifiedMessages=0
BSU_User=0
BSU_UserStats=0
BSU_Utils=0
BSU_Video=0
BSU_Initialized = False
EndIf
End Function
;[End Block]
;[Block] API: AppList
;------------------------------------------------------------------------------
;! API: AppList
;------------------------------------------------------------------------------
Type BSU_App Type BSU_App
Field AppId% Field AppId%
Field Name$ Field Name$
Field InstallDir$ Field InstallDir$
End Type End Type
Global BSU_AppCount = 0
Type BSU_DLC Function BSU_AppList_GetInstalledApps(BankAppIdsStorage=0, BankAppNameStorage=0, BankAppInstallDirStorage=0)
Field AppId%
Field Available%
Field Name$
End Type
Type BSU_Depot
Field DepotId%
End Type
Type BSU_Friend
Field SteamID_L, SteamID_R
Field Name$
Field NickName$
Field Index%
Field Relationship%
Field State%
Field SteamLevel%
End Type
;----------------------------------------------------------------
; -- Globals
;----------------------------------------------------------------
Global BSU_AppCount
Global BSU_DLCCount
Global BSU_DepotCount
Global BSU_FriendCount
;----------------------------------------------------------------
; -- Functions
;----------------------------------------------------------------
; -- Utility
; Writes a C-String value to a Bank.
; Returns amount of bytes written.
Function BSU_PokeCString%(Bank%, Pos%, Value$)
If Bank Then
Local BankSz = BankSize(Bank)
If Pos < 0 Then Pos = 0
If Pos >= BankSz Then Pos = BankSz - 1
Local ValuePos, ValueLen = Len(Value)
For ValuePos = 1 To ValueLen
; Don't write over the edge, we still need space for the 0-byte
If (Pos + ValuePos) >= (BankSz - 1) Then Exit
PokeByte Bank, Pos + ValuePos, Asc(Mid(Value, ValuePos, 1))
Next
PokeByte Bank, Pos + ValuePos, 0
Return ValuePos
EndIf
End Function
; Reads a C-String value from a Bank.
; Returns read C-String
Function BSU_PeekCString$(Bank%, Pos%)
If Bank Then
Local BankSz = BankSize(Bank)
If Pos < 0 Then Pos = 0
If Pos >= BankSz Then Pos = BankSz - 1
Local OutStr$, OutLen = (BankSz - Pos)
Local BankPos
For BankPos = 0 To OutLen
If (Pos + BankPos) >= BankSz Then Exit
Local Value = PeekByte(Bank, Pos + BankPos)
If Value = 0 Then
Exit
Else
OutStr=OutStr+Chr(Value)
EndIf
Next
Return OutStr
EndIf
End Function
; -- Steam
Function BSU_Init()
BSUIsSteamRunning = BlitzSteam_IsSteamRunning()
If BSUIsSteamRunning Then
BlitzSteam_Init()
BSUAppList = BlitzSteamAppList()
BSUApps = BlitzSteamApps()
BSUClient = BlitzSteamClient()
BSUController = BlitzSteamController()
BSUFriends = BlitzSteamFriends()
BSUHTTP = BlitzSteamHTTP()
BSUHTMLSurface = BlitzSteamHTMLSurface()
BSUInventory = BlitzSteamInventory()
BSUMatchmaking = BlitzSteamMatchmaking()
BSUMatchmakingServers = BlitzSteamMatchmakingServers()
BSUMusic = BlitzSteamMusic()
BSUMusicRemote = BlitzSteamMusicRemote()
BSUNetworking = BlitzSteamNetworking()
BSURemoteStorage = BlitzSteamRemoteStorage()
BSUScreenshots = BlitzSteamScreenshots()
BSUUGC = BlitzSteamUGC()
BSUUnifiedMessages = BlitzSteamUnifiedMessages()
BSUUser = BlitzSteamUser()
BSUUserStats = BlitzSteamUserStats()
BSUUtils = BlitzSteamUtils()
BSUVideo = BlitzSteamVideo()
BSUInitialized = True
EndIf
End Function
Function BSU_Shutdown()
If BSUIsSteamRunning
BlitzSteam_Shutdown()
BSUAppList=0
BSUApps=0
BSUClient=0
BSUController=0
BSUFriends=0
BSUHTTP=0
BSUHTMLSurface=0
BSUInitialized=0
BSUMatchmaking=0
BSUMatchmakingServers=0
BSUMusic=0
BSUMusicRemote=0
BSUNetworking=0
BSURemoteStorage=0
BSUScreenshots=0
BSUUGC=0
BSUUnifiedMessages=0
BSUUser=0
BSUUserStats=0
BSUUtils=0
BSUVideo=0
BSUInitialized = False
EndIf
End Function
; -- SteamAppList
Function BSUAppList_GetInstalledApps(BankAppIdsStorage=0, BankAppNameStorage=0, BankAppInstallDirStorage=0)
Local BankAppIds, BankAppIdsSz = BSU_APPID_COUNT Local BankAppIds, BankAppIdsSz = BSU_APPID_COUNT
Local BankAppName, BankAppNameSz = BSU_NAME_LENGTH Local BankAppName, BankAppNameSz = BSU_NAME_LENGTH
Local BankAppInstallDir, BankAppInstallDirSz = BSU_INSTALLDIR_LENGTH Local BankAppInstallDir, BankAppInstallDirSz = BSU_INSTALLDIR_LENGTH
Local AppCount%, InstalledApp.BSU_App Local AppCount%, InstalledApp.BSU_App
If BSUInitialized Then If BSU_Initialized Then
; Clear Installed App List ; Clear Installed App List
Delete Each BSU_App Delete Each BSU_App
; Early-Exit to not waste time. ; Early-Exit to not waste time.
If BlitzSteamAppList_GetNumInstalledApps(BSUApps) = 0 Then Return If BS_AppList_GetNumInstalledApps(BSU_Apps) = 0 Then Return
If BankAppIdsStorage = 0 If BankAppIdsStorage = 0
; Create Temporary storage for AppIds. ; Create Temporary storage for AppIds.
@@ -210,7 +155,7 @@ Function BSUAppList_GetInstalledApps(BankAppIdsStorage=0, BankAppNameStorage=0,
EndIf EndIf
; Request installed apps from Steam. ; Request installed apps from Steam.
BSU_AppCount = BlitzSteamAppList_GetInstalledApps(BSUAppList, BankAppIds, BankAppIdsSz) BSU_AppCount = BS_AppList_GetInstalledApps(BSU_AppList, BankAppIds, BankAppIdsSz)
; We don't need to do this if we don't actually have any apps returned. ; We don't need to do this if we don't actually have any apps returned.
If BSU_AppCount > 0 Then If BSU_AppCount > 0 Then
@@ -234,25 +179,25 @@ Function BSUAppList_GetInstalledApps(BankAppIdsStorage=0, BankAppNameStorage=0,
For AppIndex = 0 To BSU_AppCount - 1 For AppIndex = 0 To BSU_AppCount - 1
InstalledApp.BSU_App = New BSU_App InstalledApp.BSU_App = New BSU_App
InstalledApp\AppId = PeekInt(BankAppIds, AppIndex * 4) InstalledApp\AppId = PeekInt(BankAppIds, AppIndex * 4)
InstalledApp\Name = BSUAppList_GetAppName(InstalledApp\AppId, BankAppName) InstalledApp\Name = BSU_AppList_GetAppName(InstalledApp\AppId, BankAppName)
InstalledApp\InstallDir = BSUAppList_GetInstallDir(InstalledApp\AppId, BankAppInstallDir) InstalledApp\InstallDir = BSU_AppList_GetInstallDir(InstalledApp\AppId, BankAppInstallDir)
Next Next
; Free temporary storage for name and installdir. ; Free temporary storage for name and installdir.
If BankAppInstallDirStorage = 0 Then FreeBank BankAppInstallDir If BankAppInstallDirStorage = 0 Then FreeBank BankAppInstallDir
If BankAppNameStorage = 0 FreeBank BankAppName If BankAppNameStorage = 0 Then FreeBank BankAppName
EndIf EndIf
; Free temporary storage for AppIds. ; Free temporary storage for AppIds.
If BankAppIdsStorage = 0 FreeBank BankAppIds If BankAppIdsStorage = 0 Then FreeBank BankAppIds
EndIf EndIf
End Function End Function
Function BSUAppList_GetAppName$(AppID%, BankStorage=0) Function BSU_AppList_GetAppName$(AppID%, BankStorage=0)
Local Bank, BankSz = BSU_NAME_LENGTH Local Bank, BankSz = BSU_NAME_LENGTH
Local AppName$ Local AppName$
If BSUInitialized Then If BSU_Initialized Then
If BankStorage = 0 Then If BankStorage = 0 Then
; Create temporary storage. ; Create temporary storage.
Bank = CreateBank(BankSz) Bank = CreateBank(BankSz)
@@ -263,7 +208,7 @@ Function BSUAppList_GetAppName$(AppID%, BankStorage=0)
EndIf EndIf
; Request App name from Steam. ; Request App name from Steam.
BlitzSteamAppList_GetAppName(BSUAppList, AppID, Bank, BankSz) BS_AppList_GetAppName(BSU_AppList, AppID, Bank, BankSz)
; Read returned C-String from Bank. ; Read returned C-String from Bank.
AppName$ = BSU_PeekCString(Bank, 0) AppName$ = BSU_PeekCString(Bank, 0)
@@ -276,11 +221,11 @@ Function BSUAppList_GetAppName$(AppID%, BankStorage=0)
Return AppName Return AppName
End Function End Function
Function BSUAppList_GetInstallDir$(AppID%, BankStorage=0) Function BSU_AppList_GetInstallDir$(AppID%, BankStorage=0)
Local Bank, BankSz = BSU_INSTALLDIR_LENGTH Local Bank, BankSz = BSU_INSTALLDIR_LENGTH
Local AppInstallDir$ Local AppInstallDir$
If BSUInitialized Then If BSU_Initialized Then
If BankStorage = 0 Then If BankStorage = 0 Then
; Create temporary storage. ; Create temporary storage.
Bank = CreateBank(BankSz) Bank = CreateBank(BankSz)
@@ -291,7 +236,7 @@ Function BSUAppList_GetInstallDir$(AppID%, BankStorage=0)
EndIf EndIf
; Request App name from Steam. ; Request App name from Steam.
BlitzSteamAppList_GetAppInstallDir(BSUAppList, AppID, Bank, BankSz) BS_AppList_GetAppInstallDir(BSU_AppList, AppID, Bank, BankSz)
; Read returned C-String from Bank. ; Read returned C-String from Bank.
AppInstallDir$ = BSU_PeekCString(Bank, 0) AppInstallDir$ = BSU_PeekCString(Bank, 0)
@@ -303,17 +248,33 @@ Function BSUAppList_GetInstallDir$(AppID%, BankStorage=0)
; Return name read. ; Return name read.
Return AppInstallDir Return AppInstallDir
End Function End Function
;[End Block]
; -- SteamApps ;[Block] API: Apps
Function BSUApps_GetDLCData(BankAppIdStorage=0, BankAvailableStorage=0, BankNameStorage=0) ;------------------------------------------------------------------------------
;! API: Apps
;------------------------------------------------------------------------------
Type BSU_DLC
Field AppId%
Field Available%
Field Name$
End Type
Global BSU_DLCCount
Type BSU_Depot
Field DepotId%
End Type
Global BSU_DepotCount
Function BSU_Apps_GetDLCData(BankAppIdStorage=0, BankAvailableStorage=0, BankNameStorage=0)
Local BankAppId%, BankAvailable% Local BankAppId%, BankAvailable%
Local BankName%, BankNameSz% = BSU_NAME_LENGTH Local BankName%, BankNameSz% = BSU_NAME_LENGTH
Local DLCCount% = 0 Local DLCCount% = 0
If BSUInitialized Then If BSU_Initialized Then
Delete Each BSU_DLC Delete Each BSU_DLC
BSU_DLCCount = BlitzSteamApps_GetDLCCount(BSUApps) BSU_DLCCount = BS_Apps_GetDLCCount(BSU_Apps)
If BSU_DLCCount > 0 If BSU_DLCCount > 0
If BankAppIdStorage = 0 Then If BankAppIdStorage = 0 Then
; Create temporary storage for AppId. ; Create temporary storage for AppId.
@@ -342,7 +303,7 @@ Function BSUApps_GetDLCData(BankAppIdStorage=0, BankAvailableStorage=0, BankName
Local DLCIndex% Local DLCIndex%
For DLCIndex = 0 To BSU_DLCCount - 1 For DLCIndex = 0 To BSU_DLCCount - 1
BSUApps_GetDLCDataByIndex(DLCIndex, BankAppId, BankAvailable, BankName) BSU_Apps_GetDLCDataByIndex(DLCIndex, BankAppId, BankAvailable, BankName)
Next Next
; Free temporary storages. ; Free temporary storages.
@@ -353,12 +314,12 @@ Function BSUApps_GetDLCData(BankAppIdStorage=0, BankAvailableStorage=0, BankName
EndIf EndIf
End Function End Function
Function BSUApps_GetDLCDataByIndex.BSU_DLC(iDLC%, BankAppIdStorage=0, BankAvailableStorage=0, BankNameStorage=0) Function BSU_Apps_GetDLCDataByIndex.BSU_DLC(iDLC%, BankAppIdStorage=0, BankAvailableStorage=0, BankNameStorage=0)
Local BankAppId%, BankAvailable% Local BankAppId%, BankAvailable%
Local BankName%, BankNameSz% = BSU_NAME_LENGTH Local BankName%, BankNameSz% = BSU_NAME_LENGTH
Local DLC.BSU_DLC Local DLC.BSU_DLC
If BSUInitialized Then If BSU_Initialized Then
If BankAppIdStorage = 0 Then If BankAppIdStorage = 0 Then
; Create temporary storage for AppId. ; Create temporary storage for AppId.
BankAppId = CreateBank(4) BankAppId = CreateBank(4)
@@ -385,7 +346,7 @@ Function BSUApps_GetDLCDataByIndex.BSU_DLC(iDLC%, BankAppIdStorage=0, BankAvaila
EndIf EndIf
; Request DLC Data from Steam. ; Request DLC Data from Steam.
If BlitzSteamApps_GetDLCDataByIndex(BSUApps, iDLC, BankAppId, BankAvailable, BankName, BankNameSz) If BS_Apps_GetDLCDataByIndex(BSU_Apps, iDLC, BankAppId, BankAvailable, BankName, BankNameSz)
; Create a result DLC object. ; Create a result DLC object.
DLC.BSU_DLC = New BSU_DLC DLC.BSU_DLC = New BSU_DLC
DLC\AppId = PeekInt(BankAppId, 0) DLC\AppId = PeekInt(BankAppId, 0)
@@ -403,11 +364,11 @@ Function BSUApps_GetDLCDataByIndex.BSU_DLC(iDLC%, BankAppIdStorage=0, BankAvaila
Return DLC Return DLC
End Function End Function
Function BSUApps_GetCurrentBetaName$(BankNameStorage=0) Function BSU_Apps_GetCurrentBetaName$(BankNameStorage=0)
Local BankName, BankNameSz = BSU_NAME_LENGTH Local BankName, BankNameSz = BSU_NAME_LENGTH
Local BetaName$ = "" Local BetaName$ = ""
If BSUInitialized Then If BSU_Initialized Then
If BankNameStorage = 0 Then If BankNameStorage = 0 Then
; Create temporary storage for name. ; Create temporary storage for name.
BankName = CreateBank(BankNameSz) BankName = CreateBank(BankNameSz)
@@ -418,7 +379,7 @@ Function BSUApps_GetCurrentBetaName$(BankNameStorage=0)
EndIf EndIf
; Request beta name from Steam. ; Request beta name from Steam.
BlitzSteamApps_GetCurrentBetaName(BSUApps, BankName, BankNameSz) BS_Apps_GetCurrentBetaName(BSU_Apps, BankName, BankNameSz)
; Read returned name. ; Read returned name.
BetaName = BSU_PeekCString(BankName, 0) BetaName = BSU_PeekCString(BankName, 0)
@@ -431,11 +392,11 @@ Function BSUApps_GetCurrentBetaName$(BankNameStorage=0)
Return BetaName Return BetaName
End Function End Function
Function BSUApps_GetInstalledDepots(nAppID%, BankDepotStorage=0) Function BSU_Apps_GetInstalledDepots(nAppID%, BankDepotStorage=0)
Local BankDepot, BankDepotSz = BSU_INSTALLEDDEPOTS_COUNT Local BankDepot, BankDepotSz = BSU_INSTALLEDDEPOTS_COUNT
Local DepotCount Local DepotCount
If BSUInitialized Then If BSU_Initialized Then
Delete Each BSU_Depot Delete Each BSU_Depot
If BankDepotStorage = 0 Then If BankDepotStorage = 0 Then
@@ -448,7 +409,7 @@ Function BSUApps_GetInstalledDepots(nAppID%, BankDepotStorage=0)
EndIf EndIf
; Request depots from Steam. ; Request depots from Steam.
BSU_DepotCount = BlitzSteamApps_GetInstalledDepots(BSUApps, nAppID, BankDepot, BankDepotSz) BSU_DepotCount = BS_Apps_GetInstalledDepots(BSU_Apps, nAppID, BankDepot, BankDepotSz)
; Read returned depots into objects. ; Read returned depots into objects.
Local DepotIndex Local DepotIndex
@@ -462,11 +423,11 @@ Function BSUApps_GetInstalledDepots(nAppID%, BankDepotStorage=0)
EndIf EndIf
End Function End Function
Function BSUApps_GetAppInstallDir$(nAppID%, BankInstallDirStorage=0) Function BSU_Apps_GetAppInstallDir$(nAppID%, BankInstallDirStorage=0)
Local BankInstallDir, BankInstallDirSz = BSU_INSTALLDIR_LENGTH Local BankInstallDir, BankInstallDirSz = BSU_INSTALLDIR_LENGTH
Local InstallDir$ Local InstallDir$
If BSUInitialized Then If BSU_Initialized Then
If BankInstallDirStorage = 0 Then If BankInstallDirStorage = 0 Then
; Create temporary storage. ; Create temporary storage.
BankInstallDir = CreateBank(BankInstallDirSz) BankInstallDir = CreateBank(BankInstallDirSz)
@@ -477,7 +438,7 @@ Function BSUApps_GetAppInstallDir$(nAppID%, BankInstallDirStorage=0)
EndIf EndIf
; Request install dir from Steam. ; Request install dir from Steam.
Local InstallDirLen% = BlitzSteamApps_GetAppInstallDir(BSUApps, nAppID, BankInstallDir, BankInstallDirSz) Local InstallDirLen% = BS_Apps_GetAppInstallDir(BSU_Apps, nAppID, BankInstallDir, BankInstallDirSz)
; Read returned value. ; Read returned value.
InstallDir = BSU_PeekCString(BankInstallDir, 0) InstallDir = BSU_PeekCString(BankInstallDir, 0)
@@ -489,68 +450,179 @@ Function BSUApps_GetAppInstallDir$(nAppID%, BankInstallDirStorage=0)
Return InstallDir$ Return InstallDir$
End Function End Function
Function BSUApps_GetDLCDownloadProgress#(nAppID%) Function BSU_Apps_GetDLCDownloadProgress#(nAppID%)
Local Progress# = 1.0 Local Progress# = 1.0
If BSUInitialized If BSU_Initialized
; Create temporary storage. ; Create temporary storage.
Local i64_Downloaded, i64_Total Local i64_Downloaded, i64_Total
i64_Downloaded = BlitzSteamInt64_New() i64_Downloaded = BU_LongLong_Create()
i64_Total = BlitzSteamInt64_New() i64_Total = BU_LongLong_Create()
; Request download progress from Steam. ; Request download progress from Steam.
If BlitzSteamApps_GetDlcDownloadProgressEx(BSUApps, nAppID, i64_Downloaded, i64_Total) Then If BS_Apps_GetDlcDownloadProgressEx(BSU_Apps, nAppID, i64_Downloaded, i64_Total) Then
Local dDownloaded, dTotal Local dDownloaded, dTotal
dDownloaded = BlitzSteamInt64_ToDouble(i64_Downloaded) dDownloaded = BU_LongLong_ToDouble(i64_Downloaded)
dTotal = BlitzSteamInt64_ToDouble(i64_Total) dTotal = BU_LongLong_ToDouble(i64_Total)
BlitzSteamDouble_DivP dDownloaded, dTotal BU_Double_Div(dDownloaded, dTotal)
Progress = BlitzSteamDouble_ToFloat(dDownloaded) Progress = BU_Double_ToFloat(dDownloaded)
BlitzSteamDouble_Destroy dDownloaded BU_Double_Destroy dDownloaded
BlitzSteamDouble_Destroy dTotal BU_Double_Destroy dTotal
EndIf EndIf
; Free temporary storage. ; Free temporary storage.
BlitzSteamInt64_Destroy i64_Downloaded BU_LongLong_Destroy i64_Downloaded
BlitzSteamInt64_Destroy i64_Total BU_LongLong_Destroy i64_Total
EndIf EndIf
Return Progress Return Progress
End Function End Function
;[End Block]
; -- SteamFriends ;[Block] API: Apps
Function BSUFriends_GetFriends(iFriendFlags=BLITZSTEAM_EFriendFlags_All) ;------------------------------------------------------------------------------
If BSUInitialized Then ;! API: Friends
;------------------------------------------------------------------------------
Type BSU_Friend
Field SteamID_L, SteamID_R
Field Name$
Field NickName$
Field Index%
Field Relationship%
Field State%
Field SteamLevel%
End Type
Global BSU_FriendCount
Function BSU_Friends_GetFriends(iFriendFlags = BS_EFriendFlags_All)
If BSU_Initialized Then
Delete Each BSU_Friend Delete Each BSU_Friend
BSU_FriendCount = BlitzSteamFriends_GetFriendCount(BSUFriends, iFriendFlags) BSU_FriendCount = BS_Friends_GetFriendCount(BSU_Friends, iFriendFlags)
If BSU_FriendCount > 0 Then If BSU_FriendCount > 0 Then
Local FriendIndex Local FriendIndex
For FriendIndex = 0 To BSU_FriendCount - 1 For FriendIndex = 0 To BSU_FriendCount - 1
Local CSteamID = BlitzSteamFriends_GetFriendByIndex(BSUFriends, FriendIndex, iFriendFlags) Local CSteamID = BS_Friends_GetFriendByIndex(BSU_Friends, FriendIndex, iFriendFlags)
Local Friend.BSU_Friend = New BSU_Friend Local Friend.BSU_Friend = New BSU_Friend
; Store a 'native' version of the SteamID ; Store a 'native' version of the SteamID
Local SteamID64 = BlitzSteamCSteamID_ConvertToUInt64(CSteamID) Local SteamID64 = BS_CSteamID_ConvertToUInt64(CSteamID)
Friend\SteamID_L = BlitzSteamInt64_ValueL(SteamID64) Friend\SteamID_L = BU_LongLong_ToLongHigh(SteamID64)
Friend\SteamID_R = BlitzSteamInt64_ValueR(SteamID64) Friend\SteamID_R = BU_LongLong_ToLongLow(SteamID64)
BlitzSteamInt64_Destroy(SteamID64) BU_LongLong_Destroy(SteamID64)
; Names ; Names
Friend\Name = BlitzSteamFriends_GetFriendPersonaName(BSUFriends, CSteamID) Friend\Name = BS_Friends_GetFriendPersonaName(BSU_Friends, CSteamID)
Friend\NickName = BlitzSteamFriends_GetPlayerNickname(BSUFriends, CSteamID) Friend\NickName = BS_Friends_GetPlayerNickname(BSU_Friends, CSteamID)
; Other Stuff ; Other Stuff
Friend\Index = FriendIndex Friend\Index = FriendIndex
Friend\Relationship = BlitzSteamFriends_GetFriendRelationship(BSUFriends, CSteamID) Friend\Relationship = BS_Friends_GetFriendRelationship(BSU_Friends, CSteamID)
Friend\State = BlitzSteamFriends_GetFriendPersonaState(BSUFriends, CSteamID) Friend\State = BS_Friends_GetFriendPersonaState(BSU_Friends, CSteamID)
Friend\SteamLevel = BlitzSteamFriends_GetFriendSteamLevel(BSUFriends, CSteamID) Friend\SteamLevel = BS_Friends_GetFriendSteamLevel(BSU_Friends, CSteamID)
BlitzSteamCSteamID_Destroy(CSteamID) BS_CSteamID_Destroy(CSteamID)
Next Next
EndIf EndIf
EndIf EndIf
End Function End Function
;[Block] API: GameServer
;------------------------------------------------------------------------------
;! API: GameServer
;------------------------------------------------------------------------------
Function BSU_GameServer_Init(IPv4%=0, Port%=27015, SteamPort%=27016, QueryPort=27017, ServerMode=BS_EServerMode_AuthenticationAndSecure, Version$="1.0.0.0")
If BS_SteamGameServer_Init(IPv4, SteamPort, Port, QueryPort, ServerMode, Version) Then
BSU_GameServer = BS_GameServer()
BSU_GameServerStats = BS_GameServerStats()
BSU_HTTP = BS_GameServerHTTP()
BSU_Inventory = BS_GameServerInventory()
BSU_Networking = BS_GameServerNetworking()
BSU_UGC = BS_GameServerUGC()
BSU_Utils = BS_GameServerUtils()
BSU_Initialized = True
EndIf
End Function
Function BSU_GameServer_Shutdown()
If BSU_Initialized = True
BS_SteamGameServer_Shutdown()
BSU_GameServer=0
BSU_GameServerStats=0
BSU_HTTP=0
BSU_Inventory=0
BSU_Networking=0
BSU_UGC=0
BSU_Utils=0
BSU_Initialized = False
EndIf
End Function
;[End Block]
;------------------------------------------------------------------------------
;! API: GameServerStats
;------------------------------------------------------------------------------
;[Block] Blitz Stuff
;----------------------------------------------------------------
;! Blitz Stuff
;----------------------------------------------------------------
; -- Utility
; Writes a C-String value to a Bank.
; Returns amount of bytes written.
Function BSU_PokeCString%(Bank%, Pos%, Value$)
If Bank Then
Local BankSz = BankSize(Bank)
If Pos < 0 Then Pos = 0
If Pos >= BankSz Then Pos = BankSz - 1
Local ValuePos, ValueLen = Len(Value)
For ValuePos = 1 To ValueLen
; Don't write over the edge, we still need space for the 0-byte
If (Pos + ValuePos) >= (BankSz - 1) Then Exit
PokeByte Bank, Pos + ValuePos, Asc(Mid(Value, ValuePos, 1))
Next
PokeByte Bank, Pos + ValuePos, 0
Return ValuePos
EndIf
End Function
; Reads a C-String value from a Bank.
; Returns read C-String
Function BSU_PeekCString$(Bank%, Pos%, Len%=-1)
If Bank Then
Local BankSz = BankSize(Bank)
If Pos < 0 Then Pos = 0
If Pos >= BankSz Then Pos = BankSz - 1
Local OutStr$, OutLen = (BankSz - Pos)
Local BankPos
For BankPos = 0 To OutLen
If (Pos + BankPos) >= BankSz Then Exit
Local Value = PeekByte(Bank, Pos + BankPos)
If (Value = 0 And Len = -1) Or (Pos > Len) Then
Exit
Else
OutStr=OutStr+Chr(Value)
EndIf
Next
Return OutStr
EndIf
End Function
;[End Block]
;~IDEal Editor Parameters: ;~IDEal Editor Parameters:
;~F#52#67#80#9F#BD#FA#116#133#163#195#1B1#1D0#1EB ;~F#3A#5A#7F#86#C3#DF#100#107#10C#13C#16E#18A#1A9#1C4
;~C#Blitz3D ;~C#Blitz3D
+23
View File
@@ -0,0 +1,23 @@
; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http:;www.gnu.org/licenses/>.
.lib "BlitzSteam.dll"
; Generic ---------------------------------------------------------------------
BS_Helper_FormatUnixTime$(unixTime%, pchFormat$) :"_BS_Helper_FormatUnixTime@8"
BS_Helper_CopyMemoryIntMangle(pSource%, pDest%, iMangling%, iSourceW%, iSourceH%, iDestW%, iDestH%, iAreaX%, iAreaY%, iAreaW%, iAreaH%):"_BS_Helper_CopyMemoryIntMangle@44"
BS_BlitzPointer_GetReturnAddress%() :"_BS_BlitzPointer_GetReturnAddress@0"
BS_BlitzPointer_GetFunctionPointer%() :"_BS_BlitzPointer_GetFunctionPointer@0"
@@ -0,0 +1,33 @@
; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http:;www.gnu.org/licenses/>.
.lib "BlitzSteam.dll"
; BlitzCallback ---------------------------------------------------------------
BS_Callback_New%(pFunction%) :"_BS_Callback_New@4"
BS_Callback_Destroy(pThis%) :"_BS_Callback_Destroy@4"
BS_Callback_GetCallbackSizeBytes%(pThis%) :"_BS_Callback_GetCallbackSizeBytes@4"
BS_Callback_SetCallback(pThis%, iCallback%) :"_BS_Callback_SetCallback@8"
BS_Callback_GetCallback%(pThis%) :"_BS_Callback_GetCallback@4"
BS_Callback_SetFunction(pThis%, pFunction%) :"_BS_Callback_SetFunction@8"
BS_Callback_GetFunction%(pThis%) :"_BS_Callback_GetFunction@4"
BS_Callback_SetRegistered(pThis%, bIsRegistered%) :"_BS_Callback_SetRegistered@8"
BS_Callback_IsRegistered%(pThis%) :"_BS_Callback_IsRegistered@4"
BS_Callback_SetGameServer(pThis%, bIsGameServer%) :"_BS_Callback_SetGameServer@8"
BS_Callback_IsGameServer%(pThis%) :"_BS_Callback_IsGameServer@4"
BS_Callback_Register(pThis%, iCallback%) :"_BS_Callback_Register@8"
BS_Callback_Unregister(pThis%) :"_BS_Callback_Unregister@4"
BS_Callback_RegisterResult(pThis%, lSteamAPICall%, iCallback%) :"_BS_Callback_RegisterResult@12"
BS_Callback_UnregisterResult(pThis%) :"_BS_Callback_UnregisterResult@4"
+55
View File
@@ -0,0 +1,55 @@
; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http:;www.gnu.org/licenses/>.
.lib "BlitzSteam.dll"
; CSteamID --------------------------------------------------------------------
BS_CSteamID_New%() :"_BS_CSteamID_New@0"
BS_CSteamID_Copy%(pThis%) :"_BS_CSteamID_Copy@4"
BS_CSteamID_Destroy(pThis%) :"_BS_CSteamID_Destroy@4"
BS_CSteamID_New_IdUniverseType%(iAccountId%, EUniverse%, EAccountType%) :"_BS_CSteamID_New_IdUniverseType@12"
BS_CSteamID_New_IdInstanceUniverseType%(iAccountId%, iInstance%, EUniverse%, EAccountType%):"_BS_CSteamID_New_IdInstanceUniverseType@16"
BS_CSteamID_FromL%(pOther%) :"_BS_CSteamID_FromL@4"
BS_CSteamID_ToL%(pThis%) :"_BS_CSteamID_ToL@4"
BS_CSteamID_Set(pThis%, iAccountId%, EUniverse%, EAccountType%) :"_BS_CSteamID_Set@16"
BS_CSteamID_InstancedSet(pThis%, iAccountId%, iInstance%, EUniverse%, EAccountType%):"_BS_CSteamID_InstancedSet@20"
BS_CSteamID_FullSet(pThis%, plIdentifier%, EUniverse%, EAccountType%) :"_BS_CSteamID_FullSet@16"
BS_CSteamID_SetFromLong(pthis%, plSteamID%) :"_BS_CSteamID_SetFromLong@8"
BS_CSteamID_Clear(pThis%) :"_BS_CSteamID_Clear@4"
BS_CSteamID_GetStaticAccountKey%(pThis%) :"_BS_CSteamID_GetStaticAccountKey@4"
BS_CSteamID_CreateBlankAnonLogon(pThis%, EUniverse%) :"_BS_CSteamID_CreateBlankAnonLogon@8"
BS_CSteamID_CreateBlankAnonUserLogon(pThis%, EUniverse%) :"_BS_CSteamID_CreateBlankAnonUserLogon@8"
BS_CSteamID_IsBlankAnonAccount%(pThis%) :"_BS_CSteamID_IsBlankAnonAccount@4"
BS_CSteamID_IsGameServerAccount%(pThis%) :"_BS_CSteamID_IsGameServerAccount@4"
BS_CSteamID_IsPersistentGameServerAccount%(pThis%) :"_BS_CSteamID_IsPersistentGameServerAccount@4"
BS_CSteamID_IsAnonGameServerAccount%(pThis%) :"_BS_CSteamID_IsAnonGameServerAccount@4"
BS_CSteamID_IsContentServerAccount%(pThis%) :"_BS_CSteamID_IsContentServerAccount@4"
BS_CSteamID_IsClanAccount%(pThis%) :"_BS_CSteamID_IsClanAccount@4"
BS_CSteamID_IsChatAccount%(pThis%) :"_BS_CSteamID_IsChatAccount@4"
BS_CSteamID_IsLobby%(pThis%) :"_BS_CSteamID_IsLobby@4"
BS_CSteamID_IsIndividualAccount%(pThis%) :"_BS_CSteamID_IsIndividualAccount@4"
BS_CSteamID_IsAnonAccount%(pThis%) :"_BS_CSteamID_IsAnonAccount@4"
BS_CSteamID_IsAnonUserAccount%(pThis%) :"_BS_CSteamID_IsAnonUserAccount@4"
BS_CSteamID_IsConsoleUserAccount%(pThis%) :"_BS_CSteamID_IsConsoleUserAccount@4"
BS_CSteamID_SetAccountID(pThis%, iAccountId%) :"_BS_CSteamID_SetAccountID@8"
BS_CSteamID_GetAccountID%(pThis%) :"_BS_CSteamID_GetAccountID@4"
BS_CSteamID_SetAccountInstance(pThis%, iInstance%) :"_BS_CSteamID_SetAccountInstance@8"
BS_CSteamID_ClearIndividualInstance(pThis%) :"_BS_CSteamID_ClearIndividualInstance@4"
BS_CSteamID_HasNoIndividualInstance%(pThis%) :"_BS_CSteamID_HasNoIndividualInstance@4"
BS_CSteamID_GetAccountInstance%(pThis%) :"_BS_CSteamID_GetAccountInstance@4"
BS_CSteamID_GetEAccountType%(pThis%) :"_BS_CSteamID_GetEAccountType@4"
BS_CSteamID_SetEUniverse%(pThis%, EUniverse%) :"_BS_CSteamID_SetEUniverse@8"
BS_CSteamID_GetEUniverse%(pThis%) :"_BS_CSteamID_GetEUniverse@4"
BS_CSteamID_Compare%(pThis%, pOther%) :"_BS_CSteamID_Compare@8"
+42
View File
@@ -0,0 +1,42 @@
; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; aDouble with this program. If not, see <http:;www.gnu.org/licenses/>.
.lib "BlitzSteam.dll"
; Double ------------------------------------------------------------------------
BS_Double_New%() :"_BS_Double_New@0"
BS_Double_Copy%(pThis%) :"_BS_Double_Copy@4"
BS_Double_Destroy(pThis%) :"_BS_Double_Destroy@4"
BS_Double_ToString$(pThis%) :"_BS_Double_ToString@4"
BS_Double_FromString%(cString$) :"_BS_Double_FromString@4"
BS_Double_FromF%(Float#) :"_BS_Double_FromF@4"
BS_Double_ToF#(pThis%) :"_BS_Double_ToF@4"
BS_Double_FromI%(iRight%) :"_BS_Double_FromI@4"
BS_Double_ToI%(pThis%) :"_BS_Double_ToI@8"
BS_Double_FromL(pDouble%) :"_BS_Double_FromL@4"
BS_Double_ToL(pThis%) :"_BS_Double_ToL@4"
BS_Double_Compare%(pThis%, pOther%) :"_BS_Double_Compare@8"
BS_Double_Set%(pThis%, pOther%) :"_BS_Double_Set@8"
BS_Double_Add%(pThis%, pOther%) :"_BS_Double_Add@8"
BS_Double_Sub%(pThis%, pOther%) :"_BS_Double_Sub@8"
BS_Double_Div%(pThis%, pOther%) :"_BS_Double_Div@8"
BS_Double_Mul%(pThis%, pOther%) :"_BS_Double_Mul@8"
BS_Double_Mod%(pThis%, pOther%) :"_BS_Double_Mod@8"
BS_Double_SetF%(pThis%, fOther%) :"_BS_Double_SetF@8"
BS_Double_AddF%(pThis%, fOther%) :"_BS_Double_AddF@8"
BS_Double_SubF%(pThis%, fOther%) :"_BS_Double_SubF@8"
BS_Double_DivF%(pThis%, fOther%) :"_BS_Double_DivF@8"
BS_Double_MulF%(pThis%, fOther%) :"_BS_Double_MulF@8"
BS_Double_ModF%(pThis%, fOther%) :"_BS_Double_ModF@8"
+52
View File
@@ -0,0 +1,52 @@
; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http:;www.gnu.org/licenses/>.
.lib "BlitzSteam.dll"
; Long ------------------------------------------------------------------------
BS_Long_New%() :"_BS_Long_New@0"
BS_Long_Copy%(pThis%) :"_BS_Long_Copy@4"
BS_Long_Destroy(pThis%) :"_BS_Long_Destroy@4"
BS_Long_ToString$(pThis%) :"_BS_Long_ToString@4"
BS_Long_FromString%(cString$) :"_BS_Long_FromString@4"
BS_Long_FromI%(iRight%) :"_BS_Long_FromI@4"
BS_Long_FromII%(iLeft%, iRight%) :"_BS_Long_FromII@8"
BS_Long_ToI%(pThis%, iShift%) :"_BS_Long_ToI@8"
BS_Long_ToIH%(pThis%) :"_BS_Long_ToIH@4"
BS_Long_ToIL%(pThis%) :"_BS_Long_ToIL@4"
BS_Long_FromF%(Float#) :"_BS_Long_FromF@4"
BS_Long_ToF#(pThis%) :"_BS_Long_ToF@4"
BS_Long_FromD(pDouble%) :"_BS_Long_FromD@4"
BS_Long_ToD(pThis%) :"_BS_Long_ToD@4"
BS_Long_Compare%(pThis%, pRight%) :"_BS_Long_Compare@8"
BS_Long_Set%(pThis%, pOther%) :"_BS_Long_Set@8"
BS_Long_Add%(pThis%, pOther%) :"_BS_Long_Add@8"
BS_Long_Sub%(pThis%, pOther%) :"_BS_Long_Sub@8"
BS_Long_Div%(pThis%, pOther%) :"_BS_Long_Div@8"
BS_Long_Mul%(pThis%, pOther%) :"_BS_Long_Mul@8"
BS_Long_Mod%(pThis%, pOther%) :"_BS_Long_Mod@8"
BS_Long_SetI%(pThis%, iRight%) :"_BS_Long_SetI@8"
BS_Long_AddI%(pThis%, iRight%) :"_BS_Long_AddI@8"
BS_Long_SubI%(pThis%, iRight%) :"_BS_Long_SubI@8"
BS_Long_DivI%(pThis%, iRight%) :"_BS_Long_DivI@8"
BS_Long_MulI%(pThis%, iRight%) :"_BS_Long_MulI@8"
BS_Long_ModI%(pThis%, iRight%) :"_BS_Long_ModI@8"
BS_Long_SetII%(pThis%, iLeft%, iRight%) :"_BS_Long_SetII@12"
BS_Long_AddII%(pThis%, iLeft%, iRight%) :"_BS_Long_AddII@12"
BS_Long_SubII%(pThis%, iLeft%, iRight%) :"_BS_Long_SubII@12"
BS_Long_DivII%(pThis%, iLeft%, iRight%) :"_BS_Long_DivII@12"
BS_Long_MulII%(pThis%, iLeft%, iRight%) :"_BS_Long_MulII@12"
BS_Long_ModII%(pThis%, iLeft%, iRight%) :"_BS_Long_ModII@12"
BS_Long_Shift%(pThis%, iRight%) :"_BS_Long_Shift@8"
+33
View File
@@ -0,0 +1,33 @@
; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http:;www.gnu.org/licenses/>.
.lib "BlitzSteam.dll"
; Memory ----------------------------------------------------------------------
BS_Memory_Alloc%(iSize%) :"_BS_Memory_Alloc@4"
BS_Memory_ReAlloc%(pMemory%, iSize%) :"_BS_Memory_ReAlloc@8"
BS_Memory_Free(pMemory%) :"_BS_Memory_Free@4"
BS_Memory_PokeByte(pMemory%, iOffset%, bValue%) :"_BS_Memory_PokeByte@12"
BS_Memory_PeekByte%(pMemory%, iOffset%) :"_BS_Memory_PeekByte@8"
BS_Memory_PokeShort(pMemory%, iOffset%, sValue%) :"_BS_Memory_PokeShort@12"
BS_Memory_PeekShort%(pMemory%, iOffset%) :"_BS_Memory_PeekShort@8"
BS_Memory_PokeInt(pMemory%, iOffset%, iValue%) :"_BS_Memory_PokeInt@12"
BS_Memory_PeekInt%(pMemory%, iOffset%) :"_BS_Memory_PeekInt@8"
BS_Memory_PokeFloat(pMemory%, iOffset%, fValue#) :"_BS_Memory_PokeFloat@12"
BS_Memory_PeekFloat#(pMemory%, iOffset%) :"_BS_Memory_PeekFloat@8"
BS_Memory_PokeLong(pMemory%, iOffset%, lValue%) :"_BS_Memory_PokeLong@12"
BS_Memory_PeekLong%(pMemory%, iOffset%) :"_BS_Memory_PeekLong@8"
BS_Memory_PokeDouble(pMemory%, iOffset%, dValue%) :"_BS_Memory_PokeDouble@12"
BS_Memory_PeekDouble%(pMemory%, iOffset%) :"_BS_Memory_PeekDouble@8"
+28
View File
@@ -0,0 +1,28 @@
; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http:;www.gnu.org/licenses/>.
.lib "BlitzSteam.dll"
; Steam -----------------------------------------------------------------------
BS_SteamAPI_Init%() :"_BS_SteamAPI_Init@0"
BS_SteamAPI_Shutdown() :"_BS_SteamAPI_Shutdown@0"
BS_SteamAPI_IsSteamRunning%() :"_BS_SteamAPI_IsSteamRunning@0"
BS_SteamAPI_RestartAppIfNecessary%(iAppId%) :"_BS_SteamAPI_RestartAppIfNecessary@4"
BS_SteamAPI_SetMiniDumpComment(cComment$) :"_BS_SteamAPI_SetMiniDumpComment@4"
BS_SteamAPI_WriteMiniDump(iExceptionCode%, pExceptionInfo*, iBuildId%) :"_BS_SteamAPI_WriteMiniDump@12"
BS_SteamAPI_WriteMiniDumpEx(iExceptionCode%, pExceptionInfo%, iBuildId%) :"_BS_SteamAPI_WriteMiniDump@12"
BS_SteamAPI_ReleaseCurrentThreadMemory%() :"_BS_SteamAPI_ReleaseCurrentThreadMemory@0"
BS_SteamAPI_RunCallbacks() :"_BS_SteamAPI_RunCallbacks@0"
@@ -0,0 +1,28 @@
; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http:;www.gnu.org/licenses/>.
.lib "BlitzSteam.dll"
; AppList ---------------------------------------------------------------------
BS_SteamAppList%() :"_BS_SteamAppList@0"
BS_ISteamAppList_GetNumInstalledApps%(pThis%) :"_BS_ISteamAppList_GetNumInstalledApps@4"
BS_ISteamAppList_GetInstalledApps%(pThis%, pAppIdBuffer*, iMaxIDs%) :"_BS_ISteamAppList_GetInstalledApps@12"
BS_ISteamAppList_GetInstalledAppsEx%(pThis%, pAppIdBuffer%, iMaxIDs%) :"_BS_ISteamAppList_GetInstalledApps@12"
BS_ISteamAppList_GetAppName%(pThis%, iAppId%, pNameBuffer*, iNameMax%) :"_BS_ISteamAppList_GetAppName@12"
BS_ISteamAppList_GetAppNameEx%(pThis%, iAppId%, pNameBuffer%, iNameMax%) :"_BS_ISteamAppList_GetAppName@12"
BS_ISteamAppList_GetAppInstallDir%(pThis%, iAppId%, pPathBuffer*, iPathMax%) :"_BS_ISteamAppList_GetAppInstallDir@16"
BS_ISteamAppList_GetAppInstallDirEx%(pThis%, iAppId%, pPathBuffer%, iPathMax%) :"_BS_ISteamAppList_GetAppInstallDir@16"
BS_ISteamAppList_GetAppBuildId%(pThis%, iAppId%) :"_BS_ISteamAppList_GetAppBuildId@8"
@@ -0,0 +1,49 @@
; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http:;www.gnu.org/licenses/>.
.lib "BlitzSteam.dll"
; Apps ------------------------------------------------------------------------
BS_SteamApps%() :"_BS_SteamApps@0"
BS_ISteamApps_IsSubscribed%(pThis%) :"_BS_ISteamApps_IsSubscribed@4"
BS_ISteamApps_IsLowViolence%(pThis%) :"_BS_ISteamApps_IsLowViolence@4"
BS_ISteamApps_IsCybercafe%(pThis%) :"_BS_ISteamApps_IsCybercafe@4"
BS_ISteamApps_IsVACBanned%(pThis%) :"_BS_ISteamApps_IsVACBanned@4"
BS_ISteamApps_GetCurrentGameLanguage$(pThis%) :"_BS_ISteamApps_GetCurrentGameLanguage@4"
BS_ISteamApps_GetAvailableGameLanguages$(pThis%) :"_BS_ISteamApps_GetAvailableGameLanguages@4"
BS_ISteamApps_IsSubscribedApp%(pThis%, iAppId%) :"_BS_ISteamApps_IsSubscribedApp@8"
BS_ISteamApps_IsDlcInstalled%(pThis%, iAppId%) :"_BS_ISteamApps_IsDlcInstalled@8"
BS_ISteamApps_GetEarliestPurchaseUnixTime%(pThis%, iAppId%) :"_BS_ISteamApps_GetEarliestPurchaseUnixTime@8"
BS_ISteamApps_IsSubscribedFromFreeWeekend%(pThis%) :"_BS_ISteamApps_IsSubscribedFromFreeWeekend@4"
BS_ISteamApps_GetDLCCount%(pThis%) :"_BS_ISteamApps_GetDLCCount@4"
BS_ISteamApps_GetDLCDataByIndex%(pThis%, iDLC%, pAppId*, pAvailable*, pName*, iNameSize%):"_BS_ISteamApps_GetDLCDataByIndex@24"
BS_ISteamApps_GetDLCDataByIndexEx%(pThis%, iDLC%, pAppId%, pAvailable%, pName%, iNameSize%):"_BS_ISteamApps_GetDLCDataByIndex@24"
BS_ISteamApps_InstallDLC(pThis%, iAppId%) :"_BS_ISteamApps_InstallDLC@8"
BS_ISteamApps_UninstallDLC(pThis%, iAppId%) :"_BS_ISteamApps_UninstallDLC@8"
BS_ISteamApps_RequestAppProofOfPurchaseKey(pThis%, iAppId%) :"_BS_ISteamApps_RequestAppProofOfPurchaseKey@8"
BS_ISteamApps_GetCurrentBetaName%(pThis%, pName*, iNameSize%) :"_BS_ISteamApps_GetCurrentBetaName@12"
BS_ISteamApps_GetCurrentBetaNameEx%(pThis%, pName%, iNameSize%) :"_BS_ISteamApps_GetCurrentBetaName@12"
BS_ISteamApps_MarkContentCorrupt%(pThis%, bMissingFilesOnly%) :"_BS_ISteamApps_MarkContentCorrupt@8"
BS_ISteamApps_GetInstalledDepots%(pThis%, iAppId%, pDepots*, iMaxDepots%) :"_BS_ISteamApps_GetInstalledDepots@16"
BS_ISteamApps_GetInstalledDepotsEx%(pThis%, iAppId%, pDepots%, iMaxDepots%) :"_BS_ISteamApps_GetInstalledDepots@16"
BS_ISteamApps_GetAppInstallDir%(pThis%, iAppId%, pPathBuffer*, iPathBufferSize%):"_BS_ISteamApps_GetAppInstallDir@16"
BS_ISteamApps_GetAppInstallDirEx%(pThis%, iAppId%, pPathBuffer%, iPathBufferSize%):"_BS_ISteamApps_GetAppInstallDir@16"
BS_ISteamApps_IsAppInstalled%(pThis%, iAppId%) :"_BS_ISteamApps_IsAppInstalled@8"
BS_ISteamApps_GetAppOwner%(pThis%) :"_BS_ISteamApps_GetAppOwner@4"
BS_ISteamApps_GetLaunchQueryParam$(pThis%, cKey$) :"_BS_ISteamApps_GetLaunchQueryParam@8"
BS_ISteamApps_GetDlcDownloadProgress%(pThis%, iAppId%, llDownloaded*, llTotal*) :"_BS_ISteamApps_GetDlcDownloadProgress@16"
BS_ISteamApps_GetDlcDownloadProgressEx%(pThis%, iAppId%, llDownloaded%, llTotal%):"_BS_ISteamApps_GetDlcDownloadProgress@16"
BS_ISteamApps_GetAppBuildId%(pThis%) :"_BS_ISteamApps_GetAppBuildId@4"
@@ -0,0 +1,51 @@
; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http:;www.gnu.org/licenses/>.
.lib "BlitzSteam.dll"
; Client ----------------------------------------------------------------------
BS_SteamClient%() :"_BS_SteamClient@0"
BS_ISteamClient_CreateSteamPipe%(pThis%) :"_BS_ISteamClient_CreateSteamPipe@4"
BS_ISteamClient_ReleaseSteamPipe%(pThis%, hPipe%) :"_BS_ISteamClient_ReleaseSteamPipe@8"
BS_ISteamClient_ConnectToGlobalUser%(pThis%, hPipe%) :"_BS_ISteamClient_ConnectToGlobalUser@8"
BS_ISteamClient_SetLocalIPBinding(pThis, unIP%, usPort%) :"_BS_ISteamClient_SetLocalIPBinding@12"
BS_ISteamClient_CreateLocalUser%(pThis%, pSteamPipe%, EAccountType%) :"_BS_ISteamClient_CreateLocalUser@12"
BS_ISteamClient_ReleaseUser(pThis%, hPipe%, hUser%) :"_BS_ISteamClient_ReleaseUser@12"
BS_ISteamClient_GetIPCCallCount%(pThis%) :"_BS_ISteamClient_GetIPCCallCount@4"
BS_ISteamClient_ShutdownIfAllPipesClosed%(pThis%) :"_BS_ISteamClient_ShutdownIfAllPipesClosed@4"
BS_ISteamClient_GetSteamAppList%(pThis%, hUser%, hPipe%, cVersion$) :"_BS_ISteamClient_GetSteamAppList@16"
BS_ISteamClient_GetSteamApps%(pThis%, hUser%, hPipe%, cVersion$) :"_BS_ISteamClient_GetSteamApps@16"
BS_ISteamClient_GetSteamController%(pThis%, hUser%, hPipe%, cVersion$) :"_BS_ISteamClient_GetSteamController@16"
BS_ISteamClient_GetSteamFriends%(pThis%, hUser%, hPipe%, cVersion$) :"_BS_ISteamClient_GetSteamFriends@16"
BS_ISteamClient_GetSteamGameServer%(pThis%, hUser%, hPipe%, cVersion$) :"_BS_ISteamClient_GetSteamGameServer@16"
BS_ISteamClient_GetSteamGameServerStats%(pThis%, hUser%, hPipe%, cVersion$) :"_BS_ISteamClient_GetSteamGameServerStats@16"
BS_ISteamClient_GetSteamHTMLSurface%(pThis%, hUser%, hPipe%, cVersion$) :"_BS_ISteamClient_GetSteamHTMLSurface@16"
BS_ISteamClient_GetSteamHTTP%(pThis%, hUser%, hPipe%, cVersion$) :"_BS_ISteamClient_GetSteamHTTP@16"
BS_ISteamClient_GetSteamInventory%(pThis%, hUser%, hPipe%, cVersion$) :"_BS_ISteamClient_GetSteamInventory@16"
BS_ISteamClient_GetSteamMatchmaking%(pThis%, hUser%, hPipe%, cVersion$) :"_BS_ISteamClient_GetSteamMatchmaking@16"
BS_ISteamClient_GetSteamMatchmakingServers%(pThis%, hUser%, hPipe%, cVersion$) :"_BS_ISteamClient_GetSteamMatchmakingServers@16"
BS_ISteamClient_GetSteamMusic%(pThis%, hUser%, hPipe%, cVersion$) :"_BS_ISteamClient_GetSteamMusic@16"
BS_ISteamClient_GetSteamMusicRemote%(pThis%, hUser%, hPipe%, cVersion$) :"_BS_ISteamClient_GetSteamMusicRemote@16"
BS_ISteamClient_GetSteamNetworking%(pThis%, hUser%, hPipe%, cVersion$) :"_BS_ISteamClient_GetSteamNetworking@16"
BS_ISteamClient_GetSteamRemoteStorage%(pThis%, hUser%, hPipe%, cVersion$) :"_BS_ISteamClient_GetSteamRemoteStorage@16"
BS_ISteamClient_GetSteamScreenshots%(pThis%, hUser%, hPipe%, cVersion$) :"_BS_ISteamClient_GetSteamScreenshots@16"
BS_ISteamClient_GetSteamUGC%(pThis%, hUser%, hPipe%, cVersion$) :"_BS_ISteamClient_GetSteamUGC@16"
BS_ISteamClient_GetSteamUnifiedMessages%(pThis%, hUser%, hPipe%, cVersion$) :"_BS_ISteamClient_GetSteamUnifiedMessages@16"
BS_ISteamClient_GetSteamUser%(pThis%, hUser%, hPipe%, cVersion$) :"_BS_ISteamClient_GetSteamUser@16"
BS_ISteamClient_GetSteamUserStats%(pThis%, hUser%, hPipe%, cVersion$) :"_BS_ISteamClient_GetSteamUserStats@16"
BS_ISteamClient_GetSteamUtils%(pThis%, hPipe%, cVersion$) :"_BS_ISteamClient_GetSteamUtils@12"
BS_ISteamClient_GetSteamVideo%(pThis%, hUser%, hPipe%, cVersion$) :"_BS_ISteamClient_GetSteamVideo@16"
BS_ISteamClient_SetWarningMessageHook(pThis%, pFunction%) :"_BS_ISteamClient_SetWarningMessageHook@8"
@@ -0,0 +1,48 @@
; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http:;www.gnu.org/licenses/>.
.lib "BlitzSteam.dll"
; Controller ------------------------------------------------------------------
BS_SteamController%() :"_BS_SteamController@0"
BS_SteamController_Init%(pThis%, cControlConfigVDF$) :"_BS_ISteamController_Init@8"
BS_ISteamController_Shutdown%(pThis%) :"_BS_ISteamController_Shutdown@4"
BS_ISteamController_RunFrame(pThis%) :"_BS_ISteamController_RunFrame@4"
BS_ISteamController_GetConnectedControllers%(pThis%, pHandles*) :"_BS_ISteamController_GetConnectedControllers@8"
BS_ISteamController_GetConnectedControllersEx%(pThis%, pHandles%) :"_BS_ISteamController_GetConnectedControllers@8"
BS_ISteamController_GetConnectedControllersSimple%(pThis%) :"_BS_ISteamController_GetConnectedControllersSimple@4"
BS_ISteamController_GetConnectedControllersSimple_Index%(iIndex%) :"_BS_ISteamController_GetConnectedControllersSimple@4"
BS_ISteamController_ShowBindingPanel%(pThis%, pController%) :"_BS_ISteamController_ShowBindingPanel@8"
BS_ISteamController_GetActionSetHandle%(pThis%, cSetName$) :"_BS_ISteamController_GetActionSetHandle@8"
;! Returns: ControllerActionSetHandle_t*. Clean Up!
BS_ISteamController_ActivateActionSet(pThis%, pController%, pActionSet%) :"_BS_ISteamController_ActivateActionSet@12"
BS_ISteamController_GetCurrentActionSet%(pThis%, pController%) :"_BS_ISteamController_GetCurrentActionSet@8"
;! Returns: ControllerActionSetHandle_t*. Clean Up!
BS_ISteamController_GetDigitalActionHandle%(pThis%, cName$) :"_BS_ISteamController_GetDigitalActionHandle@8"
;! Returns: ControllerDigitalActionHandle_t*. Clean Up!
BS_ISteamController_GetDigitalActionData%(pThis%, pController%, pDigital%) :"_BS_ISteamController_GetDigitalActionData@12"
;! Returns: ControllerDigitalActionData_t*. Clean Up!
BS_ISteamController_GetDigitalActionOrigins%(pThis%, pController%, pActionSet%, pDigital%, pEControllerActionOrigin*):"_BS_ISteamController_GetDigitalActionOrigins@20"
BS_ISteamController_GetDigitalActionOriginsEx%(pThis%, pController%, pActionSet%, pDigital%, pEControllerActionOrigin%):"_BS_ISteamController_GetDigitalActionOrigins@20"
BS_ISteamController_GetAnalogActionHandle%(pThis%, cName$) :"_BS_ISteamController_GetAnalogActionHandle@8"
;! Returns: ControllerAnalogActionHandle_t*. Clean Up!
BS_ISteamController_GetAnalogActionData%(pThis%, pController%, pAnalog%) :"_BS_ISteamController_GetAnalogActionData@12"
;! Returns: ControllerAnalogActionData_t*. Clean Up!
BS_ISteamController_GetAnalogActionOrigins%(pThis%, pController%, pActionSet%, pAnalog%, pEControllerActionOrigin*):"_BS_ISteamController_GetAnalogActionOrigins@20"
BS_ISteamController_GetAnalogActionOriginsEx%(pThis%, pController%, pActionSet%, pAnalog%, pEControllerActionOrigin*):"_BS_ISteamController_GetAnalogActionOrigins@20"
BS_ISteamController_StopAnalogActionMomentum(pThis%, pController%, pAnalog%):"_BS_ISteamController_StopAnalogActionMomentum@12"
BS_ISteamController_TriggerHapticPulse(pThis%, pController%, ESteamControllerPad%, iDuration%):"_BS_ISteamController_TriggerHapticPulse@16"
BS_ISteamController_TriggerRepeatedHapticPulse(pThis%, pController%, ESteamControllerPad%, iDuration%, iOffDuration%, iRepeats%, iFlags%):"_BS_ISteamController_TriggerRepeatedHapticPulse@28"
@@ -0,0 +1,104 @@
; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http:;www.gnu.org/licenses/>.
.lib "BlitzSteam.dll"
; Friends ---------------------------------------------------------------------
BS_SteamFriends%() :"_BS_SteamFriends@0"
BS_ISteamFriends_GetPersonaName$(pThis%) :"_BS_ISteamFriends_GetPersonaName@4"
BS_ISteamFriends_SetPersonaName%(pThis%, cPersonaName$) :"_BS_ISteamFriends_SetPersonaName@8"
;! Returns: SteamAPICall_t*. Clean Up!
BS_ISteamFriends_GetPersonaState%(pThis%) :"_BS_ISteamFriends_GetPersonaState@4"
BS_ISteamFriends_GetFriendCount%(pThis%, EFriendFlags%) :"_BS_ISteamFriends_GetFriendCount@8"
BS_ISteamFriends_GetFriendByIndex%(pThis%, iFriend%, EFriendFlags%) :"_BS_ISteamFriends_GetFriendByIndex@12"
;! Returns: CSteamID*. Clean Up!
BS_ISteamFriends_GetFriendRelationship%(pThis%, pllFriend%) :"_BS_ISteamFriends_GetFriendRelationship@8"
BS_ISteamFriends_GetFriendPersonaState%(pThis%, pllFriend%) :"_BS_ISteamFriends_GetFriendPersonaState@8"
BS_ISteamFriends_GetFriendPersonaName$(pThis%, pllFriend%) :"_BS_ISteamFriends_GetFriendPersonaName@8"
BS_ISteamFriends_GetFriendGamePlayed%(pThis%, pllFriend%, pFriendGameInfo*) :"_BS_ISteamFriends_GetFriendGamePlayed@12"
BS_ISteamFriends_GetFriendGamePlayedEx%(pThis%, pllFriend%, pFriendGameInfo%) :"_BS_ISteamFriends_GetFriendGamePlayed@12"
BS_ISteamFriends_GetFriendPersonaNameHistory$(pThis%, pllFriend%, iDepth%) :"_BS_ISteamFriends_GetFriendPersonaNameHistory@12"
BS_ISteamFriends_GetFriendSteamLevel%(pThis%, pllFriend%) :"_BS_ISteamFriends_GetFriendSteamLevel@8"
BS_ISteamFriends_GetPlayerNickname$(pThis%, pllFriend%) :"_BS_ISteamFriends_GetPlayerNickname@8"
BS_ISteamFriends_GetFriendsGroupCount%(pThis%) :"_BS_ISteamFriends_GetFriendsGroupCount@4"
BS_ISteamFriends_GetFriendsGroupIDByIndex%(pThis%, iIndex%) :"_BS_ISteamFriends_GetFriendsGroupIDByIndex@8"
BS_ISteamFriends_GetFriendsGroupName$(pThis%, iGroupID%) :"_BS_ISteamFriends_GetFriendsGroupName@8"
BS_ISteamFriends_GetFriendsGroupMembersCount%(pThis%, iGroupID%) :"_BS_ISteamFriends_GetFriendsGroupMembersCount@8"
BS_ISteamFriends_GetFriendsGroupMembersList(pThis%, iGroupID%, pllMembers*, nMembersCount%):"_BS_ISteamFriends_GetFriendsGroupMembersList@16"
BS_ISteamFriends_GetFriendsGroupMembersListEx(pThis%, iGroupID%, pllMembers%, nMembersCount%):"_BS_ISteamFriends_GetFriendsGroupMembersList@16"
BS_ISteamFriends_HasFriend(pThis%, pllFriend%, EFriendFlags%) :"_BS_ISteamFriends_HasFriend@12"
BS_ISteamFriends_GetClanCount%(pThis%) :"_BS_ISteamFriends_GetClanCount@4"
BS_ISteamFriends_GetClanByIndex%(pThis%, iClan%) :"_BS_ISteamFriends_GetClanByIndex@8"
BS_ISteamFriends_GetClanName$(pThis%, llClanID%) :"_BS_ISteamFriends_GetClanName@8"
BS_ISteamFriends_GetClanTag$(pThis%, llClanID%) :"_BS_ISteamFriends_GetClanTag@8"
BS_ISteamFriends_GetClanActivityCounts%(pThis%, llClanID%, pnOnline*, pnInGame*, pnChatting*):"_BS_ISteamFriends_GetClanActivityCounts@20"
BS_ISteamFriends_GetClanActivityCountsEx%(pThis%, llClanID%, pnOnline%, pnInGame%, pnChatting%):"_BS_ISteamFriends_GetClanActivityCounts@20"
BS_ISteamFriends_DownloadClanActivityCounts%(pThis%, llClanID%, cClansToRequest%):"_BS_ISteamFriends_DownloadClanActivityCounts@12"
BS_ISteamFriends_GetFriendCountFromSource%(pThis%, llSourceID%) :"_BS_ISteamFriends_GetFriendCountFromSource@8"
BS_ISteamFriends_GetFriendFromSourceByIndex%(pThis%, llSourceID%, iFriend%) :"_BS_ISteamFriends_GetFriendFromSourceByIndex@12"
BS_ISteamFriends_IsUserInSource%(pThis%, llSteamID%, llSourceID%) :"_BS_ISteamFriends_IsUserInSource@12"
BS_ISteamFriends_SetInGameVoiceSpeaking(pThis%, llSteamID%, bSpeaking%) :"_BS_ISteamFriends_SetInGameVoiceSpeaking@12"
BS_ISteamFriends_ActivateGameOverlay(pThis%, cDialog$) :"_BS_ISteamFriends_ActivateGameOverlay@8"
BS_ISteamFriends_ActivateGameOverlayToUser(pThis%, cDialog$, llSteamID%) :"_BS_ISteamFriends_ActivateGameOverlayToUser@12"
BS_ISteamFriends_ActivateGameOverlayToWebPage(pThis%, cURL$) :"_BS_ISteamFriends_ActivateGameOverlayToWebPage@8"
BS_ISteamFriends_ActivateGameOverlayToStore(pThis%, nAppID%, EOverlayToStoreFlag%):"_BS_ISteamFriends_ActivateGameOverlayToStore@12"
BS_ISteamFriends_SetPlayedWith(pThis%, llSteamID%) :"_BS_ISteamFriends_SetPlayedWith@8"
BS_ISteamFriends_ActivateGameOverlayInviteDialog(pThis%, llLobbyID%) :"_BS_ISteamFriends_ActivateGameOverlayInviteDialog@8"
BS_ISteamFriends_GetSmallFriendAvatar%(pThis%, llSteamID%) :"_BS_ISteamFriends_GetSmallFriendAvatar@8"
BS_ISteamFriends_GetMediumFriendAvatar%(pThis%, llSteamID%) :"_BS_ISteamFriends_GetMediumFriendAvatar@8"
BS_ISteamFriends_GetLargeFriendAvatar%(pThis%, llSteamID%) :"_BS_ISteamFriends_GetLargeFriendAvatar@8"
BS_ISteamFriends_RequestUserInformation%(pThis%, llSteamID%, bNameOnly%) :"_BS_ISteamFriends_RequestUserInformation@12"
BS_ISteamFriends_RequestClanOfficerList%(pThis%, llClanID%) :"_BS_ISteamFriends_RequestClanOfficerList@8"
BS_ISteamFriends_GetClanOwner%(pThis%, llClanID%) :"_BS_ISteamFriends_GetClanOwner@8"
BS_ISteamFriends_GetClanOfficerCount%(pThis%, llClanID%) :"_BS_ISteamFriends_GetClanOfficerCount@8"
BS_ISteamFriends_GetClanOfficerByIndex%(pThis%, llClanID%, iOfficer%) :"_BS_ISteamFriends_GetClanOfficerByIndex@12"
;! Returns: CSteamID*. Clean Up!
BS_ISteamFriends_GetUserRestrictions%(pThis%) :"_BS_ISteamFriends_GetUserRestrictions@4"
BS_ISteamFriends_SetRichPresence%(pThis%, cKey$, cValue$) :"_BS_ISteamFriends_SetRichPresence@12"
BS_ISteamFriends_ClearRichPresence(pThis%) :"_BS_ISteamFriends_ClearRichPresence@4"
BS_ISteamFriends_GetFriendRichPresence$(pThis%, llSteamID%, cKey$) :"_BS_ISteamFriends_GetFriendRichPresence@12"
BS_ISteamFriends_GetFriendRichPresenceKeyCount%(pThis%, llSteamID%) :"_BS_ISteamFriends_GetFriendRichPresenceKeyCount@8"
BS_ISteamFriends_GetFriendRichPresenceKeyByIndex$(pThis%, llSteamID%, iKey%) :"_BS_ISteamFriends_GetFriendRichPresenceKeyByIndex@12"
BS_ISteamFriends_RequestFriendRichPresence(pThis%, llSteamID%) :"_BS_ISteamFriends_RequestFriendRichPresence@8"
BS_ISteamFriends_InviteUserToGame%(pThis%, llSteamID%, cConnectString%) :"_BS_ISteamFriends_InviteUserToGame@12"
BS_ISteamFriends_GetCoplayFriendCount%(pThis%) :"_BS_ISteamFriends_GetCoplayFriendCount@4"
BS_ISteamFriends_GetCoplayFriend%(pThis%, iCoplayFriend%) :"_BS_ISteamFriends_GetCoplayFriend@8"
;! Returns: CSteamID*. Clean Up!
BS_ISteamFriends_GetFriendCoplayTime%(pThis%, llSteamID%) :"_BS_ISteamFriends_GetFriendCoplayTime@8"
BS_ISteamFriends_GetFriendCoplayGame%(pThis%, llSteamID%) :"_BS_ISteamFriends_GetFriendCoplayGame@8"
BS_ISteamFriends_JoinClanChatRoom%(pThis%, llClanID%) :"_BS_ISteamFriends_JoinClanChatRoom@8"
;! Returns: SteamAPICall_t*. Clean Up!
BS_ISteamFriends_LeaveClanChatRoom%(pThis%, llClanID%) :"_BS_ISteamFriends_LeaveClanChatRoom@8"
BS_ISteamFriends_GetClanChatMemberCount%(pThis%, llClanID%) :"_BS_ISteamFriends_GetClanChatMemberCount@8"
BS_ISteamFriends_GetChatMemberByIndex%(pThis%, llClanID%, iUser%) :"_BS_ISteamFriends_GetChatMemberByIndex@12"
;! Returns: CSteamID*. Clean Up!
BS_ISteamFriends_SendClanChatMessage%(pThis%, llClanChatID%, cMessage$) :"_BS_ISteamFriends_SendClanChatMessage@12"
BS_ISteamFriends_GetClanChatMessage%(pThis%, llClanChatID%, iMessage%, pMessage*, iMessageSize%, pEChatEntryType*, pSteamID*):"_BS_ISteamFriends_GetClanChatMessage@28"
BS_ISteamFriends_GetClanChatMessageEx%(pThis%, llClanChatID%, iMessage%, pMessage%, iMessageSize%, peChatEntryType%, pSteamID%):"_BS_ISteamFriends_GetClanChatMessage@28"
BS_ISteamFriends_IsClanChatAdmin%(pThis%, llClanChatID%, llSteamID%) :"_BS_ISteamFriends_IsClanChatAdmin@12"
BS_ISteamFriends_IsClanChatWindowOpenInSteam%(pThis%, llClanChatID%) :"_BS_ISteamFriends_IsClanChatWindowOpenInSteam@8"
BS_ISteamFriends_OpenClanChatWindowInSteam%(pThis%, llClanChatID%) :"_BS_ISteamFriends_OpenClanChatWindowInSteam@8"
BS_ISteamFriends_CloseClanChatWindowInSteam%(pThis%, llClanChatID%) :"_BS_ISteamFriends_CloseClanChatWindowInSteam@8"
BS_ISteamFriends_SetListenForFriendsMessages%(pThis%, bInterceptEnabled%) :"_BS_ISteamFriends_SetListenForFriendsMessages@8"
BS_ISteamFriends_ReplyToFriendMessage%(pThis%, llSteamID%, cMessage$) :"_BS_ISteamFriends_ReplyToFriendMessage@12"
BS_ISteamFriends_GetFriendMessage%(pThis%, llSteamID%, iMessageID%, pData*, iDataSize%, pEChatEntryType*):"_BS_ISteamFriends_GetFriendMessage@24"
BS_ISteamFriends_GetFriendMessageEx%(pThis%, llSteamID%, iMessageID%, pData%, iDataSize%, pEChatEntryType%):"_BS_ISteamFriends_GetFriendMessage@24"
BS_ISteamFriends_GetFollowerCount%(pThis%, llSteamID%) :"_BS_ISteamFriends_GetFollowerCount@8"
;! Returns: SteamAPICall_t*. Clean Up!
BS_ISteamFriends_IsFollowing%(pThis%, llSteamID%) :"_BS_ISteamFriends_IsFollowing@8"
;! Returns: SteamAPICall_t*. Clean Up!
BS_ISteamFriends_EnumerateFollowingList%(pThis%, iStartIndex%) :"_BS_ISteamFriends_EnumerateFollowingList@8"
;! Returns: SteamAPICall_t*. Clean Up!
@@ -0,0 +1,77 @@
; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http:;www.gnu.org/licenses/>.
.lib "BlitzSteam.dll"
; GameServer ------------------------------------------------------------------
BS_SteamGameServer_Init%(iIP%, sSteamPort%, sGamePort%, sQueryPort%, EServerMode%, cVersion$):"_BS_SteamGameServer_Init@24"
BS_SteamGameServer_Shutdown() :"_BS_SteamGameServer_Shutdown@0"
BS_SteamGameServer_RunCallbacks() :"_BS_SteamGameServer_RunCallbacks@0"
BS_SteamGameServer_GetHSteamPipe%() :"_BS_SteamGameServer_GetHSteamPipe@0"
BS_SteamGameServer_IsSecure%() :"_BS_SteamGameServer_IsSecure@0"
BS_SteamGameServer_GetSteamID%() :"_BS_SteamGameServer_GetSteamID@0"
;! Function above returns a CSteamID*, clean it up afterwards!
BS_SteamGameServer%() :"_BS_SteamGameServer@0"
BS_ISteamGameServer_InitGameServer%(pThis%, iIP%, sGamePort%, sQueryPort%, iFlags%, iAppId%, cVersion$):"_BS_ISteamGameServer_InitGameServer@24"
BS_ISteamGameServer_SetProduct(pThis%, cProduct$) :"_BS_ISteamGameServer_SetProduct@8"
BS_ISteamGameServer_SetGameDescription(pThis%, cDescription$) :"_BS_ISteamGameServer_SetGameDescription@8"
BS_ISteamGameServer_SetModDir(pThis%, cDirectory$) :"_BS_ISteamGameServer_SetModDir@8"
BS_ISteamGameServer_SetDedicatedServer(pThis%, bDedicated%) :"_BS_ISteamGameServer_SetDedicatedServer@8"
BS_ISteamGameServer_LogOn(pThis%, cToken$) :"_BS_ISteamGameServer_LogOn@8"
BS_ISteamGameServer_LogOnAnonymous(pThis%) :"_BS_ISteamGameServer_LogOnAnonymous@4"
BS_ISteamGameServer_LogOff(pThis%) :"_BS_ISteamGameServer_LogOff@4"
BS_ISteamGameServer_IsLoggedOn%(pThis%) :"_BS_ISteamGameServer_IsLoggedOn@4"
BS_ISteamGameServer_IsSecure%(pThis%) :"_BS_ISteamGameServer_IsSecure@4"
BS_ISteamGameServer_GetSteamID%(pThis%) :"_BS_ISteamGameServer_GetSteamID@4"
BS_ISteamGameServer_WasRestartRequested%(pThis%) :"_BS_ISteamGameServer_WasRestartRequested@4"
BS_ISteamGameServer_SetMaxPlayerCount(pThis%, iMaxPlayers%) :"_BS_ISteamGameServer_SetMaxPlayerCount@8"
BS_ISteamGameServer_SetBotPlayerCount(pThis%, iBotPlayers%) :"_BS_ISteamGameServer_SetBotPlayerCount@8"
BS_ISteamGameServer_SetServerName(pThis%, cName$) :"_BS_ISteamGameServer_SetServerName@8"
BS_ISteamGameServer_SetMapName(pThis%, cName$) :"_BS_ISteamGameServer_SetMapName@8"
BS_ISteamGameServer_SetPasswordProtected(pThis%, bPassworded%) :"_BS_ISteamGameServer_SetPasswordProtected@8"
BS_ISteamGameServer_SetSpectatorPort(pThis%, sPort%) :"_BS_ISteamGameServer_SetSpectatorPort@8"
BS_ISteamGameServer_SetSpectatorServerName(pThis%, cName$) :"_BS_ISteamGameServer_SetSpectatorServerName@8"
BS_ISteamGameServer_ClearAllKeyValues(pThis%) :"_BS_ISteamGameServer_ClearAllKeyValues@4"
BS_ISteamGameServer_SetKeyValue(pThis%, cKey$, cValue$) :"_BS_ISteamGameServer_SetKeyValue@12"
BS_ISteamGameServer_SetGameTags(pThis%, cTags$) :"_BS_ISteamGameServer_SetGameTags@8"
BS_ISteamGameServer_SetGameData(pThis%, cData$) :"_BS_ISteamGameServer_SetGameData@8"
BS_ISteamGameServer_SetRegion(pThis%, cRegion$) :"_BS_ISteamGameServer_SetRegion@8"
BS_ISteamGameServer_SendUserConnectAndAuthenticate%(pThis%, iIP%, pAuthBlob*, iAuthBlobSize%, lSteamId%):"_BS_ISteamGameServer_SendUserConnectAndAuthenticate@20"
BS_ISteamGameServer_SendUserConnectAndAuthenticateEx%(pThis%, iIP%, pAuthBlob%, iAuthBlobSize%, lSteamId%):"_BS_ISteamGameServer_SendUserConnectAndAuthenticate@20"
BS_ISteamGameServer_CreateUnauthenticatedUserConnection%(pThis%) :"_BS_ISteamGameServer_CreateUnauthenticatedUserConnection@4"
;! Function above returns a CSteamID*, clean it up afterwards!
BS_ISteamGameServer_SendUserDisconnect(pThis%, lSteamId%) :"_BS_ISteamGameServer_SendUserDisconnect@8"
BS_ISteamGameServer_UpdateUserData%(pThis%, lSteamId%, cName$, iScore%):"_BS_ISteamGameServer_UpdateUserData@16"
BS_ISteamGameServer_GetAuthSessionTicket%(pThis%, pTicket*, iTicketSize%, piTicketSize*):"_BS_ISteamGameServer_GetAuthSessionTicket@16"
BS_ISteamGameServer_GetAuthSessionTicketEx%(pThis%, pTicket%, iTicketSize%, piTicketSize%):"_BS_ISteamGameServer_GetAuthSessionTicket@16"
BS_ISteamGameServer_BeginAuthSession%(pThis%, pTicket*, iTicketSize%, lSteamId%):"_BS_ISteamGameServer_BeginAuthSession@16"
BS_ISteamGameServer_BeginAuthSessionEx%(pThis%, pTicket%, iTicketSize%, lSteamId%):"_BS_ISteamGameServer_BeginAuthSession@16"
BS_ISteamGameServer_EndAuthSession(pThis%, lSteamId%) :"_BS_ISteamGameServer_EndAuthSession@8"
BS_ISteamGameServer_CancelAuthTicket(pThis%, iAuthTicket%) :"_BS_ISteamGameServer_CancelAuthTicket@8"
BS_ISteamGameServer_UserHasLicenseForApp%(pThis%, lSteamId%, iAppId%) :"_BS_ISteamGameServer_UserHasLicenseForApp@12"
BS_ISteamGameServer_RequestUserGroupStatus%(pThis%, lSteamId%, pSteamIdGroup%) :"_BS_ISteamGameServer_RequestUserGroupStatus@12"
BS_ISteamGameServer_GetPublicIP%(pThis%) :"_BS_ISteamGameServer_GetPublicIP@4"
BS_ISteamGameServer_HandleIncomingPacket%(pThis%, pBuffer*, iBufferSize%, iIP%, sPort%):"_BS_ISteamGameServer_HandleIncomingPacket@20"
BS_ISteamGameServer_HandleIncomingPacketEx%(pThis%, pBuffer%, iBufferSize%, iIP%, sPort%):"_BS_ISteamGameServer_HandleIncomingPacket@20"
BS_ISteamGameServer_GetNextOutgoingPacket%(pThis%, pBuffer*, iBufferSize%, piIP*, psPort*):"_BS_ISteamGameServer_GetNextOutgoingPacket@20"
BS_ISteamGameServer_GetNextOutgoingPacketEx%(pThis%, pBuffer%, iBufferSize%, piIP%, psPort%):"_BS_ISteamGameServer_GetNextOutgoingPacket@20"
BS_ISteamGameServer_EnableHeartbeats(pThis%, bActive%) :"_BS_ISteamGameServer_EnableHeartbeats@8"
BS_ISteamGameServer_SetHeartbeatInterval(pThis%, iInterval%) :"_BS_ISteamGameServer_SetHeartbeatInterval@8"
BS_ISteamGameServer_ForceHeartbeat(pThis%) :"_BS_ISteamGameServer_ForceHeartbeat@4"
BS_ISteamGameServer_AssociateWithClan%(pThis%, pSteamIDClan%) :"_BS_ISteamGameServer_AssociateWithClan@8"
;! Function above returns a SteamAPICall_t*, clean it up afterwards!
BS_ISteamGameServer_ComputeNewPlayerCompatibility%(pThis%, pSteamIDNewPlayer%) :"_BS_ISteamGameServer_ComputeNewPlayerCompatibility@8"
;! Function above returns a SteamAPICall_t*, clean it up afterwards!
@@ -0,0 +1,36 @@
; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http:;www.gnu.org/licenses/>.
.lib "BlitzSteam.dll"
; GameServerStats -------------------------------------------------------------
BS_SteamGameServerStats%() :"_BS_SteamGameServerStats@0"
BS_ISteamGameServerStats_RequestUserStats%(pThis%, lSteamId%) :"_BS_ISteamGameServerStats_RequestUserStats@8"
;! Function above returns a SteamAPICall_t*, clean it up afterwards!
BS_ISteamGameServerStats_StoreUserStats%(pThis%, lSteamId%) :"_BS_ISteamGameServerStats_StoreUserStats@8"
;! Function above returns a SteamAPICall_t*, clean it up afterwards!
BS_ISteamGameServerStats_GetUserStat%(pThis%, lSteamId%, cName$, pData*) :"_BS_ISteamGameServerStats_GetUserStat@16"
BS_ISteamGameServerStats_GetUserStatEx%(pThis%, lSteamId%, cName$, pData%) :"_BS_ISteamGameServerStats_GetUserStat@16"
BS_ISteamGameServerStats_GetUserStatF%(pThis%, lSteamId%, cName$, pData*) :"_BS_ISteamGameServerStats_GetUserStatF@16"
BS_ISteamGameServerStats_GetUserStatFEx%(pThis%, lSteamId%, cName$, pData%) :"_BS_ISteamGameServerStats_GetUserStatF@16"
BS_ISteamGameServerStats_GetUserAchievement%(pThis%, lSteamId%, cName$, pbAchieved*):"_BS_ISteamGameServerStats_GetUserAchievement@16"
BS_ISteamGameServerStats_GetUserAchievementEx%(pThis%, lSteamId%, cName$, pbAchieved%):"_BS_ISteamGameServerStats_GetUserAchievement@16"
BS_ISteamGameServerStats_SetUserStat%(pThis%, lSteamId%, cName%, iData%) :"_BS_ISteamGameServerStats_SetUserStat@16"
BS_ISteamGameServerStats_SetUserStatF%(pThis%, lSteamId%, cName%, fData#) :"_BS_ISteamGameServerStats_SetUserStatF@16"
BS_ISteamGameServerStats_UpdateUserAvgRateStat%(pThis%, lSteamId%, cName$, fCountThisSession#, dSessionLength%):"_BS_ISteamGameServerStats_UpdateUserAvgRateStat@20"
;! Function above takes a Double* as last parameter.
BS_ISteamGameServerStats_SetUserAchievement%(pThis%, lSteamId%, cName$) :"_BS_ISteamGameServerStats_SetUserAchievement@12"
BS_ISteamGameServerStats_ClearUserAchievement%(pThis%, lSteamId%, cName$) :"_BS_ISteamGameServerStats_ClearUserAchievement@12"
@@ -0,0 +1,56 @@
; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http:;www.gnu.org/licenses/>.
.lib "BlitzSteam.dll"
; HTMLSurface -----------------------------------------------------------------
BS_SteamHTMLSurface%() :"_BS_SteamHTMLSurface@0"
BS_ISteamHTMLSurface_Init%(pThis%) :"_BS_ISteamHTMLSurface_Init@4"
BS_ISteamHTMLSurface_Shutdown%(pThis%) :"_BS_ISteamHTMLSurface_Shutdown@4"
BS_ISteamHTMLSurface_CreateBrowser%(pThis%, cUserAgent$, cUserCSS$) :"_BS_ISteamHTMLSurface_CreateBrowser@12"
;! Function above returns a SteamAPICall_t*, clean it up afterwards!
BS_ISteamHTMLSurface_RemoveBrowser(pThis%, iHandle%) :"_BS_ISteamHTMLSurface_RemoveBrowser@8"
BS_ISteamHTMLSurface_LoadURL(pThis%, iHandle%, cURL$, cPostData$) :"_BS_ISteamHTMLSurface_LoadURL@16"
BS_ISteamHTMLSurface_SetSize(pThis%, iHandle%, iWidth%, iHeight%) :"_BS_ISteamHTMLSurface_SetSize@16"
BS_ISteamHTMLSurface_StopLoad(pThis%, iHandle%) :"_BS_ISteamHTMLSurface_StopLoad@8"
BS_ISteamHTMLSurface_Reload(pThis%, iHandle%) :"_BS_ISteamHTMLSurface_Reload@8"
BS_ISteamHTMLSurface_GoBack(pThis%, iHandle%) :"_BS_ISteamHTMLSurface_GoBack@8"
BS_ISteamHTMLSurface_GoForward(pThis%, iHandle%) :"_BS_ISteamHTMLSurface_GoForward@8"
BS_ISteamHTMLSurface_AddHeader(pThis%, iHandle%, cKey$, cValue$) :"_BS_ISteamHTMLSurface_AddHeader@16"
BS_ISteamHTMLSurface_ExecuteJavascript(pThis%, iHandle%, cScript$) :"_BS_ISteamHTMLSurface_ExecuteJavascript@12"
BS_ISteamHTMLSurface_MouseUp(pThis%, iHandle%, EMouseButton%) :"_BS_ISteamHTMLSurface_MouseUp@12"
BS_ISteamHTMLSurface_MouseDown(pThis%, iHandle%, EMouseButton%) :"_BS_ISteamHTMLSurface_MouseDown@12"
BS_ISteamHTMLSurface_MouseDoubleClick(pThis%, iHandle%, EMouseButton%) :"_BS_ISteamHTMLSurface_MouseDoubleClick@12"
BS_ISteamHTMLSurface_MouseMove(pThis%, iHandle%, X%, Y%) :"_BS_ISteamHTMLSurface_MouseMove@16"
BS_ISteamHTMLSurface_MouseWheel(pThis%, iHandle%, iDelta%) :"_BS_ISteamHTMLSurface_MouseWheel@12"
BS_ISteamHTMLSurface_KeyDown(pThis%, iHandle%, iKeyCode%, EHTMLKeyModifiers%) :"_BS_ISteamHTMLSurface_KeyDown@16"
BS_ISteamHTMLSurface_KeyUp(pThis%, iHandle%, iKeyCode%, EHTMLKeyModifiers%) :"_BS_ISteamHTMLSurface_KeyUp@16"
BS_ISteamHTMLSurface_KeyChar(pThis%, iHandle%, iUnicodeChar%, EHTMLKeyModifiers%):"_BS_ISteamHTMLSurface_KeyChar@16"
BS_ISteamHTMLSurface_SetHorizontalScroll(pThis%, iHandle%, iAbsolutePixelScroll%):"_BS_ISteamHTMLSurface_SetHorizontalScroll@16"
BS_ISteamHTMLSurface_SetVerticalScroll(pThis%, iHandle%, iAbsolutePixelScroll%) :"_BS_ISteamHTMLSurface_SetVerticalScroll@16"
BS_ISteamHTMLSurface_SetKeyFocus(pThis%, iHandle%, bHasKeyFocus%) :"_BS_ISteamHTMLSurface_SetKeyFocus@12"
BS_ISteamHTMLSurface_ViewSource(pThis%, iHandle%) :"_BS_ISteamHTMLSurface_ViewSource@8"
BS_ISteamHTMLSurface_CopyToClipboard(pThis%, iHandle%) :"_BS_ISteamHTMLSurface_CopyToClipboard@8"
BS_ISteamHTMLSurface_PasteFromClipboard(pThis%, iHandle%) :"_BS_ISteamHTMLSurface_PasteFromClipboard@8"
BS_ISteamHTMLSurface_Find(pThis%, iHandle%, cSearch$, bCurrentlyInFind%, bReverse%):"_BS_ISteamHTMLSurface_Find@20"
BS_ISteamHTMLSurface_StopFind(pThis%, iHandle%) :"_BS_ISteamHTMLSurface_StopFind@8"
BS_ISteamHTMLSurface_GetLinkAtPosition(pThis%, iHandle%, X%, Y%) :"_BS_ISteamHTMLSurface_GetLinkAtPosition@16"
BS_ISteamHTMLSurface_SetCookie(pThis%, iHandle%, cHostName$, cKey$, cValue$, cPath$, nExpires%, bSecure%, bHTTPOnly%):"_BS_ISteamHTMLSurface_SetCookie@36"
BS_ISteamHTMLSurface_SetPageScaleFactor(pThis%, iHandle%, fZoom#, iX%, iY%) :"_BS_ISteamHTMLSurface_SetPageScaleFactor@20"
BS_ISteamHTMLSurface_SetBackgroundMode(pThis%, iHandle%, bBackgroundMode%) :"_BS_ISteamHTMLSurface_SetBackgroundMode@12"
BS_ISteamHTMLSurface_AllowStartRequest(pThis%, iHandle%, bAllowed%) :"_BS_ISteamHTMLSurface_AllowStartRequest@12"
BS_ISteamHTMLSurface_JSDialogResponse(pThis%, iHandle%, bResult%) :"_BS_ISteamHTMLSurface_JSDialogResponse@12"
BS_ISteamHTMLSurface_FileLoadDialogResponse(pThis%, iHandle%, pcSelectedFiles%) :"_BS_ISteamHTMLSurface_FileLoadDialogResponse@12"
@@ -0,0 +1,54 @@
; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http:;www.gnu.org/licenses/>.
.lib "BlitzSteam.dll"
; HTTP ------------------------------------------------------------------------
BS_SteamHTTP%() :"_BS_SteamHTTP@0"
BS_SteamGameServerHTTP%() :"_BS_SteamGameServerHTTP@0"
BS_ISteamHTTP_CreateHTTPRequest%(pThis%, EHTTPRequestMethod%, cAbsoluteUrl$) :"_BS_ISteamHTTP_CreateHTTPRequest@12"
BS_ISteamHTTP_SetHTTPRequestContextValue%(pThis%, iRequest%, lContextValue%) :"_BS_ISteamHTTP_SetHTTPRequestContextValue@12"
BS_ISteamHTTP_SetHTTPNetworkActivityTimeout%(pThis%, iRequest%, iSeconds%) :"_BS_ISteamHTTP_SetHTTPNetworkActivityTimeout@12"
BS_ISteamHTTP_SetHTTPRequestHeaderValue%(pThis%, iRequest%, cName$, cValue$) :"_BS_ISteamHTTP_SetHTTPRequestHeaderValue@16"
BS_ISteamHTTP_SetHTTPRequestGetOrPostParameter%(pThis%, iRequest%, cName$, cValue$):"_BS_ISteamHTTP_SetHTTPRequestGetOrPostParameter@16"
BS_ISteamHTTP_SendHTTPRequest%(pThis%, iRequest, lCallHandle%) :"_BS_ISteamHTTP_SendHTTPRequest@12"
BS_ISteamHTTP_SendHTTPRequestAndStreamResponse%(pThis%, iRequest%, lCallHandle%):"_BS_ISteamHTTP_SendHTTPRequestAndStreamResponse@12"
BS_ISteamHTTP_DeferHTTPRequest%(pThis%, iRequest%) :"_BS_ISteamHTTP_DeferHTTPRequest@8"
BS_ISteamHTTP_PrioritizeHTTPRequest%(pThis%, iRequest%) :"_BS_ISteamHTTP_PrioritizeHTTPRequest@8"
BS_ISteamHTTP_GetHTTPResponseHeaderSize%(pThis%, iRequest%, cName$, piSize*) :"_BS_ISteamHTTP_GetHTTPResponseHeaderSize@16"
BS_ISteamHTTP_GetHTTPResponseHeaderSizeEx%(pThis%, iRequest%, cName$, piSize%) :"_BS_ISteamHTTP_GetHTTPResponseHeaderSize@16"
BS_ISteamHTTP_GetHTTPResponseHeaderValue%(pThis%, iRequest%, cName$, pBuffer*, iSize%):"_BS_ISteamHTTP_GetHTTPResponseHeaderValue@20"
BS_ISteamHTTP_GetHTTPResponseHeaderValueEx%(pThis%, iRequest%, cName$, pBuffer%, iSize%):"_BS_ISteamHTTP_GetHTTPResponseHeaderValue@20"
BS_ISteamHTTP_GetHTTPResponseBodySize%(pThis%, iRequest%, piSize*) :"_BS_ISteamHTTP_GetHTTPResponseBodySize@12"
BS_ISteamHTTP_GetHTTPResponseBodySizeEx%(pThis%, iRequest%, piSize%) :"_BS_ISteamHTTP_GetHTTPResponseBodySize@12"
BS_ISteamHTTP_GetHTTPResponseBodyData%(pThis%, iRequest%, pBuffer*, nSize%) :"_BS_ISteamHTTP_GetHTTPResponseBodyData@16"
BS_ISteamHTTP_GetHTTPResponseBodyDataEx%(pThis%, iRequest%, pBuffer%, nSize%) :"_BS_ISteamHTTP_GetHTTPResponseBodyData@16"
BS_ISteamHTTP_GetHTTPStreamingResponseBodyData%(pThis%, iRequest%, iOffset%, pBuffer*, nSize%):"_BS_ISteamHTTP_GetHTTPStreamingResponseBodyData@20"
BS_ISteamHTTP_GetHTTPStreamingResponseBodyDataEx%(pThis%, iRequest%, iOffset%, pBuffer%, nSize%):"_BS_ISteamHTTP_GetHTTPStreamingResponseBodyData@20"
BS_ISteamHTTP_ReleaseHTTPRequest%(pThis%, iRequest%) :"_BS_ISteamHTTP_ReleaseHTTPRequest@8"
BS_ISteamHTTP_GetHTTPDownloadProgressPct%(pThis%, iRequest%, pfPercent*) :"_BS_ISteamHTTP_GetHTTPDownloadProgressPct@12"
BS_ISteamHTTP_GetHTTPDownloadProgressPctEx%(pThis%, iRequest%, pfPercent%) :"_BS_ISteamHTTP_GetHTTPDownloadProgressPct@12"
BS_ISteamHTTP_SetHTTPRequestRawPostBody%(pThis%, iRequest%, cType$, pBody*, nSize%):"_BS_ISteamHTTP_SetHTTPRequestRawPostBody@16"
BS_ISteamHTTP_SetHTTPRequestRawPostBodyEx%(pThis%, iRequest%, cType$, pBody*, nSize%):"_BS_ISteamHTTP_SetHTTPRequestRawPostBody@16"
BS_ISteamHTTP_CreateCookieContainer%(pThis%, bAllowResponsesToModify%) :"_BS_ISteamHTTP_CreateCookieContainer@8"
BS_ISteamHTTP_ReleaseCookieContainer%(pThis%, iCookieContainer%) :"_BS_ISteamHTTP_ReleaseCookieContainer@8"
BS_ISteamHTTP_SetCookie%(pthis%, iCookieContainer%, cHost$, cUrl$, cCookie$) :"_BS_ISteamHTTP_SetCookie@20"
BS_ISteamHTTP_SetHTTPRequestCookieContainer%(pThis%, iRequest%, iCookieContainer%):"_BS_ISteamHTTP_SetHTTPRequestCookieContainer@12"
BS_ISteamHTTP_SetHTTPRequestUserAgentInfo%(pThis%, iRequest%, cUserAgent$) :"_BS_ISteamHTTP_SetHTTPRequestUserAgentInfo@12"
BS_ISteamHTTP_SetHTTPRequestRequiresVerifiedCertificate%(pThis%, iRequest%, bRequire%):"_BS_ISteamHTTP_SetHTTPRequestRequiresVerifiedCertificate@12"
BS_ISteamHTTP_SetHTTPRequestAbsoluteTimeoutMS%(pThis%, iRequest%, iMilliseconds%):"_BS_ISteamHTTP_SetHTTPRequestAbsoluteTimeoutMS@12"
BS_ISteamHTTP_GetHTTPRequestWasTimedOut%(pThis%, iRequest%, pbWasTimedOut*) :"_BS_ISteamHTTP_GetHTTPRequestWasTimedOut@12"
BS_ISteamHTTP_GetHTTPRequestWasTimedOutEx%(pThis%, iRequest%, pbWasTimedOut%) :"_BS_ISteamHTTP_GetHTTPRequestWasTimedOut@12"
@@ -0,0 +1,59 @@
; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http:;www.gnu.org/licenses/>.
.lib "BlitzSteam.dll"
; Inventory -------------------------------------------------------------------
BS_SteamInventory%() :"_BS_SteamInventory@0"
BS_SteamGameServerInventory%() :"_BS_SteamGameServerInventory@0"
BS_ISteamInventory_GetResultStatus%(pThis%, iResultHandle%) :"_BS_ISteamInventory_GetResultStatus@8"
BS_ISteamInventory_GetResultItems%(pThis%, iResultHandle%, pItemsArray*, piItemsArraySize*):"_BS_ISteamInventory_GetResultItems@16"
BS_ISteamInventory_GetResultItemsEx%(pThis%, iResultHandle%, pItemsArray%, piItemsArraySize%):"_BS_ISteamInventory_GetResultItems@16"
BS_ISteamInventory_GetResultTimestamp%(pThis%, iResultHandle%) :"_BS_ISteamInventory_GetResultTimestamp@8"
BS_ISteamInventory_CheckResultSteamID%(pThis%, iResultHandle%, lSteamIdExpected%):"_BS_ISteamInventory_GetResultTimestamp@12"
BS_ISteamInventory_DestroyResult(pThis%, iResultHandle%) :"_BS_ISteamInventory_DestroyResult@8"
BS_ISteamInventory_GetAllItems%(pThis%, piResultHandle*) :"_BS_ISteamInventory_GetAllItems@8"
BS_ISteamInventory_GetAllItemsEx%(pThis%, piResultHandle%) :"_BS_ISteamInventory_GetAllItems@8"
BS_ISteamInventory_GetItemsByID%(pThis%, piResultHandle*, plInstanceIds*, iInstanceIdCount%):"_BS_ISteamInventory_GetItemsByID@16"
BS_ISteamInventory_GetItemsByIDEx%(pThis%, piResultHandle%, plInstanceIds%, iInstanceIdCount%):"_BS_ISteamInventory_GetItemsByID@16"
BS_ISteamInventory_SerializeResult%(pThis%, iResultHandle%, pOutBuffer*, piOutBufferSize*):"_BS_ISteamInventory_SerializeResult@16"
BS_ISteamInventory_SerializeResultEx%(pThis%, iResultHandle%, pOutBuffer%, piOutBufferSize%):"_BS_ISteamInventory_SerializeResult@16"
BS_ISteamInventory_DeserializeResult%(pThis%, piResultHandle*, pBuffer*, iBufferSize%, bReservedMustBeFalse):"_BS_ISteamInventory_DeserializeResult@20"
BS_ISteamInventory_DeserializeResultEx%(pThis%, piResultHandle%, pBuffer%, iBufferSize%, bReservedMustBeFalse):"_BS_ISteamInventory_DeserializeResult@20"
BS_ISteamInventory_GenerateItems%(pThis%, piResultHandle*, piIdArray*, piQuantityArray*, iArrayLength%):"_BS_ISteamInventory_GenerateItems@20"
BS_ISteamInventory_GenerateItemsEx%(pThis%, piResultHandle%, piIdArray%, piQuantityArray%, iArrayLength%):"_BS_ISteamInventory_GenerateItems@20"
BS_ISteamInventory_GrantPromoItems%(pThis%, piResultHandle*) :"_BS_ISteamInventory_GrantPromoItems@8"
BS_ISteamInventory_GrantPromoItemsEx%(pThis%, piResultHandle%) :"_BS_ISteamInventory_GrantPromoItems@8"
BS_ISteamInventory_AddPromoItem%(pThis%, piResultHandle*, iId%) :"_BS_ISteamInventory_AddPromoItem@12"
BS_ISteamInventory_AddPromoItemEx%(pThis%, piResultHandle%, iId%) :"_BS_ISteamInventory_AddPromoItem@12"
BS_ISteamInventory_AddPromoItems%(pThis%, piResultHandle*, piIdsArray*, iArrayLength%):"_BS_ISteamInventory_AddPromoItems@16"
BS_ISteamInventory_AddPromoItemsEx%(pThis%, piResultHandle%, piIdsArray%, iArrayLength%):"_BS_ISteamInventory_AddPromoItems@16"
BS_ISteamInventory_ConsumeItem%(pThis%, piResultHandle*, iId%, iQuantity%) :"_BS_ISteamInventory_ConsumeItem@16"
BS_ISteamInventory_ConsumeItemEx%(pThis%, piResultHandle%, iId%, iQuantity%) :"_BS_ISteamInventory_ConsumeItem@16"
BS_ISteamInventory_ExchangeItems%(pThis%, piResultHandle*, piGenerateArray*, piGenerateQuantityArray*, iArrayGenerateLength%, piDestroyArray*, piDestroyQuantityArray*, iArrayDestroyLength%):"_BS_ISteamInventory_ExchangeItems@32"
BS_ISteamInventory_ExchangeItemsEx%(pThis%, piResultHandle%, piGenerateArray%, piGenerateQuantityArray%, iArrayGenerateLength%, piDestroyArray%, piDestroyQuantityArray%, iArrayDestroyLength%):"_BS_ISteamInventory_ExchangeItems@32"
BS_ISteamInventory_TransferItemQuantity%(pThis%, piResultHandle*, iSourceId%, iQuantity%, iDestId%):"_BS_ISteamInventory_TransferItemQuantity@20"
BS_ISteamInventory_TransferItemQuantityEx%(pThis%, piResultHandle%, iSourceId%, iQuantity%, iDestId%):"_BS_ISteamInventory_TransferItemQuantity@20"
BS_ISteamInventory_SendItemDropHeartbeat%(pThis%) :"_BS_ISteamInventory_SendItemDropHeartbeat@4"
BS_ISteamInventory_TriggerItemDrop%(pThis%, piResultHandle*, iDropListId%) :"_BS_ISteamInventory_TriggerItemDrop@12"
BS_ISteamInventory_TriggerItemDropEx%(pThis%, piResultHandle%, iDropListId%) :"_BS_ISteamInventory_TriggerItemDrop@12"
BS_ISteamInventory_TradeItems%(pThis%, piResultHandle*, lSteamIdPartner%, piArrayGive*, piArrayGiveQuantity*, iArrayGiveLength%, piArrayGet*, piArrayGetQuantity*, iArrayGetLength%):"_BS_ISteamInventory_TradeItems@36"
BS_ISteamInventory_TradeItemsEx%(pThis%, piResultHandle%, lSteamIdPartner%, piArrayGive%, piArrayGiveQuantity%, iArrayGiveLength%, piArrayGet%, piArrayGetQuantity%, iArrayGetLength%):"_BS_ISteamInventory_TradeItems@36"
BS_ISteamInventory_LoadItemDefinitions%(pThis%) :"_BS_ISteamInventory_LoadItemDefinitions@4"
BS_ISteamInventory_GetItemDefinitionIDs%(pThis%, piArrayId*, piArrayIdSize*) :"_BS_ISteamInventory_GetItemDefinitionIDs@12"
BS_ISteamInventory_GetItemDefinitionIDsEx%(pThis%, piArrayId%, piArrayIdSize%) :"_BS_ISteamInventory_GetItemDefinitionIDs@12"
BS_ISteamInventory_GetItemDefinitionProperty%(pThis%, iId%, cName$, pcValueBuffer*, piValueBufferSize*):"_BS_ISteamInventory_GetItemDefinitionProperty@20"
BS_ISteamInventory_GetItemDefinitionPropertyEx%(pThis%, iId%, cName$, pcValueBuffer%, piValueBufferSize%):"_BS_ISteamInventory_GetItemDefinitionProperty@20"
@@ -0,0 +1,21 @@
; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http:;www.gnu.org/licenses/>.
.lib "BlitzSteam.dll"
; Matchmaking -----------------------------------------------------------------
BS_SteamMatchmaking%() :"_BS_SteamMatchmaking@0"
; Todo
@@ -0,0 +1,42 @@
; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http:;www.gnu.org/licenses/>.
.lib "BlitzSteam.dll"
; MatchmakingServers ----------------------------------------------------------
BS_SteamMatchmakingServers%() :"_BS_SteamMatchmakingServers@0"
BS_ISteamMatchmakingServers_RequestInternetServerList%(pThis%, iApp%, ppchFilters*, nFilters%, pRequestServersResponse%):"_BS_ISteamMatchmakingServers_RequestInternetServerList@20"
BS_ISteamMatchmakingServers_RequestInternetServerListEx%(pThis%, iApp%, ppchFilters%, nFilters%, pRequestServersResponse%):"_BS_ISteamMatchmakingServers_RequestInternetServerList@20"
BS_ISteamMatchmakingServers_RequestLANServerList%(pThis%, iApp%, pRequestServersResponse%):"_BS_ISteamMatchmakingServers_RequestLANServerList@12"
BS_ISteamMatchmakingServers_RequestFriendsServerList%(pThis%, iApp%, ppchFilters*, nFilters%, pRequestServersResponse%):"_BS_ISteamMatchmakingServers_RequestFriendsServerList@20"
BS_ISteamMatchmakingServers_RequestFriendsServerListEx%(pThis%, iApp%, ppchFilters%, nFilters%, pRequestServersResponse%):"_BS_ISteamMatchmakingServers_RequestFriendsServerList@20"
BS_ISteamMatchmakingServers_RequestFavoritesServerList%(pThis%, iApp%, ppchFilters*, nFilters%, pRequestServersResponse%):"_BS_ISteamMatchmakingServers_RequestFavoritesServerList@20"
BS_ISteamMatchmakingServers_RequestFavoritesServerListEx%(pThis%, iApp%, ppchFilters%, nFilters%, pRequestServersResponse%):"_BS_ISteamMatchmakingServers_RequestFavoritesServerList@20"
BS_ISteamMatchmakingServers_RequestHistoryServerList%(pThis%, iApp%, ppchFilters*, nFilters%, pRequestServersResponse%):"_BS_ISteamMatchmakingServers_RequestHistoryServerList@20"
BS_ISteamMatchmakingServers_RequestHistoryServerListEx%(pThis%, iApp%, ppchFilters%, nFilters%, pRequestServersResponse%):"_BS_ISteamMatchmakingServers_RequestHistoryServerList@20"
BS_ISteamMatchmakingServers_RequestSpectatorServerList%(pThis%, iApp%, ppchFilters*, nFilters%, pRequestServersResponse%):"_BS_ISteamMatchmakingServers_RequestSpectatorServerList@20"
BS_ISteamMatchmakingServers_RequestSpectatorServerListEx%(pThis%, iApp%, ppchFilters%, nFilters%, pRequestServersResponse%):"_BS_ISteamMatchmakingServers_RequestSpectatorServerList@20"
BS_ISteamMatchmakingServers_ReleaseRequest%(pThis%, hServerListRequest%) :"_BS_ISteamMatchmakingServers_ReleaseRequest@8"
BS_ISteamMatchmakingServers_GetServerDetails%(pThis%, hRequest%, iServer%) :"_BS_ISteamMatchmakingServers_GetServerDetails@12"
BS_ISteamMatchmakingServers_CancelQuery%(pThis%, hRequest%) :"_BS_ISteamMatchmakingServers_CancelQuery@8"
BS_ISteamMatchmakingServers_RefreshQuery%(pThis%, hRequest%) :"_BS_ISteamMatchmakingServers_RefreshQuery@8"
BS_ISteamMatchmakingServers_IsRefreshing%(pThis%, hRequest%) :"_BS_ISteamMatchmakingServers_IsRefreshing@8"
BS_ISteamMatchmakingServers_GetServerCount%(pThis%, hRequest%) :"_BS_ISteamMatchmakingServers_GetServerCount@8"
BS_ISteamMatchmakingServers_RefreshServer%(pThis%, hRequest%) :"_BS_ISteamMatchmakingServers_RefreshServer@8"
BS_ISteamMatchmakingServers_PingServer%(pThis%, unIP%, usPort%, pRequestServersResponse%):"_BS_ISteamMatchmakingServers_PingServer@16"
BS_ISteamMatchmakingServers_PlayerDetails%(pThis%, unIP%, usPort%, pRequestServersResponse%):"_BS_ISteamMatchmakingServers_PlayerDetails@16"
BS_ISteamMatchmakingServers_ServerRules%(pThis%, unIP%, usPort%, pRequestServersResponse%):"_BS_ISteamMatchmakingServers_ServerRules@16"
BS_ISteamMatchmakingServers_CancelServerQuery%(pThis%, hServerQuery) :"_BS_ISteamMatchmakingServers_CancelServerQuery@8"
@@ -0,0 +1,78 @@
; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http:;www.gnu.org/licenses/>.
.lib "BlitzSteam.dll"
; ISteamMatchmakingServerListResponse -----------------------------------------
BS_ISteamMatchmakingServerListResponse_New%(Data%, pServerResponded%, pServerFailedToRespond%, pRefreshComplete%):"_BS_ISteamMatchmakingServerListResponse_New@16"
BS_ISteamMatchmakingServerListResponse_Destroy%(pThis%):"_BS_ISteamMatchmakingServerListResponse_Destroy@4"
;- Callback pServerResponded: Function(Data%, hRequest%, iServer%)
;- Callback pServerFailedToRespond: Function(Data%, hRequest%, iServer%)
;- Callback pRefreshComplete: Function(Data%)
; ISteamMatchmakingPingResponse -----------------------------------------------
BS_ISteamMatchmakingPingResponse_New%(Data%, pServerResponded%, pServerFailedToRespond%):"_BS_ISteamMatchmakingPingResponse_New@12"
BS_ISteamMatchmakingPingResponse_Destroy%(pThis%):"_BS_ISteamMatchmakingPingResponse_Destroy@4"
;- Callback pServerResponded: Function(Data%, TGameServerItem%)
;- Callback pServerFailedToRespond: Function(Data%)
; ISteamMatchmakingPlayersResponse --------------------------------------------
BS_ISteamMatchmakingPlayersResponse_New%(Data%, pAddPlayerToList%, pPlayersFailedToRespond%, pPlayersRefreshComplete%):"_BS_ISteamMatchmakingPlayersResponse_New@16"
BS_ISteamMatchmakingPlayersResponse_Destroy%(pThis%):"_BS_ISteamMatchmakingPlayersResponse_Destroy@4"
;- Callback pAddPlayerToList: Function(Data%, pchName%, nScore%, flTimePlayer#)
;- Callback pPlayersFailedToRespond: Function(Data%)
;- Callback pPlayersRefreshComplete: Function(Data%)
; ISteamMatchmakingRulesResponse ----------------------------------------------
BS_ISteamMatchmakingRulesResponse_New%(Data%, pRulesResponded%, pRulesFailedToRespond%, pRulesRefreshComplete%):"_BS_ISteamMatchmakingRulesResponse_New@16"
BS_ISteamMatchmakingRulesResponse_Destroy%(pThis%):"_BS_ISteamMatchmakingPlayersResponse_Destroy@4"
;- Callback pRulesResponded: Function(Data%, pchRule%, pchValue%)
;- Callback pRulesFailedToRespond: Function(Data%)
;- Callback pRulesRefreshComplete: Function(Data%)
; TGameServerItem -------------------------------------------------------------
BS_TGameServerItem_GetName$(pThis%) :"_BS_TGameServerItem_GetName@4"
BS_TGameServerItem_SetName(pThis%, cName$) :"_BS_TGameServerItem_SetName@8"
BS_TGameServerItem_NetAdr%(pThis%) :"_BS_TGameServerItem_NetAdr@4"
BS_TGameServerItem_Ping%(pThis%) :"_BS_TGameServerItem_Ping@4"
BS_TGameServerItem_HadSuccessfulResponse%(pThis%) :"_BS_TGameServerItem_HadSuccessfulResponse@4"
BS_TGameServerItem_DoNotRefresh%(pThis%) :"_BS_TGameServerItem_DoNotRefresh@4"
BS_TGameServerItem_GameDir$(pThis%) :"_BS_TGameServerItem_GameDir@4"
BS_TGameServerItem_Map$(pThis%) :"_BS_TGameServerItem_Map@4"
BS_TGameServerItem_GameDescription$(pThis%) :"_BS_TGameServerItem_GameDescription@4"
BS_TGameServerItem_AppId%(pThis%) :"_BS_TGameServerItem_AppId@4"
BS_TGameServerItem_Players%(pThis%) :"_BS_TGameServerItem_Players@4"
BS_TGameServerItem_MaxPlayers%(pThis%) :"_BS_TGameServerItem_MaxPlayers@4"
BS_TGameServerItem_BotPlayers%(pThis%) :"_BS_TGameServerItem_BotPlayers@4"
BS_TGameServerItem_Password%(pThis%) :"_BS_TGameServerItem_Password@4"
BS_TGameServerItem_Secure%(pThis%) :"_BS_TGameServerItem_Secure@4"
BS_TGameServerItem_TimeLastPlayed%(pThis%) :"_BS_TGameServerItem_TimeLastPlayed@4"
BS_TGameServerItem_ServerVersion%(pThis%) :"_BS_TGameServerItem_ServerVersion@4"
BS_TGameServerItem_GameTags$(pThis%) :"_BS_TGameServerItem_GameTags@4"
BS_TGameServerItem_SteamID%(pThis%) :"_BS_TGameServerItem_SteamID@4"
; TServerNetAdr ---------------------------------------------------------------
BS_TServerNetAdr_Set(pThis%, pThat%) :"_BS_TServerNetAdr_Set@8"
BS_TServerNetAdr_Init(pThis%, iIP%, iQueryPort%, iConnectionPort%) :"_BS_TServerNetAdr_Init@16"
BS_TServerNetAdr_GetQueryPort%(pThis%) :"_BS_TServerNetAdr_GetQueryPort@4"
BS_TServerNetAdr_SetQueryPort(pThis%, iPort%) :"_BS_TServerNetAdr_SetQueryPort@8"
BS_TServerNetAdr_GetConnectionPort%(pThis%) :"_BS_TServerNetAdr_GetConnectionPort@4"
BS_TServerNetAdr_SetConnectionPort(pThis%, iPort%) :"_BS_TServerNetAdr_SetConnectionPort@8"
BS_TServerNetAdr_GetIP%(pThis%) :"_BS_TServerNetAdr_GetIP@4"
BS_TServerNetAdr_SetIP(pThis%, iIP%) :"_BS_TServerNetAdr_SetIP@8"
BS_TServerNetAdr_GetConnectionAddressString$(pThis%) :"_BS_TServerNetAdr_GetConnectionAddressString@4"
BS_TServerNetAdr_GetQueryAddressString$(pThis%) :"_BS_TServerNetAdr_GetQueryAddressString@4"
BS_TServerNetAdr_Compare%(pThis%, pThat%) :"_BS_TServerNetAdr_Compare@8"
@@ -0,0 +1,21 @@
; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http:;www.gnu.org/licenses/>.
.lib "BlitzSteam.dll"
; Music -----------------------------------------------------------------------
BS_SteamMusic%() :"_BS_SteamMusic@0"
; Todo
@@ -0,0 +1,21 @@
; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http:;www.gnu.org/licenses/>.
.lib "BlitzSteam.dll"
; MusicRemote -----------------------------------------------------------------
BS_SteamMusicRemote%() :"_BS_SteamMusicRemote@0"
; Todo
@@ -0,0 +1,32 @@
; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http:;www.gnu.org/licenses/>.
.lib "BlitzSteam.dll"
; Networking ------------------------------------------------------------------
BS_SteamNetworking%() :"_BS_SteamNetworking@0"
BS_SteamGameServerNetworking%() :"_BS_SteamGameServerNetworking@0"
BS_ISteamNetworking_SendP2PPacket%(pThis%, lRemoteSteamId%, pData*, iDataSize%, EP2PSendType%, iChannel%):"_BS_ISteamNetworking_SendP2PPacket@24"
BS_ISteamNetworking_SendP2PPacketEx%(pThis%, lRemoteSteamId%, pData%, iDataSize%, EP2PSendType%, iChannel%):"_BS_ISteamNetworking_SendP2PPacket@24"
BS_ISteamNetworking_IsP2PPacketAvailable%(pThis%, piSize*, iChannel%) :"_BS_ISteamNetworking_IsP2PPacketAvailable@12"
BS_ISteamNetworking_IsP2PPacketAvailableEx%(pThis%, piSize%, iChannel%) :"_BS_ISteamNetworking_IsP2PPacketAvailable@12"
BS_ISteamNetworking_ReadP2PPacket%(pThis%, pBuffer*, iBufferSize%, piMessageSize*, plRemoteSteamId*, iChannel%):"_BS_ISteamNetworking_ReadP2PPacket@24"
BS_ISteamNetworking_ReadP2PPacketEx%(pThis%, pBuffer%, iBufferSize%, piMessageSize%, plRemoteSteamId%, iChannel%):"_BS_ISteamNetworking_ReadP2PPacket@24"
BS_ISteamNetworking_AcceptP2PSessionWithUser%(pThis%, lRemoteSteamId%) :"_BS_ISteamNetworking_AcceptP2PSessionWithUser@8"
BS_ISteamNetworking_CloseP2PSessionWithUser%(pThis%, lRemoteSteamId%) :"_BS_ISteamNetworking_CloseP2PSessionWithUser@8"
BS_ISteamNetworking_CloseP2PChannelWithUser%(pThis%, lRemoteSteamId%, iChannel%):"_BS_ISteamNetworking_CloseP2PChannelWithUser@12"
BS_ISteamNetworking_GetP2PSessionState%(pThis%, lRemoteSteamId%, pConnectionState*):"_BS_ISteamNetworking_GetP2PSessionState@12"
BS_ISteamNetworking_AllowP2PPacketRelay%(pThis%, bAllow%) :"_BS_ISteamNetworking_AllowP2PPacketRelay@8"
@@ -0,0 +1,21 @@
; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http:;www.gnu.org/licenses/>.
.lib "BlitzSteam.dll"
; RemoteStorage ---------------------------------------------------------------
BS_SteamRemoteStorage%() :"_BS_SteamRemoteStorage@0"
; Todo
@@ -0,0 +1,21 @@
; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http:;www.gnu.org/licenses/>.
.lib "BlitzSteam.dll"
; Screenshots -----------------------------------------------------------------
BS_SteamScreenshots%() :"_BS_SteamScreenshots@0"
; Todo
+22
View File
@@ -0,0 +1,22 @@
; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http:;www.gnu.org/licenses/>.
.lib "BlitzSteam.dll"
; UGC -------------------------------------------------------------------------
BS_SteamUGC%() :"_BS_SteamUGC@0"
BS_SteamGameServerUGC%() :"_BS_SteamGameServerUGC@0"
; Todo
@@ -0,0 +1,20 @@
; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http:;www.gnu.org/licenses/>.
.lib "BlitzSteam.dll"
; UnifiedMessages -------------------------------------------------------------
BS_SteamUnifiedMessages%() :"_BS_SteamUnifiedMessages@0"
@@ -0,0 +1,49 @@
; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http:;www.gnu.org/licenses/>.
.lib "BlitzSteam.dll"
; User ------------------------------------------------------------------------
BS_SteamUser%() :"_BS_SteamUser@0"
BS_ISteamUser_GetHSteamUser%(pThis%) :"_BS_ISteamUser_GetHSteamUser@4"
BS_ISteamUser_IsLoggedOn%(pThis%) :"_BS_ISteamUser_IsLoggedOn@4"
BS_ISteamUser_GetSteamID%(pThis%) :"_BS_ISteamUser_GetSteamID@4"
BS_ISteamUser_InitiateGameConnection%(pThis%, pAuthBlob*, iAuthBlobSize%, lSteamId%, iIp%, sPort%, bSecure%):"_BS_ISteamUser_InitiateGameConnection@28"
BS_ISteamUser_InitiateGameConnectionEx%(pThis%, pAuthBlob%, iAuthBlobSize%, lSteamId%, iIp%, sPort%, bSecure%):"_BS_ISteamUser_InitiateGameConnection@28"
BS_ISteamUser_TerminateGameConnection(pThis%, iIp%, sPort%) :"_BS_ISteamUser_TerminateGameConnection@12"
BS_ISteamUser_TrackAppUsageEvent(pThis%, iAppId%, EAppUsageEvent%, cExtraInfo$) :"_BS_ISteamUser_TrackAppUsageEvent@16"
BS_ISteamUser_GetUserDataFolder%(pThis%, pBuffer*, iBufferSize%) :"_BS_ISteamUser_GetUserDataFolder@12"
BS_ISteamUser_StartVoiceRecording(pThis%) :"_BS_ISteamUser_StartVoiceRecording@4"
BS_ISteamUser_StopVoiceRecording(pThis%) :"_BS_ISteamUser_StopVoiceRecording@4"
BS_ISteamUser_GetAvailableVoice%(pThis%, pCompressed*, pUncompressed*, nDesiredSampleRate%):"_BS_ISteamUser_GetAvailableVoice@16"
BS_ISteamUser_GetAvailableVoiceEx%(pThis%, pCompressed%, pUncompressed%, nDesiredSampleRate%):"_BS_ISteamUser_GetAvailableVoice@16"
BS_ISteamUser_GetVoice%(pThis%, bCompressed%, pCompressed*, iCompressedSize%, piCompressedBytesWritten*, bUncompressed%, pUncompressed*, iUncompressedSize%, piUncompressedBytesWritten*, iSampleRate%):"_BS_ISteamUser_GetVoice@36"
BS_ISteamUser_GetVoiceEx%(pThisEx%, bCompressed%, pCompressed%, iCompressedSize%, piCompressedBytesWritten%, bUncompressed%, pUncompressed%, iUncompressedSize%, piUncompressedBytesWritten%, iSampleRate%):"_BS_ISteamUser_GetVoice@36"
BS_ISteamUser_DecompressVoice(pThis%, pCompressed*, iCompressedSize%, pUncompressed*, iUncompressedSize%, iUncompressedBytesWritten*, iSampleRate%):"_BS_ISteamUser_DecompressVoice@28"
BS_ISteamUser_DecompressVoiceEx(pThis%, pCompressed*, iCompressedSize%, pUncompressed%, iUncompressedSize%, iUncompressedBytesWritten%, iSampleRate%):"_BS_ISteamUser_DecompressVoice@28"
BS_ISteamUser_GetVoiceOptimalSampleRate%(pThis%) :"_BS_ISteamUser_GetVoiceOptimalSampleRate@4"
BS_ISteamUser_GetAuthSessionTicket%(pThis%, pTicket*, iTicketSize%, piTicketSize*):"_BS_ISteamUser_GetAuthSessionTicket@16"
BS_ISteamUser_BeginAuthSession%(pThis%, pAuthTicket*, iAuthTicketSize%, lSteamId%):"_BS_ISteamUser_BeginAuthSession@16"
BS_ISteamUser_EndAuthSession(pThis%, lSteamId%) :"_BS_ISteamUser_EndAuthSession@8"
BS_ISteamUser_CancelAuthTicket(pThis%, hAuthTicket%) :"_BS_ISteamUser_CancelAuthTicket@8"
BS_ISteamUser_UserHasLicenseForApp%(pThis%, lSteamId%, iAppId%) :"_BS_ISteamUser_UserHasLicenseForApp@12"
BS_ISteamUser_IsBehindNAT%(pThis%) :"_BS_ISteamUser_IsBehindNAT@4"
BS_ISteamUser_AdvertiseGame%(pThis%, lSteamId%, iIp%, sPort%) :"_BS_ISteamUser_AdvertiseGame@16"
BS_ISteamUser_RequestEncryptedAppTicket%(pThis%, pData*, iDataSize%) :"_BS_ISteamUser_RequestEncryptedAppTicket@12"
BS_ISteamUser_GetEncryptedAppTicket%(pThis%, pTicket*, iTicketSize%, piTicketSize*):"_BS_ISteamUser_GetEncryptedAppTicket@16"
BS_ISteamUser_GetGameBadgeLevel%(pThis%, iSeries%, bFoil%) :"_BS_ISteamUser_GetGameBadgeLevel@12"
BS_ISteamUser_GetPlayerSteamLevel%(pThis%) :"_BS_ISteamUser_GetPlayerSteamLevel@4"
BS_ISteamUser_RequestStoreAuthURL%(pThis%, cRedirectUrl$) :"_BS_ISteamUser_RequestStoreAuthURL@8"
@@ -0,0 +1,77 @@
; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http:;www.gnu.org/licenses/>.
.lib "BlitzSteam.dll"
; UserStats -------------------------------------------------------------------
BS_SteamUserStats%() :"_BS_ISteamUserStats@0"
BS_ISteamUserStats_RequestCurrentStats%(pThis%) :"_BS_ISteamUserStats_RequestCurrentStats@4"
BS_ISteamUserStats_GetStat%(pThis%, cName$, pData*) :"_BS_ISteamUserStats_GetStat@12"
BS_ISteamUserStats_GetStatEx%(pThis%, cName$, pData%) :"_BS_ISteamUserStats_GetStat@12"
BS_ISteamUserStats_GetStatF%(pThis%, cName$, pData*) :"_BS_ISteamUserStats_GetStatF@12"
BS_ISteamUserStats_GetStatFEx%(pThis%, cName$, pData%) :"_BS_ISteamUserStats_GetStatF@12"
BS_ISteamUserStats_SetStat%(pThis%, cName$, pData%) :"_BS_ISteamUserStats_SetStat@12"
BS_ISteamUserStats_SetStatF%(pThis%, cName$, pData#) :"_BS_ISteamUserStats_SetStatF@12"
BS_ISteamUserStats_UpdateAvgRateStat%(pThis%, cName$, fCountThisSession#, dSessionLength%) :"_BS_ISteamUserStats_UpdateAvgRateStat@16"
BS_ISteamUserStats_GetAchievement%(pThis%, cName$, pbAchieved*) :"_BS_ISteamUserStats_GetAchievement@12"
BS_ISteamUserStats_GetAchievementEx%(pThis%, cName$, pbAchieved%) :"_BS_ISteamUserStats_GetAchievement@12"
BS_ISteamUserStats_SetAchievement%(pThis%, cName$) :"_BS_ISteamUserStats_SetAchievement@8"
BS_ISteamUserStats_ClearAchievement%(pThis%, cName$) :"_BS_ISteamUserStats_ClearAchievement@8"
BS_ISteamUserStats_GetAchievementAndUnlockTime%(pThis%, cName$, pbAchieved*, piUnlockTime*) :"_BS_ISteamUserStats_GetAchievementAndUnlockTime@16"
BS_ISteamUserStats_GetAchievementAndUnlockTimeEx%(pThis%, cName$, pbAchieved%, piUnlockTime%) :"_BS_ISteamUserStats_GetAchievementAndUnlockTime@16"
BS_ISteamUserStats_StoreStats%(pThis%) :"_BS_ISteamUserStats_StoreStats@4"
BS_ISteamUserStats_GetAchievementIcon%(pThis%, cName$) :"_BS_ISteamUserStats_GetAchievementIcon@8"
BS_ISteamUserStats_GetAchievementDisplayAttribute$(pThis%, cName$, cKey$) :"_BS_ISteamUserStats_GetAchievementDisplayAttribute@12"
BS_ISteamUserStats_IndicateAchievementProgress%(pThis%, cName$, iProgress%, iMaxProgress%) :"_BS_ISteamUserStats_IndicateAchievementProgress@16"
BS_ISteamUserStats_GetNumAchievements%(pThis%) :"_BS_ISteamUserStats_GetNumAchievements@4"
BS_ISteamUserStats_GetAchievementName$(pThis%, iAchievement%) :"_BS_ISteamUserStats_GetAchievementName@8"
BS_ISteamUserStats_RequestUserStats%(pThis%, lSteamId%) :"_BS_ISteamUserStats_RequestUserStats@8"
BS_ISteamUserStats_GetUserStat%(pThis%, lSteamId%, cName$, pData*) :"_BS_ISteamUserStats_GetUserStat@16"
BS_ISteamUserStats_GetUserStatEx%(pThis%, lSteamId%, cName$, pData%) :"_BS_ISteamUserStats_GetUserStat@16"
BS_ISteamUserStats_GetUserStatF%(pThis%, lSteamId%, cName$, pData*) :"_BS_ISteamUserStats_GetUserStatF@16"
BS_ISteamUserStats_GetUserStatFEx%(pThis%, lSteamId%, cName$, pData%) :"_BS_ISteamUserStats_GetUserStatF@16"
BS_ISteamUserStats_GetUserAchievement%(pThis%, lSteamId%, cName$, pbAchieved*) :"_BS_ISteamUserStats_GetUserAchievement@16"
BS_ISteamUserStats_GetUserAchievementEx%(pThis%, lSteamId%, cName$, pbAchieved%) :"_BS_ISteamUserStats_GetUserAchievement@16"
BS_ISteamUserStats_GetUserAchievementAndUnlockTime%(pThis%, lSteamId%, cName$, pbAchieved*, piUnlockTime*) :"_BS_ISteamUserStats_GetUserAchievementAndUnlockTime@20"
BS_ISteamUserStats_GetUserAchievementAndUnlockTimeEx%(pThis%, lSteamId%, cName$, pbAchieved%, piUnlockTime%) :"_BS_ISteamUserStats_GetUserAchievementAndUnlockTime@20"
BS_ISteamUserStats_ResetAllStats%(pThis%, bAchievementsToo%) :"_BS_ISteamUserStats_ResetAllStats@8"
BS_ISteamUserStats_FindOrCreateLeaderboard%(pThis%, cLeaderboardName$, eLeaderboardSortMethod%, eLeaderboardDisplayType%) :"_BS_ISteamUserStats_FindOrCreateLeaderboard@16"
BS_ISteamUserStats_FindLeaderboard%(pThis%, cLeaderboardName$) :"_BS_ISteamUserStats_FindLeaderboard@8"
BS_ISteamUserStats_GetLeaderboardName$(pThis%, hSteamLeaderboard%) :"_BS_ISteamUserStats_GetLeaderboardName@8"
BS_ISteamUserStats_GetLeaderboardEntryCount%(pThis%, hSteamLeaderboard%) :"_BS_ISteamUserStats_GetLeaderboardEntryCount@8"
BS_ISteamUserStats_GetLeaderboardSortMethod%(pThis%, hSteamLeaderboard%) :"_BS_ISteamUserStats_GetLeaderboardSortMethod@8"
BS_ISteamUserStats_GetLeaderboardDisplayType%(pThis%, hSteamLeaderboard%) :"_BS_ISteamUserStats_GetLeaderboardDisplayType@8"
BS_ISteamUserStats_DownloadLeaderboardEntries%(pThis%, hSteamLeaderboard%, eLeaderboardDataRequest%, iRangeStart%, iRangeEnd%) :"_BS_ISteamUserStats_DownloadLeaderboardEntries@20"
BS_ISteamUserStats_DownloadLeaderboardEntriesForUsers%(pThis%, hSteamLeaderboard%, plUsers*, iUserCount%) :"_BS_ISteamUserStats_DownloadLeaderboardEntriesForUsers@16"
BS_ISteamUserStats_DownloadLeaderboardEntriesForUsersEx%(pThis%, hSteamLeaderboard%, plUsers%, iUserCount%) :"_BS_ISteamUserStats_DownloadLeaderboardEntriesForUsers@16"
BS_ISteamUserStats_GetDownloadedLeaderboardEntry%(lpSteamUsers%, hSteamLeaderboardEntries%, iIndex%, pLeaderboardEntry*, pDetails*, iDetailsMax%) :"_BS_ISteamUserStats_GetDownloadedLeaderboardEntry@24"
BS_ISteamUserStats_GetDownloadedLeaderboardEntryEx%(lpSteamUsers%, hSteamLeaderboardEntries%, iIndex%, pLeaderboardEntry%, pDetails%, iDetailsMax%) :"_BS_ISteamUserStats_GetDownloadedLeaderboardEntry@24"
BS_ISteamUserStats_UploadLeaderboardScore%(pThis%, hSteamLeaderboard%, eLeaderboardUploadScoreMethod%, iScore%, pScoreDetails*, iScoreDetailsCount%) :"_BS_ISteamUserStats_UploadLeaderboardScore@24"
BS_ISteamUserStats_UploadLeaderboardScoreEx%(pThis%, hSteamLeaderboard%, eLeaderboardUploadScoreMethod%, iScore%, pScoreDetails%, iScoreDetailsCount%) :"_BS_ISteamUserStats_UploadLeaderboardScore@24"
BS_ISteamUserStats_AttachLeaderboardUGC%(pThis%, hSteamLeaderboard%, hUGC%) :"_BS_ISteamUserStats_AttachLeaderboardUGC@12"
BS_ISteamUserStats_GetNumberOfCurrentPlayers%(pThis%) :"_BS_ISteamUserStats_GetNumberOfCurrentPlayers@4"
BS_ISteamUserStats_RequestGlobalAchievementPercentages%(pThis%) :"_BS_ISteamUserStats_RequestGlobalAchievementPercentages@4"
BS_ISteamUserStats_GetMostAchievedAchievementInfo%(pThis%, cName$, iNameLength%, pfPercent*, pbAchieved*) :"_BS_ISteamUserStats_GetMostAchievedAchievementInfo@20"
BS_ISteamUserStats_GetMostAchievedAchievementInfoEx%(pThis%, cName$, iNameLength%, pfPercent%, pbAchieved%) :"_BS_ISteamUserStats_GetMostAchievedAchievementInfo@20"
BS_ISteamUserStats_GetNextMostAchievedAchievementInfo%(pThis%, iIteratorPrevious%, cName$, iNameLength%, pfPercent*, pbAchieved*) :"_BS_ISteamUserStats_GetNextMostAchievedAchievementInfo@24"
BS_ISteamUserStats_GetNextMostAchievedAchievementInfoEx%(pThis%, iIteratorPrevious%, cName$, iNameLength%, pfPercent%, pbAchieved%) :"_BS_ISteamUserStats_GetNextMostAchievedAchievementInfo@24"
BS_ISteamUserStats_GetAchievementAchievedPercent%(pThis%, cName$, pfPercent*) :"_BS_ISteamUserStats_GetAchievementAchievedPercent@12"
BS_ISteamUserStats_GetAchievementAchievedPercentEx%(pThis%, cName$, pfPercent%) :"_BS_ISteamUserStats_GetAchievementAchievedPercent@12"
BS_ISteamUserStats_RequestGlobalStats%(pThis%, iHistoryDays%) :"_BS_ISteamUserStats_RequestGlobalStats@8"
BS_ISteamUserStats_GetGlobalStatL%(pThis, cStatName$, plData%) :"_BS_ISteamUserStats_GetGlobalStatL@12"
BS_ISteamUserStats_GetGlobalStatD%(pThis, cStatName$, pdData%) :"_BS_ISteamUserStats_GetGlobalStatD@12"
BS_ISteamUserStats_GetGlobalStatHistoryL%(pThis, cStatName$, plDataArray%, iDataSize%) :"_BS_ISteamUserStats_GetGlobalStatHistoryL@16"
BS_ISteamUserStats_GetGlobalStatHistoryD%(pThis, cStatName$, pdDataArray%, iDataSize%) :"_BS_ISteamUserStats_GetGlobalStatHistoryD@16"
@@ -0,0 +1,21 @@
; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http:;www.gnu.org/licenses/>.
.lib "BlitzSteam.dll"
; Utils -----------------------------------------------------------------------
BS_SteamUtils%() :"_BS_SteamUtils@0"
BS_SteamGameServerUtils%() :"_BS_SteamGameServerUtils@0"
@@ -0,0 +1,20 @@
; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http:;www.gnu.org/licenses/>.
.lib "BlitzSteam.dll"
; Utils -----------------------------------------------------------------------
BS_SteamVideo%() :"_BS_SteamVideo@0"
+66
View File
@@ -0,0 +1,66 @@
; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http://www.gnu.org/licenses/>.
Include "../BlitzSteam.bb"
; Initialize Steam before your next call to Graphics.
If BS_SteamAPI_Init() = False Then
RuntimeError "Steam: Failed to initialize!"
EndIf
Const FPS = 30
Const FPS_MULT# = 1.0 / FPS
; Demo Scene
Graphics3D 1024, 768, 32, 2
SetBuffer BackBuffer()
Local demoTimer = CreateTimer(FPS)
Local demoRoot = CreatePivot()
Local demoCameraRoot = CreatePivot(demoRoot)
Local demoCamera = CreateCamera(demoCameraRoot)
MoveEntity demoCamera, 0, 0, -10
Local demoCube = CreateCube(demoRoot)
Local EndGame = False
Repeat
Cls
;! Update
; End on Escape
EndGame = KeyHit(1)
TurnEntity demoCube, 1 * FPS_MULT, 3 * FPS_MULT, 2.332 * FPS_MULT
;! Render 3D
RenderWorld
;! Render 2D
Text 0, 0, "Escape to Quit"
;! Update Window
Flip 0
WaitTimer(demoTimer)
Until EndGame = True
; Shut down Steam as the last action of your program.
BS_SteamAPI_Shutdown()
End
;~IDEal Editor Parameters:
;~C#Blitz3D
+128
View File
@@ -0,0 +1,128 @@
; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http://www.gnu.org/licenses/>.
Include "../BlitzSteam.bb"
; Initialize Steam before your next call to Graphics.
If BS_SteamAPI_Init() = False Then
RuntimeError "Steam: Failed to initialize!"
EndIf
Const FPS = 30
Const FPS_MULT# = 1.0 / FPS
; Demo Scene
Graphics3D 1024, 768, 32, 2
SetBuffer BackBuffer()
Local demoTimer = CreateTimer(FPS)
Local demoRoot = CreatePivot()
Local demoCameraRoot = CreatePivot(demoRoot)
Local demoCamera = CreateCamera(demoCameraRoot)
MoveEntity demoCamera, 0, 0, -10
Local demoCube = CreateCube(demoRoot)
; SteamAppList stuff
Type SteamAppList
Field AppId%
Field Name$
Field InstallDir$
Field BuildId%
End Type
Global SteamAppList_Count%
Function SteamAppList_Fill()
SteamAppList_Count = BS_ISteamAppList_GetNumInstalledApps(BS_SteamAppList())
Local Buffer = CreateBank(4 * SteamAppList_Count)
Local AppNameBuffer = CreateBank(1024)
Local PathBuffer = CreateBank(260)
Local AppIdCount = BS_ISteamAppList_GetInstalledApps(BS_SteamAppList(), Buffer, SteamAppList_Count)
Delete Each SteamAppList
For Index = 0 To AppIdCount - 1
Local AppId = PeekInt(Buffer, Index*4)
Local SAL.SteamAppList = New SteamAppList
SAL\AppId = AppId
Local AppNameLen = BS_ISteamAppList_GetAppName(BS_SteamAppList(), AppId, AppNameBuffer, 1024)
SAL\Name = PeekCString(AppNameBuffer, 0, AppNameLen)
Local PathLen = BS_ISteamAppList_GetAppInstallDir(BS_SteamAppList(), AppId, PathBuffer, 260)
SAL\InstallDir = PeekCString(PathBuffer, 0, PathLen)
SAL\BuildId = BS_ISteamAppList_GetAppBuildId(BS_SteamAppList(), AppId)
Next
FreeBank AppNameBuffer
FreeBank PathBuffer
FreeBank Buffer
End Function
Function PeekCString$(Bank, Offset=0, Length=-1)
Local Out$ = "", Pos = Offset
While Abs(Length) > 0
Length = Length - 1
Local by = PeekByte(Bank, Pos)
If by = 0 Then
Length = 0
Else
Out = Out + Chr(by)
EndIf
Pos = Pos + 1
Wend
Return Out
End Function
SteamAppList_Fill()
; Main Loop
Local EndGame = False
Repeat
Cls
;! Update
; End on Escape
EndGame = KeyHit(1)
TurnEntity demoCube, 1 * FPS_MULT, 3 * FPS_MULT, 2.332 * FPS_MULT
;! Render 3D
RenderWorld
;! Render 2D
Text 0, 0, "Escape to Quit"
Text 0,15, "Installed Apps: " + SteamAppList_Count
Local SAL.SteamAppList, Index = 0
For SAL.SteamAppList = Each SteamAppList
Index = Index + 1
Text 0, 30 + Index* 15, RSet(SAL\AppId, 6) + "/" + RSet(SAL\BuildId, 8) + ": " + SAL\Name + " (Installed: '" + SAL\InstallDir + "')"
Next
;! Update Window
Flip 0
WaitTimer(demoTimer)
Until EndGame = True
; Shut down Steam as the last action of your program.
BS_SteamAPI_Shutdown()
End
;~IDEal Editor Parameters:
;~C#Blitz3D
+179
View File
@@ -0,0 +1,179 @@
; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http://www.gnu.org/licenses/>.
Include "../BlitzSteam.bb"
; Initialize Steam before your next call to Graphics.
If BS_SteamAPI_Init() = False Then
RuntimeError "Steam: Failed to initialize!"
EndIf
Const FPS = 30
Const FPS_MULT# = 1.0 / FPS
; Demo Scene
Graphics3D 1024, 768, 32, 2
SetBuffer BackBuffer()
Local demoTimer = CreateTimer(FPS)
Local demoRoot = CreatePivot()
Local demoCameraRoot = CreatePivot(demoRoot)
Local demoCamera = CreateCamera(demoCameraRoot)
MoveEntity demoCamera, 0, 0, -10
Local demoCube = CreateCube(demoRoot)
; SteamApps Stuff
Type SteamAppsDLC
Field Id%
Field Available%
Field Name$
End Type
Global SteamAppsDLC_Count
Function SteamAppsDLC_Fill()
Local IdBuffer = CreateBank(4)
Local AvailableBuffer = CreateBank(4)
Local NameBuffer = CreateBank(1024)
SteamAppsDLC_Count = BS_ISteamApps_GetDLCCount(BS_SteamApps())
Delete Each SteamAppsDLC
For Index = 0 To SteamAppsDLC_Count - 1
If BS_ISteamApps_GetDLCDataByIndex(BS_SteamApps(), Index, IdBuffer, AvailableBuffer, NameBuffer, 1024)
Local SAD.SteamAppsDLC = New SteamAppsDLC
SAD\Id = PeekInt(IdBuffer, 0)
SAD\Available = PeekInt(AvailableBuffer, 0)
SAD\Name = PeekCString(NameBuffer, 0, 1024)
Else
SteamAppsDLC_Count = SteamAppsDLC_Count - 1
EndIf
Next
FreeBank NameBuffer
FreeBank AvailableBuffer
FreeBank IdBuffer
End Function
Type SteamAppsDepots
Field DepotId
End Type
Global SteamAppsDepots_Count
Function SteamAppsDepots_Fill()
Local DepotsBuffer
; Exercise: Do this one yourself with the above Type. It's not that hard.
End Function
Function PeekCString$(Bank, Offset=0, Length=-1)
Local Out$ = "", Pos = Offset
While Abs(Length) > 0
Length = Length - 1
Local by = PeekByte(Bank, Pos)
If by = 0 Then
Length = 0
Else
Out = Out + Chr(by)
EndIf
Pos = Pos + 1
Wend
Return Out
End Function
Local BetaBuffer = CreateBank(1024)
BS_ISteamApps_GetCurrentBetaName(BS_SteamApps(), BetaBuffer, 1024)
Local Beta$ = PeekCString(BetaBuffer, 0, 1024)
FreeBank BetaBuffer
Local AppInstallDir$, AppInstallDirBuffer = CreateBank(260)
BS_ISteamApps_GetAppInstallDir(BS_SteamApps(), 480, AppInstallDirBuffer, 260)
AppInstallDir = PeekCString(AppInstallDirBuffer, 0, 260)
FreeBank AppInstallDirBuffer
Local llOwner = BS_ISteamApps_GetAppOwner(BS_SteamApps())
Local OwnerId$ = "[U:" + BS_CSteamID_GetAccountInstance(llOwner) + ":" + BS_CSteamID_GetAccountID(llOwner) + "] STEAM_" + (BS_CSteamID_GetEAccountType(llOwner) - 1) + ":" + (BS_CSteamID_GetEUniverse(llOwner) - 1) + ":" + (BS_CSteamID_GetAccountID(llOwner) / 2)
BS_CSteamID_Destroy llOwner
; Main Loop
Local EndGame = False
Repeat
Cls
;! Update
; End on Escape
EndGame = KeyHit(1)
TurnEntity demoCube, 1 * FPS_MULT, 3 * FPS_MULT, 2.332 * FPS_MULT
;! Render 3D
RenderWorld
;! Render 2D
Text 0, 0, "Escape to Quit"
Text 0, 30, "Is Subscribed? " + BS_ISteamApps_IsSubscribed(BS_SteamApps())
Text 0, 45, "Is Low Violence? " + BS_ISteamApps_IsLowViolence(BS_SteamApps())
Text 0, 60, "Is Cybercafe? " + BS_ISteamApps_IsCybercafe(BS_SteamApps())
Text 0, 75, "Is VAC Banned? " + BS_ISteamApps_IsVACBanned(BS_SteamApps())
Text 0, 90, "Current Game Language: " + BS_ISteamApps_GetCurrentGameLanguage(BS_SteamApps())
Text 0,105, "Available Game Languages: " + BS_ISteamApps_GetAvailableGameLanguages(BS_SteamApps())
Text 0,120, "Is Subscribed App (480)? " + BS_ISteamApps_IsSubscribedApp(BS_SteamApps(), 480)
Text 0,135, "Is DLC (323180) Installed? " + BS_ISteamApps_IsDlcInstalled(BS_SteamApps(), 323180) ; Portal 2 Soundtrack DLC
Text 0,150, "Earliest Purchase Unix Time (480): " + BS_ISteamApps_GetEarliestPurchaseUnixTime(BS_SteamApps(), 480)
Text 0,165, "Is Subscribed from Free Weekend? " + BS_ISteamApps_IsSubscribedFromFreeWeekend(BS_SteamApps())
Text 0,180, "DLC Count: " + BS_ISteamApps_GetDLCCount(BS_SteamApps())
Text 0,195, "Current Beta Name: " + Beta
Text 0,210, "App Install Dir: " + AppInstallDir$
Text 0,225, "Is App Installed (480): " + BS_ISteamApps_IsAppInstalled(BS_SteamApps(), 480)
Text 0,240, "App Owner Id: " + OwnerId
Text 0,255, "App Built Id: " + BS_ISteamApps_GetAppBuildId(BS_SteamApps())
; BS_ISteamApps_GetLanchQueryParam$(BS_SteamApps(), pchKey$)
; // Returns the associated launch param if the game is run via steam://run/<appid>//?param1=value1;param2=value2;param3=value3 etc.
; // Parameter names starting with the character '@' are reserved for internal use and will always return and empty string.
; // Parameter names starting with an underscore '_' are reserved for steam features -- they can be queried by the game,
; // but it is advised that you not param names beginning with an underscore for your own features.
; BS_ISteamApps_MarkContentCorrupt signals steam that game files are corrupt or missing. Forces a validation after quit and before next start.
; How To Use: BS_ISteamApps_RequestProofOfPurchaseKey(BS_SteamApps(), nAppId)
; // Request cd-key for yourself or owned DLC. If you are interested in this
; // data then make sure you provide us with a list of valid keys to be distributed
; // to users when they purchase the game, before the game ships.
; // You'll receive an AppProofOfPurchaseKeyResponse_t callback when
; // the key is available (which may be immediately).
; Example (Spacewar) does not have CD-Keys.
Text 512, 0, "DLCs: " + SteamAppsDLC_Count
Local Index = 0, SAD.SteamAppsDLC
For SAD = Each SteamAppsDLC
Text 512, 15 + Index * 15, SAD\Id + "(" + SAD\Available + "): " + SAD\Name
; You could install DLCs from the app itself, BS_ISteamApps_InstallDLC, BS_ISteamApps_UninstallDLC
; BS_ISteamApps_GetDlcDownloadProgress allows you to check the progress, BlitzUtility's LongLong stuff is useful here.
Index = Index + 1
Next
;! Update Window
Flip 0
WaitTimer(demoTimer)
Until EndGame = True
; Shut down Steam as the last action of your program.
BS_SteamAPI_Shutdown()
End
;~IDEal Editor Parameters:
;~C#Blitz3D
@@ -0,0 +1,68 @@
; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http://www.gnu.org/licenses/>.
Include "../BlitzSteam.bb"
;! Example is incomplete, I do not own a Steam Controller.
; Initialize Steam before your next call to Graphics.
If BS_SteamAPI_Init() = False Then
RuntimeError "Steam: Failed to initialize!"
EndIf
Const FPS = 30
Const FPS_MULT# = 1.0 / FPS
; Demo Scene
Graphics3D 1024, 768, 32, 2
SetBuffer BackBuffer()
Local demoTimer = CreateTimer(FPS)
Local demoRoot = CreatePivot()
Local demoCameraRoot = CreatePivot(demoRoot)
Local demoCamera = CreateCamera(demoCameraRoot)
MoveEntity demoCamera, 0, 0, -10
Local demoCube = CreateCube(demoRoot)
Local EndGame = False
Repeat
Cls
;! Update
; End on Escape
EndGame = KeyHit(1)
TurnEntity demoCube, 1 * FPS_MULT, 3 * FPS_MULT, 2.332 * FPS_MULT
;! Render 3D
RenderWorld
;! Render 2D
Text 0, 0, "Escape to Quit"
;! Update Window
Flip 0
WaitTimer(demoTimer)
Until EndGame = True
; Shut down Steam as the last action of your program.
BS_SteamAPI_Shutdown()
End
;~IDEal Editor Parameters:
;~C#Blitz3D
@@ -0,0 +1,396 @@
; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http://www.gnu.org/licenses/>.
Include "../BlitzSteam.bb"
;----------------------------------------------------------------
;! Steam Stuff
;----------------------------------------------------------------
; SteamClient: WarningMessageHook
Global Steam_WarningMessageHook_Callback = 0
Function Steam_WarningMessageHook(bIsWarning%, pchMessageBuffer%)
If Steam_WarningMessageHook_Callback = 0 Then
Steam_WarningMessageHook_Callback = BP_GetFunctionPointer()
Return
EndIf
; Read Message from buffer
Local msg$ = ""
If bIsWarning = 1 Then
msg = "[Warning]"
Else
msg = "[Info]"
EndIf
msg = msg + PeekMemoryStringC(pchMessageBuffer)
DebugLog "[Steam]" + msg$
End Function:Steam_WarningMessageHook(0, 0)
Function PeekMemoryStringC(Memory%, Length%=-1)
Local Ptr = Memory
Local iChar = 0, tiChar = 0
Local sOut$ = ""
Repeat
tiChar = PeekMemoryByte(Ptr)
; Advance memory, decrease Length
Ptr = Ptr + 1
Length = Length - 1
If (tiChar = 0) Then
Length = 0
Else
sOut = sOut + Chr(tiChar)
EndIf
Until Length = 0
Return sOut
End Function
;----------------------------------------------------------------
;! SteamBrowser (Image & Texture Drawing)
;----------------------------------------------------------------
Global SteamBrowser_Callback_BrowserReady_p = 0, SteamBrowser_Callback_BrowserReady_c = 0
Global SteamBrowser_Callback_NeedsPaint_p = 0, SteamBrowser_Callback_NeedsPaint_c = 0
Global SteamBrowser_Callback_StartRequest_p = 0, SteamBrowser_Callback_StartRequest_c = 0
Type SteamBrowser
Field Id%, lSteamAPICall%
Field Size%[1] ;Width, Height
Field URL$
; CEF Stuff
Field UpdateRegion[3] ;X,Y,W,H
Field Serial%, Scale#, ScrollX%, ScrollY%
; Image Based
Field hImage%
; Texture Based
Field hTexture%
End Type
Function SteamBrowser_Create.SteamBrowser(Width%, Height%, URL$="http://google.com/", UserAgent$="SteamBrowser", UserCSS$="")
; Create our Object
Local SB.SteamBrowser = New SteamBrowser
SB\Id = 0 ; Initialize to 0 until the Browser is ready.
SB\Size[0] = Width
SB\Size[1] = Height
SB\URL = URL
SB\lSteamAPICall = BS_ISteamHTMLSurface_CreateBrowser(BS_SteamHTMLSurface(), UserAgent, UserCSS)
; We need to register our callbacks, or nothing will work.
BS_Callback_RegisterResult SteamBrowser_Callback_BrowserReady_c, SB\lSteamAPICall, BS_SteamHTMLSurface_BrowserReady ; Listen to the result of the last SteamAPICall.
BS_Callback_Register SteamBrowser_Callback_NeedsPaint_c, BS_SteamHTMLSurface_NeedsPaint
BS_Callback_Register SteamBrowser_Callback_StartRequest_c, BS_SteamHTMLSurface_StartRequest
; Image Based
SB\hImage = CreateImage(SB\Size[0], SB\Size[1])
; Texture Based
SB\hTexture = CreateTexture(SB\Size[0], SB\Size[1], 1+2)
Return SB
End Function
Function SteamBrowser_Destroy(SB.SteamBrowser)
; Texture Based
FreeTexture SB\hTexture
; Image Based
FreeImage SB\hImage
BS_ISteamHTMLSurface_RemoveBrowser BS_SteamHTMLSurface(), SB\Id
Delete SB
End Function
Function SteamBrowser_Find.SteamBrowser(iId%, lSteamAPICall%)
Local SB.SteamBrowser = Null
; Find by Id
If iId <> 0
For SB.SteamBrowser = Each SteamBrowser
If (SB\Id = iId) Then
Return SB
EndIf
Next
EndIf
; Find by SteamAPICall
If lSteamAPICall <> 0
For SB.SteamBrowser = Each SteamBrowser
If (SB\lSteamAPICall <> 0) And (BS_Long_Compare(lSteamAPICall, SB\lSteamAPICall) = 0) Then
Return SB
EndIf
Next
EndIf
Return Null
End Function
Function SteamBrowser_SetSize(SB.SteamBrowser, Width%, Height%)
SB\Size[0] = Width
SB\Size[1] = Height
; Update Browser Size
BS_ISteamHTMLSurface_SetSize BS_SteamHTMLSurface(), SB\Id, Width, Height
; Image Based
FreeImage(SB\hImage)
SB\hImage = CreateImage(Width, Height)
; Texture Based
FreeTexture(SB\hTexture)
SB\hTexture = CreateTexture(Width, Height, 1+2)
End Function
Function SteamBrowser_LoadUrl(SB.SteamBrowser, URL$, PostData$="")
BS_ISteamHTMLSurface_LoadURL BS_SteamHTMLSurface(), SB\Id, URL, PostData
End Function
Function SteamBrowser_IsReady(SB.SteamBrowser)
Return (SB\Id <> 0)
End Function
Function SteamBrowser_GetImageHandle(SB.SteamBrowser)
Return SB\hImage
End Function
Function SteamBrowser_GetTextureHandle(SB.SteamBrowser)
Return SB\hTexture
End Function
Function SteamBrowser_Callback_BrowserReady(pvParam%, bIOFailure, lSteamAPICall)
If (SteamBrowser_Callback_BrowserReady_p = 0) Then
SteamBrowser_Callback_BrowserReady_p = BP_GetFunctionPointer()
SteamBrowser_Callback_BrowserReady_c = BS_Callback_New(SteamBrowser_Callback_BrowserReady_p)
Return
EndIf
; Search for a valid SteamBrowser object.
Local SB.SteamBrowser = SteamBrowser_Find(0, lSteamAPICall)
SB\Id = BS_Memory_PeekInt(pvParam, 0)
SteamBrowser_SetSize(SB, SB\Size[0], SB\Size[1])
SteamBrowser_LoadUrl(SB, SB\URL)
; Destroy our SteamAPICall pointer and clear the value.
BS_Long_Destroy(SB\lSteamAPICall):SB\lSteamAPICall = 0
End Function:SteamBrowser_Callback_BrowserReady(0, 0, 0)
Function SteamBrowser_Callback_NeedsPaint(pvParam%, p2, p3)
If (SteamBrowser_Callback_NeedsPaint_p = 0) Then
SteamBrowser_Callback_NeedsPaint_p = BP_GetFunctionPointer()
SteamBrowser_Callback_NeedsPaint_c = BS_Callback_New(SteamBrowser_Callback_NeedsPaint_p)
Return
EndIf
; Search for a valid SteamBrowser object.
Local SB.SteamBrowser = SteamBrowser_Find(BS_Memory_PeekInt(pvParam, 0), 0)
; Parse Data from pvParam
Local pBuffer, pW, pH, pUpdateX, pUpdateY, pUpdateW, pUpdateH, pScrollX, pScrollY, pScale#, pSerial
pBuffer = BS_Memory_PeekInt(pvParam, 4)
pW = BS_Memory_PeekInt(pvParam, 8)
pH = BS_Memory_PeekInt(pvParam, 12)
pUpdateX = BS_Memory_PeekInt(pvParam, 16)
pUpdateY = BS_Memory_PeekInt(pvParam, 20)
pUpdateW = BS_Memory_PeekInt(pvParam, 24)
pUpdateH = BS_Memory_PeekInt(pvParam, 28)
pScrollX = BS_Memory_PeekInt(pvParam, 32)
pScrollY = BS_Memory_PeekInt(pvParam, 36)
pScale = BS_Memory_PeekFloat(pvParam, 40)
pSerial = BS_Memory_PeekInt(pvParam, 44)
; Assign to Object
SB\UpdateRegion[0] = pUpdateX
SB\UpdateRegion[1] = pUpdateY
SB\UpdateRegion[2] = pUpdateW
SB\UpdateRegion[3] = pUpdateH
SB\Scale = pScale
SB\ScrollX = pScrollX
SB\ScrollY = pScrollY
SB\Serial = pSerial
; Fix up Buffer Size (Always next bigger 16*n, for whatever reason (SIBLY WHAT DID YOU DO!?))
Local nW = (16 * Ceil(pW / 16.0))
;DebugLog ImageWidth(SB\hImage) + ":" + ImageHeight(SB\hImage)
; Image Based
Local hImageBuffer = ImageBuffer(SB\hImage)
LockBuffer hImageBuffer
BS_Helper_CopyMemoryIntMangle pBuffer, BS_Memory_PeekInt(hImageBuffer, 72), 0, pW, pH, nW, SB\Size[1], pUpdateX, pUpdateY, pUpdateW, pUpdateH
UnlockBuffer hImageBuffer
; Texture Based (Identical)
Local hTextureBuffer = ImageBuffer(SB\hImage)
LockBuffer hTextureBuffer
BS_Helper_CopyMemoryIntMangle pBuffer, BS_Memory_PeekInt(hTextureBuffer, 72), 0, pW, pH, nW, SB\Size[1], pUpdateX, pUpdateY, pUpdateW, pUpdateH
UnlockBuffer hTextureBuffer
; pvParam Structure
;CALLBACK_MEMBER(0, HHTMLBrowser, unBrowserHandle) // the browser that needs the paint
;CALLBACK_MEMBER(1, const char *, pBGRA ) // a pointer to the B8G8R8A8 data for this surface, valid until SteamAPI_RunCallbacks is next called
;CALLBACK_MEMBER(2, uint32, unWide) // the total width of the pBGRA texture
;CALLBACK_MEMBER(3, uint32, unTall) // the total height of the pBGRA texture
;CALLBACK_MEMBER(4, uint32, unUpdateX) // the offset in X for the damage rect for this update
;CALLBACK_MEMBER(5, uint32, unUpdateY) // the offset in Y for the damage rect for this update
;CALLBACK_MEMBER(6, uint32, unUpdateWide) // the width of the damage rect for this update
;CALLBACK_MEMBER(7, uint32, unUpdateTall) // the height of the damage rect for this update
;CALLBACK_MEMBER(8, uint32, unScrollX) // the page scroll the browser was at when this texture was rendered
;CALLBACK_MEMBER(9, uint32, unScrollY) // the page scroll the browser was at when this texture was rendered
;CALLBACK_MEMBER(10, float, flPageScale) // the page scale factor on this page when rendered
;CALLBACK_MEMBER(11, uint32, unPageSerial) // incremented on each new page load, you can use this to reject draws while navigating to new pages
End Function:SteamBrowser_Callback_NeedsPaint(0, 0, 0)
Function SteamBrowser_Callback_StartRequest(pvParam%, p2, p3)
If (SteamBrowser_Callback_StartRequest_p = 0) Then
SteamBrowser_Callback_StartRequest_p = BP_GetFunctionPointer()
SteamBrowser_Callback_StartRequest_c = BS_Callback_New(SteamBrowser_Callback_StartRequest_p)
Return
EndIf
; Search for a valid SteamBrowser object.
Local SB.SteamBrowser = SteamBrowser_Find(BS_Memory_PeekInt(pvParam, 0), 0)
; Default to allow all requests. (Why not? For an Example, this is good enough.)
; Could implement a simple filter using a second type, but why don't you experiment a bit?
BS_ISteamHTMLSurface_AllowStartRequest BS_SteamHTMLSurface(), SB\Id, True
End Function:SteamBrowser_Callback_StartRequest(0, 0, 0)
;----------------------------------------------------------------
;! Example Code
;----------------------------------------------------------------
If BS_SteamAPI_Init() = 0 Then RuntimeError "Steam failed to initialize."
; Steam: Hooks, Callbacks, CallResults
BS_ISteamClient_SetWarningMessageHook BS_SteamClient(), Steam_WarningMessageHook_Callback
; Steam: HTMLSurface API
If BS_SteamHTMLSurface() = 0 Then RuntimeError "Steam: HTMLSurface API is not available."
If BS_ISteamHTMLSurface_Init(BS_SteamHTMLSurface()) = 0 Then RuntimeError "Steam: HTMLSurface API did not want to be initialized?!"
;BS_ISteamHTMLSurface_SetSize BS_SteamHTMLSurface(), 0, GraphicsWidth(), GraphicsHeight()
Const FPS = 60
Const FPS_MULT# = 1.0 / FPS
; Demo Scene
Graphics3D 1024, 768, 32, 2
SetBuffer BackBuffer()
Local demoTimer = CreateTimer(FPS)
Local demoRoot = CreatePivot()
Local demoCameraRoot = CreatePivot(demoRoot)
Local demoCamera = CreateCamera(demoCameraRoot)
MoveEntity demoCamera, 0, 0, -10
Local demoCube = CreateCube(demoRoot)
; Create a Browser
Local myBrowser.SteamBrowser = SteamBrowser_Create(GraphicsWidth(), GraphicsHeight(), "http://store.steampowered.com/app/368720/")
Local Mouse[3], MouseButton[3], Key[255]
While Not KeyHit(1)
Cls
; Only allow input when the browser is up to date.
;If (myBrowser\iLastDraw > myBrowser\iLastRequest) Then
If True
; Mouse Input
If Mouse[0] <> MouseX() Or Mouse[1] <> MouseY() Then
Mouse[0] = MouseX()
Mouse[1] = MouseY()
BS_ISteamHTMLSurface_MouseMove BS_SteamHTMLSurface(), myBrowser\Id, MouseX(), MouseY()
EndIf
If Mouse[2] <> MouseZ() Then
Mouse[2] = MouseZ()
BS_ISteamHTMLSurface_MouseWheel BS_SteamHTMLSurface(), myBrowser\Id, MouseZSpeed()*30
EndIf
Local Button
For Button = 1 To 3
Local ButtonDown = MouseDown(Button)
If MouseButton[Button] <> ButtonDown Then
MouseButton[Button] = MouseDown(Button)
If ButtonDown
BS_ISteamHTMLSurface_MouseDown BS_SteamHTMLSurface(), myBrowser\Id, Button - 1
Else
BS_ISteamHTMLSurface_MouseUp BS_SteamHTMLSurface(), myBrowser\Id, Button - 1
EndIf
EndIf
Next
; Keyboard
Local Modifier = BS_EHTMLKeyModifiers_None
If KeyDown(42) Or KeyDown(54) Then Modifier = Modifier Or BS_EHTMLKeyModifiers_ShiftDown
If KeyDown(29) Or KeyDown(157) Or KeyDown(184) Then Modifier = Modifier Or BS_EHTMLKeyModifiers_CtrlDown
If KeyDown(56) Or KeyDown(184) Then Modifier = Modifier Or BS_EHTMLKeyModifiers_AltDown
Local VK
For VK = 0 To 255
Local SC = InputEx_User32_MapVirtualKeyEx(VK, 0, 0)
Local KeyDownN = KeyDown(SC)
If Key[VK] <> KeyDownN Then
Key[VK] = KeyDownN
If KeyDownN = 1 Then
BS_ISteamHTMLSurface_KeyDown BS_SteamHTMLSurface(), myBrowser\Id, VK, Modifier
Else
BS_ISteamHTMLSurface_KeyUp BS_SteamHTMLSurface(), myBrowser\Id, VK, Modifier
EndIf
EndIf
Next
Local GetKeyC = GetKey()
If GetKeyC
BS_ISteamHTMLSurface_KeyChar BS_SteamHTMLSurface(), myBrowser\Id, GetKeyC, Modifier
EndIf
EndIf
; Steam: Run any Callbacks
; Q: Why before RenderWorld/Flip?
; A: If we did any changes, having them available before Rendering helps responsiveness.
; A one-frame Delay is noticeable, even to people claiming the eye only sees 30 fps.
; Please read a Biology book if you are one of those, it doesn't work like that.
BS_SteamAPI_RunCallbacks()
RenderWorld
;If (myBrowser\iLastDraw > myBrowser\iLastRequest) Then
If Not KeyDown(57)
DrawBlock SteamBrowser_GetImageHandle(myBrowser), 0, 0, 0
Color 255, 0, 0
Rect myBrowser\UpdateRegion[0],myBrowser\UpdateRegion[1],myBrowser\UpdateRegion[2],myBrowser\UpdateRegion[3], 0
Else
EntityTexture demoCube, SteamBrowser_GetTextureHandle(myBrowser)
EndIf
;EndIf
Flip
WaitTimer demoTimer
Wend
; Destroy existing Browser
SteamBrowser_Destroy(myBrowser):myBrowser = Null
; Steam: HTMLSurface API
BS_ISteamHTMLSurface_Shutdown(BS_SteamHTMLSurface())
BS_SteamAPI_Shutdown()
EndGraphics
End
;~IDEal Editor Parameters:
;~F#17#28
;~C#Blitz3D
@@ -0,0 +1,90 @@
; BlitzSteam - Steam wrapper for Blitz
; Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU Lesser General Public License as
; published by the Free Software Foundation, either version 3 of the
; License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see <http://www.gnu.org/licenses/>.
Include "../BlitzSteam.bb"
;----------------------------------------------------------------
;! Configuration
;----------------------------------------------------------------
Const APPID = 480 ; Test App / SpaceWar
Const FRAMERATE = 60
Const RESOLUTION_X = 1024
Const RESOLUTION_Y = 768
Const RESOLUTION_Z = 32
Const RESOLUTION_MODE = 2
;----------------------------------------------------------------
;! Init Code
;----------------------------------------------------------------
Global Timer = CreateTimer(FRAMERATE)
Global ServerListResponse_ServerResponded_p%:ServerListResponse_ServerResponded(0, 0, 0)
Global ServerListResponse_RefreshComplete_p%:ServerListResponse_RefreshComplete(0, 0, 0)
Graphics3D RESOLUTION_X, RESOLUTION_Y, RESOLUTION_Z, RESOLUTION_MODE
SetBuffer BackBuffer()
If Not BS_SteamAPI_Init() Then RuntimeError "Failed to initialize Steam!"
;----------------------------------------------------------------
;! Main Code
;----------------------------------------------------------------
Local Bank =CreateBank(1)
Local pRequestServersResponse = BS_ISteamMatchmakingServerListResponse_New(0, ServerListResponse_ServerResponded_p, 0, ServerListResponse_RefreshComplete_p)
Local hRequest = BS_ISteamMatchmakingServers_RequestInternetServerList(BS_SteamMatchmakingServers(), 480, Bank, 0, pRequestServersResponse)
While Not KeyHit(1)
WaitTimer Timer
BS_SteamAPI_RunCallbacks()
Wend
BS_ISteamMatchmakingServers_ReleaseRequest(BS_SteamMatchmakingServers(), hRequest)
BS_SteamAPI_Shutdown()
;----------------------------------------------------------------
;! Functions
;----------------------------------------------------------------
Function ServerListResponse_ServerResponded(pData%, hRequest%, iServer%)
If (Not ServerListResponse_ServerResponded_p)
ServerListResponse_ServerResponded_p = BP_GetFunctionPointer()
Return
EndIf
Print iServer
Return
End Function
Function ServerListResponse_RefreshComplete(pData%, hRequest%, eMatchMakingServerResponse%)
If (Not ServerListResponse_RefreshComplete_p)
ServerListResponse_RefreshComplete_p = BP_GetFunctionPointer()
Return
EndIf
Select eMatchMakingServerResponse
Case BS_EMatchMakingServerResponse_ServerResponded
Print "Got Servers"
Case BS_EMatchMakingServerResponse_ServerFailedToRespond
Print "Server did not respond"
Case BS_EMatchMakingServerResponse_NoServersListedOnMasterServer
Print "No Servers listed for this game."
Default
Print "Unknown"
End Select
Return
End Function
;~IDEal Editor Parameters:
;~C#Blitz3D
+1
View File
@@ -0,0 +1 @@
480
+266
View File
@@ -0,0 +1,266 @@
// BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "BlitzCallback.h"
void BlitzCallback::Initialize() {
#define BlitzCallback_DefineSize(T) BlitzCallback::Sizes.emplace(T::k_iCallback, sizeof(T));
// Do nothing if it was already done.
if (BlitzCallback::Sizes.size() > 0)
return;
// Default to the size of the class itself if no callback id is given.
BlitzCallback::Sizes.emplace(0, sizeof(BlitzCallback));
// SteamAPI
// SteamAppList
BlitzCallback_DefineSize(SteamAppInstalled_t);
BlitzCallback_DefineSize(SteamAppUninstalled_t);
// SteamApps
BlitzCallback_DefineSize(DlcInstalled_t);
BlitzCallback_DefineSize(RegisterActivationCodeResponse_t);
BlitzCallback_DefineSize(AppProofOfPurchaseKeyResponse_t);
BlitzCallback_DefineSize(NewLaunchQueryParameters_t);
// SteamController
// SteamFriends
BlitzCallback_DefineSize(PersonaStateChange_t);
BlitzCallback_DefineSize(GameOverlayActivated_t);
BlitzCallback_DefineSize(GameServerChangeRequested_t);
BlitzCallback_DefineSize(GameLobbyJoinRequested_t);
BlitzCallback_DefineSize(AvatarImageLoaded_t);
BlitzCallback_DefineSize(ClanOfficerListResponse_t);
BlitzCallback_DefineSize(FriendRichPresenceUpdate_t);
BlitzCallback_DefineSize(GameRichPresenceJoinRequested_t);
BlitzCallback_DefineSize(GameConnectedClanChatMsg_t);
BlitzCallback_DefineSize(GameConnectedChatJoin_t);
BlitzCallback_DefineSize(GameConnectedChatLeave_t);
BlitzCallback_DefineSize(DownloadClanActivityCountsResult_t);
BlitzCallback_DefineSize(JoinClanChatRoomCompletionResult_t);
BlitzCallback_DefineSize(GameConnectedFriendChatMsg_t);
BlitzCallback_DefineSize(FriendsGetFollowerCount_t);
BlitzCallback_DefineSize(FriendsIsFollowing_t);
BlitzCallback_DefineSize(FriendsEnumerateFollowingList_t);
BlitzCallback_DefineSize(SetPersonaNameResponse_t);
// SteamGameServer
BlitzCallback_DefineSize(GSClientApprove_t);
BlitzCallback_DefineSize(GSClientDeny_t);
BlitzCallback_DefineSize(GSClientKick_t);
BlitzCallback_DefineSize(GSClientAchievementStatus_t);
BlitzCallback_DefineSize(GSPolicyResponse_t);
BlitzCallback_DefineSize(GSGameplayStats_t);
BlitzCallback_DefineSize(GSClientGroupStatus_t);
BlitzCallback_DefineSize(GSReputation_t);
BlitzCallback_DefineSize(AssociateWithClanResult_t);
BlitzCallback_DefineSize(ComputeNewPlayerCompatibilityResult_t);
// SteamGameServerStats
BlitzCallback_DefineSize(GSStatsReceived_t);
BlitzCallback_DefineSize(GSStatsStored_t);
BlitzCallback_DefineSize(GSStatsUnloaded_t);
// SteamHTMLSurface
BlitzCallback_DefineSize(HTML_BrowserReady_t);
// SteamHTTP
BlitzCallback_DefineSize(HTTPRequestCompleted_t);
BlitzCallback_DefineSize(HTTPRequestHeadersReceived_t);
BlitzCallback_DefineSize(HTTPRequestDataReceived_t);
// SteamInventory
BlitzCallback_DefineSize(SteamInventoryResultReady_t);
BlitzCallback_DefineSize(SteamInventoryFullUpdate_t);
BlitzCallback_DefineSize(SteamInventoryDefinitionUpdate_t);
// SteamMatchmaking
// SteamMatchmakingServers
// SteamMusic
// SteamMusicRemote
// SteamNetworking
BlitzCallback_DefineSize(P2PSessionRequest_t);
BlitzCallback_DefineSize(P2PSessionConnectFail_t);
BlitzCallback_DefineSize(SocketStatusCallback_t);
}
std::map<int32_t, size_t> BlitzCallback::Sizes;
BlitzCallback::BlitzCallback(BP_BlitzFunction3_t pFunctionPointer) {
BlitzCallback::Initialize();
// Initialize all values to 0.
this->m_iCallback = 0;
this->m_nCallbackFlags = 0;
this->m_hSteamAPICall = 0;
// Set function pointer.
this->m_pFunctionPointer = pFunctionPointer;
}
BlitzCallback::~BlitzCallback() {
// Unregister if we are still registered.
this->UnregisterResult();
this->Unregister();
// Reset all variables to 0.
this->m_iCallback = 0;
this->m_nCallbackFlags = 0;
this->m_hSteamAPICall = 0;
this->m_pFunctionPointer = 0;
}
void BlitzCallback::Run(void *pvParam) {
if (m_hSteamAPICall != 0)
m_hSteamAPICall = 0; // Caller unregisters for us.
BP_CallFunction3(m_pFunctionPointer, reinterpret_cast<int32_t>(pvParam), 0, 0);
}
void BlitzCallback::Run(void *pvParam, bool bIOFailure, SteamAPICall_t hSteamAPICall) {
if (m_hSteamAPICall != 0)
m_hSteamAPICall = 0; // Caller unregisters for us.
BP_CallFunction3(m_pFunctionPointer, reinterpret_cast<int32_t>(pvParam), (bIOFailure ? 0 : 1), reinterpret_cast<int32_t>(&hSteamAPICall));
}
int BlitzCallback::GetCallbackSizeBytes() {
return (BlitzCallback::Sizes.find(this->m_iCallback)->second);
}
void BlitzCallback::SetCallback(int32_t iCallback) {
this->m_iCallback = iCallback;
}
int32_t BlitzCallback::GetCallback() {
return this->m_iCallback;
}
void BlitzCallback::SetFunction(BP_BlitzFunction3_t pFunction) {
this->m_pFunctionPointer = pFunction;
}
BP_BlitzFunction3_t BlitzCallback::GetFunction() {
return this->m_pFunctionPointer;
}
bool BlitzCallback::IsRegistered() {
return (this->m_nCallbackFlags & this->k_ECallbackFlagsRegistered) != 0;
}
void BlitzCallback::SetRegistered(bool bIsRegistered) {
this->m_nCallbackFlags &= ~k_ECallbackFlagsRegistered;
if (bIsRegistered)
this->m_nCallbackFlags |= k_ECallbackFlagsRegistered;
}
bool BlitzCallback::IsGameServer() {
return (this->m_nCallbackFlags & this->k_ECallbackFlagsGameServer) != 0;
}
void BlitzCallback::SetGameServer(bool bIsGameServer) {
this->m_nCallbackFlags &= ~k_ECallbackFlagsGameServer;
if (bIsGameServer)
this->m_nCallbackFlags |= k_ECallbackFlagsGameServer;
}
void BlitzCallback::Register(uint32_t iCallback) {
if (this->IsRegistered())
this->Unregister();
SteamAPI_RegisterCallback(this, iCallback);
this->m_iCallback = iCallback;
}
void BlitzCallback::Unregister() {
if (this->IsRegistered()) {
SteamAPI_UnregisterCallback(this);
this->m_iCallback = 0;
}
}
void BlitzCallback::RegisterResult(SteamAPICall_t hSteamAPICall, uint32_t iCallback) {
if (this->m_hSteamAPICall != 0)
this->UnregisterResult();
this->m_hSteamAPICall = hSteamAPICall;
this->m_iCallback = iCallback;
SteamAPI_RegisterCallResult(this, hSteamAPICall);
}
void BlitzCallback::UnregisterResult() {
if (this->m_hSteamAPICall != 0) {
SteamAPI_UnregisterCallResult(this, this->m_hSteamAPICall);
this->m_hSteamAPICall = 0;
this->m_iCallback = 0;
}
}
//-----------------------------------------------------------------------------
// C-Callables
//-----------------------------------------------------------------------------
DLL(BlitzCallback*) BS_Callback_New(BP_BlitzFunction3_t pFunctionPointer) {
return new BlitzCallback(pFunctionPointer);
}
DLL(void) BS_Callback_Destroy(BlitzCallback* pCallback) {
delete pCallback;
}
DLL(int32_t) BS_Callback_GetCallbackSizeBytes(BlitzCallback* pCallback) {
return pCallback->GetCallbackSizeBytes();
}
DLL(void) BS_Callback_SetCallback(BlitzCallback* pCallback, int32_t iCallback) {
pCallback->SetCallback(iCallback);
}
DLL(int32_t) BS_Callback_GetCallback(BlitzCallback* pCallback) {
return pCallback->GetCallback();
}
DLL(void) BS_Callback_SetFunction(BlitzCallback* pCallback, BP_BlitzFunction3_t pFunction) {
pCallback->SetFunction(pFunction);
}
DLL(BP_BlitzFunction3_t) BS_Callback_GetFunction(BlitzCallback* pCallback) {
return pCallback->GetFunction();
}
DLL(int32_t) BS_Callback_IsRegistered(BlitzCallback* pCallback) {
return pCallback->IsRegistered();
}
DLL(void) BS_Callback_SetRegistered(BlitzCallback* pCallback, int32_t bIsRegistered) {
pCallback->SetRegistered(!!bIsRegistered);
}
DLL(int32_t) BS_Callback_IsGameServer(BlitzCallback* pCallback) {
return pCallback->IsGameServer();
}
DLL(void) BS_Callback_SetGameServer(BlitzCallback* pCallback, int32_t bIsGameServer) {
pCallback->SetGameServer(!!bIsGameServer);
}
DLL(void) BS_Callback_Register(BlitzCallback* pCallback, uint32_t iCallback) {
pCallback->Register(iCallback);
}
DLL(void) BS_Callback_Unregister(BlitzCallback* pCallback) {
pCallback->Unregister();
}
DLL(void) BS_Callback_RegisterResult(BlitzCallback* pCallback, SteamAPICall_t* pSteamAPICall, uint32_t iCallback) {
pCallback->RegisterResult(*pSteamAPICall, iCallback);
}
DLL(void) BS_Callback_UnregisterResult(BlitzCallback* pCallback) {
pCallback->UnregisterResult();
}
+96
View File
@@ -0,0 +1,96 @@
// BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
#include "BlitzSteamInternal.h"
#include "../Helpers/BlitzPointer.h"
#include <list>
#include <vector>
#include <map>
class BlitzCallback : public CCallbackBase {
// Static Parts
public:
/// Initializes the CallbackSizes list for future use.
static void Initialize();
static std::map<int32_t, size_t> Sizes;
// Class Parts
public:
// Constructor
BlitzCallback(BP_BlitzFunction3_t pFunctionPointer);
// Destructor
~BlitzCallback();
// Run
virtual void Run(void *pvParam);
virtual void Run(void *pvParam, bool bIOFailure, SteamAPICall_t hSteamAPICall);
// Callback Size
virtual int GetCallbackSizeBytes();
// Accessors
void SetCallback(int32_t iCallback);
int32_t GetCallback();
void SetFunction(BP_BlitzFunction3_t pFunction);
BP_BlitzFunction3_t GetFunction();
bool IsRegistered();
void SetRegistered(bool bIsRegistered);
bool IsGameServer();
void SetGameServer(bool bIsGameServer);
// Registration in Steam
/// Register as Callback
void Register(uint32_t iCallback);
void Unregister();
/// Register as CallResult
void RegisterResult(SteamAPICall_t hSteamAPICall, uint32_t iCallback);
void UnregisterResult();
private:
/// Function to Call
BP_BlitzFunction3_t m_pFunctionPointer;
/// Assigned SteamAPICall
SteamAPICall_t m_hSteamAPICall;
};
//-----------------------------------------------------------------------------
// C-Callables
//-----------------------------------------------------------------------------
DLL(BlitzCallback*) BS_Callback_New(BP_BlitzFunction3_t pFunctionPointer);
DLL(void) BS_Callback_Destroy(BlitzCallback* pCallback);
DLL(int32_t) BS_Callback_GetCallbackSizeBytes(BlitzCallback* pCallback);
DLL(void) BS_Callback_SetCallback(BlitzCallback* pCallback, int32_t iCallback);
DLL(int32_t) BS_Callback_GetCallback(BlitzCallback* pCallback);
DLL(void) BS_Callback_SetFunction(BlitzCallback* pCallback, BP_BlitzFunction3_t pFunction);
DLL(BP_BlitzFunction3_t) BS_Callback_GetFunction(BlitzCallback* pCallback);
DLL(void) BS_Callback_SetRegistered(BlitzCallback* pCallback, int32_t bIsRegistered);
DLL(int32_t) BS_Callback_IsRegistered(BlitzCallback* pCallback);
DLL(void) BS_Callback_SetGameServer(BlitzCallback* pCallback, int32_t bIsGameServer);
DLL(int32_t) BS_Callback_IsGameServer(BlitzCallback* pCallback);
DLL(void) BS_Callback_Register(BlitzCallback* pCallback, uint32_t iCallback);
DLL(void) BS_Callback_Unregister(BlitzCallback* pCallback);
DLL(void) BS_Callback_RegisterResult(BlitzCallback* pCallback, SteamAPICall_t* pSteamAPICall, uint32_t iCallback);
DLL(void) BS_Callback_UnregisterResult(BlitzCallback* pCallback);
+172
View File
@@ -0,0 +1,172 @@
// BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "CSteamID.h"
DLL(CSteamID*) BS_CSteamID_New() {
return new CSteamID();
}
DLL(CSteamID*) BS_CSteamID_Copy(CSteamID* pOther) {
return new CSteamID(*pOther);
}
DLL(void) BS_CSteamID_Destroy(CSteamID* pThis) {
delete pThis;
}
DLL(CSteamID*) BS_CSteamID_New_IdUniverseType(AccountID_t iAccountId, EUniverse eUniverse, EAccountType eAccountType) {
return new CSteamID(iAccountId, eUniverse, eAccountType);
}
DLL(CSteamID*) BS_CSteamID_New_IdInstanceUniverseType(AccountID_t iAccountId, uint32_t iInstance, EUniverse eUniverse, EAccountType eAccountType) {
return new CSteamID(iAccountId, iInstance, eUniverse, eAccountType);
}
DLL(CSteamID*) BS_CSteamID_FromL(int64_t* pOther) {
return new CSteamID((uint64_t)*pOther);
}
DLL(int64_t*) BS_CSteamID_ToL(CSteamID* pThis) {
return new int64_t(pThis->ConvertToUint64());
}
DLL(void) BS_CSteamID_Set(CSteamID* pThis, AccountID_t iAccountID, EUniverse eUniverse, EAccountType eAccountType) {
pThis->Set(iAccountID, eUniverse, eAccountType);
}
DLL(void) BS_CSteamID_InstancedSet(CSteamID* pThis, AccountID_t iAccountId, uint32_t iInstance, EUniverse eUniverse, EAccountType eAccountType) {
pThis->InstancedSet(iAccountId, iInstance, eUniverse, eAccountType);
}
DLL(void) BS_CSteamID_FullSet(CSteamID* pThis, int64_t* plIdentifier, EUniverse eUniverse, EAccountType eAccountType) {
pThis->FullSet(*plIdentifier, eUniverse, eAccountType);
}
DLL(void) BS_CSteamID_SetFromLong(CSteamID* pThis, int64_t* plSteamID) {
pThis->SetFromUint64(*plSteamID);
}
DLL(void) BS_CSteamID_Clear(CSteamID* pThis) {
pThis->Clear();
}
DLL(int64_t*) BS_CSteamID_GetStaticAccountKey(CSteamID* pThis) {
return new int64_t(pThis->GetStaticAccountKey());
}
DLL(void) BS_CSteamID_CreateBlankAnonLogon(CSteamID* pThis, EUniverse eUniverse) {
pThis->CreateBlankAnonLogon(eUniverse);
}
DLL(void) BS_CSteamID_CreateBlankAnonUserLogon(CSteamID* pThis, EUniverse eUniverse) {
pThis->CreateBlankAnonUserLogon(eUniverse);
}
DLL(int32_t) BS_CSteamID_IsBlankAnonAccount(CSteamID* pThis) {
return pThis->BBlankAnonAccount();
}
DLL(int32_t) BS_CSteamID_IsGameServerAccount(CSteamID* pThis) {
return pThis->BGameServerAccount();
}
DLL(int32_t) BS_CSteamID_IsPersistentGameServerAccount(CSteamID* pThis) {
return pThis->BPersistentGameServerAccount();
}
DLL(int32_t) BS_CSteamID_IsAnonGameServerAccount(CSteamID* pThis) {
return pThis->BAnonGameServerAccount();
}
DLL(int32_t) BS_CSteamID_IsContentServerAccount(CSteamID* pThis) {
return pThis->BContentServerAccount();
}
DLL(int32_t) BS_CSteamID_IsClanAccount(CSteamID* pThis) {
return pThis->BClanAccount();
}
DLL(int32_t) BS_CSteamID_IsChatAccount(CSteamID* pThis) {
return pThis->BChatAccount();
}
DLL(int32_t) BS_CSteamID_IsLobby(CSteamID* pThis) {
return pThis->IsLobby();
}
DLL(int32_t) BS_CSteamID_IsIndividualAccount(CSteamID* pThis) {
return pThis->BIndividualAccount();
}
DLL(int32_t) BS_CSteamID_IsAnonAccount(CSteamID* pThis) {
return pThis->BAnonAccount();
}
DLL(int32_t) BS_CSteamID_IsAnonUserAccount(CSteamID* pThis) {
return pThis->BAnonUserAccount();
}
DLL(int32_t) BS_CSteamID_IsConsoleUserAccount(CSteamID* pThis) {
return pThis->BConsoleUserAccount();
}
DLL(void) BS_CSteamID_SetAccountID(CSteamID* pThis, AccountID_t iAccountId) {
pThis->SetAccountID(iAccountId);
}
DLL(AccountID_t) BS_CSteamID_GetAccountID(CSteamID* pThis) {
return pThis->GetAccountID();
}
DLL(void) BS_CSteamID_SetAccountInstance(CSteamID* pThis, uint32_t iInstance) {
pThis->SetAccountInstance(iInstance);
}
DLL(void) BS_CSteamID_ClearIndividualInstance(CSteamID* pThis) {
pThis->ClearIndividualInstance();
}
DLL(int32_t) BS_CSteamID_HasNoIndividualInstance(CSteamID* pThis) {
return pThis->HasNoIndividualInstance();
}
DLL(uint32_t) BS_CSteamID_GetAccountInstance(CSteamID* pThis) {
return pThis->GetUnAccountInstance();
}
DLL(EAccountType) BS_CSteamID_GetEAccountType(CSteamID* pThis) {
return pThis->GetEAccountType();
}
DLL(void) BS_CSteamID_SetEUniverse(CSteamID* pThis, EUniverse eUniverse) {
pThis->SetEUniverse(eUniverse);
}
DLL(EUniverse) BS_CSteamID_GetEUniverse(CSteamID* pThis) {
return pThis->GetEUniverse();
}
DLL(int32_t) BS_CSteamID_Compare(CSteamID* pThis, CSteamID* pOther) {
if ((pThis == nullptr) || (pOther == nullptr))
return -1;
return /* It can either be Equal (0) or Smaller or Greater. Easy to check. */
/* Greater */
(*pThis > *pOther ? 1 : 0) +
/* Smaller */
(*pThis < *pOther ? -1 : 0);
}
+179
View File
@@ -0,0 +1,179 @@
// BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
#include "BlitzSteamInternal.h"
//-----------------------------------------------------------------------------
// Purpose: Constructor
//-----------------------------------------------------------------------------
DLL(CSteamID*) BS_CSteamID_New();
DLL(CSteamID*) BS_CSteamID_Copy(CSteamID* pOther);
DLL(void) BS_CSteamID_Destroy(CSteamID* pThis);
//-----------------------------------------------------------------------------
// Purpose: Constructor
// Input : unAccountID - 32-bit account ID
// eUniverse - Universe this account belongs to
// eAccountType - Type of account
//-----------------------------------------------------------------------------
DLL(CSteamID*) BS_CSteamID_New_IdUniverseType(AccountID_t iAccountId, EUniverse eUniverse, EAccountType eAccountType);
//-----------------------------------------------------------------------------
// Purpose: Constructor
// Input : unAccountID - 32-bit account ID
// unAccountInstance - instance
// eUniverse - Universe this account belongs to
// eAccountType - Type of account
//-----------------------------------------------------------------------------
DLL(CSteamID*) BS_CSteamID_New_IdInstanceUniverseType(AccountID_t iAccountId, uint32_t iInstance, EUniverse eUniverse, EAccountType eAccountType);
//-----------------------------------------------------------------------------
// Purpose: Constructor
// Input : ulSteamID - 64-bit representation of a Steam ID
// Note: Will not accept a uint32 or int32 as input, as that is a probable mistake.
// See the stubbed out overloads in the private: section for more info.
//-----------------------------------------------------------------------------
DLL(CSteamID*) BS_CSteamID_FromL(int64_t* pOther);
DLL(int64_t*) BS_CSteamID_ToL(CSteamID* pThis);
//-----------------------------------------------------------------------------
// Purpose: Sets parameters for steam ID
// Input : unAccountID - 32-bit account ID
// eUniverse - Universe this account belongs to
// eAccountType - Type of account
//-----------------------------------------------------------------------------
DLL(void) BS_CSteamID_Set(CSteamID* pThis, AccountID_t iAccountID, EUniverse eUniverse, EAccountType eAccountType);
//-----------------------------------------------------------------------------
// Purpose: Sets parameters for steam ID
// Input : unAccountID - 32-bit account ID
// eUniverse - Universe this account belongs to
// eAccountType - Type of account
//-----------------------------------------------------------------------------
DLL(void) BS_CSteamID_InstancedSet(CSteamID* pThis, AccountID_t iAccountId, uint32_t iInstance, EUniverse eUniverse, EAccountType eAccountType);
//-----------------------------------------------------------------------------
// Purpose: Initializes a steam ID from its 52 bit parts and universe/type
// Input : ulIdentifier - 52 bits of goodness
//-----------------------------------------------------------------------------
DLL(void) BS_CSteamID_FullSet(CSteamID* pThis, int64_t* plIdentifier, EUniverse eUniverse, EAccountType eAccountType);
//-----------------------------------------------------------------------------
// Purpose: Initializes a steam ID from its 64-bit representation
// Input : ulSteamID - 64-bit representation of a Steam ID
//-----------------------------------------------------------------------------
DLL(void) BS_CSteamID_SetFromLong(CSteamID* pThis, int64_t* plSteamID);
//-----------------------------------------------------------------------------
// Purpose: Clear all fields, leaving an invalid ID.
//-----------------------------------------------------------------------------
DLL(void) BS_CSteamID_Clear(CSteamID* pThis);
//-----------------------------------------------------------------------------
// Purpose: Converts the static parts of a steam ID to a 64-bit representation.
// For multiseat accounts, all instances of that account will have the
// same static account key, so they can be grouped together by the static
// account key.
// Output : 64-bit static account key
//-----------------------------------------------------------------------------
DLL(int64_t*) BS_CSteamID_GetStaticAccountKey(CSteamID* pThis);
//-----------------------------------------------------------------------------
// Purpose: create an anonymous game server login to be filled in by the AM
//-----------------------------------------------------------------------------
DLL(void) BS_CSteamID_CreateBlankAnonLogon(CSteamID* pThis, EUniverse eUniverse);
//-----------------------------------------------------------------------------
// Purpose: create an anonymous game server login to be filled in by the AM
//-----------------------------------------------------------------------------
DLL(void) BS_CSteamID_CreateBlankAnonUserLogon(CSteamID* pThis, EUniverse eUniverse);
//-----------------------------------------------------------------------------
// Purpose: Is this an anonymous game server login that will be filled in?
//-----------------------------------------------------------------------------
DLL(int32_t) BS_CSteamID_IsBlankAnonAccount(CSteamID* pThis);
//-----------------------------------------------------------------------------
// Purpose: Is this a game server account id? (Either persistent or anonymous)
//-----------------------------------------------------------------------------
DLL(int32_t) BS_CSteamID_IsGameServerAccount(CSteamID* pThis);
//-----------------------------------------------------------------------------
// Purpose: Is this a persistent (not anonymous) game server account id?
//-----------------------------------------------------------------------------
DLL(int32_t) BS_CSteamID_IsPersistentGameServerAccount(CSteamID* pThis);
//-----------------------------------------------------------------------------
// Purpose: Is this an anonymous game server account id?
//-----------------------------------------------------------------------------
DLL(int32_t) BS_CSteamID_IsAnonGameServerAccount(CSteamID* pThis);
//-----------------------------------------------------------------------------
// Purpose: Is this a content server account id?
//-----------------------------------------------------------------------------
DLL(int32_t) BS_CSteamID_IsContentServerAccount(CSteamID* pThis);
//-----------------------------------------------------------------------------
// Purpose: Is this a clan account id?
//-----------------------------------------------------------------------------
DLL(int32_t) BS_CSteamID_IsClanAccount(CSteamID* pThis);
//-----------------------------------------------------------------------------
// Purpose: Is this a chat account id?
//-----------------------------------------------------------------------------
DLL(int32_t) BS_CSteamID_IsChatAccount(CSteamID* pThis);
//-----------------------------------------------------------------------------
// Purpose: Is this a Lobby?
//-----------------------------------------------------------------------------
DLL(int32_t) BS_CSteamID_IsLobby(CSteamID* pThis);
//-----------------------------------------------------------------------------
// Purpose: Is this an individual user account id?
//-----------------------------------------------------------------------------
DLL(int32_t) BS_CSteamID_IsIndividualAccount(CSteamID* pThis);
//-----------------------------------------------------------------------------
// Purpose: Is this an anonymous account?
//-----------------------------------------------------------------------------
DLL(int32_t) BS_CSteamID_IsAnonAccount(CSteamID* pThis);
//-----------------------------------------------------------------------------
// Purpose: Is this an anonymous user account? ( used to create an account or reset a password )
//-----------------------------------------------------------------------------
DLL(int32_t) BS_CSteamID_IsAnonUserAccount(CSteamID* pThis);
//-----------------------------------------------------------------------------
// Purpose: Is this a faked up Steam ID for a PSN friend account?
//-----------------------------------------------------------------------------
DLL(int32_t) BS_CSteamID_IsConsoleUserAccount(CSteamID* pThis);
// simple accessors
DLL(void) BS_CSteamID_SetAccountID(CSteamID* pThis, AccountID_t iAccountId);
DLL(AccountID_t) BS_CSteamID_GetAccountID(CSteamID* pThis);
DLL(void) BS_CSteamID_SetAccountInstance(CSteamID* pThis, uint32_t iInstance);
DLL(void) BS_CSteamID_ClearIndividualInstance(CSteamID* pThis);
DLL(int32_t) BS_CSteamID_HasNoIndividualInstance(CSteamID* pThis);
DLL(uint32_t) BS_CSteamID_GetAccountInstance(CSteamID* pThis);
DLL(EAccountType) BS_CSteamID_GetEAccountType(CSteamID* pThis);
DLL(void) BS_CSteamID_SetEUniverse(CSteamID* pThis, EUniverse eUniverse);
DLL(EUniverse) BS_CSteamID_GetEUniverse(CSteamID* pThis);
DLL(int32_t) BS_CSteamID_Compare(CSteamID* pThis, CSteamID* pOther);
+125
View File
@@ -0,0 +1,125 @@
// BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "Long.h"
DLL(double_t*) BS_Double_New() {
return new double_t;
}
DLL(double_t*) BS_Double_Copy(double_t* pOther) {
return new double_t(*pOther);
}
DLL(void) BS_Double_Destroy(double_t* pThis) {
delete pThis;
}
char* BS_Double_Buffer = new char[32];
DLL(const char*) BS_Double_ToString(double_t* pThis) {
std::stringstream myStream;
myStream << (*pThis);
const char* myBuffer = myStream.str().c_str();
strcpy_s(BS_Double_Buffer, 32, myBuffer);
return BS_Double_Buffer;
}
DLL(double_t*) BS_Double_FromString(const char* pString) {
double_t* pThis = new double_t;
std::stringstream myStream = std::stringstream(pString);
myStream >> *pThis;
return pThis;
}
DLL(double_t*) BS_Double_FromF(float_t fOther) {
return new double_t(fOther);
}
DLL(float_t) BS_Double_ToF(double_t* pThis) {
return (float_t)*pThis;
}
DLL(double_t*) BS_Double_FromI(int32_t iOther) {
return new double_t(iOther);
}
DLL(int32_t) BS_Double_ToI(double_t* pThis) {
return (int32_t)*pThis;
}
DLL(double_t*) BS_Double_FromL(int64_t* pOther) {
return new double_t((double_t)*pOther);
}
DLL(int64_t*) BS_Double_ToL(double_t* pThis) {
return new int64_t((int64_t)*pThis);
}
DLL(int32_t) BS_Double_Compare(double_t* pThis, double_t* pOther) {
if ((pThis == nullptr) || (pOther == nullptr))
return -1;
return /* It can either be Equal (0) or Smaller or Greater. Easy to check. */
/* Greater */
(*pThis > *pOther ? 1 : 0) +
/* Smaller */
(*pThis < *pOther ? -1 : 0);
}
DLL(double_t*) BS_Double_Set(double_t* pThis, double_t* pOther) {
*pThis = *pOther;
return pThis;
}
DLL(double_t*) BS_Double_Add(double_t* pThis, double_t* pOther) {
*pThis += *pOther;
return pThis;
}
DLL(double_t*) BS_Double_Sub(double_t* pThis, double_t* pOther) {
*pThis -= *pOther;
return pThis;
}
DLL(double_t*) BS_Double_Div(double_t* pThis, double_t* pOther) {
*pThis /= *pOther;
return pThis;
}
DLL(double_t*) BS_Double_Mul(double_t* pThis, double_t* pOther) {
*pThis *= *pOther;
return pThis;
}
DLL(double_t*) BS_Double_Mod(double_t* pThis, double_t* pOther) {
*pThis = fmod(*pThis, *pOther);
return pThis;
}
DLL(double_t*) BS_Double_SetF(double_t* pThis, float_t fOther) {
*pThis = fOther;
return pThis;
}
DLL(double_t*) BS_Double_AddF(double_t* pThis, float_t fOther) {
*pThis += fOther;
return pThis;
}
DLL(double_t*) BS_Double_SubF(double_t* pThis, float_t fOther) {
*pThis -= fOther;
return pThis;
}
DLL(double_t*) BS_Double_DivF(double_t* pThis, float_t fOther) {
*pThis /= fOther;
return pThis;
}
DLL(double_t*) BS_Double_MulF(double_t* pThis, float_t fOther) {
*pThis *= fOther;
return pThis;
}
DLL(double_t*) BS_Double_ModF(double_t* pThis, float_t fOther) {
*pThis = fmod(*pThis, fOther);
return pThis;
}
+51
View File
@@ -0,0 +1,51 @@
// BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
#include "BlitzSteamInternal.h"
#include <sstream>
DLL(double_t*) BS_Double_New();
DLL(double_t*) BS_Double_Copy(double_t* pRight);
DLL(void) BS_Double_Destroy(double_t* pThis);
DLL(const char*) BS_Double_ToString(double_t* pThis);
DLL(double_t*) BS_Double_FromString(const char* pString);
DLL(double_t*) BS_Double_FromF(float_t fOther);
DLL(float_t) BS_Double_ToF(double_t* pThis);
DLL(double_t*) BS_Double_FromI(int32_t iOther);
DLL(int32_t) BS_Double_ToI(double_t* pThis);
DLL(double_t*) BS_Double_FromL(int64_t* pOther);
DLL(int64_t*) BS_Double_ToL(double_t* pThis);
DLL(int32_t) BS_Double_Compare(double_t* pThis, double_t* pOther);
DLL(double_t*) BS_Double_Set(double_t* pThis, double_t* pOther);
DLL(double_t*) BS_Double_Add(double_t* pThis, double_t* pOther);
DLL(double_t*) BS_Double_Sub(double_t* pThis, double_t* pOther);
DLL(double_t*) BS_Double_Div(double_t* pThis, double_t* pOther);
DLL(double_t*) BS_Double_Mul(double_t* pThis, double_t* pOther);
DLL(double_t*) BS_Double_Mod(double_t* pThis, double_t* pOther);
DLL(double_t*) BS_Double_SetF(double_t* pThis, float_t fOther);
DLL(double_t*) BS_Double_AddF(double_t* pThis, float_t fOther);
DLL(double_t*) BS_Double_SubF(double_t* pThis, float_t fOther);
DLL(double_t*) BS_Double_DivF(double_t* pThis, float_t fOther);
DLL(double_t*) BS_Double_MulF(double_t* pThis, float_t fOther);
DLL(double_t*) BS_Double_ModF(double_t* pThis, float_t fOther);
+170
View File
@@ -0,0 +1,170 @@
// BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "Long.h"
DLL(int64_t*) BS_Long_New() {
return new int64_t;
}
DLL(int64_t*) BS_Long_Copy(int64_t* pOther) {
return new int64_t(*pOther);
}
DLL(void) BS_Long_Destroy(int64_t* pThis) {
delete pThis;
}
char* BS_Long_Buffer = new char[32];
DLL(const char*) BS_Long_ToString(int64_t* pThis) {
std::stringstream myStream;
myStream << (*pThis);
const char* myBuffer = myStream.str().c_str();
strcpy_s(BS_Long_Buffer, 32, myBuffer);
return BS_Long_Buffer;
}
DLL(int64_t*) BS_Long_FromString(const char* pString) {
int64_t* pThis = new int64_t;
std::stringstream myStream = std::stringstream(pString);
myStream >> *pThis;
return pThis;
}
DLL(int64_t*) BS_Long_FromI(int32_t iRight) {
return new int64_t(iRight);
}
DLL(int64_t*) BS_Long_FromII(int32_t iLeft, int32_t iRight) {
return new int64_t(((int64_t)(iLeft) << 32) + iRight);
}
DLL(int32_t) BS_Long_ToI(int64_t* pThis, int32_t iShift) {
if (iShift >= 0)
return (int32_t)(*pThis >> iShift);
else
return (int32_t)(*pThis << -iShift);
}
DLL(int32_t) BS_Long_ToIH(int64_t* pThis) {
return (int32_t)(*pThis >> 32);
}
DLL(int32_t) BS_Long_ToIL(int64_t* pThis) {
return (int32_t)*pThis;
}
DLL(int64_t*) BS_Long_FromF(float_t fOther) {
return new int64_t((int64_t)fOther);
}
DLL(float_t) BS_Long_ToF(int64_t* pThis) {
return (float_t)*pThis;
}
DLL(int64_t*) BS_Long_FromD(double_t* pOther) {
return new int64_t((int64_t)*pOther);
}
DLL(double_t*) BS_Long_ToD(int64_t* pThis) {
return new double_t((double_t)*pThis);
}
DLL(int32_t) BS_Long_Compare(int64_t* pThis, int64_t* pOther) {
if ((pThis == nullptr) || (pOther == nullptr))
return -1;
return /* It can either be Equal (0) or Smaller or Greater. Easy to check. */
/* Greater */
(*pThis > *pOther ? 1 : 0) +
/* Smaller */
(*pThis < *pOther ? -1 : 0);
}
DLL(int64_t*) BS_Long_Set(int64_t* pThis, int64_t* pOther) {
*pThis = *pOther;
return pThis;
}
DLL(int64_t*) BS_Long_Add(int64_t* pThis, int64_t* pOther) {
*pThis += *pOther;
return pThis;
}
DLL(int64_t*) BS_Long_Sub(int64_t* pThis, int64_t* pOther) {
*pThis -= *pOther;
return pThis;
}
DLL(int64_t*) BS_Long_Div(int64_t* pThis, int64_t* pOther) {
*pThis /= *pOther;
return pThis;
}
DLL(int64_t*) BS_Long_Mul(int64_t* pThis, int64_t* pOther) {
*pThis *= *pOther;
return pThis;
}
DLL(int64_t*) BS_Long_Mod(int64_t* pThis, int64_t* pOther) {
*pThis %= *pOther;
return pThis;
}
DLL(int64_t*) BS_Long_SetI(int64_t* pThis, int32_t iRight) {
*pThis = iRight;
return pThis;
}
DLL(int64_t*) BS_Long_AddI(int64_t* pThis, int32_t iRight) {
*pThis += iRight;
return pThis;
}
DLL(int64_t*) BS_Long_SubI(int64_t* pThis, int32_t iRight) {
*pThis -= iRight;
return pThis;
}
DLL(int64_t*) BS_Long_DivI(int64_t* pThis, int32_t iRight) {
*pThis /= iRight;
return pThis;
}
DLL(int64_t*) BS_Long_MulI(int64_t* pThis, int32_t iRight) {
*pThis *= iRight;
return pThis;
}
DLL(int64_t*) BS_Long_ModI(int64_t* pThis, int32_t iRight) {
*pThis %= iRight;
return pThis;
}
DLL(int64_t*) BS_Long_SetII(int64_t* pThis, int32_t iLeft, int32_t iRight) {
*pThis = (((int64_t)iLeft << 32) + iRight);
return pThis;
}
DLL(int64_t*) BS_Long_AddII(int64_t* pThis, int32_t iLeft, int32_t iRight) {
*pThis += (((int64_t)iLeft << 32) + iRight);
return pThis;
}
DLL(int64_t*) BS_Long_SubII(int64_t* pThis, int32_t iLeft, int32_t iRight) {
*pThis -= (((int64_t)iLeft << 32) + iRight);
return pThis;
}
DLL(int64_t*) BS_Long_DivII(int64_t* pThis, int32_t iLeft, int32_t iRight) {
*pThis /= (((int64_t)iLeft << 32) + iRight);
return pThis;
}
DLL(int64_t*) BS_Long_MulII(int64_t* pThis, int32_t iLeft, int32_t iRight) {
*pThis *= (((int64_t)iLeft << 32) + iRight);
return pThis;
}
DLL(int64_t*) BS_Long_ModII(int64_t* pThis, int32_t iLeft, int32_t iRight) {
*pThis %= (((int64_t)iLeft << 32) + iRight);
return pThis;
}
DLL(int64_t*) BS_Long_Shift(int64_t* pThis, int32_t iRight) {
if (iRight >= 0)
*pThis >>= iRight;
else
*pThis <<= -iRight;
return pThis;
}
+63
View File
@@ -0,0 +1,63 @@
// BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
#include "BlitzSteamInternal.h"
#include <sstream>
DLL(int64_t*) BS_Long_New();
DLL(int64_t*) BS_Long_Copy(int64_t* pRight);
DLL(void) BS_Long_Destroy(int64_t* pThis);
DLL(const char*) BS_Long_ToString(int64_t* pThis);
DLL(int64_t*) BS_Long_FromString(const char* pString);
DLL(int64_t*) BS_Long_FromI(int32_t iRight);
DLL(int64_t*) BS_Long_FromII(int32_t iLeft, int32_t iRight);
DLL(int32_t) BS_Long_ToI(int64_t* pThis, int32_t iShift);
DLL(int32_t) BS_Long_ToIH(int64_t* pThis);
DLL(int32_t) BS_Long_ToIL(int64_t* pThis);
DLL(int64_t*) BS_Long_FromF(float_t fOther);
DLL(float_t) BS_Long_ToF(int64_t* pThis);
DLL(int64_t*) BS_Long_FromD(double_t* pOther);
DLL(double_t*) BS_Long_ToD(int64_t* pThis);
DLL(int32_t) BS_Long_Compare(int64_t* pThis, int64_t* pOther);
DLL(int64_t*) BS_Long_Set(int64_t* pThis, int64_t* pOther);
DLL(int64_t*) BS_Long_Add(int64_t* pThis, int64_t* pOther);
DLL(int64_t*) BS_Long_Sub(int64_t* pThis, int64_t* pOther);
DLL(int64_t*) BS_Long_Div(int64_t* pThis, int64_t* pOther);
DLL(int64_t*) BS_Long_Mul(int64_t* pThis, int64_t* pOther);
DLL(int64_t*) BS_Long_Mod(int64_t* pThis, int64_t* pOther);
DLL(int64_t*) BS_Long_SetI(int64_t* pThis, int32_t iRight);
DLL(int64_t*) BS_Long_AddI(int64_t* pThis, int32_t iRight);
DLL(int64_t*) BS_Long_SubI(int64_t* pThis, int32_t iRight);
DLL(int64_t*) BS_Long_DivI(int64_t* pThis, int32_t iRight);
DLL(int64_t*) BS_Long_MulI(int64_t* pThis, int32_t iRight);
DLL(int64_t*) BS_Long_ModI(int64_t* pThis, int32_t iRight);
DLL(int64_t*) BS_Long_SetII(int64_t* pThis, int32_t iLeft, int32_t iRight);
DLL(int64_t*) BS_Long_AddII(int64_t* pThis, int32_t iLeft, int32_t iRight);
DLL(int64_t*) BS_Long_SubII(int64_t* pThis, int32_t iLeft, int32_t iRight);
DLL(int64_t*) BS_Long_DivII(int64_t* pThis, int32_t iLeft, int32_t iRight);
DLL(int64_t*) BS_Long_MulII(int64_t* pThis, int32_t iLeft, int32_t iRight);
DLL(int64_t*) BS_Long_ModII(int64_t* pThis, int32_t iLeft, int32_t iRight);
DLL(int64_t*) BS_Long_Shift(int64_t* pThis, int32_t iShift);
+77
View File
@@ -0,0 +1,77 @@
// BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "Memory.h"
DLL(void*) BS_Memory_Alloc(uint32_t iSize) {
return malloc(iSize);
}
DLL(void*) BS_Memory_ReAlloc(void* pMemory, uint32_t iNewSize) {
return realloc(pMemory, iNewSize);
}
DLL(void) BS_Memory_Free(void* pMemory) {
free(pMemory);
}
DLL(void) BS_Memory_PokeByte(void* pMemory, uint32_t offset, int8_t value) {
*((reinterpret_cast<uint8_t*>(pMemory) + offset)) = value;
}
DLL(int32_t) BS_Memory_PeekByte(void* pMemory, uint32_t offset) {
return *(reinterpret_cast<uint8_t*>(pMemory) + offset);
}
DLL(void) BS_Memory_PokeShort(void* pMemory, uint32_t offset, int16_t value) {
*(reinterpret_cast<int16_t*>(reinterpret_cast<uint8_t*>(pMemory) + offset)) = value;
}
DLL(int32_t) BS_Memory_PeekShort(void* pMemory, uint32_t offset) {
return *(int16_t*)(reinterpret_cast<uint8_t*>(pMemory) + offset);
}
DLL(void) BS_Memory_PokeInt(void* pMemory, uint32_t offset, int32_t value) {
*(reinterpret_cast<uint32_t*>(reinterpret_cast<uint8_t*>(pMemory) + offset)) = value;
}
DLL(int32_t) BS_Memory_PeekInt(void* pMemory, uint32_t offset) {
return *(int32_t*)(reinterpret_cast<uint8_t*>(pMemory) + offset);
}
DLL(void) BS_Memory_PokeFloat(void* pMemory, uint32_t offset, float_t value) {
*(reinterpret_cast<float_t*>(reinterpret_cast<uint8_t*>(pMemory) + offset)) = value;
}
DLL(float_t) BS_Memory_PeekFloat(void* pMemory, uint32_t offset) {
return *(float_t*)(reinterpret_cast<uint8_t*>(pMemory) + offset);
}
DLL(void) BS_Memory_PokeLong(void* pMemory, uint32_t offset, int64_t* value) {
*(reinterpret_cast<int64_t*>(reinterpret_cast<uint8_t*>(pMemory) + offset)) = *value;
}
DLL(int64_t*) BS_Memory_PeekLong(void* pMemory, uint32_t offset) {
return new int64_t(*(reinterpret_cast<int64_t*>(reinterpret_cast<uint8_t*>(pMemory) + offset)));
}
DLL(void) BS_Memory_PokeDouble(void* pMemory, uint32_t offset, double_t* value) {
*(reinterpret_cast<double_t*>(reinterpret_cast<uint8_t*>(pMemory) + offset)) = *value;
}
DLL(double_t*) BS_Memory_PeekDouble(void* pMemory, uint32_t offset) {
return new double_t(*(reinterpret_cast<double_t*>(reinterpret_cast<uint8_t*>(pMemory) + offset)));
}
+42
View File
@@ -0,0 +1,42 @@
// BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
#include "BlitzSteamInternal.h"
#include <stdlib.h>
DLL(void*) BS_Memory_Alloc(uint32_t iSize);
DLL(void*) BS_Memory_ReAlloc(void* pMemory, uint32_t iNewSize);
DLL(void) BS_Memory_Free(void* pMemory);
DLL(void) BS_Memory_PokeByte(void* pMemory, uint32_t offset, int8_t value);
DLL(int32_t) BS_Memory_PeekByte(void* pMemory, uint32_t offset);
DLL(void) BS_Memory_PokeShort(void* pMemory, uint32_t offset, int16_t value);
DLL(int32_t) BS_Memory_PeekShort(void* pMemory, uint32_t offset);
DLL(void) BS_Memory_PokeInt(void* pMemory, uint32_t offset, int32_t value);
DLL(int32_t) BS_Memory_PeekInt(void* pMemory, uint32_t offset);
DLL(void) BS_Memory_PokeFloat(void* pMemory, uint32_t offset, float_t value);
DLL(float_t) BS_Memory_PeekFloat(void* pMemory, uint32_t offset);
DLL(void) BS_Memory_PokeLong(void* pMemory, uint32_t offset, int64_t* value);
DLL(int64_t*) BS_Memory_PeekLong(void* pMemory, uint32_t offset);
DLL(void) BS_Memory_PokeDouble(void* pMemory, uint32_t offset, double_t* value);
DLL(double_t*) BS_Memory_PeekDouble(void* pMemory, uint32_t offset);
+271
View File
@@ -0,0 +1,271 @@
// BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "SteamMatchmakingTypes.h"
//////////////////////////////////////////////////////////////////////////
BlitzISteamMatchmakingServerListResponse::BlitzISteamMatchmakingServerListResponse(void* pData, BP_BlitzFunction3_t pServerResponded,
BP_BlitzFunction3_t pServerFailedToRespond, BP_BlitzFunction3_t pRefreshComplete)
: m_pData(pData), m_pServerResponded(pServerResponded), m_pServerFailedToRespond(pServerFailedToRespond), m_pRefreshComplete(pRefreshComplete) {}
void BlitzISteamMatchmakingServerListResponse::ServerResponded(HServerListRequest hRequest, int iServer) {
if (this->m_pServerResponded != nullptr)
BP_CallFunction3(m_pServerResponded, reinterpret_cast<int32_t>(m_pData), reinterpret_cast<int32_t>(hRequest), iServer);
}
void BlitzISteamMatchmakingServerListResponse::ServerFailedToRespond(HServerListRequest hRequest, int iServer) {
if (this->m_pServerFailedToRespond != nullptr)
BP_CallFunction3(m_pServerFailedToRespond, reinterpret_cast<int32_t>(m_pData), reinterpret_cast<int32_t>(hRequest), iServer);
}
void BlitzISteamMatchmakingServerListResponse::RefreshComplete(HServerListRequest hRequest, EMatchMakingServerResponse response) {
if (this->m_pRefreshComplete != nullptr)
BP_CallFunction3(m_pRefreshComplete, reinterpret_cast<int32_t>(m_pData), reinterpret_cast<int32_t>(hRequest), static_cast<int32_t>(response));
}
DLL(BlitzISteamMatchmakingServerListResponse*) BS_ISteamMatchmakingServerListResponse_New(void* pData, BP_BlitzFunction3_t pServerResponded, BP_BlitzFunction3_t pServerFailedToRespond, BP_BlitzFunction3_t pRefreshComplete) {
return new BlitzISteamMatchmakingServerListResponse(pData, pServerResponded, pServerFailedToRespond, pRefreshComplete);
}
DLL(void) BS_ISteamMatchmakingServerListResponse_Destroy(BlitzISteamMatchmakingServerListResponse* pThis) {
delete pThis;
}
//////////////////////////////////////////////////////////////////////////
BlitzISteamMatchmakingPingResponse::BlitzISteamMatchmakingPingResponse(void* pData, BP_BlitzFunction2_t pServerResponded, BP_BlitzFunction1_t pServerFailedToRespond)
: m_pData(pData), m_pServerResponded(pServerResponded), m_pServerFailedToRespond(pServerFailedToRespond) {}
void BlitzISteamMatchmakingPingResponse::ServerResponded(gameserveritem_t &server) {
if (this->m_pServerResponded != nullptr)
BP_CallFunction2(m_pServerResponded, reinterpret_cast<int32_t>(m_pData), reinterpret_cast<int32_t>(&server));
}
void BlitzISteamMatchmakingPingResponse::ServerFailedToRespond() {
if (this->m_pServerFailedToRespond != nullptr)
BP_CallFunction1(m_pServerFailedToRespond, reinterpret_cast<int32_t>(m_pData));
}
DLL(BlitzISteamMatchmakingPingResponse*) BS_ISteamMatchmakingPingResponse_New(void* pData, BP_BlitzFunction2_t pServerResponded, BP_BlitzFunction1_t pServerFailedToRespond) {
return new BlitzISteamMatchmakingPingResponse(pData, pServerResponded, pServerFailedToRespond);
}
DLL(void) BS_ISteamMatchmakingPingResponse_Destroy(BlitzISteamMatchmakingPingResponse* pThis) {
delete pThis;
}
//////////////////////////////////////////////////////////////////////////
BlitzISteamMatchmakingPlayersResponse::BlitzISteamMatchmakingPlayersResponse(void* pData, BP_BlitzFunction4_t pAddPlayerToList, BP_BlitzFunction1_t pPlayersFailedToRespond, BP_BlitzFunction1_t pPlayersRefreshComplete)
: m_pData(pData), m_pAddPlayerToList(pAddPlayerToList), m_pPlayersFailedToRespond(pPlayersFailedToRespond), m_pPlayersRefreshComplete(pPlayersRefreshComplete) {}
void BlitzISteamMatchmakingPlayersResponse::AddPlayerToList(const char *pchName, int nScore, float flTimePlayed) {
if (m_pAddPlayerToList != nullptr)
BP_CallFunction4(m_pAddPlayerToList, reinterpret_cast<int32_t>(m_pData), reinterpret_cast<int32_t>(pchName), nScore, *reinterpret_cast<int32_t*>(&flTimePlayed));
}
void BlitzISteamMatchmakingPlayersResponse::PlayersFailedToRespond() {
if (m_pPlayersFailedToRespond != nullptr)
BP_CallFunction1(m_pPlayersFailedToRespond, reinterpret_cast<int32_t>(m_pData));
}
void BlitzISteamMatchmakingPlayersResponse::PlayersRefreshComplete() {
if (m_pPlayersRefreshComplete != nullptr)
BP_CallFunction1(m_pPlayersRefreshComplete, reinterpret_cast<int32_t>(m_pData));
}
DLL(BlitzISteamMatchmakingPlayersResponse*) BS_ISteamMatchmakingPlayersResponse_New(void* pData, BP_BlitzFunction4_t pAddPlayerToList, BP_BlitzFunction1_t pPlayersFailedToRespond, BP_BlitzFunction1_t pPlayersRefreshComplete) {
return new BlitzISteamMatchmakingPlayersResponse(pData, pAddPlayerToList, pPlayersFailedToRespond, pPlayersRefreshComplete);
}
DLL(void) BS_ISteamMatchmakingPlayersResponse_Destroy(BlitzISteamMatchmakingPlayersResponse* pThis) {
delete pThis;
}
//////////////////////////////////////////////////////////////////////////
BlitzISteamMatchmakingRulesResponse::BlitzISteamMatchmakingRulesResponse(void* pData, BP_BlitzFunction3_t pRulesResponded, BP_BlitzFunction1_t pRulesFailedToRespond, BP_BlitzFunction1_t pRulesRefreshComplete)
: m_pData(pData), m_pRulesResponded(pRulesResponded), m_pRulesFailedToRespond(pRulesFailedToRespond), m_pRulesRefreshComplete(pRulesRefreshComplete) {}
void BlitzISteamMatchmakingRulesResponse::RulesResponded(const char *pchRule, const char *pchValue) {
if (this->m_pRulesResponded != nullptr)
BP_CallFunction3(m_pRulesResponded, reinterpret_cast<int32_t>(m_pData), reinterpret_cast<int32_t>(pchRule), reinterpret_cast<int32_t>(pchValue));
}
void BlitzISteamMatchmakingRulesResponse::RulesFailedToRespond() {
if (this->m_pRulesFailedToRespond != nullptr)
BP_CallFunction1(m_pRulesFailedToRespond, reinterpret_cast<int32_t>(m_pData));
}
void BlitzISteamMatchmakingRulesResponse::RulesRefreshComplete() {
if (this->m_pRulesRefreshComplete != nullptr)
BP_CallFunction1(m_pRulesRefreshComplete, reinterpret_cast<int32_t>(m_pData));
}
DLL(BlitzISteamMatchmakingRulesResponse*) BS_ISteamMatchmakingRulesResponse_New(void* pData, BP_BlitzFunction3_t pRulesResponded, BP_BlitzFunction1_t pRulesFailedToRespond, BP_BlitzFunction1_t pRulesRefreshComplete) {
return new BlitzISteamMatchmakingRulesResponse(pData, pRulesResponded, pRulesFailedToRespond, pRulesRefreshComplete);
}
DLL(void) BS_ISteamMatchmakingRulesResponse_Destroy(BlitzISteamMatchmakingRulesResponse* pThis) {
delete pThis;
}
//////////////////////////////////////////////////////////////////////////
char* BS_TGameServerItem_CharBuffer = new char[128];
DLL(const char*) BS_TGameServerItem_GetName(gameserveritem_t* pThis) {
strcpy(BS_TGameServerItem_CharBuffer, pThis->GetName());
return BS_TGameServerItem_CharBuffer;
}
DLL(void) BS_TGameServerItem_SetName(gameserveritem_t* pThis, const char* cName) {
pThis->SetName(cName);
}
///< IP/Query Port/Connection Port for this server
DLL(servernetadr_t*) BS_TGameServerItem_NetAdr(gameserveritem_t* pThis) {
return &(pThis->m_NetAdr);
}
///< current ping time in milliseconds
DLL(int) BS_TGameServerItem_Ping(gameserveritem_t* pThis) {
return pThis->m_nPing;
}
///< server has responded successfully in the past
DLL(bool) BS_TGameServerItem_HadSuccessfulResponse(gameserveritem_t* pThis) {
return pThis->m_bHadSuccessfulResponse;
}
///< server is marked as not responding and should no longer be refreshed
DLL(bool) BS_TGameServerItem_DoNotRefresh(gameserveritem_t* pThis) {
return pThis->m_bDoNotRefresh;
}
///< current game directory
DLL(const char*) BS_TGameServerItem_GameDir(gameserveritem_t* pThis) {
strcpy(BS_TGameServerItem_CharBuffer, pThis->m_szGameDir);
return BS_TGameServerItem_CharBuffer;
}
///< current map
DLL(const char*) BS_TGameServerItem_Map(gameserveritem_t* pThis) {
strcpy(BS_TGameServerItem_CharBuffer, pThis->m_szMap);
return BS_TGameServerItem_CharBuffer;
}
///< game description
DLL(const char*) BS_TGameServerItem_GameDescription(gameserveritem_t* pThis) {
strcpy(BS_TGameServerItem_CharBuffer, pThis->m_szGameDescription);
return BS_TGameServerItem_CharBuffer;
}
///< Steam App ID of this server
DLL(uint32_t) BS_TGameServerItem_AppId(gameserveritem_t* pThis) {
return pThis->m_nAppID;
}
///< total number of players currently on the server. INCLUDES BOTS!!
DLL(uint32_t) BS_TGameServerItem_Players(gameserveritem_t* pThis) {
return pThis->m_nPlayers;
}
///< Maximum players that can join this server
DLL(uint32_t) BS_TGameServerItem_MaxPlayers(gameserveritem_t* pThis) {
return pThis->m_nMaxPlayers;
}
///< Number of bots (i.e simulated players) on this server
DLL(uint32_t) BS_TGameServerItem_BotPlayers(gameserveritem_t* pThis) {
return pThis->m_nBotPlayers;
}
///< true if this server needs a password to join
DLL(bool) BS_TGameServerItem_Password(gameserveritem_t* pThis) {
return pThis->m_bPassword;
}
///< Is this server protected by VAC
DLL(bool) BS_TGameServerItem_Secure(gameserveritem_t* pThis) {
return pThis->m_bSecure;
}
///< time (in unix time) when this server was last played on (for favorite/history servers)
DLL(uint32_t) BS_TGameServerItem_TimeLastPlayed(gameserveritem_t* pThis) {
return pThis->m_ulTimeLastPlayed;
}
///< server version as reported to Steam
DLL(uint32_t) BS_TGameServerItem_ServerVersion(gameserveritem_t* pThis) {
return pThis->m_nServerVersion;
}
/// the tags this server exposes
DLL(const char*) BS_TGameServerItem_GameTags(gameserveritem_t* pThis) {
strcpy(BS_TGameServerItem_CharBuffer, pThis->m_szGameTags);
return BS_TGameServerItem_CharBuffer;
}
/// steamID of the game server - invalid if it's doesn't have one (old server, or not connected to Steam)
DLL(CSteamID*) BS_TGameServerItem_SteamID(gameserveritem_t* pThis) {
return &(pThis->m_steamID);
}
//////////////////////////////////////////////////////////////////////////
char* BS_TServerNetAdr_CharBuffer = new char[128];
DLL(void) BS_TServerNetAdr_Set(servernetadr_t* pThis, servernetadr_t* pThat) {
*pThis = *pThat;
}
DLL(void) BS_TServerNetAdr_Init(servernetadr_t* pThis, uint32_t iIP, uint16_t iQueryPort, uint16_t iConnectionPort) {
pThis->Init(iIP, iQueryPort, iConnectionPort);
}
DLL(uint16_t) BS_TServerNetAdr_GetQueryPort(servernetadr_t* pThis) {
return pThis->GetQueryPort();
}
DLL(void) BS_TServerNetAdr_SetQueryPort(servernetadr_t* pThis, uint16_t iPort) {
pThis->SetQueryPort(iPort);
}
DLL(uint16_t) BS_TServerNetAdr_GetConnectionPort(servernetadr_t* pThis) {
return pThis->GetConnectionPort();
}
DLL(void) BS_TServerNetAdr_SetConnectionPort(servernetadr_t* pThis, uint16_t iPort) {
pThis->SetConnectionPort(iPort);
}
DLL(uint32_t) BS_TServerNetAdr_GetIP(servernetadr_t* pThis) {
return pThis->GetIP();
}
DLL(void) BS_TServerNetAdr_SetIP(servernetadr_t* pThis, uint32_t iIP) {
pThis->SetIP(iIP);
}
DLL(const char*) BS_TServerNetAdr_GetConnectionAddressString(servernetadr_t* pThis) {
strcpy(BS_TServerNetAdr_CharBuffer, pThis->GetConnectionAddressString());
return BS_TServerNetAdr_CharBuffer;
}
DLL(const char*) BS_TServerNetAdr_GetQueryAddressString(servernetadr_t* pThis) {
strcpy(BS_TServerNetAdr_CharBuffer, pThis->GetQueryAddressString());
return BS_TServerNetAdr_CharBuffer;
}
DLL(uint32_t) BS_TServerNetAdr_Compare(servernetadr_t* pThis, servernetadr_t* pThat) {
return (pThis < pThat ? -1 : (pThis > pThat ? 1 : 0));
}
+137
View File
@@ -0,0 +1,137 @@
// BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
#include "BlitzSteamInternal.h"
#include "../Helpers/BlitzPointer.h"
//-----------------------------------------------------------------------------
// Purpose: Callback interface for receiving responses after a server list refresh
// or an individual server update.
//
// Since you get these callbacks after requesting full list refreshes you will
// usually implement this interface inside an object like CServerBrowser. If that
// object is getting destructed you should use ISteamMatchMakingServers()->CancelQuery()
// to cancel any in-progress queries so you don't get a callback into the destructed
// object and crash.
//-----------------------------------------------------------------------------
class BlitzISteamMatchmakingServerListResponse : public ISteamMatchmakingServerListResponse {
private:
void* m_pData;
BP_BlitzFunction3_t m_pServerResponded;
BP_BlitzFunction3_t m_pServerFailedToRespond;
BP_BlitzFunction3_t m_pRefreshComplete;
public:
BlitzISteamMatchmakingServerListResponse(void* pData, BP_BlitzFunction3_t pServerResponded, BP_BlitzFunction3_t pServerFailedToRespond, BP_BlitzFunction3_t pRefreshComplete);
// Server has responded ok with updated data
virtual void ServerResponded(HServerListRequest hRequest, int iServer) override;
// Server has failed to respond
virtual void ServerFailedToRespond(HServerListRequest hRequest, int iServer) override;
// A list refresh you had initiated is now 100% completed
virtual void RefreshComplete(HServerListRequest hRequest, EMatchMakingServerResponse response) override;
};
//-----------------------------------------------------------------------------
// Purpose: Callback interface for receiving responses after pinging an individual server
//
// These callbacks all occur in response to querying an individual server
// via the ISteamMatchmakingServers()->PingServer() call below. If you are
// destructing an object that implements this interface then you should call
// ISteamMatchmakingServers()->CancelServerQuery() passing in the handle to the query
// which is in progress. Failure to cancel in progress queries when destructing
// a callback handler may result in a crash when a callback later occurs.
//-----------------------------------------------------------------------------
class BlitzISteamMatchmakingPingResponse : public ISteamMatchmakingPingResponse {
private:
void* m_pData;
BP_BlitzFunction2_t m_pServerResponded;
BP_BlitzFunction1_t m_pServerFailedToRespond;
public:
BlitzISteamMatchmakingPingResponse(void* pData, BP_BlitzFunction2_t pServerResponded, BP_BlitzFunction1_t pServerFailedToRespond);
// Server has responded successfully and has updated data
virtual void ServerResponded(gameserveritem_t &server) override;
// Server failed to respond to the ping request
virtual void ServerFailedToRespond() override;
};
//-----------------------------------------------------------------------------
// Purpose: Callback interface for receiving responses after requesting details on
// who is playing on a particular server.
//
// These callbacks all occur in response to querying an individual server
// via the ISteamMatchmakingServers()->PlayerDetails() call below. If you are
// destructing an object that implements this interface then you should call
// ISteamMatchmakingServers()->CancelServerQuery() passing in the handle to the query
// which is in progress. Failure to cancel in progress queries when destructing
// a callback handler may result in a crash when a callback later occurs.
//-----------------------------------------------------------------------------
class BlitzISteamMatchmakingPlayersResponse : public ISteamMatchmakingPlayersResponse {
private:
void* m_pData;
BP_BlitzFunction4_t m_pAddPlayerToList;
BP_BlitzFunction1_t m_pPlayersFailedToRespond;
BP_BlitzFunction1_t m_pPlayersRefreshComplete;
public:
BlitzISteamMatchmakingPlayersResponse(void* pData, BP_BlitzFunction4_t pAddPlayerToList, BP_BlitzFunction1_t pPlayersFailedToRespond, BP_BlitzFunction1_t pPlayersRefreshComplete);
// Got data on a new player on the server -- you'll get this callback once per player
// on the server which you have requested player data on.
virtual void AddPlayerToList(const char *pchName, int nScore, float flTimePlayed) override;
// The server failed to respond to the request for player details
virtual void PlayersFailedToRespond() override;
// The server has finished responding to the player details request
// (ie, you won't get anymore AddPlayerToList callbacks)
virtual void PlayersRefreshComplete() override;
};
//-----------------------------------------------------------------------------
// Purpose: Callback interface for receiving responses after requesting rules
// details on a particular server.
//
// These callbacks all occur in response to querying an individual server
// via the ISteamMatchmakingServers()->ServerRules() call below. If you are
// destructing an object that implements this interface then you should call
// ISteamMatchmakingServers()->CancelServerQuery() passing in the handle to the query
// which is in progress. Failure to cancel in progress queries when destructing
// a callback handler may result in a crash when a callback later occurs.
//-----------------------------------------------------------------------------
class BlitzISteamMatchmakingRulesResponse : public ISteamMatchmakingRulesResponse {
private:
void* m_pData;
BP_BlitzFunction3_t m_pRulesResponded;
BP_BlitzFunction1_t m_pRulesFailedToRespond, m_pRulesRefreshComplete;
public:
BlitzISteamMatchmakingRulesResponse(void* pData, BP_BlitzFunction3_t pRulesResponded, BP_BlitzFunction1_t pRulesFailedToRespond, BP_BlitzFunction1_t pRulesRefreshComplete);
// Got data on a rule on the server -- you'll get one of these per rule defined on
// the server you are querying
virtual void RulesResponded(const char *pchRule, const char *pchValue) override;
// The server failed to respond to the request for rule details
virtual void RulesFailedToRespond() override;
// The server has finished responding to the rule details request
// (ie, you won't get anymore RulesResponded callbacks)
virtual void RulesRefreshComplete() override;
};
+17
View File
@@ -0,0 +1,17 @@
// BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "SteamTypes.h"
+19
View File
@@ -0,0 +1,19 @@
// BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
#include "BlitzSteamInternal.h"
+99 -179
View File
@@ -1,179 +1,99 @@
// BlitzSteam - Steam wrapper for Blitz. // BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Project Kube (Michael Fabian Dirks) // Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as // it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the // published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version. // License, or (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// //
// You should have received a copy of the GNU Lesser General Public License // You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "dllmain.h" #include "BlitzSteam.h"
DLL_EXPORT uint32_t DLL_CALL BlitzSteam_Init() { //----------------------------------------------------------------------------------------------------------------------------------------------------------//
return SteamAPI_Init(); // Steam API setup & shutdown
} //
#pragma comment(linker, "/EXPORT:BlitzSteam_Init=_BlitzSteam_Init@0") // These functions manage loading, initializing and shutdown of the steamclient.dll
//
DLL_EXPORT void DLL_CALL BlitzSteam_Shutdown() { //----------------------------------------------------------------------------------------------------------------------------------------------------------//
SteamAPI_Shutdown();
} DLL(int32_t) BS_SteamAPI_Init() {
#pragma comment(linker, "/EXPORT:BlitzSteam_Shutdown=_BlitzSteam_Shutdown@0") return SteamAPI_Init();
}
DLL_EXPORT uint32_t DLL_CALL BlitzSteam_IsSteamRunning() {
return SteamAPI_IsSteamRunning(); DLL(void) BS_SteamAPI_Shutdown() {
} SteamAPI_Shutdown();
#pragma comment(linker, "/EXPORT:BlitzSteam_IsSteamRunning=_BlitzSteam_IsSteamRunning@0") }
DLL_EXPORT uint32_t DLL_CALL BlitzSteam_RestartAppIfNecessary(uint32 unOwnAppID) { // checks if a local Steam client is running
return SteamAPI_RestartAppIfNecessary(unOwnAppID); DLL(int32_t) BS_SteamAPI_IsSteamRunning() {
} return SteamAPI_IsSteamRunning();
#pragma comment(linker, "/EXPORT:BlitzSteam_RestartAppIfNecessary=_BlitzSteam_RestartAppIfNecessary@4") }
DLL_EXPORT void DLL_CALL BlitzSteam_SetMiniDumpComment(const char* pchMsg) { // Detects if your executable was launched through the Steam client, and restarts your game through
SteamAPI_SetMiniDumpComment(pchMsg); // the client if necessary. The Steam client will be started if it is not running.
} //
#pragma comment(linker, "/EXPORT:BlitzSteam_SetMiniDumpComment=_BlitzSteam_SetMiniDumpComment@4") // Returns: true if your executable was NOT launched through the Steam client. This function will
// then start your application through the client. Your current process should exit.
DLL_EXPORT void DLL_CALL BlitzSteam_WriteMiniDump(uint32_t uStructuredExceptionCode, void* pvExceptionInfo, uint32 uBuildID) { //
SteamAPI_WriteMiniDump(uStructuredExceptionCode, pvExceptionInfo, uBuildID); // false if your executable was started through the Steam client or a steam_appid.txt file
} // is present in your game's directory (for development). Your current process should continue.
#pragma comment(linker, "/EXPORT:BlitzSteam_WriteMiniDump=_BlitzSteam_WriteMiniDump@12") //
// NOTE: This function should be used only if you are using CEG or not using Steam's DRM. Once applied
// Interface Pointers, configured by SteamAPI_Init(). // to your executable, Steam's DRM will handle restarting through Steam if necessary.
DLL_EXPORT ISteamClient* DLL_CALL BlitzSteamClient() { DLL(int32_t) BS_SteamAPI_RestartAppIfNecessary(uint32_t unOwnAppID) {
return SteamClient(); return SteamAPI_RestartAppIfNecessary(unOwnAppID);
} }
#pragma comment(linker, "/EXPORT:BlitzSteamClient=_BlitzSteamClient@0")
// crash dump recording functions
DLL_EXPORT ISteamUser* DLL_CALL BlitzSteamUser() { DLL(void) BS_SteamAPI_WriteMiniDump(uint32_t uStructuredExceptionCode, void* pvExceptionInfo, uint32_t uBuildID) {
return SteamUser(); SteamAPI_WriteMiniDump(uStructuredExceptionCode, pvExceptionInfo, uBuildID);
} }
#pragma comment(linker, "/EXPORT:BlitzSteamUser=_BlitzSteamUser@0")
DLL(void) BS_SteamAPI_SetMiniDumpComment(const char* pchMsg) {
DLL_EXPORT ISteamFriends* DLL_CALL BlitzSteamFriends() { SteamAPI_SetMiniDumpComment(pchMsg);
return SteamFriends(); }
}
#pragma comment(linker, "/EXPORT:BlitzSteamFriends=_BlitzSteamFriends@0") // Most Steam API functions allocate some amount of thread-local memory for
// parameter storage. The SteamAPI_ReleaseCurrentThreadMemory() function
DLL_EXPORT ISteamUtils* DLL_CALL BlitzSteamUtils() { // will free all API-related memory associated with the calling thread.
return SteamUtils(); // This memory is also released automatically by SteamAPI_RunCallbacks(), so
} // a single-threaded program does not need to explicitly call this function.
#pragma comment(linker, "/EXPORT:BlitzSteamUtils=_BlitzSteamUtils@0") DLL(void) BS_SteamAPI_ReleaseCurrentThreadMemory() {
return SteamAPI_ReleaseCurrentThreadMemory();
DLL_EXPORT ISteamMatchmaking* DLL_CALL BlitzSteamMatchmaking() { }
return SteamMatchmaking();
} // -- Callbacks
#pragma comment(linker, "/EXPORT:BlitzSteamMatchmaking=_BlitzSteamMatchmaking@0") //----------------------------------------------------------------------------------------------------------------------------------------------------------//
// steam callback and call-result helpers
DLL_EXPORT ISteamUserStats* DLL_CALL BlitzSteamUserStats() { //
return SteamUserStats(); // The following macros and classes are used to register your application for
} // callbacks and call-results, which are delivered in a predictable manner.
#pragma comment(linker, "/EXPORT:BlitzSteamUserStats=_BlitzSteamUserStats@0") //
// STEAM_CALLBACK macros are meant for use inside of a C++ class definition.
DLL_EXPORT ISteamApps* DLL_CALL BlitzSteamApps() { // They map a Steam notification callback directly to a class member function
return SteamApps(); // which is automatically prototyped as "void func( callback_type *pParam )".
} //
#pragma comment(linker, "/EXPORT:BlitzSteamApps=_BlitzSteamApps@0") // CCallResult is used with specific Steam APIs that return "result handles".
// The handle can be passed to a CCallResult object's Set function, along with
DLL_EXPORT ISteamNetworking* DLL_CALL BlitzSteamNetworking() { // an object pointer and member-function pointer. The member function will
return SteamNetworking(); // be executed once the results of the Steam API call are available.
} //
#pragma comment(linker, "/EXPORT:BlitzSteamNetworking=_BlitzSteamNetworking@0") // CCallback and CCallbackManual classes can be used instead of STEAM_CALLBACK
// macros if you require finer control over registration and unregistration.
DLL_EXPORT ISteamMatchmakingServers* DLL_CALL BlitzSteamMatchmakingServers() { //
return SteamMatchmakingServers(); // Callbacks and call-results are queued automatically and are only
} // delivered/executed when your application calls SteamAPI_RunCallbacks().
#pragma comment(linker, "/EXPORT:BlitzSteamMatchmakingServers=_BlitzSteamMatchmakingServers@0") //----------------------------------------------------------------------------------------------------------------------------------------------------------//
DLL_EXPORT ISteamRemoteStorage* DLL_CALL BlitzSteamRemoteStorage() { // SteamAPI_RunCallbacks is safe to call from multiple threads simultaneously,
return SteamRemoteStorage(); // but if you choose to do this, callback code may be executed on any thread.
} DLL(void) BS_SteamAPI_RunCallbacks() {
#pragma comment(linker, "/EXPORT:BlitzSteamRemoteStorage=_BlitzSteamRemoteStorage@0") SteamAPI_RunCallbacks();
}
DLL_EXPORT ISteamScreenshots* DLL_CALL BlitzSteamScreenshots() {
return SteamScreenshots();
}
#pragma comment(linker, "/EXPORT:BlitzSteamScreenshots=_BlitzSteamScreenshots@0")
DLL_EXPORT ISteamHTTP* DLL_CALL BlitzSteamHTTP() {
return SteamHTTP();
}
#pragma comment(linker, "/EXPORT:BlitzSteamHTTP=_BlitzSteamHTTP@0")
DLL_EXPORT ISteamUnifiedMessages* DLL_CALL BlitzSteamUnifiedMessages() {
return SteamUnifiedMessages();
}
#pragma comment(linker, "/EXPORT:BlitzSteamUnifiedMessages=_BlitzSteamUnifiedMessages@0")
DLL_EXPORT ISteamController* DLL_CALL BlitzSteamController() {
return SteamController();
}
#pragma comment(linker, "/EXPORT:BlitzSteamController=_BlitzSteamController@0")
DLL_EXPORT ISteamUGC* DLL_CALL BlitzSteamUGC() {
return SteamUGC();
}
#pragma comment(linker, "/EXPORT:BlitzSteamUGC=_BlitzSteamUGC@0")
DLL_EXPORT ISteamAppList* DLL_CALL BlitzSteamAppList() {
return SteamAppList();
}
#pragma comment(linker, "/EXPORT:BlitzSteamAppList=_BlitzSteamAppList@0")
DLL_EXPORT ISteamMusic* DLL_CALL BlitzSteamMusic() {
return SteamMusic();
}
#pragma comment(linker, "/EXPORT:BlitzSteamMusic=_BlitzSteamMusic@0")
DLL_EXPORT ISteamMusicRemote* DLL_CALL BlitzSteamMusicRemote() {
return SteamMusicRemote();
}
#pragma comment(linker, "/EXPORT:BlitzSteamMusicRemote=_BlitzSteamMusicRemote@0")
DLL_EXPORT ISteamHTMLSurface* DLL_CALL BlitzSteamHTMLSurface() {
return SteamHTMLSurface();
}
#pragma comment(linker, "/EXPORT:BlitzSteamHTMLSurface=_BlitzSteamHTMLSurface@0")
DLL_EXPORT ISteamInventory* DLL_CALL BlitzSteamInventory() {
return SteamInventory();
}
#pragma comment(linker, "/EXPORT:BlitzSteamInventory=_BlitzSteamInventory@0")
DLL_EXPORT ISteamVideo* DLL_CALL BlitzSteamVideo() {
return SteamVideo();
}
#pragma comment(linker, "/EXPORT:BlitzSteamVideo=_BlitzSteamVideo@0")
// Callbacks & Hooks
DLL_EXPORT void DLL_CALL BlitzSteam_RunCallbacks() {
SteamAPI_RunCallbacks();
}
#pragma comment(linker, "/EXPORT:BlitzSteam_RunCallbacks=_BlitzSteam_RunCallbacks@0")
DLL_EXPORT void DLL_CALL BlitzSteam_RegisterCallback(class CCallbackBase *pCallback, int iCallback) {
SteamAPI_RegisterCallback(pCallback, iCallback);
}
#pragma comment(linker, "/EXPORT:BlitzSteam_RegisterCallback=_BlitzSteam_RegisterCallback@8")
DLL_EXPORT void DLL_CALL BlitzSteam_UnregisterCallback(class CCallbackBase *pCallback) {
SteamAPI_UnregisterCallback(pCallback);
}
#pragma comment(linker, "/EXPORT:BlitzSteam_UnregisterCallback=_BlitzSteam_UnregisterCallback@4")
DLL_EXPORT void DLL_CALL BlitzSteam_RegisterCallResult(class CCallbackBase *pCallback, uint32_t hAPICall_L, uint32_t hAPICall_R) {
SteamAPI_RegisterCallResult(pCallback, ((uint64_t)hAPICall_L << 32) + (uint64_t)hAPICall_R);
}
#pragma comment(linker, "/EXPORT:BlitzSteam_RegisterCallResult=_BlitzSteam_RegisterCallResult@12")
DLL_EXPORT void DLL_CALL BlitzSteam_UnregisterCallResult(class CCallbackBase *pCallback, uint32_t hAPICall_L, uint32_t hAPICall_R) {
SteamAPI_UnregisterCallResult(pCallback, ((uint64_t)hAPICall_L << 32) + (uint64_t)hAPICall_R);
}
#pragma comment(linker, "/EXPORT:BlitzSteam_UnregisterCallResult=_BlitzSteam_UnregisterCallResult@12")
+50 -42
View File
@@ -1,42 +1,50 @@
// BlitzSteam - Steam wrapper for Blitz. // BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Project Kube (Michael Fabian Dirks) // Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as // it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the // published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version. // License, or (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// //
// You should have received a copy of the GNU Lesser General Public License // You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "dllmain.h" #include "BlitzSteam.h"
DLL_EXPORT uint32_t DLL_CALL BlitzSteamAppList_GetNumInstalledApps(ISteamAppList* lpSteamAppList) { //-----------------------------------------------------------------------------
return lpSteamAppList->GetNumInstalledApps(); // Purpose: This is a restricted interface that can only be used by previously approved apps,
} // contact your Steam Account Manager if you believe you need access to this API.
#pragma comment(linker, "/EXPORT:BlitzSteamAppList_GetNumInstalledApps=_BlitzSteamAppList_GetNumInstalledApps@4") // This interface lets you detect installed apps for the local Steam client, useful for debugging tools
// to offer lists of apps to debug via Steam.
DLL_EXPORT uint32_t DLL_CALL BlitzSteamAppList_GetInstalledApps(ISteamAppList* lpSteamAppList, AppId_t *pvecAppID, uint32 unMaxAppIDs) { //-----------------------------------------------------------------------------
return lpSteamAppList->GetInstalledApps(pvecAppID, unMaxAppIDs); DLL(ISteamAppList*) BS_SteamAppList() {
} return SteamAppList();
#pragma comment(linker, "/EXPORT:BlitzSteamAppList_GetInstalledApps=_BlitzSteamAppList_GetInstalledApps@12") }
DLL_EXPORT uint32_t DLL_CALL BlitzSteamAppList_GetAppName(ISteamAppList* lpSteamAppList, AppId_t nAppID, char* pchName, uint32_t cchNameMax) { DLL(int32_t) BS_ISteamAppList_GetNumInstalledApps(ISteamAppList* lpSteamAppList) {
return lpSteamAppList->GetAppName(nAppID, pchName, cchNameMax); return lpSteamAppList->GetNumInstalledApps();
} }
#pragma comment(linker, "/EXPORT:BlitzSteamAppList_GetAppName=_BlitzSteamAppList_GetAppName@16")
DLL(int32_t) BS_ISteamAppList_GetInstalledApps(ISteamAppList* lpSteamAppList, AppId_t *pvecAppID, uint32_t unMaxAppIDs) {
DLL_EXPORT uint32_t DLL_CALL BlitzSteamAppList_GetAppInstallDir(ISteamAppList* lpSteamAppList, AppId_t nAppID, char* pchDirectory, uint32_t cchDirectoryMax) { return lpSteamAppList->GetInstalledApps(pvecAppID, unMaxAppIDs);
return lpSteamAppList->GetAppInstallDir(nAppID, pchDirectory, cchDirectoryMax); }
}
#pragma comment(linker, "/EXPORT:BlitzSteamAppList_GetAppInstallDir=_BlitzSteamAppList_GetAppInstallDir@16") // returns -1 if no name was found
DLL(int32_t) BS_ISteamAppList_GetAppName(ISteamAppList* lpSteamAppList, AppId_t nAppID, const char* pchName, uint32_t cchNameMax) {
DLL_EXPORT uint32_t DLL_CALL BlitzSteamAppList_GetAppBuildId(ISteamAppList* lpSteamAppList, AppId_t nAppID) { return lpSteamAppList->GetAppName(nAppID, (char*)pchName, cchNameMax);
return lpSteamAppList->GetAppBuildId(nAppID); }
}
#pragma comment(linker, "/EXPORT:BlitzSteamAppList_GetAppBuildId=_BlitzSteamAppList_GetAppBuildId@8") // returns -1 if no dir was found
DLL(int32_t) BS_ISteamAppList_GetAppInstallDir(ISteamAppList* lpSteamAppList, AppId_t nAppID, char* pchDirectoryBuffer, uint32_t cchDirectoryMax) {
return lpSteamAppList->GetAppInstallDir(nAppID, pchDirectoryBuffer, cchDirectoryMax);
}
// return the buildid of this app, may change at any time based on backend updates to the game
DLL(int32_t) BS_ISteamAppList_GetAppBuildId(ISteamAppList* lpSteamAppList, AppId_t nAppID) {
return lpSteamAppList->GetAppBuildId(nAppID);
}
+146 -139
View File
@@ -1,139 +1,146 @@
// BlitzSteam - Steam wrapper for Blitz. // BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Project Kube (Michael Fabian Dirks) // Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as // it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the // published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version. // License, or (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// //
// You should have received a copy of the GNU Lesser General Public License // You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "dllmain.h" #include "BlitzSteam.h"
#include "Helpers/CSteamID.h"
//-----------------------------------------------------------------------------
DLL_EXPORT uint32_t DLL_CALL BlitzSteamApps_IsSubscribed(ISteamApps* lpSteamApps) { // Purpose: interface to app data
return lpSteamApps->BIsSubscribed(); //-----------------------------------------------------------------------------
} DLL(ISteamApps*) BS_SteamApps() {
#pragma comment(linker, "/EXPORT:BlitzSteamApps_IsSubscribed=_BlitzSteamApps_IsSubscribed@4") return SteamApps();
}
DLL_EXPORT uint32_t DLL_CALL BlitzSteamApps_IsLowViolence(ISteamApps* lpSteamApps) {
return lpSteamApps->BIsLowViolence(); DLL(int32_t) BS_ISteamApps_IsSubscribed(ISteamApps* lpSteamApps) {
} return lpSteamApps->BIsSubscribed();
#pragma comment(linker, "/EXPORT:BlitzSteamApps_IsLowViolence=_BlitzSteamApps_IsLowViolence@4") }
DLL_EXPORT uint32_t DLL_CALL BlitzSteamApps_IsCybercafe(ISteamApps* lpSteamApps) { DLL(int32_t) BS_ISteamApps_IsLowViolence(ISteamApps* lpSteamApps) {
return lpSteamApps->BIsCybercafe(); return lpSteamApps->BIsLowViolence();
} }
#pragma comment(linker, "/EXPORT:BlitzSteamApps_IsCybercafe=_BlitzSteamApps_IsCybercafe@4")
DLL(int32_t) BS_ISteamApps_IsCybercafe(ISteamApps* lpSteamApps) {
DLL_EXPORT uint32_t DLL_CALL BlitzSteamApps_IsVACBanned(ISteamApps* lpSteamApps) { return lpSteamApps->BIsCybercafe();
return lpSteamApps->BIsVACBanned(); }
}
#pragma comment(linker, "/EXPORT:BlitzSteamApps_IsVACBanned=_BlitzSteamApps_IsVACBanned@4") DLL(int32_t) BS_ISteamApps_IsVACBanned(ISteamApps* lpSteamApps) {
return lpSteamApps->BIsVACBanned();
DLL_EXPORT const char* DLL_CALL BlitzSteamApps_GetCurrentGameLanguage(ISteamApps* lpSteamApps) { }
return lpSteamApps->GetCurrentGameLanguage();
} DLL(const char*) BS_ISteamApps_GetCurrentGameLanguage(ISteamApps* lpSteamApps) {
#pragma comment(linker, "/EXPORT:BlitzSteamApps_GetCurrentGameLanguage=_BlitzSteamApps_GetCurrentGameLanguage@4") return lpSteamApps->GetCurrentGameLanguage();
}
DLL_EXPORT const char* DLL_CALL BlitzSteamApps_GetAvailableGameLanguages(ISteamApps* lpSteamApps) {
return lpSteamApps->GetAvailableGameLanguages(); DLL(const char*) BS_ISteamApps_GetAvailableGameLanguages(ISteamApps* lpSteamApps) {
} return lpSteamApps->GetAvailableGameLanguages();
#pragma comment(linker, "/EXPORT:BlitzSteamApps_GetAvailableGameLanguages=_BlitzSteamApps_GetAvailableGameLanguages@4") }
DLL_EXPORT uint32_t DLL_CALL BlitzSteamApps_IsSubscribedApp(ISteamApps* lpSteamApps, AppId_t appID) { // only use this member if you need to check ownership of another game related to yours, a demo for example
return lpSteamApps->BIsSubscribedApp(appID); DLL(int32_t) BS_ISteamApps_IsSubscribedApp(ISteamApps* lpSteamApps, AppId_t appID) {
} return lpSteamApps->BIsSubscribedApp(appID);
#pragma comment(linker, "/EXPORT:BlitzSteamApps_IsSubscribedApp=_BlitzSteamApps_IsSubscribedApp@8") }
DLL_EXPORT uint32_t DLL_CALL BlitzSteamApps_IsDlcInstalled(ISteamApps* lpSteamApps, AppId_t appID) { // Takes AppID of DLC and checks if the user owns the DLC & if the DLC is installed
return lpSteamApps->BIsDlcInstalled(appID); DLL(int32_t) BS_ISteamApps_IsDlcInstalled(ISteamApps* lpSteamApps, AppId_t appID) {
} return lpSteamApps->BIsDlcInstalled(appID);
#pragma comment(linker, "/EXPORT:BlitzSteamApps_IsDlcInstalled=_BlitzSteamApps_IsDlcInstalled@8") }
DLL_EXPORT uint32_t DLL_CALL BlitzSteamApps_GetEarliestPurchaseUnixTime(ISteamApps* lpSteamApps, AppId_t appID) { // returns the Unix time of the purchase of the app
return lpSteamApps->GetEarliestPurchaseUnixTime(appID); DLL(int32_t) BS_ISteamApps_GetEarliestPurchaseUnixTime(ISteamApps* lpSteamApps, AppId_t appID) {
} return lpSteamApps->GetEarliestPurchaseUnixTime(appID);
#pragma comment(linker, "/EXPORT:BlitzSteamApps_GetEarliestPurchaseUnixTime=_BlitzSteamApps_GetEarliestPurchaseUnixTime@8") }
DLL_EXPORT uint32_t DLL_CALL BlitzSteamApps_IsSubscribedFromFreeWeekend(ISteamApps* lpSteamApps) { // Checks if the user is subscribed to the current app through a free weekend
return lpSteamApps->BIsSubscribedFromFreeWeekend(); // This function will return false for users who have a retail or other type of license
} // Before using, please ask your Valve technical contact how to package and secure your free weekened
#pragma comment(linker, "/EXPORT:BlitzSteamApps_IsSubscribedFromFreeWeekend=_BlitzSteamApps_IsSubscribedFromFreeWeekend@4") DLL(int32_t) BS_ISteamApps_IsSubscribedFromFreeWeekend(ISteamApps* lpSteamApps) {
return lpSteamApps->BIsSubscribedFromFreeWeekend();
DLL_EXPORT uint32_t DLL_CALL BlitzSteamApps_GetDLCCount(ISteamApps* lpSteamApps) { }
return lpSteamApps->GetDLCCount();
} // Returns the number of DLC pieces for the running app
#pragma comment(linker, "/EXPORT:BlitzSteamApps_GetDLCCount=_BlitzSteamApps_GetDLCCount@4") DLL(int32_t) BS_ISteamApps_GetDLCCount(ISteamApps* lpSteamApps) {
return lpSteamApps->GetDLCCount();
DLL_EXPORT uint32_t DLL_CALL BlitzSteamApps_GetDLCDataByIndex(ISteamApps* lpSteamApps, uint32_t iDLC, AppId_t *pAppId, bool *pbAvailable, char *pchName, uint32_t cchNameBufferSize) { }
return lpSteamApps->BGetDLCDataByIndex(iDLC, pAppId, pbAvailable, pchName, cchNameBufferSize);
} // Returns metadata for DLC by index, of range [0, GetDLCCount()]
#pragma comment(linker, "/EXPORT:BlitzSteamApps_GetDLCDataByIndex=_BlitzSteamApps_GetDLCDataByIndex@24") DLL(int32_t) BS_ISteamApps_GetDLCDataByIndex(ISteamApps* lpSteamApps, uint32_t iDLC, AppId_t *pAppIdBuffer, bool* pbAvailableBuffer, char *pchNameBuffer, uint32_t cchNameBufferSize) {
return lpSteamApps->BGetDLCDataByIndex(iDLC, pAppIdBuffer, (bool*)pbAvailableBuffer, pchNameBuffer, cchNameBufferSize);
DLL_EXPORT void DLL_CALL BlitzSteamApps_InstallDLC(ISteamApps* lpSteamApps, AppId_t nAppID) { }
lpSteamApps->InstallDLC(nAppID);
} // Install/Uninstall control for optional DLC
#pragma comment(linker, "/EXPORT:BlitzSteamApps_InstallDLC=_BlitzSteamApps_InstallDLC@8") DLL(void) BS_ISteamApps_InstallDLC(ISteamApps* lpSteamApps, AppId_t nAppID) {
lpSteamApps->InstallDLC(nAppID);
DLL_EXPORT void DLL_CALL BlitzSteamApps_UninstallDLC(ISteamApps* lpSteamApps, AppId_t nAppID) { }
lpSteamApps->UninstallDLC(nAppID);
} DLL(void) BS_ISteamApps_UninstallDLC(ISteamApps* lpSteamApps, AppId_t nAppID) {
#pragma comment(linker, "/EXPORT:BlitzSteamApps_UninstallDLC=_BlitzSteamApps_UninstallDLC@8") lpSteamApps->UninstallDLC(nAppID);
}
DLL_EXPORT void DLL_CALL BlitzSteamApps_RequestAppProofOfPurchaseKey(ISteamApps* lpSteamApps, AppId_t nAppID) {
lpSteamApps->RequestAppProofOfPurchaseKey(nAppID); // Request cd-key for yourself or owned DLC. If you are interested in this
} // data then make sure you provide us with a list of valid keys to be distributed
#pragma comment(linker, "/EXPORT:BlitzSteamApps_RequestAppProofOfPurchaseKey=_BlitzSteamApps_RequestAppProofOfPurchaseKey@8") // to users when they purchase the game, before the game ships.
// You'll receive an AppProofOfPurchaseKeyResponse_t callback when
DLL_EXPORT uint32_t DLL_CALL BlitzSteamApps_GetCurrentBetaName(ISteamApps* lpSteamApps, char *pchName, int cchNameBufferSize) { // the key is available (which may be immediately).
return lpSteamApps->GetCurrentBetaName(pchName, cchNameBufferSize); DLL(void) BS_ISteamApps_RequestAppProofOfPurchaseKey(ISteamApps* lpSteamApps, AppId_t nAppID) {
} lpSteamApps->RequestAppProofOfPurchaseKey(nAppID);
#pragma comment(linker, "/EXPORT:BlitzSteamApps_GetCurrentBetaName=_BlitzSteamApps_GetCurrentBetaName@12") }
DLL_EXPORT uint32_t DLL_CALL BlitzSteamApps_MarkContentCorrupt(ISteamApps* lpSteamApps, bool bMissingFilesOnly) { // returns current beta branch name, 'public' is the default branch
return lpSteamApps->MarkContentCorrupt(bMissingFilesOnly); DLL(int32_t) BS_ISteamApps_GetCurrentBetaName(ISteamApps* lpSteamApps, char* pchNameBuffer, int cchNameBufferSize) {
} return lpSteamApps->GetCurrentBetaName(pchNameBuffer, cchNameBufferSize);
#pragma comment(linker, "/EXPORT:BlitzSteamApps_MarkContentCorrupt=_BlitzSteamApps_MarkContentCorrupt@8") }
DLL_EXPORT uint32_t DLL_CALL BlitzSteamApps_GetInstalledDepots(ISteamApps* lpSteamApps, AppId_t nAppID, DepotId_t *pvecDepots, uint32_t cMaxDepots) { // signal Steam that game files seems corrupt or missing
return lpSteamApps->GetInstalledDepots(nAppID, pvecDepots, cMaxDepots); DLL(int32_t) BS_ISteamApps_MarkContentCorrupt(ISteamApps* lpSteamApps, uint32_t bMissingFilesOnly) {
} return lpSteamApps->MarkContentCorrupt(bMissingFilesOnly != 0);
#pragma comment(linker, "/EXPORT:BlitzSteamApps_GetInstalledDepots=_BlitzSteamApps_GetInstalledDepots@16") }
DLL_EXPORT uint32_t DLL_CALL BlitzSteamApps_GetAppInstallDir(ISteamApps* lpSteamApps, AppId_t appID, char *pchFolder, uint32 cchFolderBufferSize) { // return installed depots in mount order
return lpSteamApps->GetAppInstallDir(appID, pchFolder, cchFolderBufferSize); DLL(int32_t) BS_ISteamApps_GetInstalledDepots(ISteamApps* lpSteamApps, AppId_t nAppID, DepotId_t *pDepotsBuffer, uint32_t cMaxDepots) {
} return lpSteamApps->GetInstalledDepots(nAppID, pDepotsBuffer, cMaxDepots);
#pragma comment(linker, "/EXPORT:BlitzSteamApps_GetAppInstallDir=_BlitzSteamApps_GetAppInstallDir@16") }
DLL_EXPORT uint32_t DLL_CALL BlitzSteamApps_IsAppInstalled(ISteamApps* lpSteamApps, AppId_t appID) { // returns current app install folder for AppID, returns folder name length
return lpSteamApps->BIsAppInstalled(appID); DLL(int32_t) BS_ISteamApps_GetAppInstallDir(ISteamApps* lpSteamApps, AppId_t appID, char *pchFolderBuffer, uint32_t cchFolderBufferSize) {
} return lpSteamApps->GetAppInstallDir(appID, pchFolderBuffer, cchFolderBufferSize);
#pragma comment(linker, "/EXPORT:BlitzSteamApps_IsAppInstalled=_BlitzSteamApps_IsAppInstalled@8") }
DLL_EXPORT CSteamID* DLL_CALL BlitzSteamApps_GetAppOwner(ISteamApps* lpSteamApps) { // returns true if that app is installed (not necessarily owned)
CSteamID* steamID = new CSteamID(lpSteamApps->GetAppOwner()); DLL(int32_t) BS_ISteamApps_IsAppInstalled(ISteamApps* lpSteamApps, AppId_t appID) {
return BlitzSteamCSteamID_Copy(steamID); return lpSteamApps->BIsAppInstalled(appID);
} }
#pragma comment(linker, "/EXPORT:BlitzSteamApps_GetAppOwner=_BlitzSteamApps_GetAppOwner@4")
// returns the SteamID of the original owner. If different from current user, it's borrowed
DLL_EXPORT const char* DLL_CALL BlitzSteamApps_GetLaunchQueryParam(ISteamApps* lpSteamApps, const char *pchKey) { DLL(CSteamID*) BS_ISteamApps_GetAppOwner(ISteamApps* lpSteamApps) {
return lpSteamApps->GetLaunchQueryParam(pchKey); return new CSteamID(lpSteamApps->GetAppOwner());
} }
#pragma comment(linker, "/EXPORT:BlitzSteamApps_GetLaunchQueryParam=_BlitzSteamApps_GetLaunchQueryParam@8")
// Returns the associated launch param if the game is run via steam://run/<appid>//?param1=value1;param2=value2;param3=value3 etc.
DLL_EXPORT uint32_t DLL_CALL BlitzSteamApps_GetDlcDownloadProgress(ISteamApps* lpSteamApps, AppId_t nAppID, uint64_t* punBytesDownloaded, uint64_t* punBytesTotal) { // Parameter names starting with the character '@' are reserved for internal use and will always return and empty string.
return lpSteamApps->GetDlcDownloadProgress(nAppID, punBytesDownloaded, punBytesTotal); // Parameter names starting with an underscore '_' are reserved for steam features -- they can be queried by the game,
} // but it is advised that you not param names beginning with an underscore for your own features.
#pragma comment(linker, "/EXPORT:BlitzSteamApps_GetDlcDownloadProgress=_BlitzSteamApps_GetDlcDownloadProgress@16") DLL(const char*) BS_ISteamApps_GetLaunchQueryParam(ISteamApps* lpSteamApps, const char *pchKey) {
return lpSteamApps->GetLaunchQueryParam(pchKey);
DLL_EXPORT uint32_t DLL_CALL BlitzSteamApps_GetAppBuildId(ISteamApps* lpSteamApps) { }
return lpSteamApps->GetAppBuildId();
} // get download progress for optional DLC
#pragma comment(linker, "/EXPORT:BlitzSteamApps_GetAppBuildId=_BlitzSteamApps_GetAppBuildId@4") DLL(int32_t) BS_ISteamApps_GetDlcDownloadProgress(ISteamApps* lpSteamApps, AppId_t nAppID, uint64_t* pLLBytesDownloaded, uint64_t* pLLBytesTotal) {
return lpSteamApps->GetDlcDownloadProgress(nAppID, pLLBytesDownloaded, pLLBytesTotal);
}
// return the buildid of this app, may change at any time based on backend updates to the game
DLL(int32_t) BS_ISteamApps_GetAppBuildId(ISteamApps* lpSteamApps) {
return lpSteamApps->GetAppBuildId();
}
+147 -193
View File
@@ -1,193 +1,147 @@
// BlitzSteam - Steam wrapper for Blitz. // BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Project Kube (Michael Fabian Dirks) // Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as // it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the // published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version. // License, or (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// //
// You should have received a copy of the GNU Lesser General Public License // You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "dllmain.h" #include "BlitzSteam.h"
DLL_EXPORT HSteamPipe DLL_CALL BlitzSteamClient_CreateSteamPipe(ISteamClient* lpSteamClient) { DLL(ISteamClient*) BS_SteamClient() {
return lpSteamClient->CreateSteamPipe(); return SteamClient();
} }
#pragma comment(linker, "/EXPORT:BlitzSteamClient_CreateSteamPipe=_BlitzSteamClient_CreateSteamPipe@4")
DLL(HSteamPipe) BS_ISteamClient_CreateSteamPipe(ISteamClient* lpSteamClient) {
DLL_EXPORT bool DLL_CALL BlitzSteamClient_ReleaseSteamPipe(ISteamClient* lpSteamClient, HSteamPipe hSteamPipe) { return lpSteamClient->CreateSteamPipe();
return lpSteamClient->BReleaseSteamPipe(hSteamPipe); }
}
#pragma comment(linker, "/EXPORT:BlitzSteamClient_ReleaseSteamPipe=_BlitzSteamClient_ReleaseSteamPipe@8") DLL(int32_t) BS_ISteamClient_ReleaseSteamPipe(ISteamClient* lpSteamClient, HSteamPipe hSteamPipe) {
return lpSteamClient->BReleaseSteamPipe(hSteamPipe);
DLL_EXPORT HSteamUser DLL_CALL BlitzSteamClient_ConnectToGlobalUser(ISteamClient* lpSteamClient, HSteamPipe hSteamPipe) { }
return lpSteamClient->ConnectToGlobalUser(hSteamPipe);
} DLL(HSteamUser) BS_ISteamClient_ConnectToGlobalUser(ISteamClient* lpSteamClient, HSteamPipe hSteamPipe) {
#pragma comment(linker, "/EXPORT:BlitzSteamClient_ConnectToGlobalUser=_BlitzSteamClient_ConnectToGlobalUser@8") return lpSteamClient->ConnectToGlobalUser(hSteamPipe);
}
DLL_EXPORT void DLL_CALL BlitzSteamClient_SetLocalIPBinding(ISteamClient* lpSteamClient, uint32_t unIP, uint16 usPort) {
return lpSteamClient->SetLocalIPBinding(unIP, usPort); DLL(void) BS_ISteamClient_SetLocalIPBinding(ISteamClient* lpSteamClient, uint32_t unIP, uint16 usPort) {
} return lpSteamClient->SetLocalIPBinding(unIP, usPort);
#pragma comment(linker, "/EXPORT:BlitzSteamClient_SetLocalIPBinding=_BlitzSteamClient_SetLocalIPBinding@12") }
DLL_EXPORT HSteamUser DLL_CALL BlitzSteamClient_CreateLocalUser(ISteamClient* lpSteamClient, HSteamPipe* phSteamPipe, EAccountType eAccountType) { DLL(HSteamUser) BS_ISteamClient_CreateLocalUser(ISteamClient* lpSteamClient, HSteamPipe* phSteamPipe, EAccountType eAccountType) {
return lpSteamClient->CreateLocalUser(phSteamPipe, eAccountType); return lpSteamClient->CreateLocalUser(phSteamPipe, eAccountType);
} }
#pragma comment(linker, "/EXPORT:BlitzSteamClient_CreateLocalUser=_BlitzSteamClient_CreateLocalUser@12")
DLL(void) BS_ISteamClient_ReleaseUser(ISteamClient* lpSteamClient, HSteamPipe hSteamPipe, HSteamUser hSteamUser) {
DLL_EXPORT void DLL_CALL BlitzSteamClient_ReleaseUser(ISteamClient* lpSteamClient, HSteamPipe hSteamPipe, HSteamUser hSteamUser) { return lpSteamClient->ReleaseUser(hSteamPipe, hSteamUser);
return lpSteamClient->ReleaseUser(hSteamPipe, hSteamUser); }
}
#pragma comment(linker, "/EXPORT:BlitzSteamClient_ReleaseUser=_BlitzSteamClient_ReleaseUser@12") DLL(int32_t) BS_ISteamClient_GetIPCCallCount(ISteamClient* lpSteamClient) {
return lpSteamClient->GetIPCCallCount();
DLL_EXPORT void DLL_CALL BlitzSteamClient_RunFrame(ISteamClient* lpSteamClient) { }
lpSteamClient->RunFrame();
} DLL(int32_t) BS_ISteamClient_ShutdownIfAllPipesClosed(ISteamClient* lpSteamClient) {
#pragma comment(linker, "/EXPORT:BlitzSteamClient_RunFrame=_BlitzSteamClient_RunFrame@4") return lpSteamClient->BShutdownIfAllPipesClosed();
}
DLL_EXPORT uint32_t DLL_CALL BlitzSteamClient_GetIPCCallCount(ISteamClient* lpSteamClient) {
return lpSteamClient->GetIPCCallCount(); // Interfaces
} DLL(ISteamAppList*) BS_ISteamClient_GetSteamAppList(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) {
#pragma comment(linker, "/EXPORT:BlitzSteamClient_GetIPCCallCount=_BlitzSteamClient_GetIPCCallCount@4") return lpSteamClient->GetISteamAppList(hSteamUser, hSteamPipe, pchVersion);
}
DLL_EXPORT uint32_t DLL_CALL BlitzSteamClient_ShutdownIfAllPipesClosed(ISteamClient* lpSteamClient) {
return lpSteamClient->BShutdownIfAllPipesClosed(); DLL(ISteamApps*) BS_ISteamClient_GetSteamApps(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) {
} return lpSteamClient->GetISteamApps(hSteamUser, hSteamPipe, pchVersion);
}
// Interfaces
DLL_EXPORT ISteamAppList* DLL_CALL BlitzSteamClient_GetSteamAppList(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) { DLL(ISteamController*) BS_ISteamClient_GetSteamController(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) {
return lpSteamClient->GetISteamAppList(hSteamUser, hSteamPipe, pchVersion); return lpSteamClient->GetISteamController(hSteamUser, hSteamPipe, pchVersion);
} }
#pragma comment(linker, "/EXPORT:BlitzSteamClient_GetSteamAppList=_BlitzSteamClient_GetSteamAppList@16")
DLL(ISteamFriends*) BS_ISteamClient_GetSteamFriends(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) {
DLL_EXPORT ISteamApps* DLL_CALL BlitzSteamClient_GetSteamApps(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) { return lpSteamClient->GetISteamFriends(hSteamUser, hSteamPipe, pchVersion);
return lpSteamClient->GetISteamApps(hSteamUser, hSteamPipe, pchVersion); }
}
#pragma comment(linker, "/EXPORT:BlitzSteamClient_GetSteamApps=_BlitzSteamClient_GetSteamApps@16") DLL(ISteamGameServer*) BS_ISteamClient_GetSteamGameServer(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) {
return lpSteamClient->GetISteamGameServer(hSteamUser, hSteamPipe, pchVersion);
DLL_EXPORT ISteamController* DLL_CALL BlitzSteamClient_GetSteamController(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) { }
return lpSteamClient->GetISteamController(hSteamUser, hSteamPipe, pchVersion);
} DLL(ISteamGameServerStats*) BS_ISteamClient_GetSteamGameServerStats(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) {
#pragma comment(linker, "/EXPORT:BlitzSteamClient_GetSteamController=_BlitzSteamClient_GetSteamController@16") return lpSteamClient->GetISteamGameServerStats(hSteamUser, hSteamPipe, pchVersion);
}
DLL_EXPORT ISteamFriends* DLL_CALL BlitzSteamClient_GetSteamFriends(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) {
return lpSteamClient->GetISteamFriends(hSteamUser, hSteamPipe, pchVersion); DLL(ISteamHTMLSurface*) BS_ISteamClient_GetSteamHTMLSurface(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) {
} return lpSteamClient->GetISteamHTMLSurface(hSteamUser, hSteamPipe, pchVersion);
#pragma comment(linker, "/EXPORT:BlitzSteamClient_GetSteamFriends=_BlitzSteamClient_GetSteamFriends@16") }
DLL_EXPORT ISteamGameServer* DLL_CALL BlitzSteamClient_GetSteamGameServer(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) { DLL(ISteamHTTP*) BS_ISteamClient_GetSteamHTTP(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) {
return lpSteamClient->GetISteamGameServer(hSteamUser, hSteamPipe, pchVersion); return lpSteamClient->GetISteamHTTP(hSteamUser, hSteamPipe, pchVersion);
} }
#pragma comment(linker, "/EXPORT:BlitzSteamClient_GetSteamGameServer=_BlitzSteamClient_GetSteamGameServer@16")
DLL(ISteamInventory*) BS_ISteamClient_GetSteamInventory(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) {
DLL_EXPORT ISteamGameServerStats* DLL_CALL BlitzSteamClient_GetSteamGameServerStats(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) { return lpSteamClient->GetISteamInventory(hSteamUser, hSteamPipe, pchVersion);
return lpSteamClient->GetISteamGameServerStats(hSteamUser, hSteamPipe, pchVersion); }
}
#pragma comment(linker, "/EXPORT:BlitzSteamClient_GetSteamGameServerStats=_BlitzSteamClient_GetSteamGameServerStats@16") DLL(ISteamMatchmaking*) BS_ISteamClient_GetSteamMatchmaking(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) {
return lpSteamClient->GetISteamMatchmaking(hSteamUser, hSteamPipe, pchVersion);
DLL_EXPORT ISteamHTMLSurface* DLL_CALL BlitzSteamClient_GetSteamHTMLSurface(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) { }
return lpSteamClient->GetISteamHTMLSurface(hSteamUser, hSteamPipe, pchVersion);
} DLL(ISteamMatchmakingServers*) BS_ISteamClient_GetSteamMatchmakingServers(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) {
#pragma comment(linker, "/EXPORT:BlitzSteamClient_GetSteamHTMLSurface=_BlitzSteamClient_GetSteamHTMLSurface@16") return lpSteamClient->GetISteamMatchmakingServers(hSteamUser, hSteamPipe, pchVersion);
}
DLL_EXPORT ISteamHTTP* DLL_CALL BlitzSteamClient_GetSteamHTTP(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) {
return lpSteamClient->GetISteamHTTP(hSteamUser, hSteamPipe, pchVersion); DLL(ISteamMusic*) BS_ISteamClient_GetSteamMusic(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) {
} return lpSteamClient->GetISteamMusic(hSteamUser, hSteamPipe, pchVersion);
#pragma comment(linker, "/EXPORT:BlitzSteamClient_GetSteamHTTP=_BlitzSteamClient_GetSteamHTTP@16") }
DLL_EXPORT ISteamInventory* DLL_CALL BlitzSteamClient_GetSteamInventory(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) { DLL(ISteamMusicRemote*) BS_ISteamClient_GetSteamMusicRemote(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) {
return lpSteamClient->GetISteamInventory(hSteamUser, hSteamPipe, pchVersion); return lpSteamClient->GetISteamMusicRemote(hSteamUser, hSteamPipe, pchVersion);
} }
#pragma comment(linker, "/EXPORT:BlitzSteamClient_GetSteamInventory=_BlitzSteamClient_GetSteamInventory@16")
DLL(ISteamNetworking*) BS_ISteamClient_GetSteamNetworking(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) {
DLL_EXPORT ISteamMatchmaking* DLL_CALL BlitzSteamClient_GetSteamMatchmaking(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) { return lpSteamClient->GetISteamNetworking(hSteamUser, hSteamPipe, pchVersion);
return lpSteamClient->GetISteamMatchmaking(hSteamUser, hSteamPipe, pchVersion); }
}
#pragma comment(linker, "/EXPORT:BlitzSteamClient_GetSteamMatchmaking=_BlitzSteamClient_GetSteamMatchmaking@16") DLL(ISteamRemoteStorage*) BS_ISteamClient_GetSteamRemoteStorage(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) {
return lpSteamClient->GetISteamRemoteStorage(hSteamUser, hSteamPipe, pchVersion);
DLL_EXPORT ISteamMatchmakingServers* DLL_CALL BlitzSteamClient_GetSteamMatchmakingServers(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) { }
return lpSteamClient->GetISteamMatchmakingServers(hSteamUser, hSteamPipe, pchVersion);
} DLL(ISteamScreenshots*) BS_ISteamClient_GetSteamScreenshots(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) {
#pragma comment(linker, "/EXPORT:BlitzSteamClient_GetSteamMatchmakingServers=_BlitzSteamClient_GetSteamMatchmakingServers@16") return lpSteamClient->GetISteamScreenshots(hSteamUser, hSteamPipe, pchVersion);
}
DLL_EXPORT ISteamMusic* DLL_CALL BlitzSteamClient_GetSteamMusic(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) {
return lpSteamClient->GetISteamMusic(hSteamUser, hSteamPipe, pchVersion); DLL(ISteamUGC*) BS_ISteamClient_GetSteamUGC(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) {
} return lpSteamClient->GetISteamUGC(hSteamUser, hSteamPipe, pchVersion);
#pragma comment(linker, "/EXPORT:BlitzSteamClient_GetSteamMusic=_BlitzSteamClient_GetSteamMusic@16") }
DLL_EXPORT ISteamMusicRemote* DLL_CALL BlitzSteamClient_GetSteamMusicRemote(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) { DLL(ISteamUnifiedMessages*) BS_ISteamClient_GetSteamUnifiedMessages(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) {
return lpSteamClient->GetISteamMusicRemote(hSteamUser, hSteamPipe, pchVersion); return lpSteamClient->GetISteamUnifiedMessages(hSteamUser, hSteamPipe, pchVersion);
} }
#pragma comment(linker, "/EXPORT:BlitzSteamClient_GetSteamMusicRemote=_BlitzSteamClient_GetSteamMusicRemote@16")
DLL(ISteamUser*) BS_ISteamClient_GetSteamUser(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) {
DLL_EXPORT ISteamNetworking* DLL_CALL BlitzSteamClient_GetSteamNetworking(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) { return lpSteamClient->GetISteamUser(hSteamUser, hSteamPipe, pchVersion);
return lpSteamClient->GetISteamNetworking(hSteamUser, hSteamPipe, pchVersion); }
}
#pragma comment(linker, "/EXPORT:BlitzSteamClient_GetSteamNetworking=_BlitzSteamClient_GetSteamNetworking@16") DLL(ISteamUserStats*) BS_ISteamClient_GetSteamUserStats(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) {
return lpSteamClient->GetISteamUserStats(hSteamUser, hSteamPipe, pchVersion);
DLL_EXPORT ISteamRemoteStorage* DLL_CALL BlitzSteamClient_GetSteamRemoteStorage(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) { }
return lpSteamClient->GetISteamRemoteStorage(hSteamUser, hSteamPipe, pchVersion);
} DLL(ISteamUtils*) BS_ISteamClient_GetSteamUtils(ISteamClient* lpSteamClient, HSteamPipe hSteamPipe, const char *pchVersion) {
#pragma comment(linker, "/EXPORT:BlitzSteamClient_GetSteamRemoteStorage=_BlitzSteamClient_GetSteamRemoteStorage@16") return lpSteamClient->GetISteamUtils(hSteamPipe, pchVersion);
}
DLL_EXPORT ISteamScreenshots* DLL_CALL BlitzSteamClient_GetSteamScreenshots(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) {
return lpSteamClient->GetISteamScreenshots(hSteamUser, hSteamPipe, pchVersion); DLL(ISteamVideo*) BS_ISteamClient_GetSteamVideo(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) {
} return lpSteamClient->GetISteamVideo(hSteamUser, hSteamPipe, pchVersion);
#pragma comment(linker, "/EXPORT:BlitzSteamClient_GetSteamScreenshots=_BlitzSteamClient_GetSteamScreenshots@16") }
DLL_EXPORT ISteamUGC* DLL_CALL BlitzSteamClient_GetSteamUGC(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) { // Callbacks & Hooks
return lpSteamClient->GetISteamUGC(hSteamUser, hSteamPipe, pchVersion); DLL(void) BS_ISteamClient_SetWarningMessageHook(ISteamClient* lpSteamClient, SteamAPIWarningMessageHook_t fpfunction) {
} lpSteamClient->SetWarningMessageHook(fpfunction);
#pragma comment(linker, "/EXPORT:BlitzSteamClient_GetSteamUGC=_BlitzSteamClient_GetSteamUGC@16") }
DLL_EXPORT ISteamUnifiedMessages* DLL_CALL BlitzSteamClient_GetSteamUnifiedMessages(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) {
return lpSteamClient->GetISteamUnifiedMessages(hSteamUser, hSteamPipe, pchVersion);
}
#pragma comment(linker, "/EXPORT:BlitzSteamClient_GetSteamUnifiedMessages=_BlitzSteamClient_GetSteamUnifiedMessages@16")
DLL_EXPORT ISteamUser* DLL_CALL BlitzSteamClient_GetSteamUser(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) {
return lpSteamClient->GetISteamUser(hSteamUser, hSteamPipe, pchVersion);
}
#pragma comment(linker, "/EXPORT:BlitzSteamClient_GetSteamUser=_BlitzSteamClient_GetSteamUser@16")
DLL_EXPORT ISteamUserStats* DLL_CALL BlitzSteamClient_GetSteamUserStats(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) {
return lpSteamClient->GetISteamUserStats(hSteamUser, hSteamPipe, pchVersion);
}
#pragma comment(linker, "/EXPORT:BlitzSteamClient_GetSteamUserStats=_BlitzSteamClient_GetSteamUserStats@16")
DLL_EXPORT ISteamUtils* DLL_CALL BlitzSteamClient_GetSteamUtils(ISteamClient* lpSteamClient, HSteamPipe hSteamPipe, const char *pchVersion) {
return lpSteamClient->GetISteamUtils(hSteamPipe, pchVersion);
}
#pragma comment(linker, "/EXPORT:BlitzSteamClient_GetSteamUtils=_BlitzSteamClient_GetSteamUtils@12")
DLL_EXPORT ISteamVideo* DLL_CALL BlitzSteamClient_GetSteamVideo(ISteamClient* lpSteamClient, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion) {
return lpSteamClient->GetISteamVideo(hSteamUser, hSteamPipe, pchVersion);
}
#pragma comment(linker, "/EXPORT:BlitzSteamClient_GetSteamVideo=_BlitzSteamClient_GetSteamVideo@16")
// Callbacks & Hooks
DLL_EXPORT void DLL_CALL BlitzSteamClient_SetWarningMessageHook(ISteamClient* lpSteamClient, SteamAPIWarningMessageHook_t fpfunction) {
lpSteamClient->SetWarningMessageHook(fpfunction);
}
#pragma comment(linker, "/EXPORT:BlitzSteamClient_SetWarningMessageHook=_BlitzSteamClient_SetWarningMessageHook@8")
DLL_EXPORT void DLL_CALL BlitzSteamClient_Set_SteamAPI_CPostAPIResultInProcess(ISteamClient* lpSteamClient, SteamAPI_PostAPIResultInProcess_t fpFunction) {
lpSteamClient->Set_SteamAPI_CPostAPIResultInProcess(fpFunction);
}
#pragma comment(linker, "/EXPORT:BlitzSteamClient_Set_SteamAPI_CPostAPIResultInProcess=_BlitzSteamClient_Set_SteamAPI_CPostAPIResultInProcess@8")
DLL_EXPORT void DLL_CALL BlitzSteamClient_Remove_SteamAPI_CPostAPIResultInProcess(ISteamClient* lpSteamClient, SteamAPI_PostAPIResultInProcess_t fpFunction) {
lpSteamClient->Remove_SteamAPI_CPostAPIResultInProcess(fpFunction);
}
#pragma comment(linker, "/EXPORT:BlitzSteamClient_Remove_SteamAPI_CPostAPIResultInProcess=_BlitzSteamClient_Remove_SteamAPI_CPostAPIResultInProcess@8")
DLL_EXPORT void DLL_CALL BlitzSteamClient_Set_SteamAPI_CCheckCallbackRegisteredInProcess(ISteamClient* lpSteamClient, SteamAPI_CheckCallbackRegistered_t fpFunction) {
lpSteamClient->Set_SteamAPI_CCheckCallbackRegisteredInProcess(fpFunction);
}
#pragma comment(linker, "/EXPORT:BlitzSteamClient_Set_SteamAPI_CCheckCallbackRegisteredInProcess=_BlitzSteamClient_Set_SteamAPI_CCheckCallbackRegisteredInProcess@8")
+126 -47
View File
@@ -1,47 +1,126 @@
// BlitzSteam - Steam wrapper for Blitz. // BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Project Kube (Michael Fabian Dirks) // Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as // it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the // published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version. // License, or (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// //
// You should have received a copy of the GNU Lesser General Public License // You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "dllmain.h" #include "BlitzSteam.h"
DLL_EXPORT uint32_t DLL_CALL BlitzSteamController_Init(ISteamController* lpSteamController, const char* pchAbsolutePathToControllerConfigVDF) { //-----------------------------------------------------------------------------
return lpSteamController->Init(pchAbsolutePathToControllerConfigVDF); // Purpose: Native Steam controller support API
} //-----------------------------------------------------------------------------
#pragma comment(linker, "/EXPORT:BlitzSteamController_Init=_BlitzSteamController_Init@8") DLL(ISteamController*) BS_SteamController() {
return SteamController();
DLL_EXPORT uint32_t DLL_CALL BlitzSteamController_Shutdown(ISteamController* lpSteamController) { }
return lpSteamController->Shutdown();
} // Init and Shutdown must be called when starting/ending use of this interface
#pragma comment(linker, "/EXPORT:BlitzSteamController_Shutdown=_BlitzSteamController_Shutdown@4") DLL(int32_t) BS_ISteamController_Init(ISteamController* lpSteamController) {
return lpSteamController->Init();
DLL_EXPORT void DLL_CALL BlitzSteamController_RunFrame(ISteamController* lpSteamController) { }
lpSteamController->RunFrame();
} // Init and Shutdown must be called when starting/ending use of this interface
#pragma comment(linker, "/EXPORT:BlitzSteamController_RunFrame=_BlitzSteamController_RunFrame@4") DLL(int32_t) BS_ISteamController_Shutdown(ISteamController* lpSteamController) {
return lpSteamController->Shutdown();
DLL_EXPORT uint32_t DLL_CALL BlitzSteamController_GetControllerState(ISteamController* lpSteamController, uint32_t unControllerIndex, SteamControllerState_t *pState) { }
return lpSteamController->GetControllerState(unControllerIndex, pState);
} // Pump callback/callresult events
#pragma comment(linker, "/EXPORT:BlitzSteamController_GetControllerState=_BlitzSteamController_GetControllerState@12") // Note: SteamAPI_RunCallbacks will do this for you, so you should never need to call this directly.
DLL(void) BS_ISteamController_RunFrame(ISteamController* lpSteamController) {
DLL_EXPORT void DLL_CALL BlitzSteamController_TriggerHapticPulse(ISteamController* lpSteamController, uint32_t unControllerIndex, ESteamControllerPad eTargetPad, uint32_t usDurationMicroSec) { lpSteamController->RunFrame();
lpSteamController->TriggerHapticPulse(unControllerIndex, eTargetPad, usDurationMicroSec); }
}
#pragma comment(linker, "/EXPORT:BlitzSteamController_TriggerHapticPulse=_BlitzSteamController_TriggerHapticPulse@16") // Enumerate currently connected controllers
// handlesOut should point to a STEAM_CONTROLLER_MAX_COUNT sized array of ControllerHandle_t handles
DLL_EXPORT void DLL_CALL BlitzSteamController_SetOverrideMode(ISteamController* lpSteamController, const char *pchMode) { // Returns the number of handles written to handlesOut
lpSteamController->SetOverrideMode(pchMode); DLL(int32_t) BS_ISteamController_GetConnectedControllers(ISteamController* lpSteamController, ControllerHandle_t* pHandlesOut) {
} return lpSteamController->GetConnectedControllers(pHandlesOut);
#pragma comment(linker, "/EXPORT:BlitzSteamController_SetOverrideMode=_BlitzSteamController_SetOverrideMode@8") }
ControllerHandle_t* pControllerHandles = new ControllerHandle_t[STEAM_CONTROLLER_MAX_COUNT];
DLL(int32_t) BS_ISteamController_GetConnectedControllersSimple(ISteamController* lpSteamController) {
return lpSteamController->GetConnectedControllers(pControllerHandles);
}
DLL(ControllerHandle_t*) BS_ISteamController_GetConnectedControllersSimple_Index(uint32_t index) {
if (index >= STEAM_CONTROLLER_MAX_COUNT)
index = STEAM_CONTROLLER_MAX_COUNT - 1;
return &(pControllerHandles[index]);
}
// Invokes the Steam overlay and brings up the binding screen
// Returns false is overlay is disabled / unavailable, or the user is not in Big Picture mode
DLL(int32_t) BS_ISteamController_ShowBindingPanel(ISteamController* lpSteamController, ControllerHandle_t* pControllerHandle) {
return lpSteamController->ShowBindingPanel(*pControllerHandle);
}
// ACTION SETS
// Lookup the handle for an Action Set. Best to do this once on startup, and store the handles for all future API calls.
DLL(ControllerActionSetHandle_t*) BS_ISteamController_GetActionSetHandle(ISteamController* lpSteamController, const char* pszActionSetName) {
return new ControllerActionSetHandle_t(lpSteamController->GetActionSetHandle(pszActionSetName));
}
// Reconfigure the controller to use the specified action set (ie 'Menu', 'Walk' or 'Drive')
// This is cheap, and can be safely called repeatedly. It's often easier to repeatedly call it in
// your state loops, instead of trying to place it in all of your state transitions.
DLL(void) BS_ISteamController_ActivateActionSet(ISteamController* lpSteamController, ControllerHandle_t* pControllerHandle, ControllerActionSetHandle_t* pActionSetHandle) {
lpSteamController->ActivateActionSet(*pControllerHandle, *pActionSetHandle);
}
DLL(ControllerActionSetHandle_t*) BS_ISteamController_GetCurrentActionSet(ISteamController* lpSteamController, ControllerHandle_t* pControllerHandle) {
return new ControllerActionSetHandle_t(lpSteamController->GetCurrentActionSet(*pControllerHandle));
}
// Lookup the handle for a digital action. Best to do this once on startup, and store the handles for all future API calls.
DLL(ControllerDigitalActionHandle_t*) BS_ISteamController_GetDigitalActionHandle(ISteamController* lpSteamController, const char* pszActionName) {
return new ControllerDigitalActionHandle_t(lpSteamController->GetDigitalActionHandle(pszActionName));
}
// Returns the current state of the supplied digital game action
DLL(ControllerDigitalActionData_t*) BS_ISteamController_GetDigitalActionData(ISteamController* lpSteamController, ControllerHandle_t* pControllerHandle, ControllerDigitalActionHandle_t* pDigitalActionHandle) {
return &lpSteamController->GetDigitalActionData(*pControllerHandle, *pDigitalActionHandle);
}
// Get the origin(s) for a digital action within an action set. Returns the number of origins supplied in originsOut. Use this to display the appropriate on-screen prompt for the action.
// originsOut should point to a STEAM_CONTROLLER_MAX_ORIGINS sized array of EControllerActionOrigin handles
DLL(int32_t) BS_ISteamController_GetDigitalActionOrigins(ISteamController* lpSteamController, ControllerHandle_t* pControllerHandle, ControllerActionSetHandle_t* pActionSetHandle, ControllerDigitalActionHandle_t* pDigitalActionHandle, EControllerActionOrigin *pEControllerActionOrigin) {
return lpSteamController->GetDigitalActionOrigins(*pControllerHandle, *pActionSetHandle, *pDigitalActionHandle, pEControllerActionOrigin);
}
// Lookup the handle for an analog action. Best to do this once on startup, and store the handles for all future API calls.
DLL(ControllerAnalogActionHandle_t*) BS_ISteamController_GetAnalogActionHandle(ISteamController* lpSteamController, const char *pszActionName) {
return new ControllerAnalogActionHandle_t(lpSteamController->GetAnalogActionHandle(pszActionName));
}
// Returns the current state of these supplied analog game action
DLL(ControllerAnalogActionData_t*) BS_ISteamController_GetAnalogActionData(ISteamController* lpSteamController, ControllerHandle_t* pControllerHandle, ControllerAnalogActionHandle_t* pAnalogActionHandle) {
return &lpSteamController->GetAnalogActionData(*pControllerHandle, *pAnalogActionHandle);
}
// Get the origin(s) for an analog action within an action set. Returns the number of origins supplied in originsOut. Use this to display the appropriate on-screen prompt for the action.
// originsOut should point to a STEAM_CONTROLLER_MAX_ORIGINS sized array of EControllerActionOrigin handles
DLL(int32_t) BS_ISteamController_GetAnalogActionOrigins(ISteamController* lpSteamController, ControllerHandle_t* pControllerHandle, ControllerActionSetHandle_t* pActionSetHandle, ControllerAnalogActionHandle_t* pAnalogActionHandle, EControllerActionOrigin *pEControllerActionOrigin) {
return lpSteamController->GetAnalogActionOrigins(*pControllerHandle, *pActionSetHandle, *pAnalogActionHandle, pEControllerActionOrigin);
}
DLL(void) BS_ISteamController_StopAnalogActionMomentum(ISteamController* lpSteamController, ControllerHandle_t* pControllerHandle, ControllerAnalogActionHandle_t* pAnalogActionHandle) {
lpSteamController->StopAnalogActionMomentum(*pControllerHandle, *pAnalogActionHandle);
}
// Trigger a haptic pulse on a controller
DLL(void) BS_ISteamController_TriggerHapticPulse(ISteamController* lpSteamController, ControllerHandle_t* pControllerHandle, ESteamControllerPad eTargetPad, uint32_t usDurationMicroSec) {
lpSteamController->TriggerHapticPulse(*pControllerHandle, eTargetPad, (uint16_t)usDurationMicroSec);
}
DLL(void) BS_ISteamController_TriggerRepeatedHapticPulse(ISteamController* lpSteamController, ControllerHandle_t* pControllerHandle, ESteamControllerPad eTargetPad, uint32_t usDurationMicroSec, uint32_t usOffMicroSec, uint32_t unRepeat, uint32_t nFlags) {
lpSteamController->TriggerRepeatedHapticPulse(*pControllerHandle, eTargetPad, usDurationMicroSec, usOffMicroSec, unRepeat, nFlags);
}
+425 -378
View File
@@ -1,378 +1,425 @@
// BlitzSteam - Steam wrapper for Blitz. // BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Project Kube (Michael Fabian Dirks) // Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as // it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the // published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version. // License, or (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// //
// You should have received a copy of the GNU Lesser General Public License // You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "dllmain.h" #include "BlitzSteam.h"
DLL_EXPORT const char* DLL_CALL BlitzSteamFriends_GetPersonaName(ISteamFriends* lpSteamFriends) { //-----------------------------------------------------------------------------
return lpSteamFriends->GetPersonaName(); // Purpose: interface to accessing information about individual users,
} // that can be a friend, in a group, on a game server or in a lobby with the local user
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetPersonaName=_BlitzSteamFriends_GetPersonaName@4") //-----------------------------------------------------------------------------
DLL(ISteamFriends*) BS_SteamFriends() {
DLL_EXPORT SteamAPICall_t DLL_CALL BlitzSteamFriends_SetPersonaName(ISteamFriends* lpSteamFriends, const char* pchPersonaName) { return SteamFriends();
return lpSteamFriends->SetPersonaName(pchPersonaName); }
}
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_SetPersonaName=_BlitzSteamFriends_SetPersonaName@8") // returns the local players name - guaranteed to not be NULL.
// this is the same name as on the users community profile page
DLL_EXPORT int32_t DLL_CALL BlitzSteamFriends_GetPersonaState(ISteamFriends* lpSteamFriends) { // this is stored in UTF-8 format
return lpSteamFriends->GetPersonaState(); // like all the other interface functions that return a char *, it's important that this pointer is not saved
} // off; it will eventually be free'd or re-allocated
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetPersonaState=_BlitzSteamFriends_GetPersonaState@4") DLL(const char*) BS_ISteamFriends_GetPersonaName(ISteamFriends* lpSteamFriends) {
return lpSteamFriends->GetPersonaName();
DLL_EXPORT int32_t DLL_CALL BlitzSteamFriends_GetFriendCount(ISteamFriends* lpSteamFriends, int32_t iFriendFlags) { }
return lpSteamFriends->GetFriendCount(iFriendFlags);
} // Sets the player name, stores it on the server and publishes the changes to all friends who are online.
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetFriendCount=_BlitzSteamFriends_GetFriendCount@8") // Changes take place locally immediately, and a PersonaStateChange_t is posted, presuming success.
//
DLL_EXPORT CSteamID* DLL_CALL BlitzSteamFriends_GetFriendByIndex(ISteamFriends* lpSteamFriends, int32_t iFriend, int32_t iFriendFlags) { // The final results are available through the return value SteamAPICall_t, using SetPersonaNameResponse_t.
CSteamID* pSteamID = new CSteamID(lpSteamFriends->GetFriendByIndex(iFriend, iFriendFlags)); //
return pSteamID; // If the name change fails to happen on the server, then an additional global PersonaStateChange_t will be posted
} // to change the name back, in addition to the SetPersonaNameResponse_t callback.
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetFriendByIndex=_BlitzSteamFriends_GetFriendByIndex@12") DLL(SteamAPICall_t*) BS_ISteamFriends_SetPersonaName(ISteamFriends* lpSteamFriends, const char* pchPersonaName) {
return new uint64_t(lpSteamFriends->SetPersonaName(pchPersonaName));
DLL_EXPORT EFriendRelationship DLL_CALL BlitzSteamFriends_GetFriendRelationship(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend) { }
return lpSteamFriends->GetFriendRelationship(*steamIDFriend);
} // gets the status of the current user
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetFriendRelationship=_BlitzSteamFriends_GetFriendRelationship@8") DLL(int32_t) BS_ISteamFriends_GetPersonaState(ISteamFriends* lpSteamFriends) {
return lpSteamFriends->GetPersonaState();
DLL_EXPORT EPersonaState DLL_CALL BlitzSteamFriends_GetFriendPersonaState(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend) { }
return lpSteamFriends->GetFriendPersonaState(*steamIDFriend);
} // friend iteration
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetFriendPersonaState=_BlitzSteamFriends_GetFriendPersonaState@8") // takes a set of k_EFriendFlags, and returns the number of users the client knows about who meet that criteria
// then GetFriendByIndex() can then be used to return the id's of each of those users
DLL_EXPORT const char* DLL_CALL BlitzSteamFriends_GetFriendPersonaName(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend) { DLL(int32_t) BS_ISteamFriends_GetFriendCount(ISteamFriends* lpSteamFriends, int32_t iFriendFlags) {
return lpSteamFriends->GetFriendPersonaName(*steamIDFriend); return lpSteamFriends->GetFriendCount(iFriendFlags);
} }
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetFriendPersonaName=_BlitzSteamFriends_GetFriendPersonaName@8")
// returns the steamID of a user
DLL_EXPORT uint32_t DLL_CALL BlitzSteamFriends_GetFriendGamePlayed(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend, FriendGameInfo_t *pFriendGameInfo) { // iFriend is a index of range [0, GetFriendCount())
return lpSteamFriends->GetFriendGamePlayed(*steamIDFriend, pFriendGameInfo); // iFriendsFlags must be the same value as used in GetFriendCount()
} // the returned CSteamID can then be used by all the functions below to access details about the user
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetFriendGamePlayed=_BlitzSteamFriends_GetFriendGamePlayed@12") DLL(CSteamID*) BS_ISteamFriends_GetFriendByIndex(ISteamFriends* lpSteamFriends, int32_t iFriend, int32_t iFriendFlags) {
return new CSteamID(lpSteamFriends->GetFriendByIndex(iFriend, iFriendFlags));
DLL_EXPORT const char* DLL_CALL BlitzSteamFriends_GetFriendPersonaNameHistory(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend, int32_t iPersonaName) { }
return lpSteamFriends->GetFriendPersonaNameHistory(*steamIDFriend, iPersonaName);
} // returns a relationship to a user
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetFriendPersonaNameHistory=_BlitzSteamFriends_GetFriendPersonaNameHistory@12") DLL(EFriendRelationship) BS_ISteamFriends_GetFriendRelationship(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend) {
return lpSteamFriends->GetFriendRelationship(*steamIDFriend);
DLL_EXPORT int32_t DLL_CALL BlitzSteamFriends_GetFriendSteamLevel(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend) { }
return lpSteamFriends->GetFriendSteamLevel(*steamIDFriend);
} // returns the current status of the specified user
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetFriendSteamLevel=_BlitzSteamFriends_GetFriendSteamLevel@8") // this will only be known by the local user if steamIDFriend is in their friends list; on the same game server; in a chat room or lobby; or in a small group with the local user
DLL(EPersonaState) BS_ISteamFriends_GetFriendPersonaState(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend) {
DLL_EXPORT const char* DLL_CALL BlitzSteamFriends_GetPlayerNickname(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriends) { return lpSteamFriends->GetFriendPersonaState(*steamIDFriend);
const char* nickname = lpSteamFriends->GetPlayerNickname(*steamIDFriends); }
if (nickname == NULL) {
nickname = ""; // returns the name another user - guaranteed to not be NULL.
} // same rules as GetFriendPersonaState() apply as to whether or not the user knowns the name of the other user
return nickname; // note that on first joining a lobby, chat room or game server the local user will not known the name of the other users automatically; that information will arrive asyncronously
} DLL(const char*) BS_ISteamFriends_GetFriendPersonaName(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend) {
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetPlayerNickname=_BlitzSteamFriends_GetPlayerNickname@8") return lpSteamFriends->GetFriendPersonaName(*steamIDFriend);
}
DLL_EXPORT int32_t DLL_CALL BlitzSteamFriends_GetFriendsGroupCount(ISteamFriends* lpSteamFriends) {
return lpSteamFriends->GetFriendsGroupCount(); // returns true if the friend is actually in a game, and fills in pFriendGameInfo with an extra details
} DLL(uint32_t) BS_ISteamFriends_GetFriendGamePlayed(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend, FriendGameInfo_t *pFriendGameInfo) {
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetFriendsGroupCount=_BlitzSteamFriends_GetFriendsGroupCount@4") return lpSteamFriends->GetFriendGamePlayed(*steamIDFriend, pFriendGameInfo);
}
DLL_EXPORT FriendsGroupID_t DLL_CALL BlitzSteamFriends_GetFriendsGroupIDByIndex(ISteamFriends* lpSteamFriends, FriendsGroupID_t friendsGroupID) {
return lpSteamFriends->GetFriendsGroupIDByIndex(friendsGroupID); // accesses old friends names - returns an empty string when their are no more items in the history
} DLL(const char*) BS_ISteamFriends_GetFriendPersonaNameHistory(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend, int32_t iPersonaName) {
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetFriendsGroupIDByIndex=_BlitzSteamFriends_GetFriendsGroupIDByIndex@8") return lpSteamFriends->GetFriendPersonaNameHistory(*steamIDFriend, iPersonaName);
}
DLL_EXPORT const char* DLL_CALL BlitzSteamFriends_GetFriendsGroupName(ISteamFriends* lpSteamFriends, FriendsGroupID_t friendsGroupID) {
return lpSteamFriends->GetFriendsGroupName(friendsGroupID); // friends steam level
} DLL(int32_t) BS_ISteamFriends_GetFriendSteamLevel(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend) {
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetFriendsGroupName=_BlitzSteamFriends_GetFriendsGroupName@8") return lpSteamFriends->GetFriendSteamLevel(*steamIDFriend);
}
DLL_EXPORT int32_t DLL_CALL BlitzSteamFriends_GetFriendsGroupMembersCount(ISteamFriends* lpSteamFriends, FriendsGroupID_t friendsGroupID) {
return lpSteamFriends->GetFriendsGroupMembersCount(friendsGroupID); // Returns nickname the current user has set for the specified player. Returns NULL if the no nickname has been set for that player.
} DLL(const char*) BS_ISteamFriends_GetPlayerNickname(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriends) {
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetFriendsGroupMembersCount=_BlitzSteamFriends_GetFriendsGroupMembersCount@8") const char* nickname = lpSteamFriends->GetPlayerNickname(*steamIDFriends);
if (nickname == NULL) {
DLL_EXPORT void DLL_CALL BlitzSteamFriends_GetFriendsGroupMembersList(ISteamFriends* lpSteamFriends, FriendsGroupID_t friendsGroupID, CSteamID* pOutSteamIDMembers, int32_t nMembersCount) { nickname = "";
lpSteamFriends->GetFriendsGroupMembersList(friendsGroupID, pOutSteamIDMembers, nMembersCount); }
} return nickname;
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetFriendsGroupMembersList=_BlitzSteamFriends_GetFriendsGroupMembersList@16") }
DLL_EXPORT uint32_t DLL_CALL BlitzSteamFriends_HasFriend(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend, int32_t iFriendsFlags) { // friend grouping (tag) apis
return lpSteamFriends->HasFriend(*steamIDFriend, iFriendsFlags); // returns the number of friends groups
} DLL(int32_t) BS_ISteamFriends_GetFriendsGroupCount(ISteamFriends* lpSteamFriends) {
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_HasFriends=_BlitzSteamFriends_HasFriend@12") return lpSteamFriends->GetFriendsGroupCount();
}
DLL_EXPORT int32_t DLL_CALL BlitzSteamFriends_GetClanCount(ISteamFriends* lpSteamFriends) {
return lpSteamFriends->GetClanCount(); // returns the friends group ID for the given index (invalid indices return k_FriendsGroupID_Invalid)
} DLL(FriendsGroupID_t) BS_ISteamFriends_GetFriendsGroupIDByIndex(ISteamFriends* lpSteamFriends, FriendsGroupID_t friendsGroupID) {
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetClanCount=_BlitzSteamFriends_GetClanCount@4") return lpSteamFriends->GetFriendsGroupIDByIndex(friendsGroupID);
}
DLL_EXPORT CSteamID* DLL_CALL BlitzSteamFriends_GetClanByIndex(ISteamFriends* lpSteamFriends, int32_t iClan) {
CSteamID* steamID = new CSteamID(lpSteamFriends->GetClanByIndex(iClan)); // returns the name for the given friends group (NULL in the case of invalid friends group IDs)
return steamID; DLL(const char*) BS_ISteamFriends_GetFriendsGroupName(ISteamFriends* lpSteamFriends, FriendsGroupID_t friendsGroupID) {
} return lpSteamFriends->GetFriendsGroupName(friendsGroupID);
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetClanByIndex=_BlitzSteamFriends_GetClanByIndex@8") }
DLL_EXPORT const char* DLL_CALL BlitzSteamFriends_GetClanName(ISteamFriends* lpSteamFriends, CSteamID* steamIDClan) { // returns the number of members in a given friends group
return lpSteamFriends->GetClanName(*steamIDClan); DLL(int32_t) BS_ISteamFriends_GetFriendsGroupMembersCount(ISteamFriends* lpSteamFriends, FriendsGroupID_t friendsGroupID) {
} return lpSteamFriends->GetFriendsGroupMembersCount(friendsGroupID);
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetClanName=_BlitzSteamFriends_GetClanName@8") }
DLL_EXPORT const char* DLL_CALL BlitzSteamFriends_GetClanTag(ISteamFriends* lpSteamFriends, CSteamID* steamIDClan) { // gets up to nMembersCount members of the given friends group, if fewer exist than requested those positions' SteamIDs will be invalid
return lpSteamFriends->GetClanTag(*steamIDClan); DLL(void) BS_ISteamFriends_GetFriendsGroupMembersList(ISteamFriends* lpSteamFriends, FriendsGroupID_t friendsGroupID, CSteamID* pOutSteamIDMembers, int32_t nMembersCount) {
} lpSteamFriends->GetFriendsGroupMembersList(friendsGroupID, pOutSteamIDMembers, nMembersCount);
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetClanTag=_BlitzSteamFriends_GetClanTag@8") }
DLL_EXPORT uint32_t DLL_CALL BlitzSteamFriends_GetClanActivityCounts(ISteamFriends* lpSteamFriends, CSteamID* steamIDClan, int32_t* pnOnline, int32_t* pnInGame, int32_t* pnChatting) { // returns true if the specified user meets any of the criteria specified in iFriendFlags
return lpSteamFriends->GetClanActivityCounts(*steamIDClan, pnOnline, pnInGame, pnChatting); // iFriendFlags can be the union (binary or, |) of one or more k_EFriendFlags values
} DLL(uint32_t) BS_ISteamFriends_HasFriend(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend, int32_t iFriendsFlags) {
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetClanActivityCounts=_BlitzSteamFriends_GetClanActivityCounts@20") return lpSteamFriends->HasFriend(*steamIDFriend, iFriendsFlags);
}
DLL_EXPORT SteamAPICall_t DLL_CALL BlitzSteamFriends_DownloadClanActivityCounts(ISteamFriends* lpSteamFriends, CSteamID* psteamIDClans, int32_t cClansToRequest) {
return lpSteamFriends->DownloadClanActivityCounts(psteamIDClans, cClansToRequest); // clan (group) iteration and access functions
} DLL(int32_t) BS_ISteamFriends_GetClanCount(ISteamFriends* lpSteamFriends) {
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_DownloadClanActivityCounts=_BlitzSteamFriends_DownloadClanActivityCounts@12") return lpSteamFriends->GetClanCount();
}
DLL_EXPORT int32_t DLL_CALL BlitzSteamFriends_GetFriendCountFromSource(ISteamFriends* lpSteamFriends, CSteamID* steamIDSource) {
return lpSteamFriends->GetFriendCountFromSource(*steamIDSource); DLL(CSteamID*) BS_ISteamFriends_GetClanByIndex(ISteamFriends* lpSteamFriends, int32_t iClan) {
} CSteamID* steamID = new CSteamID(lpSteamFriends->GetClanByIndex(iClan));
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetFriendCountFromSource=_BlitzSteamFriends_GetFriendCountFromSource@8") return steamID;
}
DLL_EXPORT CSteamID* DLL_CALL BlitzSteamFriends_GetFriendFromSourceByIndex(ISteamFriends* lpSteamFriends, CSteamID* steamIDSource, int32_t iFriend) {
CSteamID* steamID = new CSteamID(lpSteamFriends->GetFriendFromSourceByIndex(*steamIDSource, iFriend)); DLL(const char*) BS_ISteamFriends_GetClanName(ISteamFriends* lpSteamFriends, CSteamID* steamIDClan) {
return steamID; return lpSteamFriends->GetClanName(*steamIDClan);
} }
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetFriendFromSourceByIndex=_BlitzSteamFriends_GetFriendFromSourceByIndex@12")
DLL(const char*) BS_ISteamFriends_GetClanTag(ISteamFriends* lpSteamFriends, CSteamID* steamIDClan) {
DLL_EXPORT uint32_t DLL_CALL BlitzSteamFriends_IsUserInSource(ISteamFriends* lpSteamFriends, CSteamID* steamIDUser, CSteamID* steamIDSource) { return lpSteamFriends->GetClanTag(*steamIDClan);
return lpSteamFriends->IsUserInSource(*steamIDUser, *steamIDSource); }
}
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_IsUserInSource=_BlitzSteamFriends_IsUserInSource@12") // returns the most recent information we have about what's happening in a clan
DLL(uint32_t) BS_ISteamFriends_GetClanActivityCounts(ISteamFriends* lpSteamFriends, CSteamID* steamIDClan, int32_t* pnOnline, int32_t* pnInGame, int32_t* pnChatting) {
DLL_EXPORT void DLL_CALL BlitzSteamFriends_SetInGameVoiceSpeaking(ISteamFriends* lpSteamFriends, CSteamID* steamIDUser, bool bSpeaking) { return lpSteamFriends->GetClanActivityCounts(*steamIDClan, pnOnline, pnInGame, pnChatting);
lpSteamFriends->SetInGameVoiceSpeaking(*steamIDUser, bSpeaking); }
}
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_SetInGameVoiceSpeaking=_BlitzSteamFriends_SetInGameVoiceSpeaking@12") // for clans a user is a member of, they will have reasonably up-to-date information, but for others you'll have to download the info to have the latest
DLL(SteamAPICall_t*) BS_ISteamFriends_DownloadClanActivityCounts(ISteamFriends* lpSteamFriends, CSteamID* psteamIDClans, int32_t cClansToRequest) {
DLL_EXPORT void DLL_CALL BlitzSteamFriends_ActivateGameOverlay(ISteamFriends* lpSteamFriends, const char* pchDialog) { return new uint64_t(lpSteamFriends->DownloadClanActivityCounts(psteamIDClans, cClansToRequest));
lpSteamFriends->ActivateGameOverlay(pchDialog); }
}
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_ActivateGameOverlay=_BlitzSteamFriends_ActivateGameOverlay@8") // iterators for getting users in a chat room, lobby, game server or clan
// note that large clans that cannot be iterated by the local user
DLL_EXPORT void DLL_CALL BlitzSteamFriends_ActivateGameOverlayToUser(ISteamFriends* lpSteamFriends, const char* pchDialog, CSteamID* steamID) { // note that the current user must be in a lobby to retrieve CSteamIDs of other users in that lobby
lpSteamFriends->ActivateGameOverlayToUser(pchDialog, *steamID); // steamIDSource can be the steamID of a group, game server, lobby or chat room
} DLL(int32_t) BS_ISteamFriends_GetFriendCountFromSource(ISteamFriends* lpSteamFriends, CSteamID* steamIDSource) {
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_ActivateGameOverlayToUser=_BlitzSteamFriends_ActivateGameOverlayToUser@12") return lpSteamFriends->GetFriendCountFromSource(*steamIDSource);
}
DLL_EXPORT void DLL_CALL BlitzSteamFriends_ActivateGameOverlayToWebPage(ISteamFriends* lpSteamFriends, const char* pchURL) {
lpSteamFriends->ActivateGameOverlayToWebPage(pchURL); DLL(CSteamID*) BS_ISteamFriends_GetFriendFromSourceByIndex(ISteamFriends* lpSteamFriends, CSteamID* steamIDSource, int32_t iFriend) {
} return new CSteamID(lpSteamFriends->GetFriendFromSourceByIndex(*steamIDSource, iFriend));
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_ActivateGameOverlayToWebPage=_BlitzSteamFriends_ActivateGameOverlayToWebPage@8") }
DLL_EXPORT void DLL_CALL BlitzSteamFriends_ActivateGameOverlayToStore(ISteamFriends* lpSteamFriends, AppId_t nAppID, EOverlayToStoreFlag eFlag) { // returns true if the local user can see that steamIDUser is a member or in steamIDSource
lpSteamFriends->ActivateGameOverlayToStore(nAppID, eFlag); DLL(uint32_t) BS_ISteamFriends_IsUserInSource(ISteamFriends* lpSteamFriends, CSteamID* steamIDUser, CSteamID* steamIDSource) {
} return lpSteamFriends->IsUserInSource(*steamIDUser, *steamIDSource);
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_ActivateGameOverlayToStore=_BlitzSteamFriends_ActivateGameOverlayToStore@12") }
DLL_EXPORT void DLL_CALL BlitzSteamFriends_SetPlayedWith(ISteamFriends* lpSteamFriends, CSteamID* steamIDUserPlayedWith) { // User is in a game pressing the talk button (will suppress the microphone for all voice comms from the Steam friends UI)
lpSteamFriends->SetPlayedWith(*steamIDUserPlayedWith); DLL(void) BS_ISteamFriends_SetInGameVoiceSpeaking(ISteamFriends* lpSteamFriends, CSteamID* steamIDUser, uint32_t bSpeaking) {
} lpSteamFriends->SetInGameVoiceSpeaking(*steamIDUser, bSpeaking != 0);
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_SetPlayedWith=_BlitzSteamFriends_SetPlayedWith@8") }
DLL_EXPORT void DLL_CALL BlitzSteamFriends_ActivateGameOverlayInviteDialog(ISteamFriends* lpSteamFriends, CSteamID* steamIDLobby) { // activates the game overlay, with an optional dialog to open
lpSteamFriends->ActivateGameOverlayInviteDialog(*steamIDLobby); // valid options are "Friends", "Community", "Players", "Settings", "OfficialGameGroup", "Stats", "Achievements"
} DLL(void) BS_ISteamFriends_ActivateGameOverlay(ISteamFriends* lpSteamFriends, const char* pchDialog) {
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_ActivateGameOverlayInviteDialog=_BlitzSteamFriends_ActivateGameOverlayInviteDialog@8") lpSteamFriends->ActivateGameOverlay(pchDialog);
}
DLL_EXPORT int32_t DLL_CALL BlitzSteamFriends_GetSmallFriendAvatar(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend) {
return lpSteamFriends->GetSmallFriendAvatar(*steamIDFriend); // activates game overlay to a specific place
} // valid options are
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetSmallFriendAvatar=_BlitzSteamFriends_GetSmallFriendAvatar@8") // "steamid" - opens the overlay web browser to the specified user or groups profile
// "chat" - opens a chat window to the specified user, or joins the group chat
DLL_EXPORT int32_t DLL_CALL BlitzSteamFriends_GetMediumFriendAvatar(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend) { // "jointrade" - opens a window to a Steam Trading session that was started with the ISteamEconomy/StartTrade Web API
return lpSteamFriends->GetMediumFriendAvatar(*steamIDFriend); // "stats" - opens the overlay web browser to the specified user's stats
} // "achievements" - opens the overlay web browser to the specified user's achievements
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetMediumFriendAvatar=_BlitzSteamFriends_GetMediumFriendAvatar@8") // "friendadd" - opens the overlay in minimal mode prompting the user to add the target user as a friend
// "friendremove" - opens the overlay in minimal mode prompting the user to remove the target friend
DLL_EXPORT int32_t DLL_CALL BlitzSteamFriends_GetLargeFriendAvatar(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend) { // "friendrequestaccept" - opens the overlay in minimal mode prompting the user to accept an incoming friend invite
return lpSteamFriends->GetLargeFriendAvatar(*steamIDFriend); // "friendrequestignore" - opens the overlay in minimal mode prompting the user to ignore an incoming friend invite
} DLL(void) BS_ISteamFriends_ActivateGameOverlayToUser(ISteamFriends* lpSteamFriends, const char* pchDialog, CSteamID* steamID) {
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetLargeFriendAvatar=_BlitzSteamFriends_GetLargeFriendAvatar@8") lpSteamFriends->ActivateGameOverlayToUser(pchDialog, *steamID);
}
DLL_EXPORT uint32_t DLL_CALL BlitzSteamFriends_RequestUserInformation(ISteamFriends* lpSteamFriends, CSteamID* steamIDUser, bool bRequireNameOnly) {
return lpSteamFriends->RequestUserInformation(*steamIDUser, bRequireNameOnly); // activates game overlay web browser directly to the specified URL
} // full address with protocol type is required, e.g. http://www.steamgames.com/
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_RequestUserInformation=_BlitzSteamFriends_RequestUserInformation@12") DLL(void) BS_ISteamFriends_ActivateGameOverlayToWebPage(ISteamFriends* lpSteamFriends, const char* pchURL) {
lpSteamFriends->ActivateGameOverlayToWebPage(pchURL);
DLL_EXPORT SteamAPICall_t DLL_CALL BlitzSteamFriends_RequestClanOfficerList(ISteamFriends* lpSteamFriends, CSteamID* steamIDClan) { }
return lpSteamFriends->RequestClanOfficerList(*steamIDClan);
} // activates game overlay to store page for app
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_RequestClanOfficerList=_BlitzSteamFriends_RequestClanOfficerList@8") DLL(void) BS_ISteamFriends_ActivateGameOverlayToStore(ISteamFriends* lpSteamFriends, AppId_t nAppID, EOverlayToStoreFlag eFlag) {
lpSteamFriends->ActivateGameOverlayToStore(nAppID, eFlag);
DLL_EXPORT CSteamID* DLL_CALL BlitzSteamFriends_GetClanOwner(ISteamFriends* lpSteamFriends, CSteamID* steamIDClan) { }
CSteamID* steamID = new CSteamID(lpSteamFriends->GetClanOwner(*steamIDClan));
return steamID; // Mark a target user as 'played with'. This is a client-side only feature that requires that the calling user is
} // in game
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetClanOwner=_BlitzSteamFriends_GetClanOwner@8") DLL(void) BS_ISteamFriends_SetPlayedWith(ISteamFriends* lpSteamFriends, CSteamID* steamIDUserPlayedWith) {
lpSteamFriends->SetPlayedWith(*steamIDUserPlayedWith);
DLL_EXPORT int32_t DLL_CALL BlitzSteamFriends_GetClanOfficerCount(ISteamFriends* lpSteamFriends, CSteamID* steamIDClan) { }
return lpSteamFriends->GetClanOfficerCount(*steamIDClan);
} // activates game overlay to open the invite dialog. Invitations will be sent for the provided lobby.
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetClanOfficerCount=_BlitzSteamFriends_GetClanOfficerCount@8") DLL(void) BS_ISteamFriends_ActivateGameOverlayInviteDialog(ISteamFriends* lpSteamFriends, CSteamID* steamIDLobby) {
lpSteamFriends->ActivateGameOverlayInviteDialog(*steamIDLobby);
DLL_EXPORT CSteamID* DLL_CALL BlitzSteamFriends_GetClanOfficerByIndex(ISteamFriends* lpSteamFriends, CSteamID* steamIDClan, int32_t iOfficer) { }
CSteamID* steamID = new CSteamID(lpSteamFriends->GetClanOfficerByIndex(*steamIDClan, iOfficer));
return steamID; // gets the small (32x32) avatar of the current user, which is a handle to be used in IClientUtils::GetImageRGBA(), or 0 if none set
} DLL(int32_t) BS_ISteamFriends_GetSmallFriendAvatar(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend) {
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetClanOfficerByIndex=_BlitzSteamFriends_GetClanOfficerByIndex@12") return lpSteamFriends->GetSmallFriendAvatar(*steamIDFriend);
}
DLL_EXPORT EUserRestriction DLL_CALL BlitzSteamFriends_GetUserRestrictions(ISteamFriends* lpSteamFriends) {
return (EUserRestriction)lpSteamFriends->GetUserRestrictions(); // gets the medium (64x64) avatar of the current user, which is a handle to be used in IClientUtils::GetImageRGBA(), or 0 if none set
} DLL(int32_t) BS_ISteamFriends_GetMediumFriendAvatar(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend) {
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetUserRestrictions=_BlitzSteamFriends_GetUserRestrictions@4") return lpSteamFriends->GetMediumFriendAvatar(*steamIDFriend);
}
DLL_EXPORT uint32_t DLL_CALL BlitzSteamFriends_SetRichPresence(ISteamFriends* lpSteamFriends, const char* pchKey, const char* pchValue) {
return lpSteamFriends->SetRichPresence(pchKey, pchValue); // gets the large (184x184) avatar of the current user, which is a handle to be used in IClientUtils::GetImageRGBA(), or 0 if none set
} // returns -1 if this image has yet to be loaded, in this case wait for a AvatarImageLoaded_t callback and then call this again
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_SetRichPresence=_BlitzSteamFriends_SetRichPresence@12") DLL(int32_t) BS_ISteamFriends_GetLargeFriendAvatar(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend) {
return lpSteamFriends->GetLargeFriendAvatar(*steamIDFriend);
DLL_EXPORT void DLL_CALL BlitzSteamFriends_ClearRichPresence(ISteamFriends* lpSteamFriends) { }
lpSteamFriends->ClearRichPresence();
} // requests information about a user - persona name & avatar
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_ClearRichPresence=_BlitzSteamFriends_ClearRichPresence@4") // if bRequireNameOnly is set, then the avatar of a user isn't downloaded
// - it's a lot slower to download avatars and churns the local cache, so if you don't need avatars, don't request them
DLL_EXPORT const char* DLL_CALL BlitzSteamFriends_GetFriendRichPresence(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend, const char* pchKey) { // if returns true, it means that data is being requested, and a PersonaStateChanged_t callback will be posted when it's retrieved
return lpSteamFriends->GetFriendRichPresence(*steamIDFriend, pchKey); // if returns false, it means that we already have all the details about that user, and functions can be called immediately
} DLL(uint32_t) BS_ISteamFriends_RequestUserInformation(ISteamFriends* lpSteamFriends, CSteamID* steamIDUser, uint32_t bRequireNameOnly) {
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetFriendRichPresence=_BlitzSteamFriends_GetFriendRichPresence@12") return lpSteamFriends->RequestUserInformation(*steamIDUser, bRequireNameOnly != 0);
}
DLL_EXPORT int32_t DLL_CALL BlitzSteamFriends_GetFriendRichPresenceKeyCount(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend) {
return lpSteamFriends->GetFriendRichPresenceKeyCount(*steamIDFriend); // requests information about a clan officer list
} // when complete, data is returned in ClanOfficerListResponse_t call result
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetFriendRichPresenceKeyCount=_BlitzSteamFriends_GetFriendRichPresenceKeyCount@8") // this makes available the calls below
// you can only ask about clans that a user is a member of
DLL_EXPORT const char* DLL_CALL BlitzSteamFriends_GetFriendRichPresenceKeyByIndex(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend, int32_t iKey) { // note that this won't download avatars automatically; if you get an officer,
return lpSteamFriends->GetFriendRichPresenceKeyByIndex(*steamIDFriend, iKey); // and no avatar image is available, call RequestUserInformation( steamID, false ) to download the avatar
} DLL(SteamAPICall_t*) BS_ISteamFriends_RequestClanOfficerList(ISteamFriends* lpSteamFriends, CSteamID* steamIDClan) {
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetFriendRichPresenceKeyByIndex=_BlitzSteamFriends_GetFriendRichPresenceKeyByIndex@12") return new uint64_t(lpSteamFriends->RequestClanOfficerList(*steamIDClan));
}
DLL_EXPORT void DLL_CALL BlitzSteamFriends_RequestFriendRichPresence(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend) {
lpSteamFriends->RequestFriendRichPresence(*steamIDFriend); // iteration of clan officers - can only be done when a RequestClanOfficerList() call has completed
}
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_RequestFriendRichPresence=_BlitzSteamFriends_RequestFriendRichPresence@8") // returns the steamID of the clan owner
DLL(CSteamID*) BS_ISteamFriends_GetClanOwner(ISteamFriends* lpSteamFriends, CSteamID* steamIDClan) {
DLL_EXPORT uint32_t DLL_CALL BlitzSteamFriends_InviteUserToGame(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend, const char *pchConnectString) { return new CSteamID(lpSteamFriends->GetClanOwner(*steamIDClan));
return lpSteamFriends->InviteUserToGame(*steamIDFriend, pchConnectString); }
}
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_InviteUserToGame=_BlitzSteamFriends_InviteUserToGame@12") // returns the number of officers in a clan (including the owner)
DLL(int32_t) BS_ISteamFriends_GetClanOfficerCount(ISteamFriends* lpSteamFriends, CSteamID* steamIDClan) {
DLL_EXPORT int32_t DLL_CALL BlitzSteamFriends_GetCoplayFriendCount(ISteamFriends* lpSteamFriends) { return lpSteamFriends->GetClanOfficerCount(*steamIDClan);
return lpSteamFriends->GetCoplayFriendCount(); }
}
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetCoplayFriendCount=_BlitzSteamFriends_GetCoplayFriendCount@4") // returns the steamID of a clan officer, by index, of range [0,GetClanOfficerCount)
DLL(CSteamID*) BS_ISteamFriends_GetClanOfficerByIndex(ISteamFriends* lpSteamFriends, CSteamID* steamIDClan, int32_t iOfficer) {
DLL_EXPORT CSteamID* DLL_CALL BlitzSteamFriends_GetCoplayFriend(ISteamFriends* lpSteamFriends, int32_t iCoplayFriend) { return new CSteamID(lpSteamFriends->GetClanOfficerByIndex(*steamIDClan, iOfficer));
CSteamID* steamID = new CSteamID(lpSteamFriends->GetCoplayFriend(iCoplayFriend)); }
return steamID;
} // if current user is chat restricted, he can't send or receive any text/voice chat messages.
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetCoplayFriend=_BlitzSteamFriends_GetCoplayFriend@8") // the user can't see custom avatars. But the user can be online and send/recv game invites.
// a chat restricted user can't add friends or join any groups.
DLL_EXPORT int32_t DLL_CALL BlitzSteamFriends_GetFriendCoplayTime(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend) { DLL(EUserRestriction) BS_ISteamFriends_GetUserRestrictions(ISteamFriends* lpSteamFriends) {
return lpSteamFriends->GetFriendCoplayTime(*steamIDFriend); return (EUserRestriction)lpSteamFriends->GetUserRestrictions();
} }
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetFriendCoplayTime=_BlitzSteamFriends_GetFriendCoplayTime@8")
// Rich Presence data is automatically shared between friends who are in the same game
DLL_EXPORT AppId_t DLL_CALL BlitzSteamFriends_GetFriendCoplayGame(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend) { // Each user has a set of Key/Value pairs
return lpSteamFriends->GetFriendCoplayGame(*steamIDFriend); // Up to 20 different keys can be set
} // There are two magic keys:
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetFriendCoplayGame=_BlitzSteamFriends_GetFriendCoplayGame@8") // "status" - a UTF-8 string that will show up in the 'view game info' dialog in the Steam friends list
// "connect" - a UTF-8 string that contains the command-line for how a friend can connect to a game
DLL_EXPORT SteamAPICall_t DLL_CALL BlitzSteamFriends_JoinClanChatRoom(ISteamFriends* lpSteamFriends, CSteamID* steamIDClan) { // GetFriendRichPresence() returns an empty string "" if no value is set
return lpSteamFriends->JoinClanChatRoom(*steamIDClan); // SetRichPresence() to a NULL or an empty string deletes the key
} // You can iterate the current set of keys for a friend with GetFriendRichPresenceKeyCount()
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_JoinClanChatRoom=_BlitzSteamFriends_JoinClanChatRoom@8") // and GetFriendRichPresenceKeyByIndex() (typically only used for debugging)
DLL(uint32_t) BS_ISteamFriends_SetRichPresence(ISteamFriends* lpSteamFriends, const char* pchKey, const char* pchValue) {
DLL_EXPORT uint32_t DLL_CALL BlitzSteamFriends_LeaveClanChatRoom(ISteamFriends* lpSteamFriends, CSteamID* steamIDClan) { return lpSteamFriends->SetRichPresence(pchKey, pchValue);
return lpSteamFriends->LeaveClanChatRoom(*steamIDClan); }
}
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_LeaveClanChatRoom=_BlitzSteamFriends_LeaveClanChatRoom@8") DLL(void) BS_ISteamFriends_ClearRichPresence(ISteamFriends* lpSteamFriends) {
lpSteamFriends->ClearRichPresence();
DLL_EXPORT int32_t DLL_CALL BlitzSteamFriends_GetClanChatMemberCount(ISteamFriends* lpSteamFriends, CSteamID* steamIDClan) { }
return lpSteamFriends->GetClanChatMemberCount(*steamIDClan);
} DLL(const char*) BS_ISteamFriends_GetFriendRichPresence(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend, const char* pchKey) {
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetClanChatMemberCount=_BlitzSteamFriends_GetClanChatMemberCount@8") return lpSteamFriends->GetFriendRichPresence(*steamIDFriend, pchKey);
}
DLL_EXPORT CSteamID* DLL_CALL BlitzSteamFriends_GetChatMemberByIndex(ISteamFriends* lpSteamFriends, CSteamID* steamIDClan, int32_t iUser) {
CSteamID* steamID = new CSteamID(lpSteamFriends->GetChatMemberByIndex(*steamIDClan, iUser)); DLL(int32_t) BS_ISteamFriends_GetFriendRichPresenceKeyCount(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend) {
return steamID; return lpSteamFriends->GetFriendRichPresenceKeyCount(*steamIDFriend);
} }
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetChatMemberByIndex=_BlitzSteamFriends_GetChatMemberByIndex@12")
DLL(const char*) BS_ISteamFriends_GetFriendRichPresenceKeyByIndex(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend, int32_t iKey) {
DLL_EXPORT uint32_t DLL_CALL BlitzSteamFriends_SendClanChatMessage(ISteamFriends* lpSteamFriends, CSteamID* steamIDClanChat, const char *pchText) { return lpSteamFriends->GetFriendRichPresenceKeyByIndex(*steamIDFriend, iKey);
return lpSteamFriends->SendClanChatMessage(*steamIDClanChat, pchText); }
}
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_SendClanChatMessage=_BlitzSteamFriends_SendClanChatMessage@12") // Requests rich presence for a specific user.
DLL(void) BS_ISteamFriends_RequestFriendRichPresence(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend) {
DLL_EXPORT int32_t DLL_CALL BlitzSteamFriends_GetClanChatMessage(ISteamFriends* lpSteamFriends, CSteamID* steamIDClanChat, int32_t iMessage, void* prgchText, int32_t cchTextMax, EChatEntryType* peChatEntryType, CSteamID* psteamidChatter) { lpSteamFriends->RequestFriendRichPresence(*steamIDFriend);
return lpSteamFriends->GetClanChatMessage(*steamIDClanChat, iMessage, prgchText, cchTextMax, peChatEntryType, psteamidChatter); }
}
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetClanChatMessage=_BlitzSteamFriends_GetClanChatMessage@28") // rich invite support
// if the target accepts the invite, the pchConnectString gets added to the command-line for launching the game
DLL_EXPORT uint32_t DLL_CALL BlitzSteamFriends_IsClanChatAdmin(ISteamFriends* lpSteamFriends, CSteamID* steamIDClanChat, CSteamID* steamIDUser) { // if the game is already running, a GameRichPresenceJoinRequested_t callback is posted containing the connect string
return lpSteamFriends->IsClanChatAdmin(*steamIDClanChat, *steamIDUser); // invites can only be sent to friends
} DLL(uint32_t) BS_ISteamFriends_InviteUserToGame(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend, const char *pchConnectString) {
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_IsClanChatAdmin=_BlitzSteamFriends_IsClanChatAdmin@12") return lpSteamFriends->InviteUserToGame(*steamIDFriend, pchConnectString);
}
DLL_EXPORT uint32_t DLL_CALL BlitzSteamFriends_IsClanChatWindowOpenInSteam(ISteamFriends* lpSteamFriends, CSteamID* steamIDClanChat) {
return lpSteamFriends->IsClanChatWindowOpenInSteam(*steamIDClanChat); // recently-played-with friends iteration
} // this iterates the entire list of users recently played with, across games
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_IsClanChatWindowOpenInSteam=_BlitzSteamFriends_IsClanChatWindowOpenInSteam@8") // GetFriendCoplayTime() returns as a unix time
DLL(int32_t) BS_ISteamFriends_GetCoplayFriendCount(ISteamFriends* lpSteamFriends) {
DLL_EXPORT uint32_t DLL_CALL BlitzSteamFriends_OpenClanChatWindowInSteam(ISteamFriends* lpSteamFriends, CSteamID* steamIDClanChat) { return lpSteamFriends->GetCoplayFriendCount();
return lpSteamFriends->OpenClanChatWindowInSteam(*steamIDClanChat); }
}
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_OpenClanChatWindowInSteam=_BlitzSteamFriends_OpenClanChatWindowInSteam@8") DLL(CSteamID*) BS_ISteamFriends_GetCoplayFriend(ISteamFriends* lpSteamFriends, int32_t iCoplayFriend) {
return new CSteamID(lpSteamFriends->GetCoplayFriend(iCoplayFriend));
DLL_EXPORT uint32_t DLL_CALL BlitzSteamFriends_CloseClanChatWindowInSteam(ISteamFriends* lpSteamFriends, CSteamID* steamIDClanChat) { }
return lpSteamFriends->CloseClanChatWindowInSteam(*steamIDClanChat);
} DLL(int32_t) BS_ISteamFriends_GetFriendCoplayTime(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend) {
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_CloseClanChatWindowInSteam=_BlitzSteamFriends_CloseClanChatWindowInSteam@8") return lpSteamFriends->GetFriendCoplayTime(*steamIDFriend);
}
DLL_EXPORT uint32_t DLL_CALL BlitzSteamFriends_SetListenForFriendsMessages(ISteamFriends* lpSteamFriends, bool bInterceptEnabled) {
return lpSteamFriends->SetListenForFriendsMessages(bInterceptEnabled); DLL(AppId_t) BS_ISteamFriends_GetFriendCoplayGame(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend) {
} return lpSteamFriends->GetFriendCoplayGame(*steamIDFriend);
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_SetListenForFriendsMessages=_BlitzSteamFriends_SetListenForFriendsMessages@8") }
DLL_EXPORT uint32_t DLL_CALL BlitzSteamFriends_ReplyToFriendMessage(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend, const char* pchMsgToSend) { // chat interface for games
return lpSteamFriends->ReplyToFriendMessage(*steamIDFriend, pchMsgToSend); // this allows in-game access to group (clan) chats from in the game
} // the behavior is somewhat sophisticated, because the user may or may not be already in the group chat from outside the game or in the overlay
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_ReplyToFriendMessage=_BlitzSteamFriends_ReplyToFriendMessage@12") // use ActivateGameOverlayToUser( "chat", steamIDClan ) to open the in-game overlay version of the chat
DLL(SteamAPICall_t*) BS_ISteamFriends_JoinClanChatRoom(ISteamFriends* lpSteamFriends, CSteamID* steamIDClan) {
DLL_EXPORT int32_t DLL_CALL BlitzSteamFriends_GetFriendMessage(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend, int32_t iMessageID, void* pvData, int32_t cubData, EChatEntryType* peChatEntryType) { return new SteamAPICall_t(lpSteamFriends->JoinClanChatRoom(*steamIDClan));
return lpSteamFriends->GetFriendMessage(*steamIDFriend, iMessageID, pvData, cubData, peChatEntryType); }
}
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetFriendMessage=_BlitzSteamFriends_GetFriendMessage@24") DLL(uint32_t) BS_ISteamFriends_LeaveClanChatRoom(ISteamFriends* lpSteamFriends, CSteamID* steamIDClan) {
return lpSteamFriends->LeaveClanChatRoom(*steamIDClan);
DLL_EXPORT SteamAPICall_t DLL_CALL BlitzSteamFriends_GetFollowerCount(ISteamFriends* lpSteamFriends, CSteamID* steamID) { }
return lpSteamFriends->GetFollowerCount(*steamID);
} DLL(int32_t) BS_ISteamFriends_GetClanChatMemberCount(ISteamFriends* lpSteamFriends, CSteamID* steamIDClan) {
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_GetFollowerCount=_BlitzSteamFriends_GetFollowerCount@8") return lpSteamFriends->GetClanChatMemberCount(*steamIDClan);
}
DLL_EXPORT SteamAPICall_t DLL_CALL BlitzSteamFriends_IsFollowing(ISteamFriends* lpSteamFriends, CSteamID* steamID) {
return lpSteamFriends->IsFollowing(*steamID); DLL(CSteamID*) BS_ISteamFriends_GetChatMemberByIndex(ISteamFriends* lpSteamFriends, CSteamID* steamIDClan, int32_t iUser) {
} return new CSteamID(lpSteamFriends->GetChatMemberByIndex(*steamIDClan, iUser));
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_IsFollowing=_BlitzSteamFriends_IsFollowing@8") }
DLL_EXPORT SteamAPICall_t DLL_CALL BlitzSteamFriends_EnumerateFollowingList(ISteamFriends* lpSteamFriends, uint32 unStartIndex) { DLL(uint32_t) BS_ISteamFriends_SendClanChatMessage(ISteamFriends* lpSteamFriends, CSteamID* steamIDClanChat, const char *pchText) {
return lpSteamFriends->EnumerateFollowingList(unStartIndex); return lpSteamFriends->SendClanChatMessage(*steamIDClanChat, pchText);
} }
#pragma comment(linker, "/EXPORT:BlitzSteamFriends_EnumerateFollowingList=_BlitzSteamFriends_EnumerateFollowingList@8")
DLL(int32_t) BS_ISteamFriends_GetClanChatMessage(ISteamFriends* lpSteamFriends, CSteamID* steamIDClanChat, int32_t iMessage, void* prgchText, int32_t cchTextMax, EChatEntryType* peChatEntryType, CSteamID* psteamidChatter) {
return lpSteamFriends->GetClanChatMessage(*steamIDClanChat, iMessage, prgchText, cchTextMax, peChatEntryType, psteamidChatter);
}
DLL(uint32_t) BS_ISteamFriends_IsClanChatAdmin(ISteamFriends* lpSteamFriends, CSteamID* steamIDClanChat, CSteamID* steamIDUser) {
return lpSteamFriends->IsClanChatAdmin(*steamIDClanChat, *steamIDUser);
}
// interact with the Steam (game overlay / desktop)
DLL(uint32_t) BS_ISteamFriends_IsClanChatWindowOpenInSteam(ISteamFriends* lpSteamFriends, CSteamID* steamIDClanChat) {
return lpSteamFriends->IsClanChatWindowOpenInSteam(*steamIDClanChat);
}
DLL(uint32_t) BS_ISteamFriends_OpenClanChatWindowInSteam(ISteamFriends* lpSteamFriends, CSteamID* steamIDClanChat) {
return lpSteamFriends->OpenClanChatWindowInSteam(*steamIDClanChat);
}
DLL(uint32_t) BS_ISteamFriends_CloseClanChatWindowInSteam(ISteamFriends* lpSteamFriends, CSteamID* steamIDClanChat) {
return lpSteamFriends->CloseClanChatWindowInSteam(*steamIDClanChat);
}
// peer-to-peer chat interception
// this is so you can show P2P chats inline in the game
DLL(uint32_t) BS_ISteamFriends_SetListenForFriendsMessages(ISteamFriends* lpSteamFriends, uint32_t bInterceptEnabled) {
return lpSteamFriends->SetListenForFriendsMessages(bInterceptEnabled != 0);
}
DLL(uint32_t) BS_ISteamFriends_ReplyToFriendMessage(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend, const char* pchMsgToSend) {
return lpSteamFriends->ReplyToFriendMessage(*steamIDFriend, pchMsgToSend);
}
DLL(int32_t) BS_ISteamFriends_GetFriendMessage(ISteamFriends* lpSteamFriends, CSteamID* steamIDFriend, int32_t iMessageID, void* pvData, int32_t cubData, EChatEntryType* peChatEntryType) {
return lpSteamFriends->GetFriendMessage(*steamIDFriend, iMessageID, pvData, cubData, peChatEntryType);
}
// following apis
DLL(SteamAPICall_t*) BS_ISteamFriends_GetFollowerCount(ISteamFriends* lpSteamFriends, CSteamID* steamID) {
return new SteamAPICall_t(lpSteamFriends->GetFollowerCount(*steamID));
}
DLL(SteamAPICall_t*) BS_ISteamFriends_IsFollowing(ISteamFriends* lpSteamFriends, CSteamID* steamID) {
return new SteamAPICall_t(lpSteamFriends->IsFollowing(*steamID));
}
DLL(SteamAPICall_t*) BS_ISteamFriends_EnumerateFollowingList(ISteamFriends* lpSteamFriends, uint32_t unStartIndex) {
return new SteamAPICall_t(lpSteamFriends->EnumerateFollowingList(unStartIndex));
}
+370 -67
View File
@@ -1,68 +1,371 @@
// BlitzSteam - Steam wrapper for Blitz. // BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Project Kube (Michael Fabian Dirks) // Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as // it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the // published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version. // License, or (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// //
// You should have received a copy of the GNU Lesser General Public License // You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "dllmain.h" #include "BlitzSteam.h"
#include "SteamworksSDK/public/steam/steam_gameserver.h"
// Initialize ISteamGameServer interface object, and set server properties which may not be changed.
DLL_EXPORT uint32_t DLL_CALL BlitzSteamGameServer_Init(uint32_t unIP, uint16_t usSteamPort, uint16_t usGamePort, uint16_t usQueryPort, EServerMode eServerMode, const char *pchVersionString) { //
return SteamGameServer_Init(unIP, usSteamPort, usGamePort, usQueryPort, eServerMode, pchVersionString); // After calling this function, you should set any additional server parameters, and then
} // call ISteamGameServer::LogOnAnonymous() or ISteamGameServer::LogOn()
//
DLL_EXPORT void DLL_CALL BlitzSteamGameServer_Shutdown() { // - usSteamPort is the local port used to communicate with the steam servers.
SteamGameServer_Shutdown(); // - usGamePort is the port that clients will connect to for gameplay.
} // - usQueryPort is the port that will manage server browser related duties and info
// pings from clients. If you pass MASTERSERVERUPDATERPORT_USEGAMESOCKETSHARE for usQueryPort, then it
DLL_EXPORT void DLL_CALL BlitzSteamGameServer_RunCallbacks() { // will use "GameSocketShare" mode, which means that the game is responsible for sending and receiving
SteamGameServer_RunCallbacks(); // UDP packets for the master server updater. See references to GameSocketShare in isteamgameserver.h.
} // - The version string is usually in the form x.x.x.x, and is used by the master server to detect when the
// server is out of date. (Only servers with the latest version will be listed.)
DLL_EXPORT uint32_t DLL_CALL BlitzSteamGameServer_Secure() { DLL(uint32_t) BS_SteamGameServer_Init(uint32_t unIP, uint16_t usSteamPort, uint16_t usGamePort, uint16_t usQueryPort, EServerMode eServerMode, const char *pchVersionString) {
return SteamGameServer_BSecure(); return SteamGameServer_Init(unIP, usSteamPort, usGamePort, usQueryPort, eServerMode, pchVersionString);
} }
DLL_EXPORT uint64_t* DLL_CALL BlitzSteamGameServer_GetSteamID() { DLL(void) BS_SteamGameServer_Shutdown() {
uint64_t* val = new uint64_t(SteamGameServer_GetSteamID()); SteamGameServer_Shutdown();
return val; }
}
DLL(void) BS_SteamGameServer_RunCallbacks() {
DLL_EXPORT HSteamPipe DLL_CALL BlitzSteamGameServer_GetHSteamPipe() { SteamGameServer_RunCallbacks();
return SteamGameServer_GetHSteamPipe(); }
}
DLL(uint32_t) BS_SteamGameServer_IsSecure() {
// Interfaces return SteamGameServer_BSecure();
DLL_EXPORT ISteamGameServer* DLL_CALL BlitzSteamGameServer() { }
return SteamGameServer();
} DLL(CSteamID*) BS_SteamGameServer_GetSteamID() {
return new CSteamID(SteamGameServer_GetSteamID());
DLL_EXPORT ISteamUtils* DLL_CALL BlitzSteamGameServerUtils() { }
return SteamGameServerUtils();
} //----------------------------------------------------------------------------------------------------------------------------------------------------------//
// steamclient.dll private wrapper functions
DLL_EXPORT ISteamNetworking* DLL_CALL BlitzSteamGameServerNetworking() { //
return SteamGameServerNetworking(); // The following functions are part of abstracting API access to the steamclient.dll, but should only be used in very specific cases
} //----------------------------------------------------------------------------------------------------------------------------------------------------------//
DLL(HSteamPipe) BS_SteamGameServer_GetHSteamPipe() {
DLL_EXPORT ISteamGameServerStats* DLL_CALL BlitzSteamGameServerStats() { return SteamGameServer_GetHSteamPipe();
return SteamGameServerStats(); }
}
// ISteamGameServer Stuff
DLL_EXPORT ISteamHTTP* DLL_CALL BlitzSteamGameServerHTTP() { //-----------------------------------------------------------------------------
return SteamGameServerHTTP(); // Purpose: Functions for authenticating users via Steam to play on a game server
} //-----------------------------------------------------------------------------
DLL(ISteamGameServer*) BS_SteamGameServer() {
DLL_EXPORT ISteamInventory* DLL_CALL BlitzSteamGameServerInventory() { return SteamGameServer();
return SteamGameServerInventory(); }
//
// Basic server data. These properties, if set, must be set before before calling LogOn. They
// may not be changed after logged in.
//
/// This is called by SteamGameServer_Init, and you will usually not need to call it directly
DLL(uint32_t) BS_ISteamGameServer_InitGameServer(ISteamGameServer* pSteamGameServer, uint32_t unIP, uint16_t usGamePort, uint16_t usQueryPort, uint32_t unFlags, AppId_t nGameAppId, const char *pchVersionString) {
return pSteamGameServer->InitGameServer(unIP, usGamePort, usQueryPort, unFlags, nGameAppId, pchVersionString);
}
/// Game product identifier. This is currently used by the master server for version checking purposes.
/// It's a required field, but will eventually will go away, and the AppID will be used for this purpose.
DLL(void) BS_ISteamGameServer_SetProduct(ISteamGameServer* pSteamGameServer, const char *pszProduct) {
pSteamGameServer->SetProduct(pszProduct);
}
/// Description of the game. This is a required field and is displayed in the steam server browser....for now.
/// This is a required field, but it will go away eventually, as the data should be determined from the AppID.
DLL(void) BS_ISteamGameServer_SetGameDescription(ISteamGameServer* pSteamGameServer, const char *pszGameDescription) {
pSteamGameServer->SetGameDescription(pszGameDescription);
}
/// If your game is a "mod," pass the string that identifies it. The default is an empty string, meaning
/// this application is the original game, not a mod.
///
/// @see k_cbMaxGameServerGameDir
DLL(void) BS_ISteamGameServer_SetModDir(ISteamGameServer* pSteamGameServer, const char *pszModDir) {
pSteamGameServer->SetModDir(pszModDir);
}
/// Is this is a dedicated server? The default value is false.
DLL(void) BS_ISteamGameServer_SetDedicatedServer(ISteamGameServer* pSteamGameServer, uint32_t bDedicated) {
pSteamGameServer->SetDedicatedServer(!!bDedicated);
}
//
// Login
//
/// Begin process to login to a persistent game server account
///
/// You need to register for callbacks to determine the result of this operation.
/// @see SteamServersConnected_t
/// @see SteamServerConnectFailure_t
/// @see SteamServersDisconnected_t
DLL(void) BS_ISteamGameServer_LogOn(ISteamGameServer* pSteamGameServer, const char *pszToken) {
pSteamGameServer->LogOn(pszToken);
}
/// Login to a generic, anonymous account.
///
/// Note: in previous versions of the SDK, this was automatically called within SteamGameServer_Init,
/// but this is no longer the case.
DLL(void) BS_ISteamGameServer_LogOnAnonymous(ISteamGameServer* pSteamGameServer) {
pSteamGameServer->LogOnAnonymous();
}
/// Begin process of logging game server out of steam
DLL(void) BS_ISteamGameServer_LogOff(ISteamGameServer* pSteamGameServer) {
pSteamGameServer->LogOff();
}
// status functions
DLL(uint32_t) BS_ISteamGameServer_IsLoggedOn(ISteamGameServer* pSteamGameServer) {
return pSteamGameServer->BLoggedOn();
}
DLL(uint32_t) BS_ISteamGameServer_IsSecure(ISteamGameServer* pSteamGameServer) {
return pSteamGameServer->BSecure();
}
DLL(CSteamID*) BS_ISteamGameServer_GetSteamID(ISteamGameServer* pSteamGameServer) {
return new CSteamID(pSteamGameServer->GetSteamID());
}
/// Returns true if the master server has requested a restart.
/// Only returns true once per request.
DLL(uint32_t) BS_ISteamGameServer_WasRestartRequested(ISteamGameServer* pSteamGameServer) {
return pSteamGameServer->WasRestartRequested();
}
//
// Server state. These properties may be changed at any time.
//
/// Max player count that will be reported to server browser and client queries
DLL(void) BS_ISteamGameServer_SetMaxPlayerCount(ISteamGameServer* pSteamGameServer, int32_t cPlayersMax) {
pSteamGameServer->SetMaxPlayerCount(cPlayersMax);
}
/// Number of bots. Default value is zero
DLL(void) BS_ISteamGameServer_SetBotPlayerCount(ISteamGameServer* pSteamGameServer, int32_t cBotplayers) {
pSteamGameServer->SetBotPlayerCount(cBotplayers);
}
/// Set the name of server as it will appear in the server browser
///
/// @see k_cbMaxGameServerName
DLL(void) BS_ISteamGameServer_SetServerName(ISteamGameServer* pSteamGameServer, const char *pszServerName) {
pSteamGameServer->SetServerName(pszServerName);
}
/// Set name of map to report in the server browser
///
/// @see k_cbMaxGameServerName
DLL(void) BS_ISteamGameServer_SetMapName(ISteamGameServer* pSteamGameServer, const char *pszMapName) {
pSteamGameServer->SetMapName(pszMapName);
}
/// Let people know if your server will require a password
DLL(void) BS_ISteamGameServer_SetPasswordProtected(ISteamGameServer* pSteamGameServer, uint32_t bPasswordProtected) {
pSteamGameServer->SetPasswordProtected(!!bPasswordProtected);
}
/// Spectator server. The default value is zero, meaning the service
/// is not used.
DLL(void) BS_ISteamGameServer_SetSpectatorPort(ISteamGameServer* pSteamGameServer, uint16_t unSpectatorPort) {
pSteamGameServer->SetSpectatorPort(unSpectatorPort);
}
/// Name of the spectator server. (Only used if spectator port is nonzero.)
///
/// @see k_cbMaxGameServerMapName
DLL(void) BS_ISteamGameServer_SetSpectatorServerName(ISteamGameServer* pSteamGameServer, const char *pszSpectatorServerName) {
pSteamGameServer->SetSpectatorServerName(pszSpectatorServerName);
}
/// Call this to clear the whole list of key/values that are sent in rules queries.
DLL(void) BS_ISteamGameServer_ClearAllKeyValues(ISteamGameServer* pSteamGameServer) {
pSteamGameServer->ClearAllKeyValues();
}
/// Call this to add/update a key/value pair.
DLL(void) BS_ISteamGameServer_SetKeyValue(ISteamGameServer* pSteamGameServer, const char *pKey, const char *pValue) {
pSteamGameServer->SetKeyValue(pKey, pValue);
}
/// Sets a string defining the "gametags" for this server, this is optional, but if it is set
/// it allows users to filter in the matchmaking/server-browser interfaces based on the value
///
/// @see k_cbMaxGameServerTags
DLL(void) BS_ISteamGameServer_SetGameTags(ISteamGameServer* pSteamGameServer, const char *pchGameTags) {
pSteamGameServer->SetGameTags(pchGameTags);
}
/// Sets a string defining the "gamedata" for this server, this is optional, but if it is set
/// it allows users to filter in the matchmaking/server-browser interfaces based on the value
/// don't set this unless it actually changes, its only uploaded to the master once (when
/// acknowledged)
///
/// @see k_cbMaxGameServerGameData
DLL(void) BS_ISteamGameServer_SetGameData(ISteamGameServer* pSteamGameServer, const char *pchGameData) {
pSteamGameServer->SetGameData(pchGameData);
}
/// Region identifier. This is an optional field, the default value is empty, meaning the "world" region
DLL(void) BS_ISteamGameServer_SetRegion(ISteamGameServer* pSteamGameServer, const char *pszRegion) {
pSteamGameServer->SetRegion(pszRegion);
}
//
// Player list management / authentication
//
// Handles receiving a new connection from a Steam user. This call will ask the Steam
// servers to validate the users identity, app ownership, and VAC status. If the Steam servers
// are off-line, then it will validate the cached ticket itself which will validate app ownership
// and identity. The AuthBlob here should be acquired on the game client using SteamUser()->InitiateGameConnection()
// and must then be sent up to the game server for authentication.
//
// Return Value: returns true if the users ticket passes basic checks. pSteamIDUser will contain the Steam ID of this user. pSteamIDUser must NOT be NULL
// If the call succeeds then you should expect a GSClientApprove_t or GSClientDeny_t callback which will tell you whether authentication
// for the user has succeeded or failed (the steamid in the callback will match the one returned by this call)
DLL(uint32_t) BS_ISteamGameServer_SendUserConnectAndAuthenticate(ISteamGameServer* pSteamGameServer, uint32_t unIPClient, const void *pvAuthBlob, uint32_t cubAuthBlobSize, CSteamID *pSteamIDUser) {
return pSteamGameServer->SendUserConnectAndAuthenticate(unIPClient, pvAuthBlob, cubAuthBlobSize, pSteamIDUser);
}
// Creates a fake user (ie, a bot) which will be listed as playing on the server, but skips validation.
//
// Return Value: Returns a SteamID for the user to be tracked with, you should call HandleUserDisconnect()
// when this user leaves the server just like you would for a real user.
DLL(CSteamID*) BS_ISteamGameServer_CreateUnauthenticatedUserConnection(ISteamGameServer* pSteamGameServer) {
return new CSteamID(pSteamGameServer->CreateUnauthenticatedUserConnection());
}
// Should be called whenever a user leaves our game server, this lets Steam internally
// track which users are currently on which servers for the purposes of preventing a single
// account being logged into multiple servers, showing who is currently on a server, etc.
DLL(void) BS_ISteamGameServer_SendUserDisconnect(ISteamGameServer* pSteamGameServer, CSteamID* pSteamIDUser) {
pSteamGameServer->SendUserDisconnect(*pSteamIDUser);
}
// Update the data to be displayed in the server browser and matchmaking interfaces for a user
// currently connected to the server. For regular users you must call this after you receive a
// GSUserValidationSuccess callback.
//
// Return Value: true if successful, false if failure (ie, steamIDUser wasn't for an active player)
DLL(uint32_t) BS_ISteamGameServer_UpdateUserData(ISteamGameServer* pSteamGameServer, CSteamID* pSteamIDUser, const char *pchPlayerName, uint32_t uScore) {
return pSteamGameServer->BUpdateUserData(*pSteamIDUser, pchPlayerName, uScore);
}
// New auth system APIs - do not mix with the old auth system APIs.
// ----------------------------------------------------------------
// Retrieve ticket to be sent to the entity who wishes to authenticate you ( using BeginAuthSession API ).
// pcbTicket retrieves the length of the actual ticket.
DLL(HAuthTicket) BS_ISteamGameServer_GetAuthSessionTicket(ISteamGameServer* pSteamGameServer, void *pTicket, int32_t cbMaxTicket, uint32_t *pcbTicket) {
return pSteamGameServer->GetAuthSessionTicket(pTicket, cbMaxTicket, pcbTicket);
}
// Authenticate ticket ( from GetAuthSessionTicket ) from entity steamID to be sure it is valid and isnt reused
// Registers for callbacks if the entity goes offline or cancels the ticket ( see ValidateAuthTicketResponse_t callback and EAuthSessionResponse )
DLL(EBeginAuthSessionResult) BS_ISteamGameServer_BeginAuthSession(ISteamGameServer* pSteamGameServer, const void *pAuthTicket, int32_t cbAuthTicket, CSteamID* pSteamID) {
return pSteamGameServer->BeginAuthSession(pAuthTicket, cbAuthTicket, *pSteamID);
}
// Stop tracking started by BeginAuthSession - called when no longer playing game with this entity
DLL(void) BS_ISteamGameServer_EndAuthSession(ISteamGameServer* pSteamGameServer, CSteamID* pSteamID) {
pSteamGameServer->EndAuthSession(*pSteamID);
}
// Cancel auth ticket from GetAuthSessionTicket, called when no longer playing game with the entity you gave the ticket to
DLL(void) BS_ISteamGameServer_CancelAuthTicket(ISteamGameServer* pSteamGameServer, HAuthTicket hAuthTicket) {
pSteamGameServer->CancelAuthTicket(hAuthTicket);
}
// After receiving a user's authentication data, and passing it to SendUserConnectAndAuthenticate, use this function
// to determine if the user owns downloadable content specified by the provided AppID.
DLL(EUserHasLicenseForAppResult) BS_ISteamGameServer_UserHasLicenseForApp(ISteamGameServer* pSteamGameServer, CSteamID* pSteamID, AppId_t appID) {
return pSteamGameServer->UserHasLicenseForApp(*pSteamID, appID);
}
// Ask if a user in in the specified group, results returns async by GSUserGroupStatus_t
// returns false if we're not connected to the steam servers and thus cannot ask
DLL(uint32_t) BS_ISteamGameServer_RequestUserGroupStatus(ISteamGameServer* pSteamGameServer, CSteamID* pSteamIDUser, CSteamID* pSteamIDGroup) {
return pSteamGameServer->RequestUserGroupStatus(*pSteamIDUser, *pSteamIDGroup);
}
// Returns the public IP of the server according to Steam, useful when the server is
// behind NAT and you want to advertise its IP in a lobby for other clients to directly
// connect to
DLL(uint32_t) BS_ISteamGameServer_GetPublicIP(ISteamGameServer* pSteamGameServer) {
return pSteamGameServer->GetPublicIP();
}
// These are in GameSocketShare mode, where instead of ISteamGameServer creating its own
// socket to talk to the master server on, it lets the game use its socket to forward messages
// back and forth. This prevents us from requiring server ops to open up yet another port
// in their firewalls.
//
// the IP address and port should be in host order, i.e 127.0.0.1 == 0x7f000001
// These are used when you've elected to multiplex the game server's UDP socket
// rather than having the master server updater use its own sockets.
//
// Source games use this to simplify the job of the server admins, so they
// don't have to open up more ports on their firewalls.
// Call this when a packet that starts with 0xFFFFFFFF comes in. That means
// it's for us.
DLL(uint32_t) BS_ISteamGameServer_HandleIncomingPacket(ISteamGameServer* pSteamGameServer, const void *pData, int32_t cbData, uint32_t srcIP, uint16_t srcPort) {
return pSteamGameServer->HandleIncomingPacket(pData, cbData, srcIP, srcPort);
}
// AFTER calling HandleIncomingPacket for any packets that came in that frame, call this.
// This gets a packet that the master server updater needs to send out on UDP.
// It returns the length of the packet it wants to send, or 0 if there are no more packets to send.
// Call this each frame until it returns 0.
DLL(uint32_t) BS_ISteamGameServer_GetNextOutgoingPacket(ISteamGameServer* pSteamGameServer, void *pOut, int32_t cbMaxOut, uint32_t *pNetAdr, uint16_t *pPort) {
return pSteamGameServer->GetNextOutgoingPacket(pOut, cbMaxOut, pNetAdr, pPort);
}
//
// Control heartbeats / advertisement with master server
//
// Call this as often as you like to tell the master server updater whether or not
// you want it to be active (default: off).
DLL(void) BS_ISteamGameServer_EnableHeartbeats(ISteamGameServer* pSteamGameServer, uint32_t bActive) {
pSteamGameServer->EnableHeartbeats(!!bActive);
}
// You usually don't need to modify this.
// Pass -1 to use the default value for iHeartbeatInterval.
// Some mods change this.
DLL(void) BS_ISteamGameServer_SetHeartbeatInterval(ISteamGameServer* pSteamGameServer, int32_t iHeartbeatInterval) {
pSteamGameServer->SetHeartbeatInterval(iHeartbeatInterval);
}
// Force a heartbeat to steam at the next opportunity
DLL(void) BS_ISteamGameServer_ForceHeartbeat(ISteamGameServer* pSteamGameServer) {
pSteamGameServer->ForceHeartbeat();
}
// associate this game server with this clan for the purposes of computing player compat
DLL(SteamAPICall_t*) BS_ISteamGameServer_AssociateWithClan(ISteamGameServer* pSteamGameServer, CSteamID* pSteamIDClan) {
return new SteamAPICall_t(pSteamGameServer->AssociateWithClan(*pSteamIDClan));
}
// ask if any of the current players dont want to play with this new player - or vice versa
DLL(SteamAPICall_t*) BS_ISteamGameServer_ComputeNewPlayerCompatibility(ISteamGameServer* pSteamGameServer, CSteamID* pSteamIDNewPlayer) {
return new SteamAPICall_t(pSteamGameServer->ComputeNewPlayerCompatibility(*pSteamIDNewPlayer));
} }
+81
View File
@@ -0,0 +1,81 @@
// BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "BlitzSteam.h"
//-----------------------------------------------------------------------------
// Purpose: Functions for authenticating users via Steam to play on a game server
//-----------------------------------------------------------------------------
DLL(ISteamGameServerStats*) BS_SteamGameServerStats() {
return SteamGameServerStats();
}
// downloads stats for the user
// returns a GSStatsReceived_t callback when completed
// if the user has no stats, GSStatsReceived_t.m_eResult will be set to k_EResultFail
// these stats will only be auto-updated for clients playing on the server. For other
// users you'll need to call RequestUserStats() again to refresh any data
DLL(SteamAPICall_t*) BS_ISteamGameServerStats_RequestUserStats(ISteamGameServerStats* pSteamGameServerStats, CSteamID* steamIDUser) {
return new SteamAPICall_t(pSteamGameServerStats->RequestUserStats(*steamIDUser));
}
// Store the current data on the server, will get a GSStatsStored_t callback when set.
//
// If the callback has a result of k_EResultInvalidParam, one or more stats
// uploaded has been rejected, either because they broke constraints
// or were out of date. In this case the server sends back updated values.
// The stats should be re-iterated to keep in sync.
DLL(SteamAPICall_t*) BS_ISteamGameServerStats_StoreUserStats(ISteamGameServerStats* pSteamGameServerStats, CSteamID* steamIDUser) {
return new SteamAPICall_t(pSteamGameServerStats->StoreUserStats(*steamIDUser));
}
// requests stat information for a user, usable after a successful call to RequestUserStats()
DLL(uint32_t) BS_ISteamGameServerStats_GetUserStat(ISteamGameServerStats* pSteamGameServerStats, CSteamID* steamIDUser, const char* pchName, uint32_t* pData) {
return pSteamGameServerStats->GetUserStat(*steamIDUser, pchName, (int32_t*)pData);
}
DLL(uint32_t) BS_ISteamGameServerStats_GetUserStatF(ISteamGameServerStats* pSteamGameServerStats, CSteamID* steamIDUser, const char* pchName, float_t* pData) {
return pSteamGameServerStats->GetUserStat(*steamIDUser, pchName, pData);
}
DLL(uint32_t) BS_ISteamGameServerStats_GetUserAchievement(ISteamGameServerStats* pSteamGameServerStats, CSteamID* steamIDUser, const char* pchName, uint32_t* pbAchieved) {
return pSteamGameServerStats->GetUserAchievement(*steamIDUser, pchName, (bool*)pbAchieved);
}
// Set / update stats and achievements.
// Note: These updates will work only on stats game servers are allowed to edit and only for
// game servers that have been declared as officially controlled by the game creators.
// Set the IP range of your official servers on the Steamworks page
DLL(uint32_t) BS_ISteamGameServerStats_SetUserStat(ISteamGameServerStats* pSteamGameServerStats, CSteamID* steamIDUser, const char* pchName, uint32_t nData) {
return pSteamGameServerStats->SetUserStat(*steamIDUser, pchName, (int32_t)nData);
}
DLL(uint32_t) BS_ISteamGameServerStats_SetUserStatF(ISteamGameServerStats* pSteamGameServerStats, CSteamID* steamIDUser, const char* pchName, float_t fData) {
return pSteamGameServerStats->SetUserStat(*steamIDUser, pchName, fData);
}
DLL(uint32_t) BS_ISteamGameServerStats_UpdateUserAvgRateStat(ISteamGameServerStats* pSteamGameServerStats, CSteamID* steamIDUser, const char *pchName, float flCountThisSession, double* pdSessionLength) {
return pSteamGameServerStats->UpdateUserAvgRateStat(*steamIDUser, pchName, flCountThisSession, *pdSessionLength);
}
DLL(uint32_t) BS_ISteamGameServerStats_SetUserAchievement(ISteamGameServerStats* pSteamGameServerStats, CSteamID* steamIDUser, const char* pchName) {
return pSteamGameServerStats->SetUserAchievement(*steamIDUser, pchName);
}
DLL(uint32_t) BS_ISteamGameServerStats_ClearUserAchievement(ISteamGameServerStats* pSteamGameServerStats, CSteamID* steamIDUser, const char* pchName) {
return pSteamGameServerStats->ClearUserAchievement(*steamIDUser, pchName);
}
+209
View File
@@ -0,0 +1,209 @@
// BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "BlitzSteam.h"
#include "SteamworksSDK/public/steam/isteamhtmlsurface.h"
DLL(ISteamHTMLSurface*) BS_SteamHTMLSurface() {
return SteamHTMLSurface();
}
// Must call init and shutdown when starting/ending use of the interface
DLL(uint32_t) BS_ISteamHTMLSurface_Init(ISteamHTMLSurface* pSteamHTMLSurface) {
return pSteamHTMLSurface->Init();
}
DLL(uint32_t) BS_ISteamHTMLSurface_Shutdown(ISteamHTMLSurface* pSteamHTMLSurface) {
return pSteamHTMLSurface->Shutdown();
}
// Create a browser object for display of a html page, when creation is complete the call handle
// will return a HTML_BrowserReady_t callback for the HHTMLBrowser of your new browser.
// The user agent string is a substring to be added to the general user agent string so you can
// identify your client on web servers.
// The userCSS string lets you apply a CSS style sheet to every displayed page, leave null if
// you do not require this functionality.
DLL(SteamAPICall_t*) BS_ISteamHTMLSurface_CreateBrowser(ISteamHTMLSurface* pSteamHTMLSurface, const char* pchUserAgent, const char* pchUserCSS) {
return new SteamAPICall_t(pSteamHTMLSurface->CreateBrowser(pchUserAgent, pchUserCSS));
}
// Call this when you are done with a html surface, this lets us free the resources being used by it
DLL(void) BS_ISteamHTMLSurface_RemoveBrowser(ISteamHTMLSurface* pSteamHTMLSurface, HHTMLBrowser unBrowserHandle) {
pSteamHTMLSurface->RemoveBrowser(unBrowserHandle);
}
// Navigate to this URL, results in a HTML_StartRequest_t as the request commences
DLL(void) BS_ISteamHTMLSurface_LoadURL(ISteamHTMLSurface* pSteamHTMLSurface, HHTMLBrowser unBrowserHandle, const char* pchURL, const char* pchPostData) {
pSteamHTMLSurface->LoadURL(unBrowserHandle, pchURL, pchPostData);
}
// Tells the surface the size in pixels to display the surface
DLL(void) BS_ISteamHTMLSurface_SetSize(ISteamHTMLSurface* pSteamHTMLSurface, HHTMLBrowser unBrowserHandle, uint32_t unWidth, uint32_t unHeight) {
pSteamHTMLSurface->SetSize(unBrowserHandle, unWidth, unHeight);
}
// Stop the load of the current html page
DLL(void) BS_ISteamHTMLSurface_StopLoad(ISteamHTMLSurface* pSteamHTMLSurface, HHTMLBrowser unBrowserHandle) {
pSteamHTMLSurface->StopLoad(unBrowserHandle);
}
// Reload (most likely from local cache) the current page
DLL(void) BS_ISteamHTMLSurface_Reload(ISteamHTMLSurface* pSteamHTMLSurface, HHTMLBrowser unBrowserHandle) {
pSteamHTMLSurface->Reload(unBrowserHandle);
}
// navigate back in the page history
DLL(void) BS_ISteamHTMLSurface_GoBack(ISteamHTMLSurface* pSteamHTMLSurface, HHTMLBrowser unBrowserHandle) {
pSteamHTMLSurface->GoBack(unBrowserHandle);
}
// navigate forward in the page history
DLL(void) BS_ISteamHTMLSurface_GoForward(ISteamHTMLSurface* pSteamHTMLSurface, HHTMLBrowser unBrowserHandle) {
pSteamHTMLSurface->GoForward(unBrowserHandle);
}
// add this header to any url requests from this browser
DLL(void) BS_ISteamHTMLSurface_AddHeader(ISteamHTMLSurface* pSteamHTMLSurface, HHTMLBrowser unBrowserHandle, const char* pchKey, const char* pchValue) {
pSteamHTMLSurface->AddHeader(unBrowserHandle, pchKey, pchValue);
}
// run this javascript script in the currently loaded page
DLL(void) BS_ISteamHTMLSurface_ExecuteJavascript(ISteamHTMLSurface* pSteamHTMLSurface, HHTMLBrowser unBrowserHandle, const char* pchScript) {
pSteamHTMLSurface->ExecuteJavascript(unBrowserHandle, pchScript);
}
// Mouse click and mouse movement commands
DLL(void) BS_ISteamHTMLSurface_MouseUp(ISteamHTMLSurface* pSteamHTMLSurface, HHTMLBrowser unBrowserHandle, ISteamHTMLSurface::EHTMLMouseButton eMouseButton) {
pSteamHTMLSurface->MouseUp(unBrowserHandle, eMouseButton);
}
DLL(void) BS_ISteamHTMLSurface_MouseDown(ISteamHTMLSurface* pSteamHTMLSurface, HHTMLBrowser unBrowserHandle, ISteamHTMLSurface::EHTMLMouseButton eMouseButton) {
pSteamHTMLSurface->MouseDown(unBrowserHandle, eMouseButton);
}
DLL(void) BS_ISteamHTMLSurface_MouseDoubleClick(ISteamHTMLSurface* pSteamHTMLSurface, HHTMLBrowser unBrowserHandle, ISteamHTMLSurface::EHTMLMouseButton eMouseButton) {
pSteamHTMLSurface->MouseDoubleClick(unBrowserHandle, eMouseButton);
}
// x and y are relative to the HTML bounds
DLL(void) BS_ISteamHTMLSurface_MouseMove(ISteamHTMLSurface* pSteamHTMLSurface, HHTMLBrowser unBrowserHandle, int32_t x, int32_t y) {
pSteamHTMLSurface->MouseMove(unBrowserHandle, x, y);
}
// nDelta is pixels of scroll
DLL(void) BS_ISteamHTMLSurface_MouseWheel(ISteamHTMLSurface* pSteamHTMLSurface, HHTMLBrowser unBrowserHandle, int32_t nDelta) {
pSteamHTMLSurface->MouseWheel(unBrowserHandle, nDelta);
}
// keyboard interactions, native keycode is the virtual key code value from your OS
DLL(void) BS_ISteamHTMLSurface_KeyDown(ISteamHTMLSurface* pSteamHTMLSurface, HHTMLBrowser unBrowserHandle, uint32 nNativeKeyCode, ISteamHTMLSurface::EHTMLKeyModifiers eHTMLKeyModifiers) {
pSteamHTMLSurface->KeyDown(unBrowserHandle, nNativeKeyCode, eHTMLKeyModifiers);
}
DLL(void) BS_ISteamHTMLSurface_KeyUp(ISteamHTMLSurface* pSteamHTMLSurface, HHTMLBrowser unBrowserHandle, uint32 nNativeKeyCode, ISteamHTMLSurface::EHTMLKeyModifiers eHTMLKeyModifiers) {
pSteamHTMLSurface->KeyUp(unBrowserHandle, nNativeKeyCode, eHTMLKeyModifiers);
}
// cUnicodeChar is the unicode character point for this keypress (and potentially multiple chars per press)
DLL(void) BS_ISteamHTMLSurface_KeyChar(ISteamHTMLSurface* pSteamHTMLSurface, HHTMLBrowser unBrowserHandle, uint32 cUnicodeChar, ISteamHTMLSurface::EHTMLKeyModifiers eHTMLKeyModifiers) {
pSteamHTMLSurface->KeyChar(unBrowserHandle, cUnicodeChar, eHTMLKeyModifiers);
}
// programmatically scroll this many pixels on the page
DLL(void) BS_ISteamHTMLSurface_SetHorizontalScroll(ISteamHTMLSurface* pSteamHTMLSurface, HHTMLBrowser unBrowserHandle, uint32 nAbsolutePixelScroll) {
pSteamHTMLSurface->SetHorizontalScroll(unBrowserHandle, nAbsolutePixelScroll);
}
DLL(void) BS_ISteamHTMLSurface_SetVerticalScroll(ISteamHTMLSurface* pSteamHTMLSurface, HHTMLBrowser unBrowserHandle, uint32 nAbsolutePixelScroll) {
pSteamHTMLSurface->SetVerticalScroll(unBrowserHandle, nAbsolutePixelScroll);
}
// tell the html control if it has key focus currently, controls showing the I-beam cursor in text controls amongst other things
DLL(void) BS_ISteamHTMLSurface_SetKeyFocus(ISteamHTMLSurface* pSteamHTMLSurface, HHTMLBrowser unBrowserHandle, bool bHasKeyFocus) {
pSteamHTMLSurface->SetKeyFocus(unBrowserHandle, bHasKeyFocus);
}
// open the current pages html code in the local editor of choice, used for debugging
DLL(void) BS_ISteamHTMLSurface_ViewSource(ISteamHTMLSurface* pSteamHTMLSurface, HHTMLBrowser unBrowserHandle) {
pSteamHTMLSurface->ViewSource(unBrowserHandle);
}
// copy the currently selected text on the html page to the local clipboard
DLL(void) BS_ISteamHTMLSurface_CopyToClipboard(ISteamHTMLSurface* pSteamHTMLSurface, HHTMLBrowser unBrowserHandle) {
pSteamHTMLSurface->CopyToClipboard(unBrowserHandle);
}
// paste from the local clipboard to the current html page
DLL(void) BS_ISteamHTMLSurface_PasteFromClipboard(ISteamHTMLSurface* pSteamHTMLSurface, HHTMLBrowser unBrowserHandle) {
pSteamHTMLSurface->PasteFromClipboard(unBrowserHandle);
}
// find this string in the browser, if bCurrentlyInFind is true then instead cycle to the next matching element
DLL(void) BS_ISteamHTMLSurface_Find(ISteamHTMLSurface* pSteamHTMLSurface, HHTMLBrowser unBrowserHandle, const char *pchSearchStr, bool bCurrentlyInFind, bool bReverse) {
pSteamHTMLSurface->Find(unBrowserHandle, pchSearchStr, bCurrentlyInFind, bReverse);
}
// cancel a currently running find
DLL(void) BS_ISteamHTMLSurface_StopFind(ISteamHTMLSurface* pSteamHTMLSurface, HHTMLBrowser unBrowserHandle) {
pSteamHTMLSurface->StopFind(unBrowserHandle);
}
// return details about the link at position x,y on the current page
DLL(void) BS_ISteamHTMLSurface_GetLinkAtPosition(ISteamHTMLSurface* pSteamHTMLSurface, HHTMLBrowser unBrowserHandle, int x, int y) {
pSteamHTMLSurface->GetLinkAtPosition(unBrowserHandle, x, y);
}
// set a webcookie for the hostname in question
DLL(void) BS_ISteamHTMLSurface_SetCookie(ISteamHTMLSurface* pSteamHTMLSurface, const char *pchHostname, const char *pchKey, const char *pchValue, const char *pchPath, RTime32 nExpires, bool bSecure, bool bHTTPOnly) {
pSteamHTMLSurface->SetCookie(pchHostname, pchKey, pchValue, pchPath, nExpires, bSecure, bHTTPOnly);
}
// Zoom the current page by flZoom ( from 0.0 to 2.0, so to zoom to 120% use 1.2 ), zooming around point X,Y in the page (use 0,0 if you don't care)
DLL(void) BS_ISteamHTMLSurface_SetPageScaleFactor(ISteamHTMLSurface* pSteamHTMLSurface, HHTMLBrowser unBrowserHandle, float flZoom, int nPointX, int nPointY) {
pSteamHTMLSurface->SetPageScaleFactor(unBrowserHandle, flZoom, nPointX, nPointY);
}
// Enable/disable low-resource background mode, where javascript and repaint timers are throttled, resources are
// more aggressively purged from memory, and audio/video elements are paused. When background mode is enabled,
// all HTML5 video and audio objects will execute ".pause()" and gain the property "._steam_background_paused = 1".
// When background mode is disabled, any video or audio objects with that property will resume with ".play()".
DLL(void) BS_ISteamHTMLSurface_SetBackgroundMode(ISteamHTMLSurface* pSteamHTMLSurface, HHTMLBrowser unBrowserHandle, bool bBackgroundMode) {
pSteamHTMLSurface->SetBackgroundMode(unBrowserHandle, bBackgroundMode);
}
// CALLBACKS
//
// These set of functions are used as responses to callback requests
//
// You MUST call this in response to a HTML_StartRequest_t callback
// Set bAllowed to true to allow this navigation, false to cancel it and stay
// on the current page. You can use this feature to limit the valid pages
// allowed in your HTML surface.
DLL(void) BS_ISteamHTMLSurface_AllowStartRequest(ISteamHTMLSurface* pSteamHTMLSurface, HHTMLBrowser unBrowserHandle, bool bAllowed) {
pSteamHTMLSurface->AllowStartRequest(unBrowserHandle, bAllowed);
}
// You MUST call this in response to a HTML_JSAlert_t or HTML_JSConfirm_t callback
// Set bResult to true for the OK option of a confirm, use false otherwise
DLL(void) BS_ISteamHTMLSurface_JSDialogResponse(ISteamHTMLSurface* pSteamHTMLSurface, HHTMLBrowser unBrowserHandle, bool bResult) {
pSteamHTMLSurface->JSDialogResponse(unBrowserHandle, bResult);
}
// You MUST call this in response to a HTML_FileOpenDialog_t callback
DLL(void) BS_ISteamHTMLSurface_FileLoadDialogResponse(ISteamHTMLSurface* pSteamHTMLSurface, HHTMLBrowser unBrowserHandle, const char **pchSelectedFiles) {
pSteamHTMLSurface->FileLoadDialogResponse(unBrowserHandle, pchSelectedFiles);
}
+189
View File
@@ -0,0 +1,189 @@
// BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "BlitzSteam.h"
//-----------------------------------------------------------------------------
// Purpose: interface to http client
//-----------------------------------------------------------------------------
DLL(ISteamHTTP*) BS_HTTP() {
return SteamHTTP();
}
DLL(ISteamHTTP*) BS_GameServerHTTP() {
return SteamGameServerHTTP();
}
// Initializes a new HTTP request, returning a handle to use in further operations on it. Requires
// the method (GET or POST) and the absolute URL for the request. Both http and https are supported,
// so this string must start with http:// or https:// and should look like http://store.steampowered.com/app/250/
// or such.
DLL(HTTPRequestHandle) BS_ISteamHTTP_CreateHTTPRequest(ISteamHTTP* pThis, EHTTPMethod eHTTPRequestMethod, const char* cAbsoluteUrl) {
return pThis->CreateHTTPRequest(eHTTPRequestMethod, cAbsoluteUrl);
}
// Set a context value for the request, which will be returned in the HTTPRequestCompleted_t callback after
// sending the request. This is just so the caller can easily keep track of which callbacks go with which request data.
DLL(int32_t) BS_ISteamHTTP_SetHTTPRequestContextValue(ISteamHTTP* pThis, HTTPRequestHandle hRequest, uint64_t* plContextValue) {
return pThis->SetHTTPRequestContextValue(hRequest, *plContextValue);
}
// Set a timeout in seconds for the HTTP request, must be called prior to sending the request. Default
// timeout is 60 seconds if you don't call this. Returns false if the handle is invalid, or the request
// has already been sent.
DLL(int32_t) BS_ISteamHTTP_SetHTTPNetworkActivityTimeout(ISteamHTTP* pThis, HTTPRequestHandle hRequest, uint32 unTimeoutSeconds) {
return pThis->SetHTTPRequestNetworkActivityTimeout(hRequest, unTimeoutSeconds);
}
// Set a request header value for the request, must be called prior to sending the request. Will
// return false if the handle is invalid or the request is already sent.
DLL(int32_t) BS_ISteamHTTP_SetHTTPRequestHeaderValue(ISteamHTTP* pThis, HTTPRequestHandle hRequest, const char *pchHeaderName, const char *pchHeaderValue) {
return pThis->SetHTTPRequestHeaderValue(hRequest, pchHeaderName, pchHeaderValue);
}
// Set a GET or POST parameter value on the request, which is set will depend on the EHTTPMethod specified
// when creating the request. Must be called prior to sending the request. Will return false if the
// handle is invalid or the request is already sent.
DLL(int32_t) BS_ISteamHTTP_SetHTTPRequestGetOrPostParameter(ISteamHTTP* pThis, HTTPRequestHandle hRequest, const char *pchParamName, const char *pchParamValue) {
return pThis->SetHTTPRequestGetOrPostParameter(hRequest, pchParamName, pchParamValue);
}
// Sends the HTTP request, will return false on a bad handle, otherwise use SteamCallHandle to wait on
// asynchronous response via callback.
//
// Note: If the user is in offline mode in Steam, then this will add a only-if-cached cache-control
// header and only do a local cache lookup rather than sending any actual remote request.
DLL(int32_t) BS_ISteamHTTP_SendHTTPRequest(ISteamHTTP* pThis, HTTPRequestHandle hRequest, SteamAPICall_t *pCallHandle) {
return pThis->SendHTTPRequest(hRequest, pCallHandle);
}
// Sends the HTTP request, will return false on a bad handle, otherwise use SteamCallHandle to wait on
// asynchronous response via callback for completion, and listen for HTTPRequestHeadersReceived_t and
// HTTPRequestDataReceived_t callbacks while streaming.
DLL(int32_t) BS_ISteamHTTP_SendHTTPRequestAndStreamResponse(ISteamHTTP* pThis, HTTPRequestHandle hRequest, SteamAPICall_t *pCallHandle) {
return pThis->SendHTTPRequestAndStreamResponse(hRequest, pCallHandle);
}
// Defers a request you have sent, the actual HTTP client code may have many requests queued, and this will move
// the specified request to the tail of the queue. Returns false on invalid handle, or if the request is not yet sent.
DLL(int32_t) BS_ISteamHTTP_DeferHTTPRequest(ISteamHTTP* pThis, HTTPRequestHandle hRequest) {
return pThis->DeferHTTPRequest(hRequest);
}
// Prioritizes a request you have sent, the actual HTTP client code may have many requests queued, and this will move
// the specified request to the head of the queue. Returns false on invalid handle, or if the request is not yet sent.
DLL(int32_t) BS_ISteamHTTP_PrioritizeHTTPRequest(ISteamHTTP* pThis, HTTPRequestHandle hRequest) {
return pThis->PrioritizeHTTPRequest(hRequest);
}
// Checks if a response header is present in a HTTP response given a handle from HTTPRequestCompleted_t, also
// returns the size of the header value if present so the caller and allocate a correctly sized buffer for
// GetHTTPResponseHeaderValue.
DLL(int32_t) BS_ISteamHTTP_GetHTTPResponseHeaderSize(ISteamHTTP* pThis, HTTPRequestHandle hRequest, const char *pchHeaderName, uint32 *unResponseHeaderSize) {
return pThis->GetHTTPResponseHeaderSize(hRequest, pchHeaderName, unResponseHeaderSize);
}
// Gets header values from a HTTP response given a handle from HTTPRequestCompleted_t, will return false if the
// header is not present or if your buffer is too small to contain it's value. You should first call
// BGetHTTPResponseHeaderSize to check for the presence of the header and to find out the size buffer needed.
DLL(int32_t) BS_ISteamHTTP_GetHTTPResponseHeaderValue(ISteamHTTP* pThis, HTTPRequestHandle hRequest, const char *pchHeaderName, uint8 *pHeaderValueBuffer, uint32 unBufferSize) {
return pThis->GetHTTPResponseHeaderValue(hRequest, pchHeaderName, pHeaderValueBuffer, unBufferSize);
}
// Gets the size of the body data from a HTTP response given a handle from HTTPRequestCompleted_t, will return false if the
// handle is invalid.
DLL(int32_t) BS_ISteamHTTP_GetHTTPResponseBodySize(ISteamHTTP* pThis, HTTPRequestHandle hRequest, uint32 *unBodySize) {
return pThis->GetHTTPResponseBodySize(hRequest, unBodySize);
}
// Gets the body data from a HTTP response given a handle from HTTPRequestCompleted_t, will return false if the
// handle is invalid or is to a streaming response, or if the provided buffer is not the correct size. Use BGetHTTPResponseBodySize first to find out
// the correct buffer size to use.
DLL(int32_t) BS_ISteamHTTP_GetHTTPResponseBodyData(ISteamHTTP* pThis, HTTPRequestHandle hRequest, uint8 *pBodyDataBuffer, uint32 unBufferSize) {
return pThis->GetHTTPResponseBodyData(hRequest, pBodyDataBuffer, unBufferSize);
}
// Gets the body data from a streaming HTTP response given a handle from HTTPRequestDataReceived_t. Will return false if the
// handle is invalid or is to a non-streaming response (meaning it wasn't sent with SendHTTPRequestAndStreamResponse), or if the buffer size and offset
// do not match the size and offset sent in HTTPRequestDataReceived_t.
DLL(int32_t) BS_ISteamHTTP_GetHTTPStreamingResponseBodyData(ISteamHTTP* pThis, HTTPRequestHandle hRequest, uint32 cOffset, uint8 *pBodyDataBuffer, uint32 unBufferSize) {
return pThis->GetHTTPStreamingResponseBodyData(hRequest, cOffset, pBodyDataBuffer, unBufferSize);
}
// Releases an HTTP response handle, should always be called to free resources after receiving a HTTPRequestCompleted_t
// callback and finishing using the response.
DLL(int32_t) BS_ISteamHTTP_ReleaseHTTPRequest(ISteamHTTP* pThis, HTTPRequestHandle hRequest) {
return pThis->ReleaseHTTPRequest(hRequest);
}
// Gets progress on downloading the body for the request. This will be zero unless a response header has already been
// received which included a content-length field. For responses that contain no content-length it will report
// zero for the duration of the request as the size is unknown until the connection closes.
DLL(int32_t) BS_ISteamHTTP_GetHTTPDownloadProgressPct(ISteamHTTP* pThis, HTTPRequestHandle hRequest, float *pflPercentOut) {
return pThis->GetHTTPDownloadProgressPct(hRequest, pflPercentOut);
}
// Sets the body for an HTTP Post request. Will fail and return false on a GET request, and will fail if POST params
// have already been set for the request. Setting this raw body makes it the only contents for the post, the pchContentType
// parameter will set the content-type header for the request so the server may know how to interpret the body.
DLL(int32_t) BS_ISteamHTTP_SetHTTPRequestRawPostBody(ISteamHTTP* pThis, HTTPRequestHandle hRequest, const char *pchContentType, uint8 *pubBody, uint32 unBodyLen) {
return pThis->SetHTTPRequestRawPostBody(hRequest, pchContentType, pubBody, unBodyLen);
}
// Creates a cookie container handle which you must later free with ReleaseCookieContainer(). If bAllowResponsesToModify=true
// than any response to your requests using this cookie container may add new cookies which may be transmitted with
// future requests. If bAllowResponsesToModify=false than only cookies you explicitly set will be sent. This API is just for
// during process lifetime, after steam restarts no cookies are persisted and you have no way to access the cookie container across
// repeat executions of your process.
DLL(HTTPCookieContainerHandle) BS_ISteamHTTP_CreateCookieContainer(ISteamHTTP* pThis, bool bAllowResponsesToModify) {
return pThis->CreateCookieContainer(bAllowResponsesToModify);
}
// Release a cookie container you are finished using, freeing it's memory
DLL(int32_t) BS_ISteamHTTP_ReleaseCookieContainer(ISteamHTTP* pThis, HTTPCookieContainerHandle hCookieContainer) {
return pThis->ReleaseCookieContainer(hCookieContainer);
}
// Adds a cookie to the specified cookie container that will be used with future requests.
DLL(int32_t) BS_ISteamHTTP_SetCookie(ISteamHTTP* pThis, HTTPCookieContainerHandle hCookieContainer, const char *pchHost, const char *pchUrl, const char *pchCookie) {
return pThis->SetCookie(hCookieContainer, pchHost, pchUrl, pchCookie);
}
// Set the cookie container to use for a HTTP request
DLL(int32_t) BS_ISteamHTTP_SetHTTPRequestCookieContainer(ISteamHTTP* pThis, HTTPRequestHandle hRequest, HTTPCookieContainerHandle hCookieContainer) {
return pThis->SetHTTPRequestCookieContainer(hRequest, hCookieContainer);
}
// Set the extra user agent info for a request, this doesn't clobber the normal user agent, it just adds the extra info on the end
DLL(int32_t) BS_ISteamHTTP_SetHTTPRequestUserAgentInfo(ISteamHTTP* pThis, HTTPRequestHandle hRequest, const char *pchUserAgentInfo) {
return pThis->SetHTTPRequestUserAgentInfo(hRequest, pchUserAgentInfo);
}
// Set that https request should require verified SSL certificate via machines certificate trust store
DLL(int32_t) BS_ISteamHTTP_SetHTTPRequestRequiresVerifiedCertificate(ISteamHTTP* pThis, HTTPRequestHandle hRequest, bool bRequireVerifiedCertificate) {
return pThis->SetHTTPRequestRequiresVerifiedCertificate(hRequest, bRequireVerifiedCertificate);
}
// Set an absolute timeout on the HTTP request, this is just a total time timeout different than the network activity timeout
// which can bump everytime we get more data
DLL(int32_t) BS_ISteamHTTP_SetHTTPRequestAbsoluteTimeoutMS(ISteamHTTP* pThis, HTTPRequestHandle hRequest, uint32 unMilliseconds) {
return pThis->SetHTTPRequestAbsoluteTimeoutMS(hRequest, unMilliseconds);
}
// Check if the reason the request failed was because we timed it out (rather than some harder failure)
DLL(int32_t) BS_ISteamHTTP_GetHTTPRequestWasTimedOut(ISteamHTTP* pThis, HTTPRequestHandle hRequest, bool *pbWasTimedOut) {
return pThis->GetHTTPRequestWasTimedOut(hRequest, pbWasTimedOut);
}
+300
View File
@@ -0,0 +1,300 @@
// BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "BlitzSteam.h"
//-----------------------------------------------------------------------------
// Purpose: Steam Inventory query and manipulation API
//-----------------------------------------------------------------------------
DLL(ISteamInventory*) BS_SteamInventory() {
return SteamInventory();
}
DLL(ISteamInventory*) BS_SteamGameServerInventory() {
return SteamGameServerInventory();
}
// INVENTORY ASYNC RESULT MANAGEMENT
//
// Asynchronous inventory queries always output a result handle which can be used with
// GetResultStatus, GetResultItems, etc. A SteamInventoryResultReady_t callback will
// be triggered when the asynchronous result becomes ready (or fails).
//
// Find out the status of an asynchronous inventory result handle. Possible values:
// k_EResultPending - still in progress
// k_EResultOK - done, result ready
// k_EResultExpired - done, result ready, maybe out of date (see DeserializeResult)
// k_EResultInvalidParam - ERROR: invalid API call parameters
// k_EResultServiceUnavailable - ERROR: service temporarily down, you may retry later
// k_EResultLimitExceeded - ERROR: operation would exceed per-user inventory limits
// k_EResultFail - ERROR: unknown / generic error
DLL(EResult) BS_ISteamInventory_GetResultStatus(ISteamInventory* pThis, SteamInventoryResult_t resultHandle) {
return pThis->GetResultStatus(resultHandle);
}
// Copies the contents of a result set into a flat array. The specific
// contents of the result set depend on which query which was used.
DLL(bool) BS_ISteamInventory_GetResultItems(ISteamInventory* pThis, SteamInventoryResult_t resultHandle,
OUT_ARRAY_COUNT(punOutItemsArraySize, Output array) SteamItemDetails_t *pOutItemsArray,
uint32 *punOutItemsArraySize) {
return pThis->GetResultItems(resultHandle, pOutItemsArray, punOutItemsArraySize);
}
// Returns the server time at which the result was generated. Compare against
// the value of IClientUtils::GetServerRealTime() to determine age.
DLL(uint32) BS_ISteamInventory_GetResultTimestamp(ISteamInventory* pThis, SteamInventoryResult_t resultHandle) {
return pThis->GetResultTimestamp(resultHandle);
}
// Returns true if the result belongs to the target steam ID, false if the
// result does not. This is important when using DeserializeResult, to verify
// that a remote player is not pretending to have a different user's inventory.
DLL(bool) BS_ISteamInventory_CheckResultSteamID(ISteamInventory* pThis, SteamInventoryResult_t resultHandle, CSteamID* steamIDExpected) {
return pThis->CheckResultSteamID(resultHandle, *steamIDExpected);
}
// Destroys a result handle and frees all associated memory.
DLL(void) BS_ISteamInventory_DestroyResult(ISteamInventory* pThis, SteamInventoryResult_t resultHandle) {
return pThis->DestroyResult(resultHandle);
}
// INVENTORY ASYNC QUERY
//
// Captures the entire state of the current user's Steam inventory.
// You must call DestroyResult on this handle when you are done with it.
// Returns false and sets *pResultHandle to zero if inventory is unavailable.
// Note: calls to this function are subject to rate limits and may return
// cached results if called too frequently. It is suggested that you call
// this function only when you are about to display the user's full inventory,
// or if you expect that the inventory may have changed.
DLL(bool) BS_ISteamInventory_GetAllItems(ISteamInventory* pThis, SteamInventoryResult_t *pResultHandle) {
return pThis->GetAllItems(pResultHandle);
}
// Captures the state of a subset of the current user's Steam inventory,
// identified by an array of item instance IDs. The results from this call
// can be serialized and passed to other players to "prove" that the current
// user owns specific items, without exposing the user's entire inventory.
// For example, you could call GetItemsByID with the IDs of the user's
// currently equipped cosmetic items and serialize this to a buffer, and
// then transmit this buffer to other players upon joining a game.
DLL(bool) BS_ISteamInventory_GetItemsByID(ISteamInventory* pThis, SteamInventoryResult_t *pResultHandle, ARRAY_COUNT(unCountInstanceIDs) const SteamItemInstanceID_t *pInstanceIDs, uint32 unCountInstanceIDs) {
return pThis->GetItemsByID(pResultHandle, pInstanceIDs, unCountInstanceIDs);
}
// RESULT SERIALIZATION AND AUTHENTICATION
//
// Serialized result sets contain a short signature which can't be forged
// or replayed across different game sessions. A result set can be serialized
// on the local client, transmitted to other players via your game networking,
// and deserialized by the remote players. This is a secure way of preventing
// hackers from lying about posessing rare/high-value items.
// Serializes a result set with signature bytes to an output buffer. Pass
// NULL as an output buffer to get the required size via punOutBufferSize.
// The size of a serialized result depends on the number items which are being
// serialized. When securely transmitting items to other players, it is
// recommended to use "GetItemsByID" first to create a minimal result set.
// Results have a built-in timestamp which will be considered "expired" after
// an hour has elapsed. See DeserializeResult for expiration handling.
DLL(bool) BS_ISteamInventory_SerializeResult(ISteamInventory* pThis, SteamInventoryResult_t resultHandle, OUT_BUFFER_COUNT(punOutBufferSize) void *pOutBuffer, uint32 *punOutBufferSize) {
return pThis->SerializeResult(resultHandle, pOutBuffer, punOutBufferSize);
}
// Deserializes a result set and verifies the signature bytes. Returns false
// if bRequireFullOnlineVerify is set but Steam is running in Offline mode.
// Otherwise returns true and then delivers error codes via GetResultStatus.
//
// The bRESERVED_MUST_BE_FALSE flag is reserved for future use and should not
// be set to true by your game at this time.
//
// DeserializeResult has a potential soft-failure mode where the handle status
// is set to k_EResultExpired. GetResultItems() still succeeds in this mode.
// The "expired" result could indicate that the data may be out of date - not
// just due to timed expiration (one hour), but also because one of the items
// in the result set may have been traded or consumed since the result set was
// generated. You could compare the timestamp from GetResultTimestamp() to
// ISteamUtils::GetServerRealTime() to determine how old the data is. You could
// simply ignore the "expired" result code and continue as normal, or you
// could challenge the player with expired data to send an updated result set.
DLL(bool) BS_ISteamInventory_DeserializeResult(ISteamInventory* pThis, SteamInventoryResult_t *pOutResultHandle, BUFFER_COUNT(punOutBufferSize) const void *pBuffer, uint32 unBufferSize, bool bRESERVED_MUST_BE_FALSE = false) {
return pThis->DeserializeResult(pOutResultHandle, pBuffer, unBufferSize, bRESERVED_MUST_BE_FALSE);
}
// INVENTORY ASYNC MODIFICATION
//
// GenerateItems() creates one or more items and then generates a SteamInventoryCallback_t
// notification with a matching nCallbackContext parameter. This API is insecure, and could
// be abused by hacked clients. It is, however, very useful as a development cheat or as
// a means of prototyping item-related features for your game. The use of GenerateItems can
// be restricted to certain item definitions or fully blocked via the Steamworks website.
// If punArrayQuantity is not NULL, it should be the same length as pArrayItems and should
// describe the quantity of each item to generate.
DLL(bool) BS_ISteamInventory_GenerateItems(ISteamInventory* pThis, SteamInventoryResult_t *pResultHandle, ARRAY_COUNT(unArrayLength) const SteamItemDef_t *pArrayItemDefs, ARRAY_COUNT(unArrayLength) const uint32 *punArrayQuantity, uint32 unArrayLength) {
return pThis->GenerateItems(pResultHandle, pArrayItemDefs, punArrayQuantity, unArrayLength);
}
// GrantPromoItems() checks the list of promotional items for which the user may be eligible
// and grants the items (one time only). On success, the result set will include items which
// were granted, if any. If no items were granted because the user isn't eligible for any
// promotions, this is still considered a success.
DLL(bool) BS_ISteamInventory_GrantPromoItems(ISteamInventory* pThis, SteamInventoryResult_t *pResultHandle) {
return pThis->GrantPromoItems(pResultHandle);
}
// AddPromoItem() / AddPromoItems() are restricted versions of GrantPromoItems(). Instead of
// scanning for all eligible promotional items, the check is restricted to a single item
// definition or set of item definitions. This can be useful if your game has custom UI for
// showing a specific promo item to the user.
DLL(bool) BS_ISteamInventory_AddPromoItem(ISteamInventory* pThis, SteamInventoryResult_t *pResultHandle, SteamItemDef_t itemDef) {
return pThis->AddPromoItem(pResultHandle, itemDef);
}
DLL(bool) BS_ISteamInventory_AddPromoItems(ISteamInventory* pThis, SteamInventoryResult_t *pResultHandle, ARRAY_COUNT(unArrayLength) const SteamItemDef_t *pArrayItemDefs, uint32 unArrayLength) {
return pThis->AddPromoItems(pResultHandle, pArrayItemDefs, unArrayLength);
}
// ConsumeItem() removes items from the inventory, permanently. They cannot be recovered.
// Not for the faint of heart - if your game implements item removal at all, a high-friction
// UI confirmation process is highly recommended. Similar to GenerateItems, punArrayQuantity
// can be NULL or else an array of the same length as pArrayItems which describe the quantity
// of each item to destroy. ConsumeItem can be restricted to certain item definitions or
// fully blocked via the Steamworks website to minimize support/abuse issues such as the
// clasic "my brother borrowed my laptop and deleted all of my rare items".
DLL(bool) BS_ISteamInventory_ConsumeItem(ISteamInventory* pThis, SteamInventoryResult_t *pResultHandle, SteamItemInstanceID_t itemConsume, uint32 unQuantity) {
return pThis->ConsumeItem(pResultHandle, itemConsume, unQuantity);
}
// ExchangeItems() is an atomic combination of GenerateItems and DestroyItems. It can be
// used to implement crafting recipes or transmutations, or items which unpack themselves
// into other items. Like GenerateItems, this is a flexible and dangerous API which is
// meant for rapid prototyping. You can configure restrictions on ExchangeItems via the
// Steamworks website, such as limiting it to a whitelist of input/output combinations
// corresponding to recipes.
// (Note: although GenerateItems may be hard or impossible to use securely in your game,
// ExchangeItems is perfectly reasonable to use once the whitelists are set accordingly.)
DLL(bool) BS_ISteamInventory_ExchangeItems(ISteamInventory* pThis, SteamInventoryResult_t *pResultHandle,
ARRAY_COUNT(unArrayGenerateLength) const SteamItemDef_t *pArrayGenerate, ARRAY_COUNT(unArrayGenerateLength) const uint32 *punArrayGenerateQuantity, uint32 unArrayGenerateLength,
ARRAY_COUNT(unArrayDestroyLength) const SteamItemInstanceID_t *pArrayDestroy, ARRAY_COUNT(unArrayDestroyLength) const uint32 *punArrayDestroyQuantity, uint32 unArrayDestroyLength) {
return pThis->ExchangeItems(pResultHandle, pArrayGenerate, punArrayGenerateQuantity, unArrayGenerateLength, pArrayDestroy, punArrayDestroyQuantity, unArrayDestroyLength);
}
// TransferItemQuantity() is intended for use with items which are "stackable" (can have
// quantity greater than one). It can be used to split a stack into two, or to transfer
// quantity from one stack into another stack of identical items. To split one stack into
// two, pass k_SteamItemInstanceIDInvalid for itemIdDest and a new item will be generated.
DLL(bool) BS_ISteamInventory_TransferItemQuantity(ISteamInventory* pThis, SteamInventoryResult_t *pResultHandle, SteamItemInstanceID_t itemIdSource, uint32 unQuantity, SteamItemInstanceID_t itemIdDest) {
return pThis->TransferItemQuantity(pResultHandle, itemIdSource, unQuantity, itemIdDest);
}
// TIMED DROPS AND PLAYTIME CREDIT
//
// Applications which use timed-drop mechanics should call SendItemDropHeartbeat() when
// active gameplay begins, and at least once every two minutes afterwards. The backend
// performs its own time calculations, so the precise timing of the heartbeat is not
// critical as long as you send at least one heartbeat every two minutes. Calling the
// function more often than that is not harmful, it will simply have no effect. Note:
// players may be able to spoof this message by hacking their client, so you should not
// attempt to use this as a mechanism to restrict playtime credits. It is simply meant
// to distinguish between being in any kind of gameplay situation vs the main menu or
// a pre-game launcher window. (If you are stingy with handing out playtime credit, it
// will only encourage players to run bots or use mouse/kb event simulators.)
//
// Playtime credit accumulation can be capped on a daily or weekly basis through your
// Steamworks configuration.
//
DLL(void) BS_ISteamInventory_SendItemDropHeartbeat(ISteamInventory* pThis) {
return pThis->SendItemDropHeartbeat();
}
// Playtime credit must be consumed and turned into item drops by your game. Only item
// definitions which are marked as "playtime item generators" can be spawned. The call
// will return an empty result set if there is not enough playtime credit for a drop.
// Your game should call TriggerItemDrop at an appropriate time for the user to receive
// new items, such as between rounds or while the player is dead. Note that players who
// hack their clients could modify the value of "dropListDefinition", so do not use it
// to directly control rarity. It is primarily useful during testing and development,
// where you may wish to perform experiments with different types of drops.
DLL(bool) BS_ISteamInventory_TriggerItemDrop(ISteamInventory* pThis, SteamInventoryResult_t *pResultHandle, SteamItemDef_t dropListDefinition) {
return pThis->TriggerItemDrop(pResultHandle, dropListDefinition);
}
// IN-GAME TRADING
//
// TradeItems() implements limited in-game trading of items, if you prefer not to use
// the overlay or an in-game web browser to perform Steam Trading through the website.
// You should implement a UI where both players can see and agree to a trade, and then
// each client should call TradeItems simultaneously (+/- 5 seconds) with matching
// (but reversed) parameters. The result is the same as if both players performed a
// Steam Trading transaction through the web. Each player will get an inventory result
// confirming the removal or quantity changes of the items given away, and the new
// item instance id numbers and quantities of the received items.
// (Note: new item instance IDs are generated whenever an item changes ownership.)
DLL(bool) BS_ISteamInventory_TradeItems(ISteamInventory* pThis, SteamInventoryResult_t *pResultHandle, CSteamID* steamIDTradePartner,
ARRAY_COUNT(nArrayGiveLength) const SteamItemInstanceID_t *pArrayGive, ARRAY_COUNT(nArrayGiveLength) const uint32 *pArrayGiveQuantity, uint32 nArrayGiveLength,
ARRAY_COUNT(nArrayGetLength) const SteamItemInstanceID_t *pArrayGet, ARRAY_COUNT(nArrayGetLength) const uint32 *pArrayGetQuantity, uint32 nArrayGetLength) {
return pThis->TradeItems(pResultHandle, *steamIDTradePartner, pArrayGive, pArrayGiveQuantity, nArrayGiveLength, pArrayGet, pArrayGetQuantity, nArrayGetLength);
}
// ITEM DEFINITIONS
//
// Item definitions are a mapping of "definition IDs" (integers between 1 and 1000000)
// to a set of string properties. Some of these properties are required to display items
// on the Steam community web site. Other properties can be defined by applications.
// Use of these functions is optional; there is no reason to call LoadItemDefinitions
// if your game hardcodes the numeric definition IDs (eg, purple face mask = 20, blue
// weapon mod = 55) and does not allow for adding new item types without a client patch.
//
// LoadItemDefinitions triggers the automatic load and refresh of item definitions.
// Every time new item definitions are available (eg, from the dynamic addition of new
// item types while players are still in-game), a SteamInventoryDefinitionUpdate_t
// callback will be fired.
DLL(bool) BS_ISteamInventory_LoadItemDefinitions(ISteamInventory* pThis) {
return pThis->LoadItemDefinitions();
}
// GetItemDefinitionIDs returns the set of all defined item definition IDs (which are
// defined via Steamworks configuration, and not necessarily contiguous integers).
// If pItemDefIDs is null, the call will return true and *punItemDefIDsArraySize will
// contain the total size necessary for a subsequent call. Otherwise, the call will
// return false if and only if there is not enough space in the output array.
DLL(bool) BS_ISteamInventory_GetItemDefinitionIDs(ISteamInventory* pThis,
OUT_ARRAY_COUNT(punItemDefIDsArraySize, List of item definition IDs) SteamItemDef_t *pItemDefIDs,
DESC(Size of array is passed in and actual size used is returned in this param) uint32 *punItemDefIDsArraySize) {
return pThis->GetItemDefinitionIDs(pItemDefIDs, punItemDefIDsArraySize);
}
// GetItemDefinitionProperty returns a string property from a given item definition.
// Note that some properties (for example, "name") may be localized and will depend
// on the current Steam language settings (see ISteamApps::GetCurrentGameLanguage).
// Property names are always composed of ASCII letters, numbers, and/or underscores.
// Pass a NULL pointer for pchPropertyName to get a comma - separated list of available
// property names.
DLL(bool) BS_ISteamInventory_GetItemDefinitionProperty(ISteamInventory* pThis, SteamItemDef_t iDefinition, const char *pchPropertyName,
OUT_STRING_COUNT(punValueBufferSize) char *pchValueBuffer, uint32 *punValueBufferSize) {
return pThis->GetItemDefinitionProperty(iDefinition, pchPropertyName, pchValueBuffer, punValueBufferSize);
}
+296
View File
@@ -0,0 +1,296 @@
// BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "BlitzSteam.h"
DLL(ISteamMatchmaking*) BS_SteamMatchmaking() {
return SteamMatchmaking();
}
// game server favorites storage
// saves basic details about a multiplayer game server locally
// returns the number of favorites servers the user has stored
DLL(int32_t) BS_ISteamMatchmaking_GetFavoriteGameCount(ISteamMatchmaking* pThis) {
return pThis->GetFavoriteGameCount();
}
// returns the details of the game server
// iGame is of range [0,GetFavoriteGameCount())
// *pnIP, *pnConnPort are filled in the with IP:port of the game server
// *punFlags specify whether the game server was stored as an explicit favorite or in the history of connections
// *pRTime32LastPlayedOnServer is filled in the with the Unix time the favorite was added
DLL(int32_t) BS_ISteamMatchmaking_GetFavoriteGame(ISteamMatchmaking* pThis, int32_t iGame,
AppId_t *pnAppID, uint32_t *pnIP, uint16_t *pnConnPort, uint16_t *pnQueryPort,
uint32_t *punFlags, uint32_t *pRTime32LastPlayedOnServer) {
return pThis->GetFavoriteGame(iGame, pnAppID, pnIP, pnConnPort, pnQueryPort, punFlags, pRTime32LastPlayedOnServer);
}
// adds the game server to the local list; updates the time played of the server if it already exists in the list
DLL(int) BS_ISteamMatchmaking_AddFavoriteGame(ISteamMatchmaking* pThis, AppId_t nAppID, uint32 nIP, uint16 nConnPort,
uint16 nQueryPort, uint32 unFlags, uint32 rTime32LastPlayedOnServer) {
return pThis->AddFavoriteGame(nAppID, nIP, nConnPort, nQueryPort, unFlags, rTime32LastPlayedOnServer);
}
// removes the game server from the local storage; returns true if one was removed
DLL(bool) BS_ISteamMatchmaking_RemoveFavoriteGame(ISteamMatchmaking* pThis, AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags) {
return pThis->RemoveFavoriteGame(nAppID, nIP, nConnPort, nQueryPort, unFlags);
}
///////
// Game lobby functions
// Get a list of relevant lobbies
// this is an asynchronous request
// results will be returned by LobbyMatchList_t callback & call result, with the number of lobbies found
// this will never return lobbies that are full
// to add more filter, the filter calls below need to be call before each and every RequestLobbyList() call
// use the CCallResult<> object in steam_api.h to match the SteamAPICall_t call result to a function in an object, e.g.
/*
class CMyLobbyListManager
{
CCallResult<CMyLobbyListManager, LobbyMatchList_t> m_CallResultLobbyMatchList;
void FindLobbies()
{
// SteamMatchmaking()->AddRequestLobbyListFilter*() functions would be called here, before RequestLobbyList()
SteamAPICall_t hSteamAPICall = SteamMatchmaking()->RequestLobbyList();
m_CallResultLobbyMatchList.Set( hSteamAPICall, this, &CMyLobbyListManager::OnLobbyMatchList );
}
void OnLobbyMatchList( LobbyMatchList_t *pLobbyMatchList, bool bIOFailure )
{
// lobby list has be retrieved from Steam back-end, use results
}
}
*/
//
//CALL_RESULT(LobbyMatchList_t)
DLL(SteamAPICall_t) BS_ISteamMatchmaking_RequestLobbyList(ISteamMatchmaking* pThis) {
return pThis->RequestLobbyList();
}
// filters for lobbies
// this needs to be called before RequestLobbyList() to take effect
// these are cleared on each call to RequestLobbyList()
DLL(void) BS_ISteamMatchmaking_AddRequestLobbyListStringFilter(ISteamMatchmaking* pThis, const char *pchKeyToMatch, const char *pchValueToMatch, ELobbyComparison eComparisonType) {
pThis->AddRequestLobbyListStringFilter(pchKeyToMatch, pchValueToMatch, eComparisonType);
}
// numerical comparison
DLL(void) BS_ISteamMatchmaking_AddRequestLobbyListNumericalFilter(ISteamMatchmaking* pThis, const char *pchKeyToMatch, int nValueToMatch, ELobbyComparison eComparisonType) {
pThis->AddRequestLobbyListNumericalFilter(pchKeyToMatch, nValueToMatch, eComparisonType);
}
// returns results closest to the specified value. Multiple near filters can be added, with early filters taking precedence
DLL(void) BS_ISteamMatchmaking_AddRequestLobbyListNearValueFilter(ISteamMatchmaking* pThis, const char *pchKeyToMatch, int nValueToBeCloseTo) {
pThis->AddRequestLobbyListNearValueFilter(pchKeyToMatch, nValueToBeCloseTo);
}
// returns only lobbies with the specified number of slots available
DLL(void) BS_ISteamMatchmaking_AddRequestLobbyListFilterSlotsAvailable(ISteamMatchmaking* pThis, int nSlotsAvailable) {
pThis->AddRequestLobbyListFilterSlotsAvailable(nSlotsAvailable);
}
// sets the distance for which we should search for lobbies (based on users IP address to location map on the Steam backed)
DLL(void) BS_ISteamMatchmaking_AddRequestLobbyListDistanceFilter(ISteamMatchmaking* pThis, ELobbyDistanceFilter eLobbyDistanceFilter) {
pThis->AddRequestLobbyListDistanceFilter(eLobbyDistanceFilter);
}
// sets how many results to return, the lower the count the faster it is to download the lobby results & details to the client
DLL(void) BS_ISteamMatchmaking_AddRequestLobbyListResultCountFilter(ISteamMatchmaking* pThis, int cMaxResults) {
pThis->AddRequestLobbyListResultCountFilter(cMaxResults);
}
DLL(void) BS_ISteamMatchmaking_AddRequestLobbyListCompatibleMembersFilter(ISteamMatchmaking* pThis, CSteamID* steamIDLobby) {
pThis->AddRequestLobbyListCompatibleMembersFilter(*steamIDLobby);
}
// returns the CSteamID* of a lobby, as retrieved by a RequestLobbyList call
// should only be called after a LobbyMatchList_t callback is received
// iLobby is of the range [0, LobbyMatchList_t::m_nLobbiesMatching)
// the returned CSteamID*::IsValid() will be false if iLobby is out of range
DLL(CSteamID*) BS_ISteamMatchmaking_GetLobbyByIndex(ISteamMatchmaking* pThis, int iLobby) {
return &(pThis->GetLobbyByIndex(iLobby));
}
// Create a lobby on the Steam servers.
// If private, then the lobby will not be returned by any RequestLobbyList() call; the CSteamID*
// of the lobby will need to be communicated via game channels or via InviteUserToLobby()
// this is an asynchronous request
// results will be returned by LobbyCreated_t callback and call result; lobby is joined & ready to use at this point
// a LobbyEnter_t callback will also be received (since the local user is joining their own lobby)
//CALL_RESULT(LobbyCreated_t)
DLL(SteamAPICall_t) BS_ISteamMatchmaking_CreateLobby(ISteamMatchmaking* pThis, ELobbyType eLobbyType, int cMaxMembers) {
return pThis->CreateLobby(eLobbyType, cMaxMembers);
}
// Joins an existing lobby
// this is an asynchronous request
// results will be returned by LobbyEnter_t callback & call result, check m_EChatRoomEnterResponse to see if was successful
// lobby metadata is available to use immediately on this call completing
//CALL_RESULT(LobbyEnter_t)
DLL(SteamAPICall_t) BS_ISteamMatchmaking_JoinLobby(ISteamMatchmaking* pThis, CSteamID* steamIDLobby) {
return pThis->JoinLobby(*steamIDLobby);
}
// Leave a lobby; this will take effect immediately on the client side
// other users in the lobby will be notified by a LobbyChatUpdate_t callback
DLL(void) BS_ISteamMatchmaking_LeaveLobby(ISteamMatchmaking* pThis, CSteamID* steamIDLobby) {
return pThis->LeaveLobby(*steamIDLobby);
}
// Invite another user to the lobby
// the target user will receive a LobbyInvite_t callback
// will return true if the invite is successfully sent, whether or not the target responds
// returns false if the local user is not connected to the Steam servers
// if the other user clicks the join link, a GameLobbyJoinRequested_t will be posted if the user is in-game,
// or if the game isn't running yet the game will be launched with the parameter +connect_lobby <64-bit lobby id>
DLL(bool) BS_ISteamMatchmaking_InviteUserToLobby(ISteamMatchmaking* pThis, CSteamID* steamIDLobby, CSteamID* steamIDInvitee) {
return pThis->InviteUserToLobby(*steamIDLobby, *steamIDInvitee);
}
// Lobby iteration, for viewing details of users in a lobby
// only accessible if the lobby user is a member of the specified lobby
// persona information for other lobby members (name, avatar, etc.) will be asynchronously received
// and accessible via ISteamFriends interface
// returns the number of users in the specified lobby
DLL(int) BS_ISteamMatchmaking_GetNumLobbyMembers(ISteamMatchmaking* pThis, CSteamID* steamIDLobby) {
return pThis->GetNumLobbyMembers(*steamIDLobby);
}
// returns the CSteamID* of a user in the lobby
// iMember is of range [0,GetNumLobbyMembers())
// note that the current user must be in a lobby to retrieve CSteamID*s of other users in that lobby
DLL(CSteamID*) BS_ISteamMatchmaking_GetLobbyMemberByIndex(ISteamMatchmaking* pThis, CSteamID* steamIDLobby, int iMember) {
return &(pThis->GetLobbyMemberByIndex(*steamIDLobby, iMember));
}
// Get data associated with this lobby
// takes a simple key, and returns the string associated with it
// "" will be returned if no value is set, or if steamIDLobby is invalid
DLL(const char*) BS_ISteamMatchmaking_GetLobbyData(ISteamMatchmaking* pThis, CSteamID* steamIDLobby, const char *pchKey) {
return pThis->GetLobbyData(*steamIDLobby, pchKey);
}
// Sets a key/value pair in the lobby metadata
// each user in the lobby will be broadcast this new value, and any new users joining will receive any existing data
// this can be used to set lobby names, map, etc.
// to reset a key, just set it to ""
// other users in the lobby will receive notification of the lobby data change via a LobbyDataUpdate_t callback
DLL(bool) BS_ISteamMatchmaking_SetLobbyData(ISteamMatchmaking* pThis, CSteamID* steamIDLobby, const char *pchKey, const char *pchValue) {
return pThis->SetLobbyData(*steamIDLobby, pchKey, pchValue);
}
// returns the number of metadata keys set on the specified lobby
DLL(int) BS_ISteamMatchmaking_GetLobbyDataCount(ISteamMatchmaking* pThis, CSteamID* steamIDLobby) {
return pThis->GetLobbyDataCount(*steamIDLobby);
}
// returns a lobby metadata key/values pair by index, of range [0, GetLobbyDataCount())
DLL(bool) BS_ISteamMatchmaking_GetLobbyDataByIndex(ISteamMatchmaking* pThis, CSteamID* steamIDLobby, int iLobbyData, char *pchKey, int cchKeyBufferSize, char *pchValue, int cchValueBufferSize) {
return pThis->GetLobbyDataByIndex(*steamIDLobby, iLobbyData, pchKey, cchKeyBufferSize, pchValue, cchValueBufferSize);
}
// removes a metadata key from the lobby
DLL(bool) BS_ISteamMatchmaking_DeleteLobbyData(ISteamMatchmaking* pThis, CSteamID* steamIDLobby, const char *pchKey) {
return pThis->DeleteLobbyData(*steamIDLobby, pchKey);
}
// Gets per-user metadata for someone in this lobby
DLL(const char*) BS_ISteamMatchmaking_GetLobbyMemberData(ISteamMatchmaking* pThis, CSteamID* steamIDLobby, CSteamID* steamIDUser, const char *pchKey) {
return pThis->GetLobbyMemberData(*steamIDLobby, *steamIDUser, pchKey);
}
// Sets per-user metadata (for the local user implicitly)
DLL(void) BS_ISteamMatchmaking_SetLobbyMemberData(ISteamMatchmaking* pThis, CSteamID* steamIDLobby, const char *pchKey, const char *pchValue) {
pThis->SetLobbyMemberData(*steamIDLobby, pchKey, pchValue);
}
// Broadcasts a chat message to the all the users in the lobby
// users in the lobby (including the local user) will receive a LobbyChatMsg_t callback
// returns true if the message is successfully sent
// pvMsgBody can be binary or text data, up to 4k
// if pvMsgBody is text, cubMsgBody should be strlen( text ) + 1, to include the null terminator
DLL(bool) BS_ISteamMatchmaking_SendLobbyChatMsg(ISteamMatchmaking* pThis, CSteamID* steamIDLobby, const void *pvMsgBody, int cubMsgBody) {
return pThis->SendLobbyChatMsg(*steamIDLobby, pvMsgBody, cubMsgBody);
}
// Get a chat message as specified in a LobbyChatMsg_t callback
// iChatID is the LobbyChatMsg_t::m_iChatID value in the callback
// *pSteamIDUser is filled in with the CSteamID* of the member
// *pvData is filled in with the message itself
// return value is the number of bytes written into the buffer
DLL(int) BS_ISteamMatchmaking_GetLobbyChatEntry(ISteamMatchmaking* pThis, CSteamID* steamIDLobby, int iChatID, OUT_STRUCT() CSteamID* *pSteamIDUser, void *pvData, int cubData, EChatEntryType *peChatEntryType) {
return pThis->GetLobbyChatEntry(*steamIDLobby, iChatID, *pSteamIDUser, pvData, cubData, peChatEntryType);
}
// Refreshes metadata for a lobby you're not necessarily in right now
// you never do this for lobbies you're a member of, only if your
// this will send down all the metadata associated with a lobby
// this is an asynchronous call
// returns false if the local user is not connected to the Steam servers
// results will be returned by a LobbyDataUpdate_t callback
// if the specified lobby doesn't exist, LobbyDataUpdate_t::m_bSuccess will be set to false
DLL(bool) BS_ISteamMatchmaking_RequestLobbyData(ISteamMatchmaking* pThis, CSteamID* steamIDLobby) {
return pThis->RequestLobbyData(*steamIDLobby);
}
// sets the game server associated with the lobby
// usually at this point, the users will join the specified game server
// either the IP/Port or the steamID of the game server has to be valid, depending on how you want the clients to be able to connect
DLL(void) BS_ISteamMatchmaking_SetLobbyGameServer(ISteamMatchmaking* pThis, CSteamID* steamIDLobby, uint32 unGameServerIP, uint16 unGameServerPort, CSteamID* steamIDGameServer) {
pThis->SetLobbyGameServer(*steamIDLobby, unGameServerIP, unGameServerPort, *steamIDGameServer);
}
// returns the details of a game server set in a lobby - returns false if there is no game server set, or that lobby doesn't exist
DLL(bool) BS_ISteamMatchmaking_GetLobbyGameServer(ISteamMatchmaking* pThis, CSteamID* steamIDLobby, uint32 *punGameServerIP, uint16 *punGameServerPort, OUT_STRUCT() CSteamID* *psteamIDGameServer) {
return pThis->GetLobbyGameServer(*steamIDLobby, punGameServerIP, punGameServerPort, *psteamIDGameServer);
}
// set the limit on the # of users who can join the lobby
DLL(bool) BS_ISteamMatchmaking_SetLobbyMemberLimit(ISteamMatchmaking* pThis, CSteamID* steamIDLobby, int cMaxMembers) {
return pThis->SetLobbyMemberLimit(*steamIDLobby, cMaxMembers);
}
// returns the current limit on the # of users who can join the lobby; returns 0 if no limit is defined
DLL(int) BS_ISteamMatchmaking_GetLobbyMemberLimit(ISteamMatchmaking* pThis, CSteamID* steamIDLobby) {
return pThis->GetLobbyMemberLimit(*steamIDLobby);
}
// updates which type of lobby it is
// only lobbies that are k_ELobbyTypePublic or k_ELobbyTypeInvisible, and are set to joinable, will be returned by RequestLobbyList() calls
DLL(bool) BS_ISteamMatchmaking_SetLobbyType(ISteamMatchmaking* pThis, CSteamID* steamIDLobby, ELobbyType eLobbyType) {
return pThis->SetLobbyType(*steamIDLobby, eLobbyType);
}
// sets whether or not a lobby is joinable - defaults to true for a new lobby
// if set to false, no user can join, even if they are a friend or have been invited
DLL(bool) BS_ISteamMatchmaking_SetLobbyJoinable(ISteamMatchmaking* pThis, CSteamID* steamIDLobby, bool bLobbyJoinable) {
return pThis->SetLobbyJoinable(*steamIDLobby, bLobbyJoinable);
}
// returns the current lobby owner
// you must be a member of the lobby to access this
// there always one lobby owner - if the current owner leaves, another user will become the owner
// it is possible (bur rare) to join a lobby just as the owner is leaving, thus entering a lobby with self as the owner
DLL(CSteamID*) BS_ISteamMatchmaking_GetLobbyOwner(ISteamMatchmaking* pThis, CSteamID* steamIDLobby) {
return &(pThis->GetLobbyOwner(*steamIDLobby));
}
// changes who the lobby owner is
// you must be the lobby owner for this to succeed, and steamIDNewOwner must be in the lobby
// after completion, the local user will no longer be the owner
DLL(bool) BS_ISteamMatchmaking_SetLobbyOwner(ISteamMatchmaking* pThis, CSteamID* steamIDLobby, CSteamID* steamIDNewOwner) {
return pThis->SetLobbyOwner(*steamIDLobby, *steamIDNewOwner);
}
// link two lobbies for the purposes of checking player compatibility
// you must be the lobby owner of both lobbies
DLL(bool) BS_ISteamMatchmaking_SetLinkedLobby(ISteamMatchmaking* pThis, CSteamID* steamIDLobby, CSteamID* steamIDLobbyDependent) {
return pThis->SetLinkedLobby(*steamIDLobby, *steamIDLobbyDependent);
}
View File
+190
View File
@@ -0,0 +1,190 @@
// BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "BlitzSteam.h"
//-----------------------------------------------------------------------------
// Purpose: Functions for match making services for clients to get to game lists and details
//-----------------------------------------------------------------------------
DLL(ISteamMatchmakingServers*) BS_SteamMatchmakingServers() {
return SteamMatchmakingServers();
}
// Request a new list of servers of a particular type. These calls each correspond to one of the EMatchMakingType values.
// Each call allocates a new asynchronous request object.
// Request object must be released by calling ReleaseRequest( hServerListRequest )
DLL(HServerListRequest) BS_ISteamMatchmakingServers_RequestInternetServerList(ISteamMatchmakingServers* pThis, AppId_t iApp, ARRAY_COUNT(nFilters) MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse) {
return pThis->RequestInternetServerList(iApp, ppchFilters, nFilters, pRequestServersResponse);
}
DLL(HServerListRequest) BS_ISteamMatchmakingServers_RequestLANServerList(ISteamMatchmakingServers* pThis, AppId_t iApp, ISteamMatchmakingServerListResponse *pRequestServersResponse) {
return pThis->RequestLANServerList(iApp, pRequestServersResponse);
}
DLL(HServerListRequest) BS_ISteamMatchmakingServers_RequestFriendsServerList(ISteamMatchmakingServers* pThis, AppId_t iApp, ARRAY_COUNT(nFilters) MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse) {
return pThis->RequestFriendsServerList(iApp, ppchFilters, nFilters, pRequestServersResponse);
}
DLL(HServerListRequest) BS_ISteamMatchmakingServers_RequestFavoritesServerList(ISteamMatchmakingServers* pThis, AppId_t iApp, ARRAY_COUNT(nFilters) MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse) {
return pThis->RequestFavoritesServerList(iApp, ppchFilters, nFilters, pRequestServersResponse);
}
DLL(HServerListRequest) BS_ISteamMatchmakingServers_RequestHistoryServerList(ISteamMatchmakingServers* pThis, AppId_t iApp, ARRAY_COUNT(nFilters) MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse) {
return pThis->RequestHistoryServerList(iApp, ppchFilters, nFilters, pRequestServersResponse);
}
DLL(HServerListRequest) BS_ISteamMatchmakingServers_RequestSpectatorServerList(ISteamMatchmakingServers* pThis, AppId_t iApp, ARRAY_COUNT(nFilters) MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse) {
return pThis->RequestSpectatorServerList(iApp, ppchFilters, nFilters, pRequestServersResponse);
}
// Releases the asynchronous request object and cancels any pending query on it if there's a pending query in progress.
// RefreshComplete callback is not posted when request is released.
DLL(void) BS_ISteamMatchmakingServers_ReleaseRequest(ISteamMatchmakingServers* pThis, HServerListRequest hServerListRequest) {
pThis->ReleaseRequest(hServerListRequest);
}
/* the filter operation codes that go in the key part of MatchMakingKeyValuePair_t should be one of these:
"map"
- Server passes the filter if the server is playing the specified map.
"gamedataand"
- Server passes the filter if the server's game data (ISteamGameServer::SetGameData) contains all of the
specified strings. The value field is a comma-delimited list of strings to match.
"gamedataor"
- Server passes the filter if the server's game data (ISteamGameServer::SetGameData) contains at least one of the
specified strings. The value field is a comma-delimited list of strings to match.
"gamedatanor"
- Server passes the filter if the server's game data (ISteamGameServer::SetGameData) does not contain any
of the specified strings. The value field is a comma-delimited list of strings to check.
"gametagsand"
- Server passes the filter if the server's game tags (ISteamGameServer::SetGameTags) contains all
of the specified strings. The value field is a comma-delimited list of strings to check.
"gametagsnor"
- Server passes the filter if the server's game tags (ISteamGameServer::SetGameTags) does not contain any
of the specified strings. The value field is a comma-delimited list of strings to check.
"and" (x1 && x2 && ... && xn)
"or" (x1 || x2 || ... || xn)
"nand" !(x1 && x2 && ... && xn)
"nor" !(x1 || x2 || ... || xn)
- Performs Boolean operation on the following filters. The operand to this filter specifies
the "size" of the Boolean inputs to the operation, in Key/value pairs. (The keyvalue
pairs must immediately follow, i.e. this is a prefix logical operator notation.)
In the simplest case where Boolean expressions are not nested, this is simply
the number of operands.
For example, to match servers on a particular map or with a particular tag, would would
use these filters.
( server.map == "cp_dustbowl" || server.gametags.contains("payload") )
"or", "2"
"map", "cp_dustbowl"
"gametagsand", "payload"
If logical inputs are nested, then the operand specifies the size of the entire
"length" of its operands, not the number of immediate children.
( server.map == "cp_dustbowl" || ( server.gametags.contains("payload") && !server.gametags.contains("payloadrace") ) )
"or", "4"
"map", "cp_dustbowl"
"and", "2"
"gametagsand", "payload"
"gametagsnor", "payloadrace"
Unary NOT can be achieved using either "nand" or "nor" with a single operand.
"addr"
- Server passes the filter if the server's query address matches the specified IP or IP:port.
"gameaddr"
- Server passes the filter if the server's game address matches the specified IP or IP:port.
The following filter operations ignore the "value" part of MatchMakingKeyValuePair_t
"dedicated"
- Server passes the filter if it passed true to SetDedicatedServer.
"secure"
- Server passes the filter if the server is VAC-enabled.
"notfull"
- Server passes the filter if the player count is less than the reported max player count.
"hasplayers"
- Server passes the filter if the player count is greater than zero.
"noplayers"
- Server passes the filter if it doesn't have any players.
"linux"
- Server passes the filter if it's a linux server
*/
// Get details on a given server in the list, you can get the valid range of index
// values by calling GetServerCount(). You will also receive index values in
// ISteamMatchmakingServerListResponse::ServerResponded() callbacks
DLL(gameserveritem_t*) BS_ISteamMatchmakingServers_GetServerDetails(ISteamMatchmakingServers* pThis, HServerListRequest hRequest, int iServer) {
return pThis->GetServerDetails(hRequest, iServer);
}
// Cancel an request which is operation on the given list type. You should call this to cancel
// any in-progress requests before destructing a callback object that may have been passed
// to one of the above list request calls. Not doing so may result in a crash when a callback
// occurs on the destructed object.
// Canceling a query does not release the allocated request handle.
// The request handle must be released using ReleaseRequest( hRequest )
DLL(void) BS_ISteamMatchmakingServers_CancelQuery(ISteamMatchmakingServers* pThis, HServerListRequest hRequest) {
pThis->CancelQuery(hRequest);
}
// Ping every server in your list again but don't update the list of servers
// Query callback installed when the server list was requested will be used
// again to post notifications and RefreshComplete, so the callback must remain
// valid until another RefreshComplete is called on it or the request
// is released with ReleaseRequest( hRequest )
DLL(void) BS_ISteamMatchmakingServers_RefreshQuery(ISteamMatchmakingServers* pThis, HServerListRequest hRequest) {
pThis->RefreshQuery(hRequest);
}
// Returns true if the list is currently refreshing its server list
DLL(bool) BS_ISteamMatchmakingServers_IsRefreshing(ISteamMatchmakingServers* pThis, HServerListRequest hRequest) {
return pThis->IsRefreshing(hRequest);
}
// How many servers in the given list, GetServerDetails above takes 0... GetServerCount() - 1
DLL(int) BS_ISteamMatchmakingServers_GetServerCount(ISteamMatchmakingServers* pThis, HServerListRequest hRequest) {
return pThis->GetServerCount(hRequest);
}
// Refresh a single server inside of a query (rather than all the servers )
DLL(void) BS_ISteamMatchmakingServers_RefreshServer(ISteamMatchmakingServers* pThis, HServerListRequest hRequest, int iServer) {
pThis->RefreshServer(hRequest, iServer);
}
//-----------------------------------------------------------------------------
// Queries to individual servers directly via IP/Port
//-----------------------------------------------------------------------------
// Request updated ping time and other details from a single server
DLL(HServerQuery) BS_ISteamMatchmakingServers_PingServer(ISteamMatchmakingServers* pThis, uint32 unIP, uint16 usPort, ISteamMatchmakingPingResponse *pRequestServersResponse) {
return pThis->PingServer(unIP, usPort, pRequestServersResponse);
}
// Request the list of players currently playing on a server
DLL(HServerQuery) BS_ISteamMatchmakingServers_PlayerDetails(ISteamMatchmakingServers* pThis, uint32 unIP, uint16 usPort, ISteamMatchmakingPlayersResponse *pRequestServersResponse) {
return pThis->PlayerDetails(unIP, usPort, pRequestServersResponse);
}
// Request the list of rules that the server is running (See ISteamGameServer::SetKeyValue() to set the rules server side)
DLL(HServerQuery) BS_ISteamMatchmakingServers_ServerRules(ISteamMatchmakingServers* pThis, uint32 unIP, uint16 usPort, ISteamMatchmakingRulesResponse *pRequestServersResponse) {
return pThis->ServerRules(unIP, usPort, pRequestServersResponse);
}
// Cancel an outstanding Ping/Players/Rules query from above. You should call this to cancel
// any in-progress requests before destructing a callback object that may have been passed
// to one of the above calls to avoid crashing when callbacks occur.
DLL(void) BS_ISteamMatchmakingServers_CancelServerQuery(ISteamMatchmakingServers* pThis, HServerQuery hServerQuery) {
pThis->CancelServerQuery(hServerQuery);
}
+23
View File
@@ -0,0 +1,23 @@
// BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "BlitzSteam.h"
DLL(ISteamMusic*) BS_SteamMusic() {
return SteamMusic();
}
#pragma message("SteamMusic is not ported yet. TODO!")
+23
View File
@@ -0,0 +1,23 @@
// BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "BlitzSteam.h"
DLL(ISteamMusicRemote*) BS_SteamMusicRemote() {
return SteamMusicRemote();
}
#pragma message("SteamMusicRemote is not ported yet. TODO!")
+98
View File
@@ -0,0 +1,98 @@
// BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "BlitzSteam.h"
//-----------------------------------------------------------------------------
// Purpose: Functions for making connections and sending data between clients,
// traversing NAT's where possible
//-----------------------------------------------------------------------------
DLL(ISteamNetworking*) BS_SteamNetworking() {
return SteamNetworking();
}
DLL(ISteamNetworking*) BS_SteamGameServerNetworking() {
return SteamGameServerNetworking();
}
////////////////////////////////////////////////////////////////////////////////////////////
// Session-less connection functions
// automatically establishes NAT-traversing or Relay server connections
// Sends a P2P packet to the specified user
// UDP-like, unreliable and a max packet size of 1200 bytes
// the first packet send may be delayed as the NAT-traversal code runs
// if we can't get through to the user, an error will be posted via the callback P2PSessionConnectFail_t
// see EP2PSend enum above for the descriptions of the different ways of sending packets
//
// nChannel is a routing number you can use to help route message to different systems - you'll have to call ReadP2PPacket()
// with the same channel number in order to retrieve the data on the other end
// using different channels to talk to the same user will still use the same underlying p2p connection, saving on resources
DLL(uint32_t) BS_ISteamNetworking_SendP2PPacket(ISteamNetworking* pThis, CSteamID* pSteamIDRemote, const void* pubData, uint32_t cubData, EP2PSend eP2PSendType, uint32_t nChannel) {
return pThis->SendP2PPacket(*pSteamIDRemote, pubData, cubData, eP2PSendType, nChannel);
}
// returns true if any data is available for read, and the amount of data that will need to be read
DLL(uint32_t) BS_ISteamNetworking_IsP2PPacketAvailable(ISteamNetworking* pThis, uint32_t* pcubMsgSize, uint32_t nChannel) {
return pThis->IsP2PPacketAvailable(pcubMsgSize, nChannel);
}
// reads in a packet that has been sent from another user via SendP2PPacket()
// returns the size of the message and the steamID of the user who sent it in the last two parameters
// if the buffer passed in is too small, the message will be truncated
// this call is not blocking, and will return false if no data is available
DLL(uint32_t) BS_ISteamNetworking_ReadP2PPacket(ISteamNetworking* pThis, void** pubDest, uint32_t cubDest, uint32_t* pcubMsgSize, CSteamID* pSteamIDRemote, uint32_t nChannel) {
return pThis->ReadP2PPacket(*pubDest, cubDest, pcubMsgSize, static_cast<CSteamID*>(pSteamIDRemote), nChannel);
}
// AcceptP2PSessionWithUser() should only be called in response to a P2PSessionRequest_t callback
// P2PSessionRequest_t will be posted if another user tries to send you a packet that you haven't talked to yet
// if you don't want to talk to the user, just ignore the request
// if the user continues to send you packets, another P2PSessionRequest_t will be posted periodically
// this may be called multiple times for a single user
// (if you've called SendP2PPacket() on the other user, this implicitly accepts the session request)
DLL(uint32_t) BS_ISteamNetworking_AcceptP2PSessionWithUser(ISteamNetworking* pThis, CSteamID* pSteamIDRemote) {
return pThis->AcceptP2PSessionWithUser(*pSteamIDRemote);
}
// call CloseP2PSessionWithUser() when you're done talking to a user, will free up resources under-the-hood
// if the remote user tries to send data to you again, another P2PSessionRequest_t callback will be posted
DLL(uint32_t) BS_ISteamNetworking_CloseP2PSessionWithUser(ISteamNetworking* pThis, CSteamID* pSteamIDRemote) {
return pThis->CloseP2PSessionWithUser(*pSteamIDRemote);
}
// call CloseP2PChannelWithUser() when you're done talking to a user on a specific channel. Once all channels
// open channels to a user have been closed, the open session to the user will be closed and new data from this
// user will trigger a P2PSessionRequest_t callback
DLL(uint32_t) BS_ISteamNetworking_CloseP2PChannelWithUser(ISteamNetworking* pThis, CSteamID* pSteamIDRemote, uint32_t nChannel) {
return pThis->CloseP2PChannelWithUser(*pSteamIDRemote, nChannel);
}
// fills out P2PSessionState_t structure with details about the underlying connection to the user
// should only needed for debugging purposes
// returns false if no connection exists to the specified user
DLL(uint32_t) BS_ISteamNetworking_GetP2PSessionState(ISteamNetworking* pThis, CSteamID* pSteamIDRemote, P2PSessionState_t* pConnectionState) {
return pThis->GetP2PSessionState(*pSteamIDRemote, pConnectionState);
}
// Allow P2P connections to fall back to being relayed through the Steam servers if a direct connection
// or NAT-traversal cannot be established. Only applies to connections created after setting this value,
// or to existing connections that need to automatically reconnect after this value is set.
//
// P2P packet relay is allowed by default
DLL(uint32_t) BS_ISteamNetworking_AllowP2PPacketRelay(ISteamNetworking* pThis, uint32_t bAllow) {
return pThis->AllowP2PPacketRelay(!!bAllow);
}
+23
View File
@@ -0,0 +1,23 @@
// BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "BlitzSteam.h"
DLL(ISteamRemoteStorage*) BS_SteamRemoteStorage() {
return SteamRemoteStorage();
}
#pragma message("SteamRemoteStorage is not ported yet. TODO!")
+23
View File
@@ -0,0 +1,23 @@
// BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "BlitzSteam.h"
DLL(ISteamScreenshots*) BS_SteamScreenshots() {
return SteamScreenshots();
}
#pragma message("SteamScreenshots is not ported yet. TODO!")
+28
View File
@@ -0,0 +1,28 @@
// BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "BlitzSteam.h"
DLL(ISteamUGC*) BS_SteamUGC() {
return SteamUGC();
}
DLL(ISteamUGC*) BS_SteamGameServerUGC() {
return SteamGameServerUGC();
}
#pragma message("SteamUGC is not ported yet. TODO!")
+23
View File
@@ -0,0 +1,23 @@
// BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "BlitzSteam.h"
DLL(ISteamUnifiedMessages*) BS_SteamUnifiedMessages() {
return SteamUnifiedMessages();
}
#pragma message("SteamUnifiedMessages is not ported yet. TODO!")
+214 -23
View File
@@ -1,23 +1,214 @@
// BlitzSteam - Steam wrapper for Blitz. // BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Project Kube (Michael Fabian Dirks) // Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as // it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the // published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version. // License, or (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// //
// You should have received a copy of the GNU Lesser General Public License // You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "dllmain.h" #include "BlitzSteam.h"
DLL_EXPORT void* DLL_CALL BlitzSteam_ISteamUser_GetSteamID(void* lpSteamUser) { //-----------------------------------------------------------------------------
return (void*)&(((ISteamUser*)lpSteamUser)->GetSteamID()); // Purpose: Functions for accessing and manipulating a steam account
} // associated with one client instance
//-----------------------------------------------------------------------------
//DLL_EXPORT void* DLL_CALL BlitzSteam_ISteamUser_ DLL(ISteamUser*) BS_SteamUser() {
return SteamUser();
}
// returns the HSteamUser this interface represents
// this is only used internally by the API, and by a few select interfaces that support multi-user
DLL(HSteamUser) BS_ISteamUser_GetHSteamUser( ISteamUser* lpSteamUser ) {
return lpSteamUser->GetHSteamUser( );
}
// returns true if the Steam client current has a live connection to the Steam servers.
// If false, it means there is no active connection due to either a networking issue on the local machine, or the Steam server is down/busy.
// The Steam client will automatically be trying to recreate the connection as often as possible.
DLL(uint32_t) BS_ISteamUser_IsLoggedOn( ISteamUser* lpSteamUser ) {
return lpSteamUser->BLoggedOn( );
}
// returns the CSteamID of the account currently logged into the Steam client
// a CSteamID is a unique identifier for an account, and used to differentiate users in all parts of the Steamworks API
DLL(CSteamID*) BS_ISteamUser_GetSteamID( ISteamUser* lpSteamUser ) {
return &(lpSteamUser->GetSteamID( ));
}
// Multiplayer Authentication functions
// InitiateGameConnection() starts the state machine for authenticating the game client with the game server
// It is the client portion of a three-way handshake between the client, the game server, and the steam servers
//
// Parameters:
// void *pAuthBlob - a pointer to empty memory that will be filled in with the authentication token.
// int cbMaxAuthBlob - the number of bytes of allocated memory in pBlob. Should be at least 2048 bytes.
// CSteamID steamIDGameServer - the steamID of the game server, received from the game server by the client
// CGameID gameID - the ID of the current game. For games without mods, this is just CGameID( <appID> )
// uint32 unIPServer, uint16 usPortServer - the IP address of the game server
// bool bSecure - whether or not the client thinks that the game server is reporting itself as secure (i.e. VAC is running)
//
// return value - returns the number of bytes written to pBlob. If the return is 0, then the buffer passed in was too small, and the call has failed
// The contents of pBlob should then be sent to the game server, for it to use to complete the authentication process.
DLL(uint32_t) BS_ISteamUser_InitiateGameConnection( ISteamUser* lpSteamUser, void* pAuthBlob, uint32_t cbMaxAuthBlob, CSteamID* SteamIDGameServer, uint32_t unIPServer, uint16_t usPortServer, uint32_t bSecure ) {
return lpSteamUser->InitiateGameConnection( pAuthBlob, cbMaxAuthBlob, *SteamIDGameServer, unIPServer, usPortServer, bSecure != 0 );
}
// notify of disconnect
// needs to occur when the game client leaves the specified game server, needs to match with the InitiateGameConnection() call
DLL(void) BS_ISteamUser_TerminateGameConnection( ISteamUser* lpSteamUser, uint32_t unIPServer, uint16_t usPortServer ) {
lpSteamUser->TerminateGameConnection( unIPServer, usPortServer );
}
// Legacy functions
// used by only a few games to track usage events
DLL(void) BS_ISteamUser_TrackAppUsageEvent( ISteamUser* lpSteamUser, CGameID* gameId, uint32_t eAppUsageEvent, const char* pchExtraInfo ) {
lpSteamUser->TrackAppUsageEvent( *gameId, eAppUsageEvent, pchExtraInfo );
}
// get the local storage folder for current Steam account to write application data, e.g. save games, configs etc.
// this will usually be something like "C:\Progam Files\Steam\userdata\<SteamID>\<AppID>\local"
DLL(uint32_t) BS_ISteamUser_GetUserDataFolder( ISteamUser* lpSteamUser, char* pchBuffer, uint32_t cubBuffer ) {
return lpSteamUser->GetUserDataFolder( pchBuffer, cubBuffer );
}
// Starts voice recording. Once started, use GetVoice() to get the data
DLL(void) BS_ISteamUser_StartVoiceRecording( ISteamUser* lpSteamUser ) {
lpSteamUser->StartVoiceRecording( );
}
// Stops voice recording. Because people often release push-to-talk keys early, the system will keep recording for
// a little bit after this function is called. GetVoice() should continue to be called until it returns
// k_eVoiceResultNotRecording
DLL(void) BS_ISteamUser_StopVoiceRecording( ISteamUser* lpSteamUser ) {
lpSteamUser->StopVoiceRecording( );
}
// Determine the amount of captured audio data that is available in bytes.
// This provides both the compressed and uncompressed data. Please note that the uncompressed
// data is not the raw feed from the microphone: data may only be available if audible
// levels of speech are detected.
// nUncompressedVoiceDesiredSampleRate is necessary to know the number of bytes to return in pcbUncompressed - can be set to 0 if you don't need uncompressed (the usual case)
// If you're upgrading from an older Steamworks API, you'll want to pass in 11025 to nUncompressedVoiceDesiredSampleRate
DLL(EVoiceResult) BS_ISteamUser_GetAvailableVoice( ISteamUser* lpSteamUser, uint32_t* pcbCompressed, uint32_t* pcbUncompressed, uint32_t nUncompressedVoiceDesiredSampleRate ) {
return lpSteamUser->GetAvailableVoice( pcbCompressed, pcbUncompressed, nUncompressedVoiceDesiredSampleRate );
}
// Gets the latest voice data from the microphone. Compressed data is an arbitrary format, and is meant to be handed back to
// DecompressVoice() for playback later as a binary blob. Uncompressed data is 16-bit, signed integer, 11025Hz PCM format.
// Please note that the uncompressed data is not the raw feed from the microphone: data may only be available if audible
// levels of speech are detected, and may have passed through denoising filters, etc.
// This function should be called as often as possible once recording has started; once per frame at least.
// nBytesWritten is set to the number of bytes written to pDestBuffer.
// nUncompressedBytesWritten is set to the number of bytes written to pUncompressedDestBuffer.
// You must grab both compressed and uncompressed here at the same time, if you want both.
// Matching data that is not read during this call will be thrown away.
// GetAvailableVoice() can be used to determine how much data is actually available.
// If you're upgrading from an older Steamworks API, you'll want to pass in 11025 to nUncompressedVoiceDesiredSampleRate
DLL(EVoiceResult) BS_ISteamUser_GetVoice( ISteamUser* lpSteamUser, uint32_t bWantCompressed, void *pDestBuffer, uint32_t cbDestBufferSize, uint32_t *nBytesWritten, uint32_t bWantUncompressed, void *pUncompressedDestBuffer, uint32_t cbUncompressedDestBufferSize, uint32_t *nUncompressBytesWritten, uint32_t nUncompressedVoiceDesiredSampleRate ) {
return lpSteamUser->GetVoice( bWantCompressed != 0, pDestBuffer, cbDestBufferSize, nBytesWritten, bWantUncompressed != 0, pUncompressedDestBuffer, cbUncompressedDestBufferSize, nUncompressBytesWritten, nUncompressedVoiceDesiredSampleRate );
}
// Decompresses a chunk of compressed data produced by GetVoice().
// nBytesWritten is set to the number of bytes written to pDestBuffer unless the return value is k_EVoiceResultBufferTooSmall.
// In that case, nBytesWritten is set to the size of the buffer required to decompress the given
// data. The suggested buffer size for the destination buffer is 22 kilobytes.
// The output format of the data is 16-bit signed at the requested samples per second.
// If you're upgrading from an older Steamworks API, you'll want to pass in 11025 to nDesiredSampleRate
DLL(EVoiceResult) BS_ISteamUser_DecompressVoice( ISteamUser* lpSteamUser, const void *pCompressed, uint32_t cbCompressed, void *pDestBuffer, uint32_t cbDestBufferSize, uint32_t *nBytesWritten, uint32_t nDesiredSampleRate ) {
return lpSteamUser->DecompressVoice( pCompressed, cbCompressed, pDestBuffer, cbDestBufferSize, nBytesWritten, nDesiredSampleRate );
}
// This returns the frequency of the voice data as it's stored internally; calling DecompressVoice() with this size will yield the best results
DLL(uint32_t) BS_ISteamUser_GetVoiceOptimalSampleRate( ISteamUser* lpSteamUser ) {
return lpSteamUser->GetVoiceOptimalSampleRate( );
}
// Retrieve ticket to be sent to the entity who wishes to authenticate you.
// pcbTicket retrieves the length of the actual ticket.
DLL(HAuthTicket) BS_ISteamUser_GetAuthSessionTicket( ISteamUser* lpSteamUser, void* pTicket, uint32_t cbMaxTicket, uint32_t* pcbTicket ) {
return lpSteamUser->GetAuthSessionTicket( pTicket, cbMaxTicket, pcbTicket );
}
// Authenticate ticket from entity steamID to be sure it is valid and isnt reused
// Registers for callbacks if the entity goes offline or cancels the ticket ( see ValidateAuthTicketResponse_t callback and EAuthSessionResponse )
DLL(EBeginAuthSessionResult) BS_ISteamUser_BeginAuthSession( ISteamUser* lpSteamUser, const void* pAuthTicket, uint32_t cbAuthTicket, CSteamID* steamID ) {
return lpSteamUser->BeginAuthSession( pAuthTicket, cbAuthTicket, *steamID );
}
// Stop tracking started by BeginAuthSession - called when no longer playing game with this entity
DLL(void) BS_ISteamUser_EndAuthSession( ISteamUser* lpSteamUser, CSteamID* steamID ) {
lpSteamUser->EndAuthSession( *steamID );
}
// Cancel auth ticket from GetAuthSessionTicket, called when no longer playing game with the entity you gave the ticket to
DLL(void) BS_ISteamUser_CancelAuthTicket( ISteamUser* lpSteamUser, HAuthTicket hAuthTicket ) {
lpSteamUser->CancelAuthTicket( hAuthTicket );
}
// After receiving a user's authentication data, and passing it to BeginAuthSession, use this function
// to determine if the user owns downloadable content specified by the provided AppID.
DLL(EUserHasLicenseForAppResult) BS_ISteamUser_UserHasLicenseForApp( ISteamUser* lpSteamUser, CSteamID* steamID, AppId_t appID ) {
return lpSteamUser->UserHasLicenseForApp( *steamID, appID );
}
// returns true if this users looks like they are behind a NAT device. Only valid once the user has connected to steam
// (i.e a SteamServersConnected_t has been issued) and may not catch all forms of NAT.
DLL(uint32_t) BS_ISteamUser_IsBehindNAT( ISteamUser* lpSteamUser ) {
return lpSteamUser->BIsBehindNAT( );
}
// set data to be replicated to friends so that they can join your game
// CSteamID steamIDGameServer - the steamID of the game server, received from the game server by the client
// uint32 unIPServer, uint16 usPortServer - the IP address of the game server
DLL(void) BS_ISteamUser_AdvertiseGame( ISteamUser* lpSteamUser, CSteamID* steamIDGameServer, uint32_t unIPServer, uint16_t usPortServer ) {
lpSteamUser->AdvertiseGame( *steamIDGameServer, unIPServer, usPortServer );
}
// Requests a ticket encrypted with an app specific shared key
// pDataToInclude, cbDataToInclude will be encrypted into the ticket
// ( This is asynchronous, you must wait for the ticket to be completed by the server )
//CALL_RESULT( EncryptedAppTicketResponse_t )
DLL(SteamAPICall_t*) BS_ISteamUser_RequestEncryptedAppTicket( ISteamUser* lpSteamUser, void* pDataToInclude, uint32_t cbDataToInclude ) {
return new uint64_t(lpSteamUser->RequestEncryptedAppTicket( pDataToInclude, cbDataToInclude ));
}
// retrieve a finished ticket
DLL(uint32_t) BS_ISteamUser_GetEncryptedAppTicket( ISteamUser* lpSteamUser, void *pTicket, uint32_t cbMaxTicket, uint32_t* pcbTicket ) {
return lpSteamUser->GetEncryptedAppTicket( pTicket, cbMaxTicket, pcbTicket );
}
// Trading Card badges data access
// if you only have one set of cards, the series will be 1
// the user has can have two different badges for a series; the regular (max level 5) and the foil (max level 1)
DLL(uint32_t) BS_ISteamUser_GetGameBadgeLevel( ISteamUser* lpSteamUser, uint32_t nSeries, uint32_t bFoil ) {
return lpSteamUser->GetGameBadgeLevel( nSeries, bFoil != 0 );
}
// gets the Steam Level of the user, as shown on their profile
DLL(uint32_t) BS_ISteamUser_GetPlayerSteamLevel( ISteamUser* lpSteamUser ) {
return lpSteamUser->GetPlayerSteamLevel( );
}
// Requests a URL which authenticates an in-game browser for store check-out,
// and then redirects to the specified URL. As long as the in-game browser
// accepts and handles session cookies, Steam microtransaction checkout pages
// will automatically recognize the user instead of presenting a login page.
// The result of this API call will be a StoreAuthURLResponse_t callback.
// NOTE: The URL has a very short lifetime to prevent history-snooping attacks,
// so you should only call this API when you are about to launch the browser,
// or else immediately navigate to the result URL using a hidden browser window.
// NOTE 2: The resulting authorization cookie has an expiration time of one day,
// so it would be a good idea to request and visit a new auth URL every 12 hours.
DLL(SteamAPICall_t*) BS_ISteamUser_RequestStoreAuthURL( ISteamUser* lpSteamUser, const char* pchRedirectURL ) {
return new uint64_t(lpSteamUser->RequestStoreAuthURL( pchRedirectURL ));
}
+308
View File
@@ -0,0 +1,308 @@
// BlitzSteam - Steam wrapper for Blitz
// Copyright (C) 2015 Xaymar (Michael Fabian Dirks)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "BlitzSteam.h"
//-----------------------------------------------------------------------------
// Purpose: Functions for accessing stats, achievements, and leaderboard information
//-----------------------------------------------------------------------------
DLL(ISteamUserStats*) BS_SteamUserStats() {
return SteamUserStats();
}
// Ask the server to send down this user's data and achievements for this game
//CALL_BACK(UserStatsReceived_t)
DLL(uint32_t) BS_ISteamUserStats_RequestCurrentStats( ISteamUserStats* lpSteamUserStats ) {
return lpSteamUserStats->RequestCurrentStats( );
}
// Data accessors
DLL(uint32_t) BS_ISteamUserStats_GetStat( ISteamUserStats* lpSteamUserStats, const char* pchName, int32_t* pData ) {
return lpSteamUserStats->GetStat( pchName, pData );
}
DLL(uint32_t) BS_ISteamUserStats_GetStatF( ISteamUserStats* lpSteamUserStats, const char* pchName, float_t* pData ) {
return lpSteamUserStats->GetStat( pchName, pData );
}
// Set / update data
DLL(uint32_t) BS_ISteamUserStats_SetStat( ISteamUserStats* lpSteamUserStats, const char* pchName, int32_t pData ) {
return lpSteamUserStats->SetStat( pchName, pData );
}
DLL(uint32_t) BS_ISteamUserStats_SetStatF( ISteamUserStats* lpSteamUserStats, const char* pchName, float_t pData ) {
return lpSteamUserStats->SetStat( pchName, pData );
}
DLL(uint32_t) BS_ISteamUserStats_UpdateAvgRateStat( ISteamUserStats* lpSteamUserStats, const char* pchName, float_t flCountThisSession, double_t* dSessionLength ) {
return lpSteamUserStats->UpdateAvgRateStat( pchName, flCountThisSession, *dSessionLength );
}
// Achievement flag accessors
DLL(uint32_t) BS_ISteamUserStats_GetAchievement( ISteamUserStats* lpSteamUserStats, const char* pchName, bool* pbAchieved ) {
return lpSteamUserStats->GetAchievement( pchName, (bool*)pbAchieved );
}
DLL(uint32_t) BS_ISteamUserStats_SetAchievement( ISteamUserStats* lpSteamUserStats, const char* pchName ) {
return lpSteamUserStats->SetAchievement( pchName );
}
DLL(uint32_t) BS_ISteamUserStats_ClearAchievement( ISteamUserStats* lpSteamUserStats, const char* pchName ) {
return lpSteamUserStats->ClearAchievement( pchName );
}
// Get the achievement status, and the time it was unlocked if unlocked.
// If the return value is true, but the unlock time is zero, that means it was unlocked before Steam
// began tracking achievement unlock times (December 2009). Time is seconds since January 1, 1970.
DLL(uint32_t) BS_ISteamUserStats_GetAchievementAndUnlockTime( ISteamUserStats* lpSteamUserStats, const char* pchName, bool* pbAchieved, uint32_t* punUnlockTime ) {
return lpSteamUserStats->GetAchievementAndUnlockTime( pchName, (bool*)pbAchieved, punUnlockTime );
}
// Store the current data on the server, will get a callback when set
// And one callback for every new achievement
//
// If the callback has a result of k_EResultInvalidParam, one or more stats
// uploaded has been rejected, either because they broke constraints
// or were out of date. In this case the server sends back updated values.
// The stats should be re-iterated to keep in sync.
DLL(uint32_t) BS_ISteamUserStats_StoreStats( ISteamUserStats* lpSteamUserStats ) {
return lpSteamUserStats->StoreStats( );
}
// Achievement / GroupAchievement metadata
// Gets the icon of the achievement, which is a handle to be used in ISteamUtils::GetImageRGBA(), or 0 if none set.
// A return value of 0 may indicate we are still fetching data, and you can wait for the UserAchievementIconFetched_t callback
// which will notify you when the bits are ready. If the callback still returns zero, then there is no image set for the
// specified achievement.
DLL(uint32_t) BS_ISteamUserStats_GetAchievementIcon( ISteamUserStats* lpSteamUserStats, const char* pchName ) {
return lpSteamUserStats->GetAchievementIcon( pchName );
}
// Get general attributes for an achievement. Accepts the following keys:
// - "name" and "desc" for retrieving the localized achievement name and description (returned in UTF8)
// - "hidden" for retrieving if an achievement is hidden (returns "0" when not hidden, "1" when hidden)
DLL(const char*) BS_ISteamUserStats_GetAchievementDisplayAttribute( ISteamUserStats* lpSteamUserStats, const char* pchName, const char* pchKey ) {
return lpSteamUserStats->GetAchievementDisplayAttribute( pchName, pchKey );
}
// Achievement progress - triggers an AchievementProgress callback, that is all.
// Calling this w/ N out of N progress will NOT set the achievement, the game must still do that.
DLL(uint32_t) BS_ISteamUserStats_IndicateAchievementProgress( ISteamUserStats* lpSteamUserStats, const char* pchName, uint32_t nCurProgress, uint32_t nMaxProgress ) {
return lpSteamUserStats->IndicateAchievementProgress( pchName, nCurProgress, nMaxProgress );
}
// Used for iterating achievements. In general games should not need these functions because they should have a
// list of existing achievements compiled into them
DLL(uint32_t) BS_ISteamUserStats_GetNumAchievements( ISteamUserStats* lpSteamUserStats ) {
return lpSteamUserStats->GetNumAchievements( );
}
// Get achievement name iAchievement in [0,GetNumAchievements)
DLL(const char*) BS_ISteamUserStats_GetAchievementName( ISteamUserStats* lpSteamUserStats, uint32_t iAchievement ) {
return lpSteamUserStats->GetAchievementName( iAchievement );
}
// Friends stats & achievements
// downloads stats for the user
// returns a UserStatsReceived_t received when completed
// if the other user has no stats, UserStatsReceived_t.m_eResult will be set to k_EResultFail
// these stats won't be auto-updated; you'll need to call RequestUserStats() again to refresh any data
//CALL_RESULT(UserStatsReceived_t)
DLL(SteamAPICall_t*) BS_ISteamUserStats_RequestUserStats( ISteamUserStats* lpSteamUserStats, CSteamID* steamIDUser ) {
return new uint64_t( lpSteamUserStats->RequestUserStats( *steamIDUser ) );
}
// requests stat information for a user, usable after a successful call to RequestUserStats()
DLL(uint32_t) BS_ISteamUserStats_GetUserStat( ISteamUserStats* lpSteamUserStats, CSteamID* steamIDUser, const char* pchName, uint32_t* pData ) {
return lpSteamUserStats->GetUserStat( *steamIDUser, pchName, (int32_t*)pData );
}
DLL(uint32_t) BS_ISteamUserStats_GetUserStatF( ISteamUserStats* lpSteamUserStats, CSteamID* steamIDUser, const char* pchName, float_t* pData ) {
return lpSteamUserStats->GetUserStat( *steamIDUser, pchName, pData );
}
DLL(uint32_t) BS_ISteamUserStats_GetUserAchievement( ISteamUserStats* lpSteamUserStats, CSteamID* steamIDUser, const char* pchName, bool* pbAchieved ) {
return lpSteamUserStats->GetUserAchievement( *steamIDUser, pchName, (bool*)pbAchieved );
}
// See notes for GetAchievementAndUnlockTime above
DLL(uint32_t) BS_ISteamUserStats_GetUserAchievementAndUnlockTime( ISteamUserStats* lpSteamUserStats, CSteamID* steamIDUser, const char* pchName, bool* pbAchieved, uint32_t* punUnlockTime ) {
return lpSteamUserStats->GetUserAchievementAndUnlockTime( *steamIDUser, pchName, (bool*)pbAchieved, punUnlockTime );
}
// Reset stats
DLL(uint32_t) BS_ISteamUserStats_ResetAllStats( ISteamUserStats* lpSteamUserStats, uint32_t bAchievementsToo ) {
return lpSteamUserStats->ResetAllStats( bAchievementsToo != 0 );
}
// Leaderboard functions
// asks the Steam back-end for a leaderboard by name, and will create it if it's not yet
// This call is asynchronous, with the result returned in LeaderboardFindResult_t
//CALL_RESULT(LeaderboardFindResult_t)
DLL(SteamAPICall_t*) BS_ISteamUserStats_FindOrCreateLeaderboard( ISteamUserStats* lpSteamUserStats, const char* pchLeaderboardName, ELeaderboardSortMethod eLeaderboardSortMethod, ELeaderboardDisplayType eLeaderboardDisplayType ) {
return new uint64_t( lpSteamUserStats->FindOrCreateLeaderboard( pchLeaderboardName, eLeaderboardSortMethod, eLeaderboardDisplayType ) );
}
// as above, but won't create the leaderboard if it's not found
// This call is asynchronous, with the result returned in LeaderboardFindResult_t
//CALL_RESULT(LeaderboardFindResult_t)
DLL(SteamAPICall_t*) BS_ISteamUserStats_FindLeaderboard( ISteamUserStats* lpSteamUserStats, const char *pchLeaderboardName ) {
return new uint64_t( lpSteamUserStats->FindLeaderboard( pchLeaderboardName ) );
}
// returns the name of a leaderboard
DLL(const char*) BS_ISteamUserStats_GetLeaderboardName( ISteamUserStats* lpSteamUserStats, SteamLeaderboard_t* hSteamLeaderboard ) {
return lpSteamUserStats->GetLeaderboardName( *hSteamLeaderboard );
}
// returns the total number of entries in a leaderboard, as of the last request
DLL(int) BS_ISteamUserStats_GetLeaderboardEntryCount( ISteamUserStats* lpSteamUserStats, SteamLeaderboard_t* hSteamLeaderboard ) {
return lpSteamUserStats->GetLeaderboardEntryCount( *hSteamLeaderboard );
}
// returns the sort method of the leaderboard
DLL(ELeaderboardSortMethod) BS_ISteamUserStats_GetLeaderboardSortMethod( ISteamUserStats* lpSteamUserStats, SteamLeaderboard_t* hSteamLeaderboard ) {
return lpSteamUserStats->GetLeaderboardSortMethod( *hSteamLeaderboard );
}
// returns the display type of the leaderboard
DLL(ELeaderboardDisplayType) BS_ISteamUserStats_GetLeaderboardDisplayType( ISteamUserStats* lpSteamUserStats, SteamLeaderboard_t* hSteamLeaderboard ) {
return lpSteamUserStats->GetLeaderboardDisplayType( *hSteamLeaderboard );
}
// Asks the Steam back-end for a set of rows in the leaderboard.
// This call is asynchronous, with the result returned in LeaderboardScoresDownloaded_t
// LeaderboardScoresDownloaded_t will contain a handle to pull the results from GetDownloadedLeaderboardEntries() (below)
// You can ask for more entries than exist, and it will return as many as do exist.
// k_ELeaderboardDataRequestGlobal requests rows in the leaderboard from the full table, with nRangeStart & nRangeEnd in the range [1, TotalEntries]
// k_ELeaderboardDataRequestGlobalAroundUser requests rows around the current user, nRangeStart being negate
// e.g. DownloadLeaderboardEntries( hLeaderboard, k_ELeaderboardDataRequestGlobalAroundUser, -3, 3 ) will return 7 rows, 3 before the user, 3 after
// k_ELeaderboardDataRequestFriends requests all the rows for friends of the current user
//CALL_RESULT(LeaderboardScoresDownloaded_t)
DLL(SteamAPICall_t*) BS_ISteamUserStats_DownloadLeaderboardEntries( ISteamUserStats* lpSteamUserStats, SteamLeaderboard_t* hSteamLeaderboard, ELeaderboardDataRequest eLeaderboardDataRequest, int nRangeStart, int nRangeEnd ) {
return new uint64_t( lpSteamUserStats->DownloadLeaderboardEntries( *hSteamLeaderboard, eLeaderboardDataRequest, nRangeStart, nRangeEnd ) );
}
///#####
// as above, but downloads leaderboard entries for an arbitrary set of users - ELeaderboardDataRequest is k_ELeaderboardDataRequestUsers
// if a user doesn't have a leaderboard entry, they won't be included in the result
// a max of 100 users can be downloaded at a time, with only one outstanding call at a time
//CALL_RESULT(LeaderboardScoresDownloaded_t)
DLL(SteamAPICall_t*) BS_ISteamUserStats_DownloadLeaderboardEntriesForUsers( ISteamUserStats* lpSteamUserStats, SteamLeaderboard_t* hSteamLeaderboard, CSteamID* prgUsers, int cUsers ) {
return new uint64_t( lpSteamUserStats->DownloadLeaderboardEntriesForUsers( *hSteamLeaderboard, prgUsers, cUsers ) );
}
// Returns data about a single leaderboard entry
// use a for loop from 0 to LeaderboardScoresDownloaded_t::m_cEntryCount to get all the downloaded entries
// e.g.
// void OnLeaderboardScoresDownloaded( LeaderboardScoresDownloaded_t *pLeaderboardScoresDownloaded )
// {
// for ( int index = 0; index < pLeaderboardScoresDownloaded->m_cEntryCount; index++ )
// {
// LeaderboardEntry_t leaderboardEntry;
// int32 details[3]; // we know this is how many we've stored previously
// GetDownloadedLeaderboardEntry( pLeaderboardScoresDownloaded->m_hSteamLeaderboardEntries, index, &leaderboardEntry, details, 3 );
// assert( leaderboardEntry.m_cDetails == 3 );
// ...
// }
// once you've accessed all the entries, the data will be free'd, and the SteamLeaderboardEntries_t handle will become invalid
DLL(uint32_t) BS_ISteamUserStats_GetDownloadedLeaderboardEntry( ISteamUserStats* lpSteamUserStats, SteamLeaderboardEntries_t* hSteamLeaderboardEntries, int index, LeaderboardEntry_t *pLeaderboardEntry, int32 *pDetails, int cDetailsMax ) {
return lpSteamUserStats->GetDownloadedLeaderboardEntry( *hSteamLeaderboardEntries, index, pLeaderboardEntry, pDetails, cDetailsMax );
}
// Uploads a user score to the Steam back-end.
// This call is asynchronous, with the result returned in LeaderboardScoreUploaded_t
// Details are extra game-defined information regarding how the user got that score
// pScoreDetails points to an array of int32's, cScoreDetailsCount is the number of int32's in the list
//CALL_RESULT(LeaderboardScoreUploaded_t)
DLL(SteamAPICall_t*) BS_ISteamUserStats_UploadLeaderboardScore( ISteamUserStats* lpSteamUserStats, SteamLeaderboard_t* hSteamLeaderboard, ELeaderboardUploadScoreMethod eLeaderboardUploadScoreMethod, int32 nScore, const int32_t* pScoreDetails, int cScoreDetailsCount ) {
return new uint64_t(lpSteamUserStats->UploadLeaderboardScore( *hSteamLeaderboard, eLeaderboardUploadScoreMethod, nScore, pScoreDetails, cScoreDetailsCount ));
}
// Attaches a piece of user generated content the user's entry on a leaderboard.
// hContent is a handle to a piece of user generated content that was shared using ISteamUserRemoteStorage::FileShare().
// This call is asynchronous, with the result returned in LeaderboardUGCSet_t.
//CALL_RESULT(LeaderboardUGCSet_t)
DLL(SteamAPICall_t*) BS_ISteamUserStats_AttachLeaderboardUGC( ISteamUserStats* lpSteamUserStats, SteamLeaderboard_t* hSteamLeaderboard, UGCHandle_t* hUGC ) {
return new uint64_t( lpSteamUserStats->AttachLeaderboardUGC( *hSteamLeaderboard, *hUGC ) );
}
// Retrieves the number of players currently playing your game (online + offline)
// This call is asynchronous, with the result returned in NumberOfCurrentPlayers_t
//CALL_RESULT(NumberOfCurrentPlayers_t)
DLL(SteamAPICall_t*) BS_ISteamUserStats_GetNumberOfCurrentPlayers( ISteamUserStats* lpSteamUserStats ) {
return new uint64_t( lpSteamUserStats->GetNumberOfCurrentPlayers( ) );
}
// Requests that Steam fetch data on the percentage of players who have received each achievement
// for the game globally.
// This call is asynchronous, with the result returned in GlobalAchievementPercentagesReady_t.
//CALL_RESULT(GlobalAchievementPercentagesReady_t)
DLL(SteamAPICall_t*) BS_ISteamUserStats_RequestGlobalAchievementPercentages( ISteamUserStats* lpSteamUserStats ) {
return new uint64_t( lpSteamUserStats->RequestGlobalAchievementPercentages( ) );
}
// Get the info on the most achieved achievement for the game, returns an iterator index you can use to fetch
// the next most achieved afterwards. Will return -1 if there is no data on achievement
// percentages (ie, you haven't called RequestGlobalAchievementPercentages and waited on the callback).
DLL(uint32_t) BS_ISteamUserStats_GetMostAchievedAchievementInfo( ISteamUserStats* lpSteamUserStats, char *pchName, uint32_t unNameBufLen, float *pflPercent, bool* pbAchieved ) {
return lpSteamUserStats->GetMostAchievedAchievementInfo( pchName, unNameBufLen, pflPercent, pbAchieved );
}
// Get the info on the next most achieved achievement for the game. Call this after GetMostAchievedAchievementInfo or another
// GetNextMostAchievedAchievementInfo call passing the iterator from the previous call. Returns -1 after the last
// achievement has been iterated.
DLL(uint32_t) BS_ISteamUserStats_GetNextMostAchievedAchievementInfo( ISteamUserStats* lpSteamUserStats, int iIteratorPrevious, char *pchName, uint32_t unNameBufLen, float *pflPercent, bool *pbAchieved ) {
return lpSteamUserStats->GetNextMostAchievedAchievementInfo( iIteratorPrevious, pchName, unNameBufLen, pflPercent, pbAchieved );
}
// Returns the percentage of users who have achieved the specified achievement.
DLL(uint32_t) BS_ISteamUserStats_GetAchievementAchievedPercent( ISteamUserStats* lpSteamUserStats, const char *pchName, float *pflPercent ) {
return lpSteamUserStats->GetAchievementAchievedPercent( pchName, pflPercent );
}
// Requests global stats data, which is available for stats marked as "aggregated".
// This call is asynchronous, with the results returned in GlobalStatsReceived_t.
// nHistoryDays specifies how many days of day-by-day history to retrieve in addition
// to the overall totals. The limit is 60.
//CALL_RESULT(GlobalStatsReceived_t)
DLL(SteamAPICall_t*) BS_ISteamUserStats_RequestGlobalStats( ISteamUserStats* lpSteamUserStats, int nHistoryDays ) {
return new uint64_t( lpSteamUserStats->RequestGlobalStats( nHistoryDays ) );
}
// Gets the lifetime totals for an aggregated stat
DLL(uint32_t) BS_ISteamUserStats_GetGlobalStatL( ISteamUserStats* lpSteamUserStats, const char *pchStatName, int64* pData ) {
return lpSteamUserStats->GetGlobalStat( pchStatName, pData );
}
DLL(uint32_t) BS_ISteamUserStats_GetGlobalStatD( ISteamUserStats* lpSteamUserStats, const char *pchStatName, double* pData ) {
return lpSteamUserStats->GetGlobalStat( pchStatName, pData );
}
// Gets history for an aggregated stat. pData will be filled with daily values, starting with today.
// So when called, pData[0] will be today, pData[1] will be yesterday, and pData[2] will be two days ago,
// etc. cubData is the size in bytes of the pubData buffer. Returns the number of
// elements actually set.
DLL(uint32_t) BS_ISteamUserStats_GetGlobalStatHistoryL( ISteamUserStats* lpSteamUserStats, const char *pchStatName, int64 *pData, uint32_t cubData ) {
return lpSteamUserStats->GetGlobalStatHistory( pchStatName, pData, cubData );
}
DLL(uint32_t) BS_ISteamUserStats_GetGlobalStatHistoryD( ISteamUserStats* lpSteamUserStats, const char *pchStatName, double *pData, uint32_t cubData ) {
return lpSteamUserStats->GetGlobalStatHistory( pchStatName, pData, cubData );
}

Some files were not shown because too many files have changed in this diff Show More