From 09ae2330b9f1886390ac68dbf2b2843c2f266cfd Mon Sep 17 00:00:00 2001 From: Oleg Petruny Date: Thu, 10 Jul 2025 22:17:27 +0200 Subject: [PATCH] complete --- ...Level3_ExperimentalRoom_CubeMeltEnd.uasset | 4 +- ...Level3_ExperimentalRoom_ElevatorEnd.uasset | 4 +- .../MaterialsLibrary/M_BlinkColor.uasset | 4 +- .../Content/UI/Blueprints/UI_CheatMenu.uasset | 4 +- .../Content/UI/Components/UIC_ComboBox.uasset | 4 +- .../Lost_Edge/Private/ContentLoader.cpp | 12 +++++- .../Source/Lost_Edge/Private/ContentLoader.h | 3 ++ .../Lost_Edge/Private/CustomGameInstance.cpp | 38 +++++++++++++++++++ .../Lost_Edge/Private/CustomGameInstance.h | 5 +++ 9 files changed, 67 insertions(+), 11 deletions(-) diff --git a/UnrealProject/Lost_Edge/Content/Levels/Level_3/Actors/ExperimentalRoom/BP_Level3_ExperimentalRoom_CubeMeltEnd.uasset b/UnrealProject/Lost_Edge/Content/Levels/Level_3/Actors/ExperimentalRoom/BP_Level3_ExperimentalRoom_CubeMeltEnd.uasset index f9cc307..ab4da16 100644 --- a/UnrealProject/Lost_Edge/Content/Levels/Level_3/Actors/ExperimentalRoom/BP_Level3_ExperimentalRoom_CubeMeltEnd.uasset +++ b/UnrealProject/Lost_Edge/Content/Levels/Level_3/Actors/ExperimentalRoom/BP_Level3_ExperimentalRoom_CubeMeltEnd.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3d6fba31183f32cf24675d4f71bee1a1cc9209dd6943520594f82d8a55d339b0 -size 45596 +oid sha256:cc71cb9e32c029f6f95931e45a8acad60cda41fadcc718658b492aa4086f0ce1 +size 43131 diff --git a/UnrealProject/Lost_Edge/Content/Levels/Level_3/Actors/ExperimentalRoom/BP_Level3_ExperimentalRoom_ElevatorEnd.uasset b/UnrealProject/Lost_Edge/Content/Levels/Level_3/Actors/ExperimentalRoom/BP_Level3_ExperimentalRoom_ElevatorEnd.uasset index a6453e6..5aac0a0 100644 --- a/UnrealProject/Lost_Edge/Content/Levels/Level_3/Actors/ExperimentalRoom/BP_Level3_ExperimentalRoom_ElevatorEnd.uasset +++ b/UnrealProject/Lost_Edge/Content/Levels/Level_3/Actors/ExperimentalRoom/BP_Level3_ExperimentalRoom_ElevatorEnd.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cc1b8d59db59bf8992a6e519a3e7697e3163b614a83a652e64adb3b0cc3b6945 -size 100297 +oid sha256:60d514b0020daed5c5afb3574376fa6ee6f37a6ce7395314e16b77972e7bc9ec +size 96891 diff --git a/UnrealProject/Lost_Edge/Content/MaterialsLibrary/M_BlinkColor.uasset b/UnrealProject/Lost_Edge/Content/MaterialsLibrary/M_BlinkColor.uasset index 99dd405..b95e559 100644 --- a/UnrealProject/Lost_Edge/Content/MaterialsLibrary/M_BlinkColor.uasset +++ b/UnrealProject/Lost_Edge/Content/MaterialsLibrary/M_BlinkColor.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a35193c74c97af5ae4c6b1dc24e64fb2db1589dcc59a7621c5fdc21dc161cb46 -size 15866 +oid sha256:165171b486a084333b230c983b1931b8270d30d41f72198f85f774ed3f9dea51 +size 16313 diff --git a/UnrealProject/Lost_Edge/Content/UI/Blueprints/UI_CheatMenu.uasset b/UnrealProject/Lost_Edge/Content/UI/Blueprints/UI_CheatMenu.uasset index 829ef2a..47f0e59 100644 --- a/UnrealProject/Lost_Edge/Content/UI/Blueprints/UI_CheatMenu.uasset +++ b/UnrealProject/Lost_Edge/Content/UI/Blueprints/UI_CheatMenu.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:584185bd79628dce07459d392a15f76bbcd15c49a3939ed0b52e37efc89e5da7 -size 108467 +oid sha256:9c23d118c9aa51dfb18a02aa675a76161268e4bcaed314d4f3cf2c9966da4221 +size 197051 diff --git a/UnrealProject/Lost_Edge/Content/UI/Components/UIC_ComboBox.uasset b/UnrealProject/Lost_Edge/Content/UI/Components/UIC_ComboBox.uasset index c344965..ce88df7 100644 --- a/UnrealProject/Lost_Edge/Content/UI/Components/UIC_ComboBox.uasset +++ b/UnrealProject/Lost_Edge/Content/UI/Components/UIC_ComboBox.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2b197def108a975d2b7ad81bfe618f246e50c1a9244aef38c5faace6223f6815 -size 203891 +oid sha256:2ec78da0d043e7360e94e96bd38f4e14aa4fa8d4a13bd9743585a49898202c83 +size 203180 diff --git a/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/ContentLoader.cpp b/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/ContentLoader.cpp index d0b2eec..32d4c40 100644 --- a/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/ContentLoader.cpp +++ b/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/ContentLoader.cpp @@ -96,6 +96,16 @@ FString UContentLoader::SelectContentByMethod(const TArray& content, co } } +void UContentLoader::TryConnectToServer(FContentDownloadedCallback result) +{ + FHttpRequestCompleteDelegate indexRequestCallback; + indexRequestCallback.BindLambda([=](FHttpRequestPtr request, FHttpResponsePtr response, bool successful) + { + result.ExecuteIfBound(!successful ? "" : "Connected"); + }); + HttpGet(pakIndexUrl, indexRequestCallback); +} + void UContentLoader::DownloadPak(FContentDownloadedCallback downloadedCallback, const FString& directory, const EContentDownloadMethod method) { const FString url = FString::Printf(TEXT("%s%s/"), pakIndexUrl, *directory); @@ -259,4 +269,4 @@ bool UContentLoader::UnloadPak(const FString& pakFilePath) FPackageName::UnRegisterMountPoint("/Game/", mountPoint); return true; -} \ No newline at end of file +} diff --git a/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/ContentLoader.h b/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/ContentLoader.h index cf65ecb..29c5964 100644 --- a/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/ContentLoader.h +++ b/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/ContentLoader.h @@ -26,6 +26,9 @@ class UContentLoader : public UGameInstanceSubsystem GENERATED_BODY() public: + UFUNCTION(BlueprintCallable, Category = "ContentLoader") + void TryConnectToServer(FContentDownloadedCallback result); + UFUNCTION(BlueprintCallable, Category = "ContentLoader") void DownloadPak(FContentDownloadedCallback downloadedCallback, const FString& directory = "", const EContentDownloadMethod method = EContentDownloadMethod::NonRepeatRandom); diff --git a/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/CustomGameInstance.cpp b/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/CustomGameInstance.cpp index 8c97f6a..31fcfbd 100644 --- a/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/CustomGameInstance.cpp +++ b/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/CustomGameInstance.cpp @@ -2,6 +2,7 @@ #include "CustomGameInstance.h" +#include "AssetRegistry/AssetRegistryModule.h" #include "Kismet/GameplayStatics.h" #include "Kismet/KismetSystemLibrary.h" @@ -40,6 +41,7 @@ void UCustomGameInstance::Init() else saveData = Cast(UGameplayStatics::CreateSaveGameObject(USaveData::StaticClass())); + (void)GetLevelsList(); //FCoreUObjectDelegates::PreLoadMap.AddLambda([&](const FString& mapName) // { // if(auto loadingScreen = FModuleManager::LoadModulePtr("LoadingScreen")) @@ -78,6 +80,42 @@ UObject* UCustomGameInstance::GetGlobalInstance(UClass* _class) return nullptr; } +TArray UCustomGameInstance::GetLevelsList() +{ +#if WITH_EDITOR + return {}; // to slow for editor, just use cmd or open a file +#else + static TArray result; + if(result.Num() > 0) + return result; + + FAssetRegistryModule& arm = FModuleManager::LoadModuleChecked("AssetRegistry"); + arm.Get().SearchAllAssets(true); + + FARFilter filter; + filter.ClassPaths.Add({ "/Script/Engine", "World" }); + filter.bRecursivePaths = true; + filter.PackagePaths.Add(FName("/Game/Levels")); + + TArray assets; + arm.Get().GetAssets(filter, assets); + + result.Reserve(assets.Num()); + for(auto& i : assets) + result.Add(static_cast(i.GetAsset())); + + return MoveTemp(result); +#endif +} + +UWorld* UCustomGameInstance::GetCurrentWorld() +{ + if(auto GI = Get()) + return GI->GetWorld(); + + return nullptr; +} + bool UCustomGameInstance::IsGameSaved() { if(auto GI = Get()) diff --git a/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/CustomGameInstance.h b/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/CustomGameInstance.h index 28f820b..d1d44c1 100644 --- a/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/CustomGameInstance.h +++ b/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/CustomGameInstance.h @@ -30,6 +30,11 @@ public: UFUNCTION(BlueprintPure) static UObject* GetGlobalInstance(UClass* _class); + UFUNCTION(BlueprintPure) + static TArray GetLevelsList(); + UFUNCTION(BlueprintPure) + static UWorld* GetCurrentWorld(); + /** Return true is save data are present and valid */ UFUNCTION(BlueprintPure) static bool IsGameSaved();