feat: Item filters
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
// Fill out your copyright notice in the Description page of Project Settings.
|
||||
|
||||
|
||||
#include "DataAssets/RRDADataAssetDSItemFilter.h"
|
||||
|
||||
@@ -67,6 +67,7 @@ void URRDADataAssetSubsystem::StartScanForDataAssets() {
|
||||
ReCacheGeneratorDataAssets();
|
||||
|
||||
mDSBuildingData.Empty();
|
||||
ReCacheDSItemFilters();
|
||||
ReCacheDSModAdapterDataAssets();
|
||||
ReCacheDSAdapterCoversDataAssets();
|
||||
}
|
||||
@@ -178,6 +179,8 @@ void URRDADataAssetSubsystem::ReCacheDSModAdapterDataAssets() {
|
||||
TSet<URRDADataAssetDSModAdapter*> DataAssets;
|
||||
if (FindAllDataAssetsOfClass(DataAssets)) {
|
||||
for (URRDADataAssetDSModAdapter* DataAsset : DataAssets) {
|
||||
if (DataAsset->mBuildingClass == nullptr) continue;
|
||||
|
||||
FRRDADataHolderDSBuildingData* existingData = mDSBuildingData.Find(DataAsset->mBuildingClass);
|
||||
if (existingData == nullptr) {
|
||||
FRRDADataHolderDSBuildingData newData = FRRDADataHolderDSBuildingData();
|
||||
@@ -197,6 +200,8 @@ void URRDADataAssetSubsystem::ReCacheDSAdapterCoversDataAssets() {
|
||||
TSet<URRDADataAssetDSAdapterCovers*> DataAssets;
|
||||
if (FindAllDataAssetsOfClass(DataAssets)) {
|
||||
for (URRDADataAssetDSAdapterCovers* DataAsset : DataAssets) {
|
||||
if (DataAsset->mBuildingClass == nullptr) continue;
|
||||
|
||||
FRRDADataHolderDSBuildingData* existingData = mDSBuildingData.Find(DataAsset->mBuildingClass);
|
||||
if (existingData == nullptr) {
|
||||
FRRDADataHolderDSBuildingData newData = FRRDADataHolderDSBuildingData();
|
||||
@@ -211,6 +216,26 @@ void URRDADataAssetSubsystem::ReCacheDSAdapterCoversDataAssets() {
|
||||
UE_LOGFMT(LogRRDApi, Log, "ReCacheDSAdapterCoversDataAssets: {0}", mDSBuildingData.Num());
|
||||
}
|
||||
|
||||
void URRDADataAssetSubsystem::ReCacheDSItemFilters() {
|
||||
TSet<URRDADataAssetDSItemFilter*> DataAssets;
|
||||
if (FindAllDataAssetsOfClass(DataAssets)) {
|
||||
for (URRDADataAssetDSItemFilter* DataAsset : DataAssets) {
|
||||
if (DataAsset->mBuildingClass == nullptr) continue;
|
||||
|
||||
FRRDADataHolderDSBuildingData* existingData = mDSBuildingData.Find(DataAsset->mBuildingClass);
|
||||
if (existingData == nullptr) {
|
||||
FRRDADataHolderDSBuildingData newData = FRRDADataHolderDSBuildingData();
|
||||
newData.ItemFilters.AddUnique(DataAsset);
|
||||
mDSBuildingData.Add(DataAsset->mBuildingClass, newData);
|
||||
}
|
||||
else {
|
||||
existingData->ItemFilters.AddUnique(DataAsset);
|
||||
}
|
||||
}
|
||||
}
|
||||
UE_LOGFMT(LogRRDApi, Log, "ReCacheDSItemFilters: {0}", mDSBuildingData.Num());
|
||||
}
|
||||
|
||||
int32 URRDADataAssetSubsystem::GetAllDirtItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items) const {
|
||||
if (!mDirtAssets.Num()) {
|
||||
UE_LOG(LogRRDApi, Error, TEXT("No Dirts found!"));
|
||||
@@ -308,6 +333,27 @@ bool URRDADataAssetSubsystem::HasDSAdaperCoversForBuildingClass(TSubclassOf<AFGB
|
||||
return IsValid(GetDSAdapterCoverDataAssetForBuildingClass(BuildingClass));
|
||||
}
|
||||
|
||||
TArray<URRDADataAssetDSItemFilter*> URRDADataAssetSubsystem::GetDSItemFiltersDataAssetsForBuildingClass(TSubclassOf<AFGBuildableFactory> BuildingClass) const {
|
||||
if (!BuildingClass) return TArray<URRDADataAssetDSItemFilter*>{};
|
||||
|
||||
const FRRDADataHolderDSBuildingData* data = mDSBuildingData.Find(BuildingClass);
|
||||
if (data == nullptr) return TArray<URRDADataAssetDSItemFilter*>{};
|
||||
|
||||
return data->ItemFilters;
|
||||
}
|
||||
|
||||
TArray<URRDADataAssetDSItemFilter*> URRDADataAssetSubsystem::GetAllDSItemFiltersDataAssets() const {
|
||||
TArray<URRDADataAssetDSItemFilter*> Assets;
|
||||
TArray<FRRDADataHolderDSBuildingData> buildingDatas;
|
||||
|
||||
mDSBuildingData.GenerateValueArray(buildingDatas);
|
||||
|
||||
for (FRRDADataHolderDSBuildingData& buildingData : buildingDatas) {
|
||||
Assets.Append(buildingData.ItemFilters);
|
||||
}
|
||||
return Assets;
|
||||
}
|
||||
|
||||
bool URRDADataAssetSubsystem::GetAllTurbineItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, int32 Tier) const {
|
||||
if (!mTurbineAssets.Contains(Tier)) {
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user