Compare commits

...

20 Commits
v1.0.0 ... main

Author SHA1 Message Date
mrhid6
74badcca9b Bump version to 1.0.7.
All checks were successful
Mod Build / Setup (push) Successful in 12s
Mod Build / PullMods (RefinedRDApi) (push) Successful in 2s
Mod Build / UpdateUPlugins (RefinedRDApi) (push) Successful in 2s
Mod Build / CompileEditor (push) Successful in 3m24s
Mod Build / BuildMods (RefinedRDApi) (push) Successful in 10m24s
Mod Build / SMRDeploy (push) Successful in 39s
2025-06-16 18:04:41 +01:00
mrhid6
0b4b8c5e07 chore: Bump game version 2025-06-10 17:08:44 +01:00
mrhid6
9b59c2bc05 chore: Bump SML Version 2025-06-07 12:58:51 +01:00
mrhid6
01283bc50a chore: Bump SML Version 2025-06-03 21:31:07 +01:00
mrhid6
39ecb1df11 feat(SP): New buildings data assets 2025-05-07 23:26:48 +01:00
mrhid6
a5a89443de Bump version to 1.0.6.
All checks were successful
Mod Build / Setup (push) Successful in 10s
Mod Build / PullMods (RefinedRDApi) (push) Successful in 2s
Mod Build / UpdateUPlugins (RefinedRDApi) (push) Successful in 0s
Mod Build / CompileEditor (push) Successful in 3m18s
Mod Build / BuildMods (RefinedRDApi) (push) Successful in 10m34s
Mod Build / SMRDeploy (push) Successful in 31s
2025-03-06 10:59:12 +00:00
mrhid6
e5583a3b92 feat: SML Bump 2025-03-06 09:36:09 +00:00
mrhid6
a89cbbf2c8 feat: Bump SML 2025-01-26 11:51:01 +00:00
mrhid6
db848b428f Bump version to 1.0.5.
All checks were successful
Mod Build / Setup (push) Successful in 1m4s
Mod Build / PullMods (RefinedRDApi) (push) Successful in 1s
Mod Build / UpdateUPlugins (RefinedRDApi) (push) Successful in 0s
Mod Build / CompileEditor (push) Successful in 5m34s
Mod Build / BuildMods (RefinedRDApi) (push) Successful in 12m48s
Mod Build / SMRDeploy (push) Successful in 40s
2025-01-10 09:05:37 +00:00
mrhid6
2e78f37d54 ci: LFS Changes 2025-01-06 19:37:14 +00:00
mrhid6
c1cbe82bcd ci: wwise project 2025-01-04 08:13:10 +00:00
mrhid6
0aea87dcea Bump version to 1.0.4.
All checks were successful
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.
All checks were successful
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.
All checks were successful
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
mrhid6
6b2b12cf2a Bump version to 1.0.1.
All checks were successful
Mod Build / Setup (push) Successful in 2s
Mod Build / PullMods (RefinedRDApi) (push) Successful in 2s
Mod Build / UpdateUPlugins (RefinedRDApi) (push) Successful in 1s
Mod Build / CompileEditor (push) Successful in 5m26s
Mod Build / BuildMods (RefinedRDApi) (push) Successful in 34m18s
Mod Build / SMRDeploy (push) Successful in 37s
2024-11-25 15:26:06 +00:00
12 changed files with 226 additions and 12 deletions

View File

@ -19,12 +19,22 @@ jobs:
steps:
- name: Setup SML
run: |
if (!(Test-Path ${{env.SML_DIR}} -PathType Container)) {git clone --branch master https://github.com/satisfactorymodding/SatisfactoryModLoader.git ${{env.SML_DIR}}}
if (!(Test-Path ${{env.SML_DIR}} -PathType Container)) {git clone --branch dev https://github.com/satisfactorymodding/SatisfactoryModLoader.git ${{env.SML_DIR}}}
- name: Install WWise
run: |
cd ${{env.SML_DIR}}
if ((Test-Path ${{env.SML_DIR}}/Plugins/Wwise) -eq $true){ echo "WWise already Installed Skipping.."; exit 0 }
S:/SF/Scripts/wwise-cli.exe integrate-ue --integration-version "2022.1.5.2714" --project "${{env.SML_DIR}}/FactoryGame.uproject"
- name: Pull WWise Project
run: |
cd ${{env.SML_DIR}}/SML_WwiseProject
git fetch --all
git reset --hard origin/main
git lfs fetch --all
git lfs pull
git lfs checkout
& "C:/Program Files (x86)/Audiokinetic/Wwise2023.1.3.8471/Authoring/x64/Release/bin/WwiseConsole.exe" generate-soundbank "${{env.SML_DIR}}/SML_WwiseProject/SML_WwiseProject.wproj" --platform Windows Mac --verbose
echo "Done"
- name: "SML Headers"
run: |
cd S:/SF/Scripts/sml-fixer
@ -68,7 +78,7 @@ jobs:
($UPlugin | convertto-json -Depth 100) -replace '\\u0026', '&' | Set-Content ${{env.SML_DIR}}/Mods/${{matrix.value}}/${{matrix.value}}.uplugin
echo "Done"
CompileEditor:
needs: UpdateModUPluginDependencies
needs: UpdateUPlugins
runs-on: windows-2022
outputs:
version: ${{steps.getversion.outputs.version}}

View File

@ -1,3 +1,31 @@
## 1.0.7 (June 16, 2025)
- chore: Bump game version
- chore: Bump SML Version
- chore: Bump SML Version
- feat(SP): New buildings data assets
## 1.0.6 (March 06, 2025)
- feat: SML Bump
- feat: Bump SML
## 1.0.5 (January 10, 2025)
- ci: LFS Changes
- ci: wwise project
## 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.0 (November 25, 2024)

View File

@ -1,8 +1,8 @@
{
"FileVersion": 3,
"Version": 1,
"VersionName": "1.0.0",
"SemVersion": "1.0.0",
"VersionName": "1.0.7",
"SemVersion": "1.0.7",
"FriendlyName": "Refined R&D Api",
"Description": "This Lib can be used to create Mod Compatability with Refined R&D Mods",
"Category": "Modding",
@ -26,8 +26,8 @@
{
"Name": "SML",
"Enabled": true,
"SemVersion": "^3.8.0"
"SemVersion": "^3.11.1"
}
],
"GameVersion": ">=377620"
"GameVersion": ">=416835"
}

View File

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

View File

@ -0,0 +1,3 @@
//
#include "DataAssets/RRDADataAssetSolarPower.h"

View File

@ -67,8 +67,11 @@ void URRDADataAssetSubsystem::StartScanForDataAssets() {
ReCacheGeneratorDataAssets();
mDSBuildingData.Empty();
ReCacheDSItemFilters();
ReCacheDSModAdapterDataAssets();
ReCacheDSAdapterCoversDataAssets();
ReCacheSolarPowerDataAssets();
}
void URRDADataAssetSubsystem::ReCacheDirtDataAssets() {
@ -178,6 +181,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 +202,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 +218,44 @@ 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());
}
void URRDADataAssetSubsystem::ReCacheSolarPowerDataAssets()
{
mSolarPowerAssets.Empty();
TSet<URRDADataAssetSolarPower*> 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<TSubclassOf<UFGItemDescriptor>>& Items) const {
if (!mDirtAssets.Num()) {
UE_LOG(LogRRDApi, Error, TEXT("No Dirts found!"));
@ -308,6 +353,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;
@ -470,3 +536,8 @@ TArray<URRDAHeaterDataAsset*> URRDADataAssetSubsystem::GetAllHeaterAssets(ERRDAH
return Assets;
}
TArray<URRDADataAssetSolarPower*> URRDADataAssetSubsystem::GetAllSolarPowerAssets() const
{
return mSolarPowerAssets;
}

View File

@ -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;
};

View File

@ -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;
};

