feat: functions for Turbine

This commit is contained in:
2024-10-27 12:42:17 +01:00
parent 4e1ea32b9d
commit ce944794dc
6 changed files with 195 additions and 6 deletions

View File

@@ -0,0 +1,3 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "DataAssets/RRDAGeneratorDataAsset.h"

View File

@@ -1,3 +1,11 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "DataAssets/RRDATurbineDataAsset.h"
#include "DataAssets/RRDATurbineDataAsset.h"
bool URRDATurbineDataAsset::IsEnabled_Internal(UObject* WorldContextObject) const
{
fgcheck(mTier > 0);
fgcheck(mRPMDrag > 0);
fgcheck(mMaxRPM > 0);
return Super::IsEnabled_Internal(WorldContextObject);
}

View File

@@ -6,6 +6,7 @@
#include "AssetRegistry/AssetRegistryModule.h"
#include "DataAssets/RRDABoilerDataAsset.h"
#include "DataAssets/RRDACoolerDataAsset.h"
#include "DataAssets/RRDAGeneratorDataAsset.h"
#include "DataAssets/RRDAHeaterDataAsset.h"
#include "DataAssets/RRDATurbineDataAsset.h"
@@ -69,6 +70,7 @@ void URRDADataAssetSubsystem::StartScanForDataAssets()
ReCacheDirtDataAssets();
ReCacheHeaterDataAssets();
ReCacheTurbineDataAssets();
ReCacheGeneratorDataAssets();
}
void URRDADataAssetSubsystem::ReCacheDirtDataAssets()
@@ -178,6 +180,21 @@ void URRDADataAssetSubsystem::ReCacheHeaterDataAssets() {
UE_LOG(LogRRDApi, Log, TEXT("ReCacheHeaterDataAssets: %d"), mTurbineAssets.Num());
}
void URRDADataAssetSubsystem::ReCacheGeneratorDataAssets()
{
mHeaterAssets.Empty();
TSet<URRDAGeneratorDataAsset*> DataAssets;
if(FindAllDataAssetsOfClass(DataAssets))
{
for (URRDAGeneratorDataAsset* DataAsset : DataAssets)
{
mGeneratorAssets.Add(DataAsset->mTier, DataAsset);
}
}
UE_LOG(LogRRDApi, Log, TEXT("ReCacheHeaterDataAssets: %d"), mTurbineAssets.Num());
}
int32 URRDADataAssetSubsystem::GetAllDirtItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items) const
{
return mDirtAssets.GetKeys(Items);
@@ -191,3 +208,69 @@ URRDADirtDataAsset* URRDADataAssetSubsystem::GetDataForDirtItem(TSubclassOf<UFGI
return *Desc;
}
TArray<URRDADirtDataAsset*> URRDADataAssetSubsystem::GetAllDirtAssets() const {
TArray<URRDADirtDataAsset*> Assets;
mDirtAssets.GenerateValueArray(Assets);
return Assets;
}
bool URRDADataAssetSubsystem::GetAllTurbineItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, int32 Tier) const
{
if(!mTurbineAssets.Contains(Tier)) {
return false;
}
Items.Empty();
mTurbineAssets[Tier].GetKeys(Items);
return true;
}
bool URRDADataAssetSubsystem::GetAllTurbineRelevantItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, int32 Tier) const {
if(!mTurbineAssets.Contains(Tier)) {
return false;
}
Items.Empty();
for (TTuple<TSubclassOf<UFGItemDescriptor>, URRDATurbineDataAsset*> TurbineAsset : mTurbineAssets[Tier])
{
Items.AddUnique(TurbineAsset.Key);
if(TurbineAsset.Value->mWasteItem.ItemClass) {
Items.AddUnique(TurbineAsset.Value->mWasteItem.ItemClass);
}
}
return true;
}
TArray<URRDATurbineDataAsset*> URRDADataAssetSubsystem::GetAllTurbineAssets(int32 Tier) const {
if(!mTurbineAssets.Contains(Tier)) {
return TArray<URRDATurbineDataAsset*>();
}
TArray<URRDATurbineDataAsset*> Assets;
mTurbineAssets[Tier].GenerateValueArray(Assets);
return Assets;
}
URRDATurbineDataAsset* URRDADataAssetSubsystem::GetDefaultTurbineAsset(int32 Tier) const {
if(!mTurbineAssets.Contains(Tier)) {
return nullptr;
}
TArray<URRDATurbineDataAsset*> Assets;
mTurbineAssets[Tier].GenerateValueArray(Assets);
// Return the first item in the tier
return Assets[0];
}
URRDATurbineDataAsset* URRDADataAssetSubsystem::GetTurbineItemData(TSubclassOf<UFGItemDescriptor> Item, int32 Tier) const
{
if(!mTurbineAssets.Contains(Tier)) {
return nullptr;
}
return mTurbineAssets[Tier].FindRef(Item);
}