From 4d01f587e4f6a940cdcdee4fbfdb217909af5569 Mon Sep 17 00:00:00 2001 From: mrhid6 Date: Wed, 13 Nov 2024 16:23:45 +0000 Subject: [PATCH] feat: cleanup ds data asset --- .../Subsystems/RRDADataAssetSubsystem.cpp | 294 +++++++++--------- .../DataAssets/RRDADataAssetDSAdapterCovers.h | 4 +- .../Subsystems/RRDADataAssetSubsystem.h | 82 +++-- 3 files changed, 206 insertions(+), 174 deletions(-) diff --git a/Source/RefinedRDApi/Private/Subsystems/RRDADataAssetSubsystem.cpp b/Source/RefinedRDApi/Private/Subsystems/RRDADataAssetSubsystem.cpp index 654c390..c11e0d5 100644 --- a/Source/RefinedRDApi/Private/Subsystems/RRDADataAssetSubsystem.cpp +++ b/Source/RefinedRDApi/Private/Subsystems/RRDADataAssetSubsystem.cpp @@ -13,29 +13,25 @@ URRDADataAssetSubsystem::URRDADataAssetSubsystem() {} -URRDADataAssetSubsystem* URRDADataAssetSubsystem::Get(UObject* Context) -{ - if (IsValid(Context)) - { +URRDADataAssetSubsystem* URRDADataAssetSubsystem::Get(UObject* Context) { + if (IsValid(Context)) { return Context->GetWorld()->GetGameInstance()->GetSubsystem(); } return nullptr; } -URRDADataAssetSubsystem* URRDADataAssetSubsystem::GetChecked(UObject* Context) -{ +URRDADataAssetSubsystem* URRDADataAssetSubsystem::GetChecked(UObject* Context) { URRDADataAssetSubsystem* Subsystem = Get(Context); fgcheck(Subsystem); return Subsystem; } -void URRDADataAssetSubsystem::Initialize(FSubsystemCollectionBase& Collection) -{ +void URRDADataAssetSubsystem::Initialize(FSubsystemCollectionBase& Collection) { Super::Initialize(Collection); FAssetRegistryModule& AssetRegistryModule = FModuleManager::LoadModuleChecked(FName("AssetRegistry")); IAssetRegistry& AssetRegistry = AssetRegistryModule.Get(); - + // Must wait until all assets are discovered before populating list of assets. if (AssetRegistry.IsLoadingAssets()) { AssetRegistry.OnFilesLoaded().AddUObject(this, &URRDADataAssetSubsystem::StartScanForDataAssets); @@ -45,8 +41,7 @@ void URRDADataAssetSubsystem::Initialize(FSubsystemCollectionBase& Collection) } } -void URRDADataAssetSubsystem::Deinitialize() -{ +void URRDADataAssetSubsystem::Deinitialize() { Super::Deinitialize(); mEnabledDataAssets.Empty(); @@ -57,11 +52,10 @@ void URRDADataAssetSubsystem::Deinitialize() mCoolerAssets.Empty(); mHeaterAssets.Empty(); mGeneratorAssets.Empty(); - mDSModAdapterAssets.Empty(); + mDSBuildingData.Empty(); } -void URRDADataAssetSubsystem::StartScanForDataAssets() -{ +void URRDADataAssetSubsystem::StartScanForDataAssets() { mDisabledDataAssets.Empty(); mEnabledDataAssets.Empty(); @@ -71,34 +65,31 @@ void URRDADataAssetSubsystem::StartScanForDataAssets() ReCacheHeaterDataAssets(); ReCacheTurbineDataAssets(); ReCacheGeneratorDataAssets(); + + mDSBuildingData.Empty(); ReCacheDSModAdapterDataAssets(); + ReCacheDSAdapterCoversDataAssets(); } -void URRDADataAssetSubsystem::ReCacheDirtDataAssets() -{ +void URRDADataAssetSubsystem::ReCacheDirtDataAssets() { mDirtAssets.Empty(); TSet DataAssets; - if(FindAllDataAssetsOfClass(DataAssets)) - { - for (URRDADirtDataAsset* DataAsset : DataAssets) - { + if (FindAllDataAssetsOfClass(DataAssets)) { + for (URRDADirtDataAsset* DataAsset : DataAssets) { mDirtAssets.Add(DataAsset->mItem, DataAsset); } } UE_LOG(LogRRDApi, Log, TEXT("ReCacheDirtDataAssets: %d"), mDirtAssets.Num()); } -void URRDADataAssetSubsystem::ReCacheTurbineDataAssets() -{ +void URRDADataAssetSubsystem::ReCacheTurbineDataAssets() { mTurbineAssets.Empty(); TSet DataAssets; int32 Added = 0; - if(FindAllDataAssetsOfClass(DataAssets)) - { - for (URRDATurbineDataAsset* DataAsset : DataAssets) - { - if(!mTurbineAssets.Contains(DataAsset->mTier)) { - mTurbineAssets.Add(DataAsset->mTier, FRRDADataHolderTurbineData()); + if (FindAllDataAssetsOfClass(DataAssets)) { + for (URRDATurbineDataAsset* DataAsset : DataAssets) { + if (!mTurbineAssets.Contains(DataAsset->mTier)) { + mTurbineAssets.Add(DataAsset->mTier, FRRDADataHolderTurbineData()); } fgcheckf(DataAsset->mItem.ItemClass, TEXT("TurbineDataAsset %s has no ItemClass"), *DataAsset->GetPathName()); @@ -107,7 +98,7 @@ void URRDADataAssetSubsystem::ReCacheTurbineDataAssets() Added++; } } - + UE_LOG(LogRRDApi, Log, TEXT("ReCacheTurbineDataAssets: %d"), Added); } @@ -115,12 +106,10 @@ void URRDADataAssetSubsystem::ReCacheBoilerDataAssets() { mBoilerAssets.Empty(); TSet DataAssets; int32 Added = 0; - if(FindAllDataAssetsOfClass(DataAssets)) - { - for (URRDABoilerDataAsset* DataAsset : DataAssets) - { - if(!mBoilerAssets.Contains(DataAsset->mTier)) { - mBoilerAssets.Add(DataAsset->mTier, FRRDADataHolderBoilerData()); + if (FindAllDataAssetsOfClass(DataAssets)) { + for (URRDABoilerDataAsset* DataAsset : DataAssets) { + if (!mBoilerAssets.Contains(DataAsset->mTier)) { + mBoilerAssets.Add(DataAsset->mTier, FRRDADataHolderBoilerData()); } fgcheckf(DataAsset->mInput.ItemClass, TEXT("BoilerDataAsset %s has no ItemClass"), *DataAsset->GetPathName()); @@ -129,7 +118,7 @@ void URRDADataAssetSubsystem::ReCacheBoilerDataAssets() { Added++; } } - + UE_LOG(LogRRDApi, Log, TEXT("ReCacheBoilerDataAssets: %d"), Added); } @@ -137,12 +126,10 @@ void URRDADataAssetSubsystem::ReCacheCoolerDataAssets() { mCoolerAssets.Empty(); TSet DataAssets; int32 Added = 0; - if(FindAllDataAssetsOfClass(DataAssets)) - { - for (URRDACoolerDataAsset* DataAsset : DataAssets) - { - if(!mCoolerAssets.Contains(DataAsset->mType)) { - mCoolerAssets.Add(DataAsset->mType, FRRDADataHolderCoolerData()); + if (FindAllDataAssetsOfClass(DataAssets)) { + for (URRDACoolerDataAsset* DataAsset : DataAssets) { + if (!mCoolerAssets.Contains(DataAsset->mType)) { + mCoolerAssets.Add(DataAsset->mType, FRRDADataHolderCoolerData()); } fgcheckf(DataAsset->mItem, TEXT("CoolerDataAsset %s has no ItemClass"), *DataAsset->GetPathName()); @@ -151,7 +138,7 @@ void URRDADataAssetSubsystem::ReCacheCoolerDataAssets() { Added++; } } - + UE_LOG(LogRRDApi, Log, TEXT("ReCacheCoolerDataAssets: %d"), Added); } @@ -159,66 +146,82 @@ void URRDADataAssetSubsystem::ReCacheHeaterDataAssets() { mHeaterAssets.Empty(); TSet DataAssets; int32 Added = 0; - if(FindAllDataAssetsOfClass(DataAssets)) - { - for (URRDAHeaterDataAsset* DataAsset : DataAssets) - { - if(!mHeaterAssets.Contains(DataAsset->mType)) { - mHeaterAssets.Add(DataAsset->mType, FRRDADataHolderHeaterData()); + if (FindAllDataAssetsOfClass(DataAssets)) { + for (URRDAHeaterDataAsset* DataAsset : DataAssets) { + if (!mHeaterAssets.Contains(DataAsset->mType)) { + mHeaterAssets.Add(DataAsset->mType, FRRDADataHolderHeaterData()); } - + fgcheckf(DataAsset->mInput.ItemClass, TEXT("HeaterDataAsset %s has no ItemClass"), *DataAsset->GetPathName()); mHeaterAssets[DataAsset->mType].Data.Add(DataAsset->mInput.ItemClass, DataAsset); Added++; } } - + UE_LOG(LogRRDApi, Log, TEXT("ReCacheHeaterDataAssets: %d"), Added); } -void URRDADataAssetSubsystem::ReCacheGeneratorDataAssets() -{ +void URRDADataAssetSubsystem::ReCacheGeneratorDataAssets() { mGeneratorAssets.Empty(); TSet DataAssets; - if(FindAllDataAssetsOfClass(DataAssets)) - { - for (URRDAGeneratorDataAsset* DataAsset : DataAssets) - { + if (FindAllDataAssetsOfClass(DataAssets)) { + for (URRDAGeneratorDataAsset* DataAsset : DataAssets) { mGeneratorAssets.Add(DataAsset->mTier, DataAsset); } } - + UE_LOG(LogRRDApi, Log, TEXT("ReCacheGeneratorDataAssets: %d"), mGeneratorAssets.Num()); } void URRDADataAssetSubsystem::ReCacheDSModAdapterDataAssets() { - mDSModAdapterAssets.Empty(); TSet DataAssets; - if(FindAllDataAssetsOfClass(DataAssets)) - { - for (URRDADataAssetDSModAdapter* DataAsset : DataAssets) - { - mDSModAdapterAssets.Add(DataAsset->mBuildingClass, DataAsset); + if (FindAllDataAssetsOfClass(DataAssets)) { + for (URRDADataAssetDSModAdapter* DataAsset : DataAssets) { + FRRDADataHolderDSBuildingData* existingData = mDSBuildingData.Find(DataAsset->mBuildingClass); + if (existingData == nullptr) { + FRRDADataHolderDSBuildingData newData = FRRDADataHolderDSBuildingData(); + newData.ModAdapter = DataAsset; + + mDSBuildingData.Add(DataAsset->mBuildingClass, newData); + } + else { + existingData->ModAdapter = DataAsset; + } } } - UE_LOGFMT(LogRRDApi, Log, "ReCacheDSModAdapterDataAssets: {0}", mDSModAdapterAssets.Num()); + UE_LOGFMT(LogRRDApi, Log, "ReCacheDSModAdapterDataAssets: {0}", mDSBuildingData.Num()); } -int32 URRDADataAssetSubsystem::GetAllDirtItems(TArray>& Items) const -{ - if(!mDirtAssets.Num()) - { +void URRDADataAssetSubsystem::ReCacheDSAdapterCoversDataAssets() { + TSet DataAssets; + if (FindAllDataAssetsOfClass(DataAssets)) { + for (URRDADataAssetDSAdapterCovers* DataAsset : DataAssets) { + FRRDADataHolderDSBuildingData* existingData = mDSBuildingData.Find(DataAsset->mBuildingClass); + if (existingData == nullptr) { + FRRDADataHolderDSBuildingData newData = FRRDADataHolderDSBuildingData(); + newData.AdapterCovers = DataAsset; + mDSBuildingData.Add(DataAsset->mBuildingClass, newData); + } + else { + existingData->AdapterCovers = DataAsset; + } + } + } + UE_LOGFMT(LogRRDApi, Log, "ReCacheDSAdapterCoversDataAssets: {0}", mDSBuildingData.Num()); +} + +int32 URRDADataAssetSubsystem::GetAllDirtItems(TArray>& Items) const { + if (!mDirtAssets.Num()) { UE_LOG(LogRRDApi, Error, TEXT("No Dirts found!")); } return mDirtAssets.GetKeys(Items); } -URRDADirtDataAsset* URRDADataAssetSubsystem::GetDataForDirtItem(TSubclassOf Item) const -{ - if(!Item) return nullptr; +URRDADirtDataAsset* URRDADataAssetSubsystem::GetDataForDirtItem(TSubclassOf Item) const { + if (!Item) return nullptr; URRDADirtDataAsset* const* Desc = mDirtAssets.Find(Item); - if(!Desc) return nullptr; + if (!Desc) return nullptr; return *Desc; } @@ -228,30 +231,63 @@ TArray URRDADataAssetSubsystem::GetAllDirtAssets() const { return Assets; } -int32 URRDADataAssetSubsystem::GetAllModAdapterBuildingClasses(TArray>& OutBuildingClasses) const { - if(!mDSModAdapterAssets.Num()) - { - UE_LOG(LogRRDApi, Error, TEXT("No Mod Adapter Assets found!")); +int32 URRDADataAssetSubsystem::GetAllDSBuildingClasses(TArray>& OutBuildingClasses) const { + if (!mDSBuildingData.Num()) { + UE_LOG(LogRRDApi, Error, TEXT("No DS Buildings found!")); } - return mDSModAdapterAssets.GetKeys(OutBuildingClasses); + return mDSBuildingData.GetKeys(OutBuildingClasses); } URRDADataAssetDSModAdapter* URRDADataAssetSubsystem::GetModAdapterDataAssetForBuildingClass(TSubclassOf BuildingClass) const { - if(!BuildingClass) return nullptr; - URRDADataAssetDSModAdapter* const* DataAsset = mDSModAdapterAssets.Find(BuildingClass); - if(!DataAsset) return nullptr; - return *DataAsset; + if (!BuildingClass) return nullptr; + + const FRRDADataHolderDSBuildingData* data = mDSBuildingData.Find(BuildingClass); + if (data == nullptr) return nullptr; + + URRDADataAssetDSModAdapter* DataAsset = data->ModAdapter; + if (!DataAsset) return nullptr; + + return DataAsset; } TArray URRDADataAssetSubsystem::GetAllModAdapterDataAssets() const { TArray Assets; - mDSModAdapterAssets.GenerateValueArray(Assets); + TArray buildingDatas; + + mDSBuildingData.GenerateValueArray(buildingDatas); + + for (FRRDADataHolderDSBuildingData& buildingData : buildingDatas) { + Assets.AddUnique(buildingData.ModAdapter); + } return Assets; } -bool URRDADataAssetSubsystem::GetAllTurbineItems(TArray>& Items, int32 Tier) const -{ - if(!mTurbineAssets.Contains(Tier)) { +URRDADataAssetDSAdapterCovers* URRDADataAssetSubsystem::GetDSAdapterCoverDataAssetForBuildingClass(TSubclassOf BuildingClass) const { + if (!BuildingClass) return nullptr; + + const FRRDADataHolderDSBuildingData* data = mDSBuildingData.Find(BuildingClass); + if (data == nullptr) return nullptr; + + URRDADataAssetDSAdapterCovers* DataAsset = data->AdapterCovers; + if (!DataAsset) return nullptr; + + return DataAsset; +} + +TArray URRDADataAssetSubsystem::GetAllDSAdapterCoverDataAssets() const { + TArray Assets; + TArray buildingDatas; + + mDSBuildingData.GenerateValueArray(buildingDatas); + + for (FRRDADataHolderDSBuildingData& buildingData : buildingDatas) { + Assets.AddUnique(buildingData.AdapterCovers); + } + return Assets; +} + +bool URRDADataAssetSubsystem::GetAllTurbineItems(TArray>& Items, int32 Tier) const { + if (!mTurbineAssets.Contains(Tier)) { return false; } @@ -263,10 +299,9 @@ bool URRDADataAssetSubsystem::GetAllTurbineItems(TArray>& Items, int32 Tier) const { Items.Empty(); - for (URRDATurbineDataAsset* Asset : GetAllTurbineAssets(Tier)) - { + for (URRDATurbineDataAsset* Asset : GetAllTurbineAssets(Tier)) { Items.AddUnique(Asset->mItem.ItemClass); - if(Asset->mWasteItem.ItemClass) { + if (Asset->mWasteItem.ItemClass) { Items.AddUnique(Asset->mWasteItem.ItemClass); } } @@ -274,7 +309,7 @@ bool URRDADataAssetSubsystem::GetAllTurbineRelevantItems(TArray URRDADataAssetSubsystem::GetAllTurbineAssets(int32 Tier) const { - if(!mTurbineAssets.Contains(Tier)) { + if (!mTurbineAssets.Contains(Tier)) { UE_LOG(LogRRDApi, Error, TEXT("No TurbineAssets found for Type: %d"), Tier); return TArray(); } @@ -288,9 +323,8 @@ URRDATurbineDataAsset* URRDADataAssetSubsystem::GetDefaultTurbineAsset(int32 Tie return GetAllTurbineAssets(Tier).Top(); } -URRDATurbineDataAsset* URRDADataAssetSubsystem::GetTurbineItemData(TSubclassOf Item, int32 Tier) const -{ - if(!mTurbineAssets.Contains(Tier)) { +URRDATurbineDataAsset* URRDADataAssetSubsystem::GetTurbineItemData(TSubclassOf Item, int32 Tier) const { + if (!mTurbineAssets.Contains(Tier)) { return nullptr; } @@ -298,9 +332,8 @@ URRDATurbineDataAsset* URRDADataAssetSubsystem::GetTurbineItemData(TSubclassOf>& Items, ERRDACoolerType Type) const -{ - if(!mCoolerAssets.Contains(Type)) return false; +bool URRDADataAssetSubsystem::GetAllCoolerItems(TArray>& Items, ERRDACoolerType Type) const { + if (!mCoolerAssets.Contains(Type)) return false; Items.Empty(); mCoolerAssets[Type].Data.GetKeys(Items); @@ -308,21 +341,17 @@ bool URRDADataAssetSubsystem::GetAllCoolerItems(TArray 0; } -URRDACoolerDataAsset* URRDADataAssetSubsystem::GetCoolerItemData(TSubclassOf Item, ERRDACoolerType Type) const -{ - if(!mCoolerAssets.Contains(Type)) return nullptr; +URRDACoolerDataAsset* URRDADataAssetSubsystem::GetCoolerItemData(TSubclassOf Item, ERRDACoolerType Type) const { + if (!mCoolerAssets.Contains(Type)) return nullptr; return mCoolerAssets[Type].Data.FindRef(Item); } -URRDACoolerDataAsset* URRDADataAssetSubsystem::GetDefaultCoolerAsset(ERRDACoolerType Type) const -{ +URRDACoolerDataAsset* URRDADataAssetSubsystem::GetDefaultCoolerAsset(ERRDACoolerType Type) const { return GetAllCoolerAssets(Type).Top(); } -TArray URRDADataAssetSubsystem::GetAllCoolerAssets(ERRDACoolerType Type) const -{ - if(!mCoolerAssets.Contains(Type)) - { +TArray URRDADataAssetSubsystem::GetAllCoolerAssets(ERRDACoolerType Type) const { + if (!mCoolerAssets.Contains(Type)) { UE_LOG(LogRRDApi, Error, TEXT("No CoolerAssets found for Type: %d"), Type); return TArray(); } @@ -335,47 +364,40 @@ TArray URRDADataAssetSubsystem::GetAllCoolerAssets(ERRDAC URRDAGeneratorDataAsset* URRDADataAssetSubsystem::GetGeneratorItemData(int32 Tier) const { UE_LOG(LogRRDApi, Log, TEXT("GetGeneratorItemData: %d"), Tier); - if(!mGeneratorAssets.Contains(Tier)) return nullptr; + if (!mGeneratorAssets.Contains(Tier)) return nullptr; return mGeneratorAssets.FindRef(Tier); } -bool URRDADataAssetSubsystem::GetAllBoilerItems(TArray>& Items, int32 Tier) const -{ - if(!mBoilerAssets.Contains(Tier)) return false; +bool URRDADataAssetSubsystem::GetAllBoilerItems(TArray>& Items, int32 Tier) const { + if (!mBoilerAssets.Contains(Tier)) return false; mBoilerAssets[Tier].Data.GetKeys(Items); return Items.Num() > 0; } -URRDABoilerDataAsset* URRDADataAssetSubsystem::GetBoilerItemData(TSubclassOf Item, int32 Tier) const -{ - if(!mBoilerAssets.Contains(Tier)) return nullptr; +URRDABoilerDataAsset* URRDADataAssetSubsystem::GetBoilerItemData(TSubclassOf Item, int32 Tier) const { + if (!mBoilerAssets.Contains(Tier)) return nullptr; return mBoilerAssets[Tier].Data.FindRef(Item); } -bool URRDADataAssetSubsystem::GetAllBoilerRelevantItems(TArray>& Items, int32 Tier) const -{ +bool URRDADataAssetSubsystem::GetAllBoilerRelevantItems(TArray>& Items, int32 Tier) const { Items.Empty(); - for (URRDABoilerDataAsset* Asset : GetAllBoilerAssets(Tier)) - { + for (URRDABoilerDataAsset* Asset : GetAllBoilerAssets(Tier)) { Items.AddUnique(Asset->mInput.ItemClass); - if(Asset->mOutput.ItemClass) { + if (Asset->mOutput.ItemClass) { Items.AddUnique(Asset->mOutput.ItemClass); } } return Items.Num() > 0; } -URRDABoilerDataAsset* URRDADataAssetSubsystem::GetDefaultBoilerAsset(int32 Tier) const -{ +URRDABoilerDataAsset* URRDADataAssetSubsystem::GetDefaultBoilerAsset(int32 Tier) const { return GetAllBoilerAssets(Tier).Top(); } -TArray URRDADataAssetSubsystem::GetAllBoilerAssets(int32 Tier) const -{ - if(!mBoilerAssets.Contains(Tier)) - { +TArray URRDADataAssetSubsystem::GetAllBoilerAssets(int32 Tier) const { + if (!mBoilerAssets.Contains(Tier)) { UE_LOG(LogRRDApi, Error, TEXT("No BoilerAssets found for Type: %d"), Tier); return TArray(); } @@ -387,42 +409,36 @@ TArray URRDADataAssetSubsystem::GetAllBoilerAssets(int32 } bool URRDADataAssetSubsystem::GetAllHeaterItems(TArray>& Items, ERRDAHeaterType Type) const { - if(!mHeaterAssets.Contains(Type)) return false; + if (!mHeaterAssets.Contains(Type)) return false; mHeaterAssets[Type].Data.GetKeys(Items); return Items.Num() > 0; } -URRDAHeaterDataAsset* URRDADataAssetSubsystem::GetHeaterItemData(TSubclassOf Item, ERRDAHeaterType Type) const -{ - if(!mHeaterAssets.Contains(Type)) return nullptr; +URRDAHeaterDataAsset* URRDADataAssetSubsystem::GetHeaterItemData(TSubclassOf Item, ERRDAHeaterType Type) const { + if (!mHeaterAssets.Contains(Type)) return nullptr; return mHeaterAssets[Type].Data.FindRef(Item); } -bool URRDADataAssetSubsystem::GetAllHeaterRelevantItems(TArray>& Items, ERRDAHeaterType Type) const -{ +bool URRDADataAssetSubsystem::GetAllHeaterRelevantItems(TArray>& Items, ERRDAHeaterType Type) const { Items.Empty(); - for (URRDAHeaterDataAsset* HeaterAsset : GetAllHeaterAssets(Type)) - { + for (URRDAHeaterDataAsset* HeaterAsset : GetAllHeaterAssets(Type)) { Items.AddUnique(HeaterAsset->mInput.ItemClass); - if(HeaterAsset->mOutput.ItemClass) { + if (HeaterAsset->mOutput.ItemClass) { Items.AddUnique(HeaterAsset->mOutput.ItemClass); } } return Items.Num() > 0; } -URRDAHeaterDataAsset* URRDADataAssetSubsystem::GetDefaultHeaterAsset(ERRDAHeaterType Type) const -{ +URRDAHeaterDataAsset* URRDADataAssetSubsystem::GetDefaultHeaterAsset(ERRDAHeaterType Type) const { return GetAllHeaterAssets(Type).Top(); } - -TArray URRDADataAssetSubsystem::GetAllHeaterAssets(ERRDAHeaterType Type) const -{ - if(!mHeaterAssets.Contains(Type)) - { + +TArray URRDADataAssetSubsystem::GetAllHeaterAssets(ERRDAHeaterType Type) const { + if (!mHeaterAssets.Contains(Type)) { UE_LOG(LogRRDApi, Error, TEXT("No HeaterAssets found for Type: %d"), Type); return TArray(); } diff --git a/Source/RefinedRDApi/Public/DataAssets/RRDADataAssetDSAdapterCovers.h b/Source/RefinedRDApi/Public/DataAssets/RRDADataAssetDSAdapterCovers.h index 3f5318b..86047d7 100644 --- a/Source/RefinedRDApi/Public/DataAssets/RRDADataAssetDSAdapterCovers.h +++ b/Source/RefinedRDApi/Public/DataAssets/RRDADataAssetDSAdapterCovers.h @@ -15,11 +15,11 @@ UCLASS() class REFINEDRDAPI_API URRDADataAssetDSAdapterCovers : public URRDADataAssetBase { GENERATED_BODY() -public: +public: /* The building class these adapter covers belongs to */ UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="AdapterCovers") - TSubclassOf mBuildableClass; + TSubclassOf mBuildingClass; /* An array of covers to place on the buildable connections */ UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="AdapterCovers") diff --git a/Source/RefinedRDApi/Public/Subsystems/RRDADataAssetSubsystem.h b/Source/RefinedRDApi/Public/Subsystems/RRDADataAssetSubsystem.h index 833b565..212eb48 100644 --- a/Source/RefinedRDApi/Public/Subsystems/RRDADataAssetSubsystem.h +++ b/Source/RefinedRDApi/Public/Subsystems/RRDADataAssetSubsystem.h @@ -56,6 +56,18 @@ struct FRRDADataHolderHeaterData TMap, URRDAHeaterDataAsset*> Data; }; +USTRUCT(BlueprintType) +struct FRRDADataHolderDSBuildingData +{ + GENERATED_BODY() + + UPROPERTY() + URRDADataAssetDSAdapterCovers* AdapterCovers; + + UPROPERTY() + URRDADataAssetDSModAdapter* ModAdapter; +}; + UCLASS() class REFINEDRDAPI_API URRDADataAssetSubsystem : public UGameInstanceSubsystem { @@ -85,12 +97,13 @@ public: void ReCacheHeaterDataAssets(); void ReCacheGeneratorDataAssets(); void ReCacheDSModAdapterDataAssets(); + void ReCacheDSAdapterCoversDataAssets(); public: // Dirt Functions UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|FF") int32 GetAllDirtItems(TArray>& Items) const; - + UFUNCTION(BlueprintCallable, Category = "RRDA|DataAsset|FF") URRDADirtDataAsset* GetDataForDirtItem(TSubclassOf Item) const; @@ -99,21 +112,28 @@ public: // DS Mod Adapter Functions UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|DS") - int32 GetAllModAdapterBuildingClasses(TArray>& OutBuildingClasses) const; - + int32 GetAllDSBuildingClasses(TArray>& OutBuildingClasses) const; + UFUNCTION(BlueprintCallable, Category = "RRDA|DataAsset|DS") URRDADataAssetDSModAdapter* GetModAdapterDataAssetForBuildingClass(TSubclassOf BuildingClass) const; UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|DS") TArray GetAllModAdapterDataAssets() const; + // DS Adapter Covers Functions + UFUNCTION(BlueprintCallable, Category = "RRDA|DataAsset|DS") + URRDADataAssetDSAdapterCovers* GetDSAdapterCoverDataAssetForBuildingClass(TSubclassOf BuildingClass) const; + + UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|DS") + TArray GetAllDSAdapterCoverDataAssets() const; + // Turbine Functions UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP") bool GetAllTurbineItems(TArray>& Items, int32 Tier) const; - + UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP") - URRDATurbineDataAsset* GetTurbineItemData(TSubclassOfItem, int32 Tier) const; - + URRDATurbineDataAsset* GetTurbineItemData(TSubclassOf Item, int32 Tier) const; + UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP") bool GetAllTurbineRelevantItems(TArray>& Items, int32 Tier) const; @@ -126,9 +146,9 @@ public: // Cooler Functions UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP") bool GetAllCoolerItems(TArray>& Items, ERRDACoolerType Type) const; - + UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP") - URRDACoolerDataAsset* GetCoolerItemData(TSubclassOfItem, ERRDACoolerType Type) const; + URRDACoolerDataAsset* GetCoolerItemData(TSubclassOf Item, ERRDACoolerType Type) const; UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP") URRDACoolerDataAsset* GetDefaultCoolerAsset(ERRDACoolerType Type) const; @@ -143,10 +163,10 @@ public: // Boiler Functions UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP") bool GetAllBoilerItems(TArray>& Items, int32 Tier) const; - + UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP") - URRDABoilerDataAsset* GetBoilerItemData(TSubclassOfItem, int32 Tier) const; - + URRDABoilerDataAsset* GetBoilerItemData(TSubclassOf Item, int32 Tier) const; + UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP") bool GetAllBoilerRelevantItems(TArray>& Items, int32 Tier) const; @@ -159,10 +179,10 @@ public: // Heater Functions UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP") bool GetAllHeaterItems(TArray>& Items, ERRDAHeaterType Type) const; - + UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP") - URRDAHeaterDataAsset* GetHeaterItemData(TSubclassOfItem, ERRDAHeaterType Type) const; - + URRDAHeaterDataAsset* GetHeaterItemData(TSubclassOf Item, ERRDAHeaterType Type) const; + UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP") bool GetAllHeaterRelevantItems(TArray>& Items, ERRDAHeaterType Type) const; @@ -178,7 +198,7 @@ public: * @param OutDataAssets - Set of data assets * @return true if found any data assets */ - template + template bool FindAllDataAssetsOfClass(TSet& OutDataAssets); public: @@ -186,20 +206,20 @@ public: TMap, URRDADirtDataAsset*> mDirtAssets; UPROPERTY(BlueprintReadOnly, Category = "RRDA|DataAsset") - TMap, URRDADataAssetDSModAdapter*> mDSModAdapterAssets; - + TMap, FRRDADataHolderDSBuildingData> mDSBuildingData; + UPROPERTY(BlueprintReadOnly, Category = "RRDA|DataAsset") TMap mGeneratorAssets; - + UPROPERTY(BlueprintReadOnly, Category = "RRDA|DataAsset") TMap mTurbineAssets; - + UPROPERTY(BlueprintReadOnly, Category = "RRDA|DataAsset") TMap mBoilerAssets; - + UPROPERTY(BlueprintReadOnly, Category = "RRDA|DataAsset") TMap mCoolerAssets; - + UPROPERTY(BlueprintReadOnly, Category = "RRDA|DataAsset") TMap mHeaterAssets; @@ -211,10 +231,9 @@ public: }; template -bool URRDADataAssetSubsystem::FindAllDataAssetsOfClass(TSet& OutDataAssets) -{ +bool URRDADataAssetSubsystem::FindAllDataAssetsOfClass(TSet& OutDataAssets) { OutDataAssets.Empty(); - + // Find list of all UStat, and USkill assets in Content Browser. FAssetRegistryModule& AssetRegistryModule = FModuleManager::LoadModuleChecked(FName("AssetRegistry")); IAssetRegistry& AssetRegistry = AssetRegistryModule.Get(); @@ -225,24 +244,21 @@ bool URRDADataAssetSubsystem::FindAllDataAssetsOfClass(TSet& OutDataAssets) // Split assets into separate arrays. for (const FAssetData& Asset : AssetList) { UObject* Obj = Asset.GetAsset(); - + T* CastedAsset = Cast(Obj); - if(!CastedAsset) - { + if (!CastedAsset) { UE_LOG(LogRRDApi, Warning, TEXT("Invalid asset type: %s"), *Asset.AssetName.ToString()); continue; } - if(URRDADataAssetBase* BaseAsset = Cast(Obj)) - { - if(URRDADataAssetBase::IsEnabled(BaseAsset, GetWorld())) - { + if (URRDADataAssetBase* BaseAsset = Cast(Obj)) { + if (URRDADataAssetBase::IsEnabled(BaseAsset, GetWorld())) { UE_LOG(LogRRDApi, Log, TEXT("Found %s"), *BaseAsset->GetPathName()); OutDataAssets.Add(CastedAsset); mEnabledDataAssets.Add(BaseAsset); continue; } - + UE_LOG(LogRRDApi, Warning, TEXT("Asset Disabled: %s"), *BaseAsset->GetPathName()); mDisabledDataAssets.Add(BaseAsset); } @@ -250,4 +266,4 @@ bool URRDADataAssetSubsystem::FindAllDataAssetsOfClass(TSet& OutDataAssets) UE_LOG(LogRRDApi, Warning, TEXT("Found %d of: %s"), OutDataAssets.Num(), *T::StaticClass()->GetPathName()); return OutDataAssets.Num() > 0; -} \ No newline at end of file +}