View File

@ -8,4 +8,5 @@ enum class ERRDADSInventorySlotAccessInteraction : uint8
Ignore,
ImportToNetworkFromSlot,
ExportFromNetworkToSlot,
};
LetPlayerDecide,
};

View File

@ -42,11 +42,11 @@ public:
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
ERRDADSInventorySlotAccessInteraction mInteraction = ERRDADSInventorySlotAccessInteraction::Ignore;
/* Select the item resource form that will be displayed in the digital storage UI
This will only display items of this form when players search for an item.
/* Select the item resource forms that will be displayed in the digital storage UI
This will only display items of these forms when players search for an item.
*/
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
EResourceForm mSlotItemForm = EResourceForm::RF_SOLID;
TArray<EResourceForm> mSlotItemForms;
UPROPERTY(BlueprintReadOnly, meta=(NoAutoJson = true))
bool mOverrideItemFilter = false;
@ -55,12 +55,20 @@ 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;
/* This slot will represent the full inventory and will access all inventory slots */
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
bool mSlotRepresentsFullInventory = false;
};
USTRUCT(BlueprintType)
@ -84,4 +92,8 @@ public:
/* The Inventory slots to allow access to Digital Storage */
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
TArray<FRRDADSModAdapterInventorySlotAccess> mInventorySlots;
/* Use the inventory on the universal adapter instead of the building adapter */
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
bool mUseAdapterInventory = false;
};

View File

@ -13,7 +13,9 @@
#include "DataAssets/RRDAHeaterDataAsset.h"
#include "DataAssets/RRDATurbineDataAsset.h"
#include "DataAssets/RRDACoolerDataAsset.h"
#include "DataAssets/RRDADataAssetDSItemFilter.h"
#include "DataAssets/RRDADataAssetDSModAdapter.h"
#include "DataAssets/RRDADataAssetSolarPower.h"
#include "Enums/RRDARPEnums.h"
#include "Resources/FGItemDescriptor.h"
@ -66,6 +68,9 @@ struct FRRDADataHolderDSBuildingData
UPROPERTY()
URRDADataAssetDSModAdapter* ModAdapter;
UPROPERTY()
TArray<URRDADataAssetDSItemFilter*> ItemFilters;
};
UCLASS()
@ -98,6 +103,8 @@ public:
void ReCacheGeneratorDataAssets();
void ReCacheDSModAdapterDataAssets();
void ReCacheDSAdapterCoversDataAssets();
void ReCacheDSItemFilters();
void ReCacheSolarPowerDataAssets();
public:
// Dirt Functions
@ -133,6 +140,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;
@ -198,6 +213,9 @@ public:
UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP")
TArray<URRDAHeaterDataAsset*> GetAllHeaterAssets(ERRDAHeaterType Type) const;
UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|Solar")
TArray<URRDADataAssetSolarPower*> GetAllSolarPowerAssets() const;
public:
/**
* Find all data assets of a specific class
@ -229,6 +247,9 @@ public:
UPROPERTY(BlueprintReadOnly, Category = "RRDA|DataAsset")
TMap<ERRDAHeaterType, FRRDADataHolderHeaterData> mHeaterAssets;
UPROPERTY(BlueprintReadOnly, Category = "RRDA|DataAsset")
TArray<URRDADataAssetSolarPower*> mSolarPowerAssets;
UPROPERTY(BlueprintReadOnly, Category = "RRDA|DataAsset")
TSet<URRDADataAssetBase*> mDisabledDataAssets;

View File

@ -1 +1 @@
1.0.0
1.0.7