3 Commits

Author SHA1 Message Date
mrhid6 f1b737439d Bump version to 1.0.2.
Mod Build / Setup (push) Successful in 3s
Mod Build / PullMods (RefinedRDApi) (push) Successful in 2s
Mod Build / UpdateUPlugins (RefinedRDApi) (push) Successful in 1s
Mod Build / CompileEditor (push) Successful in 3m28s
Mod Build / BuildMods (RefinedRDApi) (push) Successful in 8m11s
Mod Build / SMRDeploy (push) Successful in 30s
2024-11-29 10:23:22 +00:00
mrhid6 0d976de526 feat: Item filters 2024-11-27 13:15:40 +00:00
mrhid6 8e6378208c feat: Additional DS Options 2024-11-26 14:15:02 +00:00
8 changed files with 107 additions and 4 deletions
+4
View File
@@ -1,3 +1,7 @@
## 1.0.2 (November 29, 2024)
- feat: Item filters
- feat: Additional DS Options
## 1.0.1 (November 25, 2024)
+2 -2
View File
@@ -1,8 +1,8 @@
{
"FileVersion": 3,
"Version": 1,
"VersionName": "1.0.1",
"SemVersion": "1.0.1",
"VersionName": "1.0.2",
"SemVersion": "1.0.2",
"FriendlyName": "Refined R&D Api",
"Description": "This Lib can be used to create Mod Compatability with Refined R&D Mods",
"Category": "Modding",
@@ -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;
@@ -0,0 +1,31 @@
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "DataAssets/RRDADataAssetBase.h"
#include "Resources/FGItemDescriptor.h"
#include "RRDADataAssetDSItemFilter.generated.h"
/**
*
*/
UCLASS()
class REFINEDRDAPI_API URRDADataAssetDSItemFilter : public URRDADataAssetBase
{
GENERATED_BODY()
public:
/* The Building class this item filter should be used on */
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="ItemFilter")
TSubclassOf<AFGBuildableFactory> mBuildingClass;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="ItemFilter")
int mInventoryIndex = 0;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="ItemFilter")
int mInventorySlotIndex = 0;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="ItemFilter")
TArray<TSubclassOf<UFGItemDescriptor>> mItemFilterClasses;
};
@@ -55,12 +55,16 @@ public:
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, meta=(EditCondition = mOverrideItemFilter))
TArray<TSubclassOf<UFGItemDescriptor>> mItemFilter;
/* Adds only the filtered item from the slot to the Item Selection dropdown. */
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
bool mCheckSlotItemFilter = false;
/* Should check if the inventory slot has an Item Filter set
This will override the item class that the player selects with the allowed item class on the slot.
Also disables item selection in the UI.
*/
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
bool mCheckSlotItemFilter = false;
bool mAutomaticallySetFromSlotItemFilter = false;
};
USTRUCT(BlueprintType)
@@ -13,6 +13,7 @@
#include "DataAssets/RRDAHeaterDataAsset.h"
#include "DataAssets/RRDATurbineDataAsset.h"
#include "DataAssets/RRDACoolerDataAsset.h"
#include "DataAssets/RRDADataAssetDSItemFilter.h"
#include "DataAssets/RRDADataAssetDSModAdapter.h"
#include "Enums/RRDARPEnums.h"
#include "Resources/FGItemDescriptor.h"
@@ -66,6 +67,9 @@ struct FRRDADataHolderDSBuildingData
UPROPERTY()
URRDADataAssetDSModAdapter* ModAdapter;
UPROPERTY()
TArray<URRDADataAssetDSItemFilter*> ItemFilters;
};
UCLASS()
@@ -98,6 +102,7 @@ public:
void ReCacheGeneratorDataAssets();
void ReCacheDSModAdapterDataAssets();
void ReCacheDSAdapterCoversDataAssets();
void ReCacheDSItemFilters();
public:
// Dirt Functions
@@ -133,6 +138,14 @@ public:
UFUNCTION(BlueprintCallable, Category = "RRDA|DataAsset|DS")
bool HasDSAdaperCoversForBuildingClass(TSubclassOf<AFGBuildableFactory> BuildingClass);
// DS Item Filters
UFUNCTION(BlueprintCallable, Category = "RRDA|DataAsset|DS")
TArray<URRDADataAssetDSItemFilter*> GetDSItemFiltersDataAssetsForBuildingClass(TSubclassOf<AFGBuildableFactory> BuildingClass) const;
UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|DS")
TArray<URRDADataAssetDSItemFilter*> GetAllDSItemFiltersDataAssets() const;
// Turbine Functions
UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP")
bool GetAllTurbineItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, int32 Tier) const;
+1 -1
View File
@@ -1 +1 @@
1.0.1
1.0.2