From af9bed57e7cacce8b96f0a91c8e73a6b62775012 Mon Sep 17 00:00:00 2001 From: mordentral Date: Thu, 2 Mar 2017 15:19:04 -0500 Subject: [PATCH] Split plugin into two modules One is for the general AdvancedSessions The second is for Steam specific implementations This makes it easier to package without steam included, as the default setup always packaged steam out on PC platforms. Unchecking the AdvancedSteamSessions plugin should allow for totally removing any steam reliance from the plugin. You would also have to remove steam specific nodes from your blueprints as well however as they will no longer exist. Former-commit-id: 0bf1fc80dff7be0cc2b9cebaf5affed4918cea49 --- .../AdvancedSessions.uplugin | 0 .../Resources}/Icon128.png | Bin .../AdvancedSessions.Build.cs | 6 - .../Classes/AdvancedExternalUILibrary.h | 0 .../Classes/AdvancedFriendsGameInstance.h | 0 .../Classes/AdvancedFriendsInterface.h | 0 .../Classes/AdvancedFriendsLibrary.h | 29 --- .../Classes/AdvancedIdentityLibrary.h | 0 .../Classes/AdvancedSessions.h | 0 .../Classes/AdvancedSessionsLibrary.h | 0 .../Classes/AdvancedVoiceLibrary.h | 0 .../Classes/BlueprintDataDefinitions.h | 0 .../Classes/CancelFindSessionsCallbackProxy.h | 0 .../CreateSessionCallbackProxyAdvanced.h | 0 .../Classes/EndSessionCallbackProxy.h | 0 .../Classes/FindFriendSessionCallbackProxy.h | 0 .../FindSessionsCallbackProxyAdvanced.h | 0 .../Classes/GetFriendsCallbackProxy.h | 0 .../Classes/GetRecentPlayersCallbackProxy.h | 0 .../Classes/GetUserPrivilegeCallbackProxy.h | 0 .../Classes/LoginUserCallbackProxy.h | 0 .../Classes/LogoutUserCallbackProxy.h | 0 .../Classes/OnlineSubSystemHeader.h | 0 .../Classes/SendFriendInviteCallbackProxy.h | 0 .../UpdateSessionCallbackProxyAdvanced.h | 0 .../Private/AdvancedExternalUILibrary.cpp | 0 .../Private/AdvancedFriendsGameInstance.cpp | 0 .../Private/AdvancedFriendsInterface.cpp | 0 .../Private/AdvancedFriendsLibrary.cpp | 213 ----------------- .../Private/AdvancedIdentityLibrary.cpp | 0 .../Private/AdvancedSessions.cpp | 0 .../Private/AdvancedSessionsLibrary.cpp | 0 .../Private/AdvancedVoiceLibrary.cpp | 0 .../CancelFindSessionsCallbackProxy.cpp | 0 .../CreateSessionCallbackProxyAdvanced.cpp | 0 .../Private/EndSessionCallbackProxy.cpp | 0 .../FindFriendSessionCallbackProxy.cpp | 0 .../FindSessionsCallbackProxyAdvanced.cpp | 0 .../Private/GetFriendsCallbackProxy.cpp | 0 .../Private/GetRecentPlayersCallbackProxy.cpp | 0 .../Private/GetUserPrivilegeCallbackProxy.cpp | 0 .../Private/LoginUserCallbackProxy.cpp | 0 .../Private/LogoutUserCallbackProxy.cpp | 0 .../Private/SendFriendInviteCallbackProxy.cpp | 0 .../UpdateSessionCallbackProxyAdvanced.cpp | 0 .../AdvancedSteamSessions.uplugin | 21 ++ AdvancedSteamSessions/Resources/Icon128.png | Bin 0 -> 5879 bytes .../AdvancedSteamSessions.Build.cs | 17 ++ .../Classes/AdvancedSteamFriendsLibrary.h | 59 +++++ .../Classes/AdvancedSteamSessions.h | 12 + .../Classes}/AdvancedSteamWorkshopLibrary.h | 0 .../SteamWSRequestUGCDetailsCallbackProxy.h | 0 .../Private/AdvancedSteamFriendsLibrary.cpp | 221 ++++++++++++++++++ .../Private/AdvancedSteamSessions.cpp | 13 ++ .../Private}/AdvancedSteamWorkshopLibrary.cpp | 2 +- .../SteamWSRequestUGCDetailsCallbackProxy.cpp | 2 +- 56 files changed, 345 insertions(+), 250 deletions(-) rename AdvancedSessions.uplugin => AdvancedSessions/AdvancedSessions.uplugin (100%) rename {Resources => AdvancedSessions/Resources}/Icon128.png (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/AdvancedSessions.Build.cs (59%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Classes/AdvancedExternalUILibrary.h (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Classes/AdvancedFriendsGameInstance.h (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Classes/AdvancedFriendsInterface.h (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Classes/AdvancedFriendsLibrary.h (58%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Classes/AdvancedIdentityLibrary.h (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Classes/AdvancedSessions.h (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Classes/AdvancedSessionsLibrary.h (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Classes/AdvancedVoiceLibrary.h (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Classes/BlueprintDataDefinitions.h (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Classes/CancelFindSessionsCallbackProxy.h (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Classes/CreateSessionCallbackProxyAdvanced.h (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Classes/EndSessionCallbackProxy.h (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Classes/FindFriendSessionCallbackProxy.h (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Classes/FindSessionsCallbackProxyAdvanced.h (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Classes/GetFriendsCallbackProxy.h (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Classes/GetRecentPlayersCallbackProxy.h (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Classes/GetUserPrivilegeCallbackProxy.h (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Classes/LoginUserCallbackProxy.h (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Classes/LogoutUserCallbackProxy.h (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Classes/OnlineSubSystemHeader.h (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Classes/SendFriendInviteCallbackProxy.h (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Classes/UpdateSessionCallbackProxyAdvanced.h (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Private/AdvancedExternalUILibrary.cpp (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Private/AdvancedFriendsGameInstance.cpp (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Private/AdvancedFriendsInterface.cpp (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Private/AdvancedFriendsLibrary.cpp (55%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Private/AdvancedIdentityLibrary.cpp (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Private/AdvancedSessions.cpp (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Private/AdvancedSessionsLibrary.cpp (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Private/AdvancedVoiceLibrary.cpp (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Private/CancelFindSessionsCallbackProxy.cpp (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Private/CreateSessionCallbackProxyAdvanced.cpp (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Private/EndSessionCallbackProxy.cpp (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Private/FindFriendSessionCallbackProxy.cpp (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Private/FindSessionsCallbackProxyAdvanced.cpp (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Private/GetFriendsCallbackProxy.cpp (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Private/GetRecentPlayersCallbackProxy.cpp (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Private/GetUserPrivilegeCallbackProxy.cpp (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Private/LoginUserCallbackProxy.cpp (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Private/LogoutUserCallbackProxy.cpp (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Private/SendFriendInviteCallbackProxy.cpp (100%) rename {Source => AdvancedSessions/Source}/AdvancedSessions/Private/UpdateSessionCallbackProxyAdvanced.cpp (100%) create mode 100644 AdvancedSteamSessions/AdvancedSteamSessions.uplugin create mode 100644 AdvancedSteamSessions/Resources/Icon128.png create mode 100644 AdvancedSteamSessions/Source/AdvancedSteamSessions/AdvancedSteamSessions.Build.cs create mode 100644 AdvancedSteamSessions/Source/AdvancedSteamSessions/Classes/AdvancedSteamFriendsLibrary.h create mode 100644 AdvancedSteamSessions/Source/AdvancedSteamSessions/Classes/AdvancedSteamSessions.h rename {Source/AdvancedSessions/Classes/SteamFuncs => AdvancedSteamSessions/Source/AdvancedSteamSessions/Classes}/AdvancedSteamWorkshopLibrary.h (100%) rename {Source/AdvancedSessions/Classes/SteamFuncs => AdvancedSteamSessions/Source/AdvancedSteamSessions/Classes}/SteamWSRequestUGCDetailsCallbackProxy.h (100%) create mode 100644 AdvancedSteamSessions/Source/AdvancedSteamSessions/Private/AdvancedSteamFriendsLibrary.cpp create mode 100644 AdvancedSteamSessions/Source/AdvancedSteamSessions/Private/AdvancedSteamSessions.cpp rename {Source/AdvancedSessions/Private/SteamFuncs => AdvancedSteamSessions/Source/AdvancedSteamSessions/Private}/AdvancedSteamWorkshopLibrary.cpp (93%) rename {Source/AdvancedSessions/Private/SteamFuncs => AdvancedSteamSessions/Source/AdvancedSteamSessions/Private}/SteamWSRequestUGCDetailsCallbackProxy.cpp (95%) diff --git a/AdvancedSessions.uplugin b/AdvancedSessions/AdvancedSessions.uplugin similarity index 100% rename from AdvancedSessions.uplugin rename to AdvancedSessions/AdvancedSessions.uplugin diff --git a/Resources/Icon128.png b/AdvancedSessions/Resources/Icon128.png similarity index 100% rename from Resources/Icon128.png rename to AdvancedSessions/Resources/Icon128.png diff --git a/Source/AdvancedSessions/AdvancedSessions.Build.cs b/AdvancedSessions/Source/AdvancedSessions/AdvancedSessions.Build.cs similarity index 59% rename from Source/AdvancedSessions/AdvancedSessions.Build.cs rename to AdvancedSessions/Source/AdvancedSessions/AdvancedSessions.Build.cs index 3a64bda..8350802 100644 --- a/Source/AdvancedSessions/AdvancedSessions.Build.cs +++ b/AdvancedSessions/Source/AdvancedSessions/AdvancedSessions.Build.cs @@ -9,11 +9,5 @@ public class AdvancedSessions : ModuleRules PublicIncludePaths.AddRange(new string[] { "AdvancedSessions/Public" }); PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "OnlineSubsystem", "CoreUObject", "OnlineSubsystemUtils", "Networking", "Sockets"/*"Voice", "OnlineSubsystemSteam"*/ }); PrivateDependencyModuleNames.AddRange(new string[] { "OnlineSubsystem", "Sockets", "Networking", "OnlineSubsystemUtils" /*"Voice", "Steamworks","OnlineSubsystemSteam"*/}); - - if ((Target.Platform == UnrealTargetPlatform.Win64) || (Target.Platform == UnrealTargetPlatform.Win32) || (Target.Platform == UnrealTargetPlatform.Linux) || (Target.Platform == UnrealTargetPlatform.Mac)) - { - PublicDependencyModuleNames.AddRange(new string[] { "Steamworks",/*"Voice",*/ "OnlineSubsystemSteam" }); - PublicIncludePaths.AddRange(new string[] { "../Plugins/Online/OnlineSubsystemSteam/Source/Private" });// This is dumb but it isn't very open - } } } \ No newline at end of file diff --git a/Source/AdvancedSessions/Classes/AdvancedExternalUILibrary.h b/AdvancedSessions/Source/AdvancedSessions/Classes/AdvancedExternalUILibrary.h similarity index 100% rename from Source/AdvancedSessions/Classes/AdvancedExternalUILibrary.h rename to AdvancedSessions/Source/AdvancedSessions/Classes/AdvancedExternalUILibrary.h diff --git a/Source/AdvancedSessions/Classes/AdvancedFriendsGameInstance.h b/AdvancedSessions/Source/AdvancedSessions/Classes/AdvancedFriendsGameInstance.h similarity index 100% rename from Source/AdvancedSessions/Classes/AdvancedFriendsGameInstance.h rename to AdvancedSessions/Source/AdvancedSessions/Classes/AdvancedFriendsGameInstance.h diff --git a/Source/AdvancedSessions/Classes/AdvancedFriendsInterface.h b/AdvancedSessions/Source/AdvancedSessions/Classes/AdvancedFriendsInterface.h similarity index 100% rename from Source/AdvancedSessions/Classes/AdvancedFriendsInterface.h rename to AdvancedSessions/Source/AdvancedSessions/Classes/AdvancedFriendsInterface.h diff --git a/Source/AdvancedSessions/Classes/AdvancedFriendsLibrary.h b/AdvancedSessions/Source/AdvancedSessions/Classes/AdvancedFriendsLibrary.h similarity index 58% rename from Source/AdvancedSessions/Classes/AdvancedFriendsLibrary.h rename to AdvancedSessions/Source/AdvancedSessions/Classes/AdvancedFriendsLibrary.h index e8409d2..6c4dbf4 100644 --- a/Source/AdvancedSessions/Classes/AdvancedFriendsLibrary.h +++ b/AdvancedSessions/Source/AdvancedSessions/Classes/AdvancedFriendsLibrary.h @@ -20,15 +20,6 @@ //General Advanced Sessions Log DECLARE_LOG_CATEGORY_EXTERN(AdvancedFriendsLog, Log, All); -UENUM(Blueprintable) -enum class SteamAvatarSize : uint8 -{ - SteamAvatar_Small = 1, - SteamAvatar_Medium = 2, - SteamAvatar_Large = 3 -}; - - UCLASS() class UAdvancedFriendsLibrary : public UBlueprintFunctionLibrary { @@ -60,24 +51,4 @@ public: // Check if a UniqueNetId is a friend UFUNCTION(BlueprintPure, Category = "Online|AdvancedFriends|FriendsList") static void IsAFriend(APlayerController *PlayerController, const FBPUniqueNetId UniqueNetId, bool &IsFriend); - - // Get a texture of a valid friends avatar, STEAM ONLY, Returns invalid texture if the subsystem hasn't loaded that size of avatar yet - UFUNCTION(BlueprintCallable, Category = "Online|AdvancedFriends|SteamAPI", meta = (ExpandEnumAsExecs = "Result")) - static UTexture2D * GetSteamFriendAvatar(const FBPUniqueNetId UniqueNetId, EBlueprintAsyncResultSwitch &Result, SteamAvatarSize AvatarSize = SteamAvatarSize::SteamAvatar_Medium); - - // Preloads the avatar and name of a steam friend, return whether it is already available or not, STEAM ONLY, Takes time to actually load everything after this is called. - UFUNCTION(BlueprintCallable, Category = "Online|AdvancedFriends|SteamAPI") - static bool RequestSteamFriendInfo(const FBPUniqueNetId UniqueNetId, bool bRequireNameOnly = false); - - // Gets the level of a friends steam account, STEAM ONLY, Returns -1 if the steam level is not known, might need RequestSteamFriendInfo called first. - UFUNCTION(BlueprintCallable, Category = "Online|AdvancedFriends|SteamAPI") - static int32 GetFriendSteamLevel(const FBPUniqueNetId UniqueNetId); - - // Gets the persona name of a steam ID, STEAM ONLY, Returns empty if no result, might need RequestSteamFriendInfo called first. - UFUNCTION(BlueprintCallable, Category = "Online|AdvancedFriends|SteamAPI") - static FString GetSteamPersonaName(const FBPUniqueNetId UniqueNetId); - - // Creates a unique steam id directly from a string holding a uint64 value, useful for testing - UFUNCTION(BlueprintPure, Category = "Online|AdvancedFriends|SteamAPI") - static FBPUniqueNetId CreateSteamIDFromString(const FString SteamID64); }; diff --git a/Source/AdvancedSessions/Classes/AdvancedIdentityLibrary.h b/AdvancedSessions/Source/AdvancedSessions/Classes/AdvancedIdentityLibrary.h similarity index 100% rename from Source/AdvancedSessions/Classes/AdvancedIdentityLibrary.h rename to AdvancedSessions/Source/AdvancedSessions/Classes/AdvancedIdentityLibrary.h diff --git a/Source/AdvancedSessions/Classes/AdvancedSessions.h b/AdvancedSessions/Source/AdvancedSessions/Classes/AdvancedSessions.h similarity index 100% rename from Source/AdvancedSessions/Classes/AdvancedSessions.h rename to AdvancedSessions/Source/AdvancedSessions/Classes/AdvancedSessions.h diff --git a/Source/AdvancedSessions/Classes/AdvancedSessionsLibrary.h b/AdvancedSessions/Source/AdvancedSessions/Classes/AdvancedSessionsLibrary.h similarity index 100% rename from Source/AdvancedSessions/Classes/AdvancedSessionsLibrary.h rename to AdvancedSessions/Source/AdvancedSessions/Classes/AdvancedSessionsLibrary.h diff --git a/Source/AdvancedSessions/Classes/AdvancedVoiceLibrary.h b/AdvancedSessions/Source/AdvancedSessions/Classes/AdvancedVoiceLibrary.h similarity index 100% rename from Source/AdvancedSessions/Classes/AdvancedVoiceLibrary.h rename to AdvancedSessions/Source/AdvancedSessions/Classes/AdvancedVoiceLibrary.h diff --git a/Source/AdvancedSessions/Classes/BlueprintDataDefinitions.h b/AdvancedSessions/Source/AdvancedSessions/Classes/BlueprintDataDefinitions.h similarity index 100% rename from Source/AdvancedSessions/Classes/BlueprintDataDefinitions.h rename to AdvancedSessions/Source/AdvancedSessions/Classes/BlueprintDataDefinitions.h diff --git a/Source/AdvancedSessions/Classes/CancelFindSessionsCallbackProxy.h b/AdvancedSessions/Source/AdvancedSessions/Classes/CancelFindSessionsCallbackProxy.h similarity index 100% rename from Source/AdvancedSessions/Classes/CancelFindSessionsCallbackProxy.h rename to AdvancedSessions/Source/AdvancedSessions/Classes/CancelFindSessionsCallbackProxy.h diff --git a/Source/AdvancedSessions/Classes/CreateSessionCallbackProxyAdvanced.h b/AdvancedSessions/Source/AdvancedSessions/Classes/CreateSessionCallbackProxyAdvanced.h similarity index 100% rename from Source/AdvancedSessions/Classes/CreateSessionCallbackProxyAdvanced.h rename to AdvancedSessions/Source/AdvancedSessions/Classes/CreateSessionCallbackProxyAdvanced.h diff --git a/Source/AdvancedSessions/Classes/EndSessionCallbackProxy.h b/AdvancedSessions/Source/AdvancedSessions/Classes/EndSessionCallbackProxy.h similarity index 100% rename from Source/AdvancedSessions/Classes/EndSessionCallbackProxy.h rename to AdvancedSessions/Source/AdvancedSessions/Classes/EndSessionCallbackProxy.h diff --git a/Source/AdvancedSessions/Classes/FindFriendSessionCallbackProxy.h b/AdvancedSessions/Source/AdvancedSessions/Classes/FindFriendSessionCallbackProxy.h similarity index 100% rename from Source/AdvancedSessions/Classes/FindFriendSessionCallbackProxy.h rename to AdvancedSessions/Source/AdvancedSessions/Classes/FindFriendSessionCallbackProxy.h diff --git a/Source/AdvancedSessions/Classes/FindSessionsCallbackProxyAdvanced.h b/AdvancedSessions/Source/AdvancedSessions/Classes/FindSessionsCallbackProxyAdvanced.h similarity index 100% rename from Source/AdvancedSessions/Classes/FindSessionsCallbackProxyAdvanced.h rename to AdvancedSessions/Source/AdvancedSessions/Classes/FindSessionsCallbackProxyAdvanced.h diff --git a/Source/AdvancedSessions/Classes/GetFriendsCallbackProxy.h b/AdvancedSessions/Source/AdvancedSessions/Classes/GetFriendsCallbackProxy.h similarity index 100% rename from Source/AdvancedSessions/Classes/GetFriendsCallbackProxy.h rename to AdvancedSessions/Source/AdvancedSessions/Classes/GetFriendsCallbackProxy.h diff --git a/Source/AdvancedSessions/Classes/GetRecentPlayersCallbackProxy.h b/AdvancedSessions/Source/AdvancedSessions/Classes/GetRecentPlayersCallbackProxy.h similarity index 100% rename from Source/AdvancedSessions/Classes/GetRecentPlayersCallbackProxy.h rename to AdvancedSessions/Source/AdvancedSessions/Classes/GetRecentPlayersCallbackProxy.h diff --git a/Source/AdvancedSessions/Classes/GetUserPrivilegeCallbackProxy.h b/AdvancedSessions/Source/AdvancedSessions/Classes/GetUserPrivilegeCallbackProxy.h similarity index 100% rename from Source/AdvancedSessions/Classes/GetUserPrivilegeCallbackProxy.h rename to AdvancedSessions/Source/AdvancedSessions/Classes/GetUserPrivilegeCallbackProxy.h diff --git a/Source/AdvancedSessions/Classes/LoginUserCallbackProxy.h b/AdvancedSessions/Source/AdvancedSessions/Classes/LoginUserCallbackProxy.h similarity index 100% rename from Source/AdvancedSessions/Classes/LoginUserCallbackProxy.h rename to AdvancedSessions/Source/AdvancedSessions/Classes/LoginUserCallbackProxy.h diff --git a/Source/AdvancedSessions/Classes/LogoutUserCallbackProxy.h b/AdvancedSessions/Source/AdvancedSessions/Classes/LogoutUserCallbackProxy.h similarity index 100% rename from Source/AdvancedSessions/Classes/LogoutUserCallbackProxy.h rename to AdvancedSessions/Source/AdvancedSessions/Classes/LogoutUserCallbackProxy.h diff --git a/Source/AdvancedSessions/Classes/OnlineSubSystemHeader.h b/AdvancedSessions/Source/AdvancedSessions/Classes/OnlineSubSystemHeader.h similarity index 100% rename from Source/AdvancedSessions/Classes/OnlineSubSystemHeader.h rename to AdvancedSessions/Source/AdvancedSessions/Classes/OnlineSubSystemHeader.h diff --git a/Source/AdvancedSessions/Classes/SendFriendInviteCallbackProxy.h b/AdvancedSessions/Source/AdvancedSessions/Classes/SendFriendInviteCallbackProxy.h similarity index 100% rename from Source/AdvancedSessions/Classes/SendFriendInviteCallbackProxy.h rename to AdvancedSessions/Source/AdvancedSessions/Classes/SendFriendInviteCallbackProxy.h diff --git a/Source/AdvancedSessions/Classes/UpdateSessionCallbackProxyAdvanced.h b/AdvancedSessions/Source/AdvancedSessions/Classes/UpdateSessionCallbackProxyAdvanced.h similarity index 100% rename from Source/AdvancedSessions/Classes/UpdateSessionCallbackProxyAdvanced.h rename to AdvancedSessions/Source/AdvancedSessions/Classes/UpdateSessionCallbackProxyAdvanced.h diff --git a/Source/AdvancedSessions/Private/AdvancedExternalUILibrary.cpp b/AdvancedSessions/Source/AdvancedSessions/Private/AdvancedExternalUILibrary.cpp similarity index 100% rename from Source/AdvancedSessions/Private/AdvancedExternalUILibrary.cpp rename to AdvancedSessions/Source/AdvancedSessions/Private/AdvancedExternalUILibrary.cpp diff --git a/Source/AdvancedSessions/Private/AdvancedFriendsGameInstance.cpp b/AdvancedSessions/Source/AdvancedSessions/Private/AdvancedFriendsGameInstance.cpp similarity index 100% rename from Source/AdvancedSessions/Private/AdvancedFriendsGameInstance.cpp rename to AdvancedSessions/Source/AdvancedSessions/Private/AdvancedFriendsGameInstance.cpp diff --git a/Source/AdvancedSessions/Private/AdvancedFriendsInterface.cpp b/AdvancedSessions/Source/AdvancedSessions/Private/AdvancedFriendsInterface.cpp similarity index 100% rename from Source/AdvancedSessions/Private/AdvancedFriendsInterface.cpp rename to AdvancedSessions/Source/AdvancedSessions/Private/AdvancedFriendsInterface.cpp diff --git a/Source/AdvancedSessions/Private/AdvancedFriendsLibrary.cpp b/AdvancedSessions/Source/AdvancedSessions/Private/AdvancedFriendsLibrary.cpp similarity index 55% rename from Source/AdvancedSessions/Private/AdvancedFriendsLibrary.cpp rename to AdvancedSessions/Source/AdvancedSessions/Private/AdvancedFriendsLibrary.cpp index 9f0cb99..6053e74 100644 --- a/Source/AdvancedSessions/Private/AdvancedFriendsLibrary.cpp +++ b/AdvancedSessions/Source/AdvancedSessions/Private/AdvancedFriendsLibrary.cpp @@ -5,222 +5,9 @@ // This is taken directly from UE4 - OnlineSubsystemSteamPrivatePCH.h as a fix for the array_count macro -// @todo Steam: Steam headers trigger secure-C-runtime warnings in Visual C++. Rather than mess with _CRT_SECURE_NO_WARNINGS, we'll just -// disable the warnings locally. Remove when this is fixed in the SDK -#ifdef _MSC_VER -#pragma warning(push) -#pragma warning(disable:4996) -#endif - -#if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX - -#pragma push_macro("ARRAY_COUNT") -#undef ARRAY_COUNT - -#include -#include - -#pragma pop_macro("ARRAY_COUNT") - -#endif - -// @todo Steam: See above -#ifdef _MSC_VER -#pragma warning(pop) -#endif - //General Log DEFINE_LOG_CATEGORY(AdvancedFriendsLog); - -int32 UAdvancedFriendsLibrary::GetFriendSteamLevel(const FBPUniqueNetId UniqueNetId) -{ - -#if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX - if (!UniqueNetId.IsValid() || !UniqueNetId.UniqueNetId->IsValid()) - { - UE_LOG(AdvancedFriendsLog, Warning, TEXT("IsAFriend Had a bad UniqueNetId!")); - return 0; - } - - if (SteamAPI_Init()) - { - uint64 id = *((uint64*)UniqueNetId.UniqueNetId->GetBytes()); - - return SteamFriends()->GetFriendSteamLevel(id); - } -#endif - - return 0; - - -} - -FString UAdvancedFriendsLibrary::GetSteamPersonaName(const FBPUniqueNetId UniqueNetId) -{ - -#if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX - if (!UniqueNetId.IsValid() || !UniqueNetId.UniqueNetId->IsValid()) - { - UE_LOG(AdvancedFriendsLog, Warning, TEXT("GetSteamPersonaName Had a bad UniqueNetId!")); - return FString(TEXT("")); - } - - if (SteamAPI_Init()) - { - uint64 id = *((uint64*)UniqueNetId.UniqueNetId->GetBytes()); - const char* PersonaName = SteamFriends()->GetFriendPersonaName(id); - return FString(UTF8_TO_TCHAR(PersonaName)); - } -#endif - - return FString(TEXT("")); -} - -FBPUniqueNetId UAdvancedFriendsLibrary::CreateSteamIDFromString(const FString SteamID64) -{ - FBPUniqueNetId netId; - -#if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX - if (!(SteamID64.Len() > 0)) - { - UE_LOG(AdvancedFriendsLog, Warning, TEXT("CreateSteamIDFromString Had a bad UniqueNetId!")); - return netId; - } - - if (SteamAPI_Init()) - { - // Already does the conversion - TSharedPtr ValueID(new const FUniqueNetIdSteam(SteamID64)); - //FCString::Atoi64(*SteamID64)); - - netId.SetUniqueNetId(ValueID); - return netId; - } -#endif - - return netId; -} - -bool UAdvancedFriendsLibrary::RequestSteamFriendInfo(const FBPUniqueNetId UniqueNetId, bool bRequireNameOnly) -{ -#if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX - if (!UniqueNetId.IsValid() || !UniqueNetId.UniqueNetId->IsValid()) - { - UE_LOG(AdvancedFriendsLog, Warning, TEXT("RequestSteamFriendInfo Had a bad UniqueNetId!")); - return false; - } - - if (SteamAPI_Init()) - { - uint64 id = *((uint64*)UniqueNetId.UniqueNetId->GetBytes()); - - return !SteamFriends()->RequestUserInformation(id, bRequireNameOnly); - } -#endif - - UE_LOG(AdvancedFriendsLog, Warning, TEXT("RequestSteamFriendInfo Couldn't init steamAPI!")); - return false; -} - -UTexture2D * UAdvancedFriendsLibrary::GetSteamFriendAvatar(const FBPUniqueNetId UniqueNetId, EBlueprintAsyncResultSwitch &Result, SteamAvatarSize AvatarSize) -{ -#if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX - if (!UniqueNetId.IsValid() || !UniqueNetId.UniqueNetId->IsValid()) - { - UE_LOG(AdvancedFriendsLog, Warning, TEXT("GetSteamFriendAvatar Had a bad UniqueNetId!")); - Result = EBlueprintAsyncResultSwitch::OnFailure; - return nullptr; - } - - uint32 Width = 0; - uint32 Height = 0; - - if (SteamAPI_Init()) - { - //Getting the PictureID from the SteamAPI and getting the Size with the ID - //virtual bool RequestUserInformation( CSteamID steamIDUser, bool bRequireNameOnly ) = 0; - - - uint64 id = *((uint64*)UniqueNetId.UniqueNetId->GetBytes()); - int Picture = 0; - - switch(AvatarSize) - { - case SteamAvatarSize::SteamAvatar_Small: Picture = SteamFriends()->GetSmallFriendAvatar(id); break; - case SteamAvatarSize::SteamAvatar_Medium: Picture = SteamFriends()->GetMediumFriendAvatar(id); break; - case SteamAvatarSize::SteamAvatar_Large: Picture = SteamFriends()->GetLargeFriendAvatar(id); break; - default: break; - } - - if (Picture == -1) - { - Result = EBlueprintAsyncResultSwitch::AsyncLoading; - return NULL; - } - - SteamUtils()->GetImageSize(Picture, &Width, &Height); - - // STOLEN FROM ANSWERHUB :p, then fixed because answerhub wasn't releasing the memory O.o - // Also fixed image pixel format and switched to a memcpy instead of manual iteration. - // At some point I should probably reply to that answerhub post with these fixes to prevent people killing their games..... - - if (Width > 0 && Height > 0) - { - //Creating the buffer "oAvatarRGBA" and then filling it with the RGBA Stream from the Steam Avatar - uint8 *oAvatarRGBA = new uint8[Width * Height * 4]; - - - //Filling the buffer with the RGBA Stream from the Steam Avatar and creating a UTextur2D to parse the RGBA Steam in - SteamUtils()->GetImageRGBA(Picture, (uint8*)oAvatarRGBA, 4 * Height * Width * sizeof(char)); - - - // Removed as I changed the image bit code to be RGB, I think the original author was unaware that there were different pixel formats - /* - //Swap R and B channels because for some reason the games whack - for (uint32 i = 0; i < (Width * Height * 4); i += 4) - { - uint8 Temp = oAvatarRGBA[i + 0]; - oAvatarRGBA[i + 0] = oAvatarRGBA[i + 2]; - oAvatarRGBA[i + 2] = Temp; - }*/ - - UTexture2D* Avatar = UTexture2D::CreateTransient(Width, Height, PF_R8G8B8A8); - - // Switched to a Memcpy instead of byte by byte transer - uint8* MipData = (uint8*)Avatar->PlatformData->Mips[0].BulkData.Lock(LOCK_READ_WRITE); - FMemory::Memcpy(MipData, (void*)oAvatarRGBA, Height * Width * 4); - Avatar->PlatformData->Mips[0].BulkData.Unlock(); - - // Original implementation was missing this!! - // the hell man...... - delete[] oAvatarRGBA; - - //Setting some Parameters for the Texture and finally returning it - Avatar->PlatformData->NumSlices = 1; - Avatar->NeverStream = true; - //Avatar->CompressionSettings = TC_EditorIcon; - - Avatar->UpdateResource(); - - Result = EBlueprintAsyncResultSwitch::OnSuccess; - return Avatar; - } - else - { - UE_LOG(AdvancedFriendsLog, Warning, TEXT("Bad Height / Width with steam avatar!")); - } - - Result = EBlueprintAsyncResultSwitch::OnFailure; - return nullptr; - } -#endif - - UE_LOG(AdvancedFriendsLog, Warning, TEXT("STEAM Couldn't be verified as initialized")); - Result = EBlueprintAsyncResultSwitch::OnFailure; - return nullptr; -} - void UAdvancedFriendsLibrary::SendSessionInviteToFriends(APlayerController *PlayerController, const TArray &Friends, EBlueprintResultSwitch &Result) { if (!PlayerController) diff --git a/Source/AdvancedSessions/Private/AdvancedIdentityLibrary.cpp b/AdvancedSessions/Source/AdvancedSessions/Private/AdvancedIdentityLibrary.cpp similarity index 100% rename from Source/AdvancedSessions/Private/AdvancedIdentityLibrary.cpp rename to AdvancedSessions/Source/AdvancedSessions/Private/AdvancedIdentityLibrary.cpp diff --git a/Source/AdvancedSessions/Private/AdvancedSessions.cpp b/AdvancedSessions/Source/AdvancedSessions/Private/AdvancedSessions.cpp similarity index 100% rename from Source/AdvancedSessions/Private/AdvancedSessions.cpp rename to AdvancedSessions/Source/AdvancedSessions/Private/AdvancedSessions.cpp diff --git a/Source/AdvancedSessions/Private/AdvancedSessionsLibrary.cpp b/AdvancedSessions/Source/AdvancedSessions/Private/AdvancedSessionsLibrary.cpp similarity index 100% rename from Source/AdvancedSessions/Private/AdvancedSessionsLibrary.cpp rename to AdvancedSessions/Source/AdvancedSessions/Private/AdvancedSessionsLibrary.cpp diff --git a/Source/AdvancedSessions/Private/AdvancedVoiceLibrary.cpp b/AdvancedSessions/Source/AdvancedSessions/Private/AdvancedVoiceLibrary.cpp similarity index 100% rename from Source/AdvancedSessions/Private/AdvancedVoiceLibrary.cpp rename to AdvancedSessions/Source/AdvancedSessions/Private/AdvancedVoiceLibrary.cpp diff --git a/Source/AdvancedSessions/Private/CancelFindSessionsCallbackProxy.cpp b/AdvancedSessions/Source/AdvancedSessions/Private/CancelFindSessionsCallbackProxy.cpp similarity index 100% rename from Source/AdvancedSessions/Private/CancelFindSessionsCallbackProxy.cpp rename to AdvancedSessions/Source/AdvancedSessions/Private/CancelFindSessionsCallbackProxy.cpp diff --git a/Source/AdvancedSessions/Private/CreateSessionCallbackProxyAdvanced.cpp b/AdvancedSessions/Source/AdvancedSessions/Private/CreateSessionCallbackProxyAdvanced.cpp similarity index 100% rename from Source/AdvancedSessions/Private/CreateSessionCallbackProxyAdvanced.cpp rename to AdvancedSessions/Source/AdvancedSessions/Private/CreateSessionCallbackProxyAdvanced.cpp diff --git a/Source/AdvancedSessions/Private/EndSessionCallbackProxy.cpp b/AdvancedSessions/Source/AdvancedSessions/Private/EndSessionCallbackProxy.cpp similarity index 100% rename from Source/AdvancedSessions/Private/EndSessionCallbackProxy.cpp rename to AdvancedSessions/Source/AdvancedSessions/Private/EndSessionCallbackProxy.cpp diff --git a/Source/AdvancedSessions/Private/FindFriendSessionCallbackProxy.cpp b/AdvancedSessions/Source/AdvancedSessions/Private/FindFriendSessionCallbackProxy.cpp similarity index 100% rename from Source/AdvancedSessions/Private/FindFriendSessionCallbackProxy.cpp rename to AdvancedSessions/Source/AdvancedSessions/Private/FindFriendSessionCallbackProxy.cpp diff --git a/Source/AdvancedSessions/Private/FindSessionsCallbackProxyAdvanced.cpp b/AdvancedSessions/Source/AdvancedSessions/Private/FindSessionsCallbackProxyAdvanced.cpp similarity index 100% rename from Source/AdvancedSessions/Private/FindSessionsCallbackProxyAdvanced.cpp rename to AdvancedSessions/Source/AdvancedSessions/Private/FindSessionsCallbackProxyAdvanced.cpp diff --git a/Source/AdvancedSessions/Private/GetFriendsCallbackProxy.cpp b/AdvancedSessions/Source/AdvancedSessions/Private/GetFriendsCallbackProxy.cpp similarity index 100% rename from Source/AdvancedSessions/Private/GetFriendsCallbackProxy.cpp rename to AdvancedSessions/Source/AdvancedSessions/Private/GetFriendsCallbackProxy.cpp diff --git a/Source/AdvancedSessions/Private/GetRecentPlayersCallbackProxy.cpp b/AdvancedSessions/Source/AdvancedSessions/Private/GetRecentPlayersCallbackProxy.cpp similarity index 100% rename from Source/AdvancedSessions/Private/GetRecentPlayersCallbackProxy.cpp rename to AdvancedSessions/Source/AdvancedSessions/Private/GetRecentPlayersCallbackProxy.cpp diff --git a/Source/AdvancedSessions/Private/GetUserPrivilegeCallbackProxy.cpp b/AdvancedSessions/Source/AdvancedSessions/Private/GetUserPrivilegeCallbackProxy.cpp similarity index 100% rename from Source/AdvancedSessions/Private/GetUserPrivilegeCallbackProxy.cpp rename to AdvancedSessions/Source/AdvancedSessions/Private/GetUserPrivilegeCallbackProxy.cpp diff --git a/Source/AdvancedSessions/Private/LoginUserCallbackProxy.cpp b/AdvancedSessions/Source/AdvancedSessions/Private/LoginUserCallbackProxy.cpp similarity index 100% rename from Source/AdvancedSessions/Private/LoginUserCallbackProxy.cpp rename to AdvancedSessions/Source/AdvancedSessions/Private/LoginUserCallbackProxy.cpp diff --git a/Source/AdvancedSessions/Private/LogoutUserCallbackProxy.cpp b/AdvancedSessions/Source/AdvancedSessions/Private/LogoutUserCallbackProxy.cpp similarity index 100% rename from Source/AdvancedSessions/Private/LogoutUserCallbackProxy.cpp rename to AdvancedSessions/Source/AdvancedSessions/Private/LogoutUserCallbackProxy.cpp diff --git a/Source/AdvancedSessions/Private/SendFriendInviteCallbackProxy.cpp b/AdvancedSessions/Source/AdvancedSessions/Private/SendFriendInviteCallbackProxy.cpp similarity index 100% rename from Source/AdvancedSessions/Private/SendFriendInviteCallbackProxy.cpp rename to AdvancedSessions/Source/AdvancedSessions/Private/SendFriendInviteCallbackProxy.cpp diff --git a/Source/AdvancedSessions/Private/UpdateSessionCallbackProxyAdvanced.cpp b/AdvancedSessions/Source/AdvancedSessions/Private/UpdateSessionCallbackProxyAdvanced.cpp similarity index 100% rename from Source/AdvancedSessions/Private/UpdateSessionCallbackProxyAdvanced.cpp rename to AdvancedSessions/Source/AdvancedSessions/Private/UpdateSessionCallbackProxyAdvanced.cpp diff --git a/AdvancedSteamSessions/AdvancedSteamSessions.uplugin b/AdvancedSteamSessions/AdvancedSteamSessions.uplugin new file mode 100644 index 0000000..ea60849 --- /dev/null +++ b/AdvancedSteamSessions/AdvancedSteamSessions.uplugin @@ -0,0 +1,21 @@ +{ + "FileVersion" : 3, + + "FriendlyName" : "Advanced Steam Sessions", + "Version" : 1.9, + "VersionName": "1.9", + "EngineVersion" : 1579795, + "Description" : "Adds new blueprint functions to handle more advanced session operations in Steam. REQUIRES ADVANCED SESSIONS", + "Category" : "Advanced Sessions Plugin", + "CreatedBy" : "Joshua Statzer", + "CreatedByURL" : "N/A", + + "Modules" : + [ + { + "Name" : "AdvancedSteamSessions", + "Type" : "RunTime", + "LoadingPhase" : "PreDefault" + } + ] +} \ No newline at end of file diff --git a/AdvancedSteamSessions/Resources/Icon128.png b/AdvancedSteamSessions/Resources/Icon128.png new file mode 100644 index 0000000000000000000000000000000000000000..c7bbea3291204e6c531e4329e400395f446d7b89 GIT binary patch literal 5879 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 G3;Q2z`8k&W literal 0 HcmV?d00001 diff --git a/AdvancedSteamSessions/Source/AdvancedSteamSessions/AdvancedSteamSessions.Build.cs b/AdvancedSteamSessions/Source/AdvancedSteamSessions/AdvancedSteamSessions.Build.cs new file mode 100644 index 0000000..b870c63 --- /dev/null +++ b/AdvancedSteamSessions/Source/AdvancedSteamSessions/AdvancedSteamSessions.Build.cs @@ -0,0 +1,17 @@ +using UnrealBuildTool; +using System.IO; + +public class AdvancedSteamSessions : ModuleRules +{ + public AdvancedSteamSessions(TargetInfo Target) + { + PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "OnlineSubsystem", "CoreUObject", "OnlineSubsystemUtils", "Networking", "Sockets", "AdvancedSessions"/*"Voice", "OnlineSubsystemSteam"*/ }); + PrivateDependencyModuleNames.AddRange(new string[] { "OnlineSubsystem", "Sockets", "Networking", "OnlineSubsystemUtils" /*"Voice", "Steamworks","OnlineSubsystemSteam"*/}); + + if ((Target.Platform == UnrealTargetPlatform.Win64) || (Target.Platform == UnrealTargetPlatform.Win32) || (Target.Platform == UnrealTargetPlatform.Linux) || (Target.Platform == UnrealTargetPlatform.Mac)) + { + PublicDependencyModuleNames.AddRange(new string[] { "Steamworks",/*"Voice",*/ "OnlineSubsystemSteam" }); + PublicIncludePaths.AddRange(new string[] { "../Plugins/Online/OnlineSubsystemSteam/Source/Private" });// This is dumb but it isn't very open + } + } +} \ No newline at end of file diff --git a/AdvancedSteamSessions/Source/AdvancedSteamSessions/Classes/AdvancedSteamFriendsLibrary.h b/AdvancedSteamSessions/Source/AdvancedSteamSessions/Classes/AdvancedSteamFriendsLibrary.h new file mode 100644 index 0000000..6d99591 --- /dev/null +++ b/AdvancedSteamSessions/Source/AdvancedSteamSessions/Classes/AdvancedSteamFriendsLibrary.h @@ -0,0 +1,59 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once +#include "OnlineSubSystemHeader.h" +#include "Kismet/BlueprintFunctionLibrary.h" +#include "Online.h" +#include "OnlineSubsystem.h" +#include "OnlineFriendsInterface.h" +#include "OnlineUserInterface.h" +#include "OnlineMessageInterface.h" +#include "OnlinePresenceInterface.h" +#include "Engine/GameInstance.h" +#include "OnlineSessionInterface.h" + +#include "UObjectIterator.h" + +#include "AdvancedSteamFriendsLibrary.generated.h" + + +//General Advanced Sessions Log +DECLARE_LOG_CATEGORY_EXTERN(AdvancedSteamFriendsLog, Log, All); + +UENUM(Blueprintable) +enum class SteamAvatarSize : uint8 +{ + SteamAvatar_Small = 1, + SteamAvatar_Medium = 2, + SteamAvatar_Large = 3 +}; + + +UCLASS() +class UAdvancedSteamFriendsLibrary : public UBlueprintFunctionLibrary +{ + GENERATED_BODY() +public: + + //********* Friend List Functions *************// + + // Get a texture of a valid friends avatar, STEAM ONLY, Returns invalid texture if the subsystem hasn't loaded that size of avatar yet + UFUNCTION(BlueprintCallable, Category = "Online|AdvancedFriends|SteamAPI", meta = (ExpandEnumAsExecs = "Result")) + static UTexture2D * GetSteamFriendAvatar(const FBPUniqueNetId UniqueNetId, EBlueprintAsyncResultSwitch &Result, SteamAvatarSize AvatarSize = SteamAvatarSize::SteamAvatar_Medium); + + // Preloads the avatar and name of a steam friend, return whether it is already available or not, STEAM ONLY, Takes time to actually load everything after this is called. + UFUNCTION(BlueprintCallable, Category = "Online|AdvancedFriends|SteamAPI") + static bool RequestSteamFriendInfo(const FBPUniqueNetId UniqueNetId, bool bRequireNameOnly = false); + + // Gets the level of a friends steam account, STEAM ONLY, Returns -1 if the steam level is not known, might need RequestSteamFriendInfo called first. + UFUNCTION(BlueprintCallable, Category = "Online|AdvancedFriends|SteamAPI") + static int32 GetFriendSteamLevel(const FBPUniqueNetId UniqueNetId); + + // Gets the persona name of a steam ID, STEAM ONLY, Returns empty if no result, might need RequestSteamFriendInfo called first. + UFUNCTION(BlueprintCallable, Category = "Online|AdvancedFriends|SteamAPI") + static FString GetSteamPersonaName(const FBPUniqueNetId UniqueNetId); + + // Creates a unique steam id directly from a string holding a uint64 value, useful for testing + UFUNCTION(BlueprintPure, Category = "Online|AdvancedFriends|SteamAPI") + static FBPUniqueNetId CreateSteamIDFromString(const FString SteamID64); +}; diff --git a/AdvancedSteamSessions/Source/AdvancedSteamSessions/Classes/AdvancedSteamSessions.h b/AdvancedSteamSessions/Source/AdvancedSteamSessions/Classes/AdvancedSteamSessions.h new file mode 100644 index 0000000..7442f25 --- /dev/null +++ b/AdvancedSteamSessions/Source/AdvancedSteamSessions/Classes/AdvancedSteamSessions.h @@ -0,0 +1,12 @@ +#pragma once + +#include "OnlineSubSystemHeader.h" +#include "ModuleManager.h" + +class AdvancedSteamSessions : public IModuleInterface +{ +public: + /** IModuleInterface implementation */ + void StartupModule(); + void ShutdownModule(); +}; \ No newline at end of file diff --git a/Source/AdvancedSessions/Classes/SteamFuncs/AdvancedSteamWorkshopLibrary.h b/AdvancedSteamSessions/Source/AdvancedSteamSessions/Classes/AdvancedSteamWorkshopLibrary.h similarity index 100% rename from Source/AdvancedSessions/Classes/SteamFuncs/AdvancedSteamWorkshopLibrary.h rename to AdvancedSteamSessions/Source/AdvancedSteamSessions/Classes/AdvancedSteamWorkshopLibrary.h diff --git a/Source/AdvancedSessions/Classes/SteamFuncs/SteamWSRequestUGCDetailsCallbackProxy.h b/AdvancedSteamSessions/Source/AdvancedSteamSessions/Classes/SteamWSRequestUGCDetailsCallbackProxy.h similarity index 100% rename from Source/AdvancedSessions/Classes/SteamFuncs/SteamWSRequestUGCDetailsCallbackProxy.h rename to AdvancedSteamSessions/Source/AdvancedSteamSessions/Classes/SteamWSRequestUGCDetailsCallbackProxy.h diff --git a/AdvancedSteamSessions/Source/AdvancedSteamSessions/Private/AdvancedSteamFriendsLibrary.cpp b/AdvancedSteamSessions/Source/AdvancedSteamSessions/Private/AdvancedSteamFriendsLibrary.cpp new file mode 100644 index 0000000..07feb69 --- /dev/null +++ b/AdvancedSteamSessions/Source/AdvancedSteamSessions/Private/AdvancedSteamFriendsLibrary.cpp @@ -0,0 +1,221 @@ +// Fill out your copyright notice in the Description page of Project Settings. +#include "OnlineSubSystemHeader.h" +#include "AdvancedSteamFriendsLibrary.h" + + +// This is taken directly from UE4 - OnlineSubsystemSteamPrivatePCH.h as a fix for the array_count macro + +// @todo Steam: Steam headers trigger secure-C-runtime warnings in Visual C++. Rather than mess with _CRT_SECURE_NO_WARNINGS, we'll just +// disable the warnings locally. Remove when this is fixed in the SDK +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning(disable:4996) +#endif + +#if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX + +#pragma push_macro("ARRAY_COUNT") +#undef ARRAY_COUNT + +#include +#include +#pragma pop_macro("ARRAY_COUNT") + +#endif + +// @todo Steam: See above +#ifdef _MSC_VER +#pragma warning(pop) +#endif + +//General Log +DEFINE_LOG_CATEGORY(AdvancedSteamFriendsLog); + + +int32 UAdvancedSteamFriendsLibrary::GetFriendSteamLevel(const FBPUniqueNetId UniqueNetId) +{ + +#if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX + if (!UniqueNetId.IsValid() || !UniqueNetId.UniqueNetId->IsValid()) + { + UE_LOG(AdvancedSteamFriendsLog, Warning, TEXT("IsAFriend Had a bad UniqueNetId!")); + return 0; + } + + if (SteamAPI_Init()) + { + uint64 id = *((uint64*)UniqueNetId.UniqueNetId->GetBytes()); + + return SteamFriends()->GetFriendSteamLevel(id); + } +#endif + + return 0; + + +} + +FString UAdvancedSteamFriendsLibrary::GetSteamPersonaName(const FBPUniqueNetId UniqueNetId) +{ + +#if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX + if (!UniqueNetId.IsValid() || !UniqueNetId.UniqueNetId->IsValid()) + { + UE_LOG(AdvancedSteamFriendsLog, Warning, TEXT("GetSteamPersonaName Had a bad UniqueNetId!")); + return FString(TEXT("")); + } + + if (SteamAPI_Init()) + { + uint64 id = *((uint64*)UniqueNetId.UniqueNetId->GetBytes()); + const char* PersonaName = SteamFriends()->GetFriendPersonaName(id); + return FString(UTF8_TO_TCHAR(PersonaName)); + } +#endif + + return FString(TEXT("")); +} + +FBPUniqueNetId UAdvancedSteamFriendsLibrary::CreateSteamIDFromString(const FString SteamID64) +{ + FBPUniqueNetId netId; + +#if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX + if (!(SteamID64.Len() > 0)) + { + UE_LOG(AdvancedSteamFriendsLog, Warning, TEXT("CreateSteamIDFromString Had a bad UniqueNetId!")); + return netId; + } + + if (SteamAPI_Init()) + { + // Already does the conversion + TSharedPtr ValueID(new const FUniqueNetIdSteam(SteamID64)); + //FCString::Atoi64(*SteamID64)); + + netId.SetUniqueNetId(ValueID); + return netId; + } +#endif + + return netId; +} + +bool UAdvancedSteamFriendsLibrary::RequestSteamFriendInfo(const FBPUniqueNetId UniqueNetId, bool bRequireNameOnly) +{ +#if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX + if (!UniqueNetId.IsValid() || !UniqueNetId.UniqueNetId->IsValid()) + { + UE_LOG(AdvancedSteamFriendsLog, Warning, TEXT("RequestSteamFriendInfo Had a bad UniqueNetId!")); + return false; + } + + if (SteamAPI_Init()) + { + uint64 id = *((uint64*)UniqueNetId.UniqueNetId->GetBytes()); + + return !SteamFriends()->RequestUserInformation(id, bRequireNameOnly); + } +#endif + + UE_LOG(AdvancedSteamFriendsLog, Warning, TEXT("RequestSteamFriendInfo Couldn't init steamAPI!")); + return false; +} + +UTexture2D * UAdvancedSteamFriendsLibrary::GetSteamFriendAvatar(const FBPUniqueNetId UniqueNetId, EBlueprintAsyncResultSwitch &Result, SteamAvatarSize AvatarSize) +{ +#if PLATFORM_WINDOWS || PLATFORM_MAC || PLATFORM_LINUX + if (!UniqueNetId.IsValid() || !UniqueNetId.UniqueNetId->IsValid()) + { + UE_LOG(AdvancedSteamFriendsLog, Warning, TEXT("GetSteamFriendAvatar Had a bad UniqueNetId!")); + Result = EBlueprintAsyncResultSwitch::OnFailure; + return nullptr; + } + + uint32 Width = 0; + uint32 Height = 0; + + if (SteamAPI_Init()) + { + //Getting the PictureID from the SteamAPI and getting the Size with the ID + //virtual bool RequestUserInformation( CSteamID steamIDUser, bool bRequireNameOnly ) = 0; + + + uint64 id = *((uint64*)UniqueNetId.UniqueNetId->GetBytes()); + int Picture = 0; + + switch(AvatarSize) + { + case SteamAvatarSize::SteamAvatar_Small: Picture = SteamFriends()->GetSmallFriendAvatar(id); break; + case SteamAvatarSize::SteamAvatar_Medium: Picture = SteamFriends()->GetMediumFriendAvatar(id); break; + case SteamAvatarSize::SteamAvatar_Large: Picture = SteamFriends()->GetLargeFriendAvatar(id); break; + default: break; + } + + if (Picture == -1) + { + Result = EBlueprintAsyncResultSwitch::AsyncLoading; + return NULL; + } + + SteamUtils()->GetImageSize(Picture, &Width, &Height); + + // STOLEN FROM ANSWERHUB :p, then fixed because answerhub wasn't releasing the memory O.o + // Also fixed image pixel format and switched to a memcpy instead of manual iteration. + // At some point I should probably reply to that answerhub post with these fixes to prevent people killing their games..... + + if (Width > 0 && Height > 0) + { + //Creating the buffer "oAvatarRGBA" and then filling it with the RGBA Stream from the Steam Avatar + uint8 *oAvatarRGBA = new uint8[Width * Height * 4]; + + + //Filling the buffer with the RGBA Stream from the Steam Avatar and creating a UTextur2D to parse the RGBA Steam in + SteamUtils()->GetImageRGBA(Picture, (uint8*)oAvatarRGBA, 4 * Height * Width * sizeof(char)); + + + // Removed as I changed the image bit code to be RGB, I think the original author was unaware that there were different pixel formats + /* + //Swap R and B channels because for some reason the games whack + for (uint32 i = 0; i < (Width * Height * 4); i += 4) + { + uint8 Temp = oAvatarRGBA[i + 0]; + oAvatarRGBA[i + 0] = oAvatarRGBA[i + 2]; + oAvatarRGBA[i + 2] = Temp; + }*/ + + UTexture2D* Avatar = UTexture2D::CreateTransient(Width, Height, PF_R8G8B8A8); + + // Switched to a Memcpy instead of byte by byte transer + uint8* MipData = (uint8*)Avatar->PlatformData->Mips[0].BulkData.Lock(LOCK_READ_WRITE); + FMemory::Memcpy(MipData, (void*)oAvatarRGBA, Height * Width * 4); + Avatar->PlatformData->Mips[0].BulkData.Unlock(); + + // Original implementation was missing this!! + // the hell man...... + delete[] oAvatarRGBA; + + //Setting some Parameters for the Texture and finally returning it + Avatar->PlatformData->NumSlices = 1; + Avatar->NeverStream = true; + //Avatar->CompressionSettings = TC_EditorIcon; + + Avatar->UpdateResource(); + + Result = EBlueprintAsyncResultSwitch::OnSuccess; + return Avatar; + } + else + { + UE_LOG(AdvancedSteamFriendsLog, Warning, TEXT("Bad Height / Width with steam avatar!")); + } + + Result = EBlueprintAsyncResultSwitch::OnFailure; + return nullptr; + } +#endif + + UE_LOG(AdvancedSteamFriendsLog, Warning, TEXT("STEAM Couldn't be verified as initialized")); + Result = EBlueprintAsyncResultSwitch::OnFailure; + return nullptr; +} \ No newline at end of file diff --git a/AdvancedSteamSessions/Source/AdvancedSteamSessions/Private/AdvancedSteamSessions.cpp b/AdvancedSteamSessions/Source/AdvancedSteamSessions/Private/AdvancedSteamSessions.cpp new file mode 100644 index 0000000..3bda518 --- /dev/null +++ b/AdvancedSteamSessions/Source/AdvancedSteamSessions/Private/AdvancedSteamSessions.cpp @@ -0,0 +1,13 @@ +//#include "StandAlonePrivatePCH.h" +#include "OnlineSubSystemHeader.h" +#include "AdvancedSteamSessions.h" + +void AdvancedSteamSessions::StartupModule() +{ +} + +void AdvancedSteamSessions::ShutdownModule() +{ +} + +IMPLEMENT_MODULE(AdvancedSteamSessions, AdvancedSteamSessions) \ No newline at end of file diff --git a/Source/AdvancedSessions/Private/SteamFuncs/AdvancedSteamWorkshopLibrary.cpp b/AdvancedSteamSessions/Source/AdvancedSteamSessions/Private/AdvancedSteamWorkshopLibrary.cpp similarity index 93% rename from Source/AdvancedSessions/Private/SteamFuncs/AdvancedSteamWorkshopLibrary.cpp rename to AdvancedSteamSessions/Source/AdvancedSteamSessions/Private/AdvancedSteamWorkshopLibrary.cpp index 8e0b1c2..dde3d34 100644 --- a/Source/AdvancedSessions/Private/SteamFuncs/AdvancedSteamWorkshopLibrary.cpp +++ b/AdvancedSteamSessions/Source/AdvancedSteamSessions/Private/AdvancedSteamWorkshopLibrary.cpp @@ -1,6 +1,6 @@ // Fill out your copyright notice in the Description page of Project Settings. #include "OnlineSubSystemHeader.h" -#include "SteamFuncs/AdvancedSteamWorkshopLibrary.h" +#include "AdvancedSteamWorkshopLibrary.h" //General Log DEFINE_LOG_CATEGORY(AdvancedSteamWorkshopLog); diff --git a/Source/AdvancedSessions/Private/SteamFuncs/SteamWSRequestUGCDetailsCallbackProxy.cpp b/AdvancedSteamSessions/Source/AdvancedSteamSessions/Private/SteamWSRequestUGCDetailsCallbackProxy.cpp similarity index 95% rename from Source/AdvancedSessions/Private/SteamFuncs/SteamWSRequestUGCDetailsCallbackProxy.cpp rename to AdvancedSteamSessions/Source/AdvancedSteamSessions/Private/SteamWSRequestUGCDetailsCallbackProxy.cpp index 241d541..ea8e620 100644 --- a/Source/AdvancedSessions/Private/SteamFuncs/SteamWSRequestUGCDetailsCallbackProxy.cpp +++ b/AdvancedSteamSessions/Source/AdvancedSteamSessions/Private/SteamWSRequestUGCDetailsCallbackProxy.cpp @@ -1,7 +1,7 @@ // Copyright 1998-2015 Epic Games, Inc. All Rights Reserved. #include "OnlineSubSystemHeader.h" -#include "SteamFuncs/SteamWSRequestUGCDetailsCallbackProxy.h" +#include "SteamWSRequestUGCDetailsCallbackProxy.h" ////////////////////////////////////////////////////////////////////////// // UEndSessionCallbackProxy