8 Commits

Author SHA1 Message Date
mrhid6 0aea87dcea Bump version to 1.0.4.
Mod Build / Setup (push) Successful in 4s
Mod Build / PullMods (RefinedRDApi) (push) Successful in 4s
Mod Build / UpdateUPlugins (RefinedRDApi) (push) Successful in 1s
Mod Build / CompileEditor (push) Successful in 4m57s
Mod Build / BuildMods (RefinedRDApi) (push) Successful in 11m42s
Mod Build / SMRDeploy (push) Has been skipped
2024-12-17 03:29:27 +00:00
mrhid6 385dc543ad feat: Bump sml version 2024-12-17 01:35:49 +00:00
mrhid6 b309136b5c feat: Mod Adapter struct updates 2024-12-06 22:34:18 +00:00
mrhid6 f8a322d5c1 Bump version to 1.0.3.
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 4m33s
Mod Build / BuildMods (RefinedRDApi) (push) Successful in 10m51s
Mod Build / SMRDeploy (push) Successful in 33s
2024-11-30 18:49:19 +00:00
mrhid6 75daf25f1c feat: Changed forms to array 2024-11-30 12:59:17 +00:00
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
9 changed files with 128 additions and 9 deletions
+11
View File
@@ -1,3 +1,14 @@
## 1.0.4 (December 17, 2024)
- feat: Bump sml version
- feat: Mod Adapter struct updates
## 1.0.3 (November 30, 2024)
- feat: Changed forms to array
## 1.0.2 (November 29, 2024)
- feat: Item filters
- feat: Additional DS Options
## 1.0.1 (November 25, 2024) ## 1.0.1 (November 25, 2024)
+3 -3
View File
@@ -1,8 +1,8 @@
{ {
"FileVersion": 3, "FileVersion": 3,
"Version": 1, "Version": 1,
"VersionName": "1.0.1", "VersionName": "1.0.4",
"SemVersion": "1.0.1", "SemVersion": "1.0.4",
"FriendlyName": "Refined R&D Api", "FriendlyName": "Refined R&D Api",
"Description": "This Lib can be used to create Mod Compatability with Refined R&D Mods", "Description": "This Lib can be used to create Mod Compatability with Refined R&D Mods",
"Category": "Modding", "Category": "Modding",
@@ -26,7 +26,7 @@
{ {
"Name": "SML", "Name": "SML",
"Enabled": true, "Enabled": true,
"SemVersion": "^3.8.0" "SemVersion": "^3.9.0"
} }
], ],
"GameVersion": ">=377620" "GameVersion": ">=377620"
@@ -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(); ReCacheGeneratorDataAssets();
mDSBuildingData.Empty(); mDSBuildingData.Empty();
ReCacheDSItemFilters();
ReCacheDSModAdapterDataAssets(); ReCacheDSModAdapterDataAssets();
ReCacheDSAdapterCoversDataAssets(); ReCacheDSAdapterCoversDataAssets();
} }
@@ -178,6 +179,8 @@ void URRDADataAssetSubsystem::ReCacheDSModAdapterDataAssets() {
TSet<URRDADataAssetDSModAdapter*> DataAssets; TSet<URRDADataAssetDSModAdapter*> DataAssets;
if (FindAllDataAssetsOfClass(DataAssets)) { if (FindAllDataAssetsOfClass(DataAssets)) {
for (URRDADataAssetDSModAdapter* DataAsset : DataAssets) { for (URRDADataAssetDSModAdapter* DataAsset : DataAssets) {
if (DataAsset->mBuildingClass == nullptr) continue;
FRRDADataHolderDSBuildingData* existingData = mDSBuildingData.Find(DataAsset->mBuildingClass); FRRDADataHolderDSBuildingData* existingData = mDSBuildingData.Find(DataAsset->mBuildingClass);
if (existingData == nullptr) { if (existingData == nullptr) {
FRRDADataHolderDSBuildingData newData = FRRDADataHolderDSBuildingData(); FRRDADataHolderDSBuildingData newData = FRRDADataHolderDSBuildingData();
@@ -197,6 +200,8 @@ void URRDADataAssetSubsystem::ReCacheDSAdapterCoversDataAssets() {
TSet<URRDADataAssetDSAdapterCovers*> DataAssets; TSet<URRDADataAssetDSAdapterCovers*> DataAssets;
if (FindAllDataAssetsOfClass(DataAssets)) { if (FindAllDataAssetsOfClass(DataAssets)) {
for (URRDADataAssetDSAdapterCovers* DataAsset : DataAssets) { for (URRDADataAssetDSAdapterCovers* DataAsset : DataAssets) {
if (DataAsset->mBuildingClass == nullptr) continue;
FRRDADataHolderDSBuildingData* existingData = mDSBuildingData.Find(DataAsset->mBuildingClass); FRRDADataHolderDSBuildingData* existingData = mDSBuildingData.Find(DataAsset->mBuildingClass);
if (existingData == nullptr) { if (existingData == nullptr) {
FRRDADataHolderDSBuildingData newData = FRRDADataHolderDSBuildingData(); FRRDADataHolderDSBuildingData newData = FRRDADataHolderDSBuildingData();
@@ -211,6 +216,26 @@ void URRDADataAssetSubsystem::ReCacheDSAdapterCoversDataAssets() {
UE_LOGFMT(LogRRDApi, Log, "ReCacheDSAdapterCoversDataAssets: {0}", mDSBuildingData.Num()); 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 { int32 URRDADataAssetSubsystem::GetAllDirtItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items) const {
if (!mDirtAssets.Num()) { if (!mDirtAssets.Num()) {
UE_LOG(LogRRDApi, Error, TEXT("No Dirts found!")); UE_LOG(LogRRDApi, Error, TEXT("No Dirts found!"));
@@ -308,6 +333,27 @@ bool URRDADataAssetSubsystem::HasDSAdaperCoversForBuildingClass(TSubclassOf<AFGB
return IsValid(GetDSAdapterCoverDataAssetForBuildingClass(BuildingClass)); 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 { bool URRDADataAssetSubsystem::GetAllTurbineItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, int32 Tier) const {
if (!mTurbineAssets.Contains(Tier)) { if (!mTurbineAssets.Contains(Tier)) {
return false; 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;
};
@@ -8,4 +8,5 @@ enum class ERRDADSInventorySlotAccessInteraction : uint8
Ignore, Ignore,
ImportToNetworkFromSlot, ImportToNetworkFromSlot,
ExportFromNetworkToSlot, ExportFromNetworkToSlot,
}; LetPlayerDecide,
};
@@ -42,11 +42,11 @@ public:
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
ERRDADSInventorySlotAccessInteraction mInteraction = ERRDADSInventorySlotAccessInteraction::Ignore; ERRDADSInventorySlotAccessInteraction mInteraction = ERRDADSInventorySlotAccessInteraction::Ignore;
/* Select the item resource form that will be displayed in the digital storage UI /* Select the item resource forms that will be displayed in the digital storage UI
This will only display items of this form when players search for an item. This will only display items of these forms when players search for an item.
*/ */
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
EResourceForm mSlotItemForm = EResourceForm::RF_SOLID; TArray<EResourceForm> mSlotItemForms;
UPROPERTY(BlueprintReadOnly, meta=(NoAutoJson = true)) UPROPERTY(BlueprintReadOnly, meta=(NoAutoJson = true))
bool mOverrideItemFilter = false; bool mOverrideItemFilter = false;
@@ -55,12 +55,20 @@ public:
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, meta=(EditCondition = mOverrideItemFilter)) UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, meta=(EditCondition = mOverrideItemFilter))
TArray<TSubclassOf<UFGItemDescriptor>> mItemFilter; 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 /* 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. 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. Also disables item selection in the UI.
*/ */
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
bool mCheckSlotItemFilter = false; bool mAutomaticallySetFromSlotItemFilter = false;
/* This slot will represent the full inventory and will access all inventory slots */
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
bool mSlotRepresentsFullInventory = false;
}; };
USTRUCT(BlueprintType) USTRUCT(BlueprintType)
@@ -84,4 +92,8 @@ public:
/* The Inventory slots to allow access to Digital Storage */ /* The Inventory slots to allow access to Digital Storage */
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
TArray<FRRDADSModAdapterInventorySlotAccess> mInventorySlots; TArray<FRRDADSModAdapterInventorySlotAccess> mInventorySlots;
/* Use the inventory on the universal adapter instead of the building adapter */
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
bool mUseAdapterInventory = false;
}; };
@@ -13,6 +13,7 @@
#include "DataAssets/RRDAHeaterDataAsset.h" #include "DataAssets/RRDAHeaterDataAsset.h"
#include "DataAssets/RRDATurbineDataAsset.h" #include "DataAssets/RRDATurbineDataAsset.h"
#include "DataAssets/RRDACoolerDataAsset.h" #include "DataAssets/RRDACoolerDataAsset.h"
#include "DataAssets/RRDADataAssetDSItemFilter.h"
#include "DataAssets/RRDADataAssetDSModAdapter.h" #include "DataAssets/RRDADataAssetDSModAdapter.h"
#include "Enums/RRDARPEnums.h" #include "Enums/RRDARPEnums.h"
#include "Resources/FGItemDescriptor.h" #include "Resources/FGItemDescriptor.h"
@@ -66,6 +67,9 @@ struct FRRDADataHolderDSBuildingData
UPROPERTY() UPROPERTY()
URRDADataAssetDSModAdapter* ModAdapter; URRDADataAssetDSModAdapter* ModAdapter;
UPROPERTY()
TArray<URRDADataAssetDSItemFilter*> ItemFilters;
}; };
UCLASS() UCLASS()
@@ -98,6 +102,7 @@ public:
void ReCacheGeneratorDataAssets(); void ReCacheGeneratorDataAssets();
void ReCacheDSModAdapterDataAssets(); void ReCacheDSModAdapterDataAssets();
void ReCacheDSAdapterCoversDataAssets(); void ReCacheDSAdapterCoversDataAssets();
void ReCacheDSItemFilters();
public: public:
// Dirt Functions // Dirt Functions
@@ -133,6 +138,14 @@ public:
UFUNCTION(BlueprintCallable, Category = "RRDA|DataAsset|DS") UFUNCTION(BlueprintCallable, Category = "RRDA|DataAsset|DS")
bool HasDSAdaperCoversForBuildingClass(TSubclassOf<AFGBuildableFactory> BuildingClass); 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 // Turbine Functions
UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP") UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP")
bool GetAllTurbineItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, int32 Tier) const; bool GetAllTurbineItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, int32 Tier) const;
+1 -1
View File
@@ -1 +1 @@
1.0.1 1.0.4