From 39ecb1df11169333db7908050360ee0201859d86 Mon Sep 17 00:00:00 2001 From: mrhid6 Date: Wed, 7 May 2025 23:26:48 +0100 Subject: [PATCH] feat(SP): New buildings data assets --- .../DataAssets/RRDADataAssetSolarPower.cpp | 3 ++ .../Subsystems/RRDADataAssetSubsystem.cpp | 25 +++++++++++++++ .../DataAssets/RRDADataAssetSolarPower.h | 32 +++++++++++++++++++ .../Subsystems/RRDADataAssetSubsystem.h | 8 +++++ 4 files changed, 68 insertions(+) create mode 100644 Source/RefinedRDApi/Private/DataAssets/RRDADataAssetSolarPower.cpp create mode 100644 Source/RefinedRDApi/Public/DataAssets/RRDADataAssetSolarPower.h diff --git a/Source/RefinedRDApi/Private/DataAssets/RRDADataAssetSolarPower.cpp b/Source/RefinedRDApi/Private/DataAssets/RRDADataAssetSolarPower.cpp new file mode 100644 index 0000000..f62f42b --- /dev/null +++ b/Source/RefinedRDApi/Private/DataAssets/RRDADataAssetSolarPower.cpp @@ -0,0 +1,3 @@ +// + +#include "DataAssets/RRDADataAssetSolarPower.h" \ No newline at end of file diff --git a/Source/RefinedRDApi/Private/Subsystems/RRDADataAssetSubsystem.cpp b/Source/RefinedRDApi/Private/Subsystems/RRDADataAssetSubsystem.cpp index e16ba73..d21bc31 100644 --- a/Source/RefinedRDApi/Private/Subsystems/RRDADataAssetSubsystem.cpp +++ b/Source/RefinedRDApi/Private/Subsystems/RRDADataAssetSubsystem.cpp @@ -70,6 +70,8 @@ void URRDADataAssetSubsystem::StartScanForDataAssets() { ReCacheDSItemFilters(); ReCacheDSModAdapterDataAssets(); ReCacheDSAdapterCoversDataAssets(); + + ReCacheSolarPowerDataAssets(); } void URRDADataAssetSubsystem::ReCacheDirtDataAssets() { @@ -236,6 +238,24 @@ void URRDADataAssetSubsystem::ReCacheDSItemFilters() { UE_LOGFMT(LogRRDApi, Log, "ReCacheDSItemFilters: {0}", mDSBuildingData.Num()); } +void URRDADataAssetSubsystem::ReCacheSolarPowerDataAssets() +{ + mSolarPowerAssets.Empty(); + TSet DataAssets; + + if (FindAllDataAssetsOfClass(DataAssets)) { + for (URRDADataAssetSolarPower* DataAsset : DataAssets) { + fgcheckf(DataAsset->mInput.ItemClass, TEXT("SolarPowerDataAsset %s has no ItemClass"), *DataAsset->GetPathName()); + + if (!mSolarPowerAssets.Contains(DataAsset)) { + mSolarPowerAssets.AddUnique(DataAsset); + } + } + } + + UE_LOG(LogRRDApi, Log, TEXT("ReCacheSolarPowerDataAssets: %d"), mSolarPowerAssets.Num()); +} + int32 URRDADataAssetSubsystem::GetAllDirtItems(TArray>& Items) const { if (!mDirtAssets.Num()) { UE_LOG(LogRRDApi, Error, TEXT("No Dirts found!")); @@ -516,3 +536,8 @@ TArray URRDADataAssetSubsystem::GetAllHeaterAssets(ERRDAH return Assets; } + +TArray URRDADataAssetSubsystem::GetAllSolarPowerAssets() const +{ + return mSolarPowerAssets; +} diff --git a/Source/RefinedRDApi/Public/DataAssets/RRDADataAssetSolarPower.h b/Source/RefinedRDApi/Public/DataAssets/RRDADataAssetSolarPower.h new file mode 100644 index 0000000..73155d0 --- /dev/null +++ b/Source/RefinedRDApi/Public/DataAssets/RRDADataAssetSolarPower.h @@ -0,0 +1,32 @@ +#pragma once + +#include "CoreMinimal.h" +#include "RRDADataAssetBase.h" +#include "ItemAmount.h" + +#include "RRDADataAssetSolarPower.generated.h" + +UCLASS( BlueprintType ) +class REFINEDRDAPI_API URRDADataAssetSolarPower : public URRDADataAssetBase +{ + GENERATED_BODY() + +public: + /** + * Fuel item that this uses + */ + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "SolarPower") + FItemAmount mInput; + + /** + * What this produces + */ + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "SolarPower") + FItemAmount mOutput; + + /** + * What the min heat is needed to produce + */ + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "SolarPower") + float mMinHeatValue = 0.0f; +}; \ No newline at end of file diff --git a/Source/RefinedRDApi/Public/Subsystems/RRDADataAssetSubsystem.h b/Source/RefinedRDApi/Public/Subsystems/RRDADataAssetSubsystem.h index e9777ba..c6e4296 100644 --- a/Source/RefinedRDApi/Public/Subsystems/RRDADataAssetSubsystem.h +++ b/Source/RefinedRDApi/Public/Subsystems/RRDADataAssetSubsystem.h @@ -15,6 +15,7 @@ #include "DataAssets/RRDACoolerDataAsset.h" #include "DataAssets/RRDADataAssetDSItemFilter.h" #include "DataAssets/RRDADataAssetDSModAdapter.h" +#include "DataAssets/RRDADataAssetSolarPower.h" #include "Enums/RRDARPEnums.h" #include "Resources/FGItemDescriptor.h" @@ -103,6 +104,7 @@ public: void ReCacheDSModAdapterDataAssets(); void ReCacheDSAdapterCoversDataAssets(); void ReCacheDSItemFilters(); + void ReCacheSolarPowerDataAssets(); public: // Dirt Functions @@ -211,6 +213,9 @@ public: UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP") TArray GetAllHeaterAssets(ERRDAHeaterType Type) const; + UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|Solar") + TArray GetAllSolarPowerAssets() const; + public: /** * Find all data assets of a specific class @@ -242,6 +247,9 @@ public: UPROPERTY(BlueprintReadOnly, Category = "RRDA|DataAsset") TMap mHeaterAssets; + UPROPERTY(BlueprintReadOnly, Category = "RRDA|DataAsset") + TArray mSolarPowerAssets; + UPROPERTY(BlueprintReadOnly, Category = "RRDA|DataAsset") TSet mDisabledDataAssets;