Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0614aa6526 | ||
|
|
b89a41dfb5 | ||
|
|
7d8d80e6a9 | ||
|
|
33a1201424 | ||
|
|
dbcd107343 | ||
|
|
74badcca9b | ||
|
|
0b4b8c5e07 | ||
|
|
9b59c2bc05 | ||
|
|
01283bc50a | ||
|
|
39ecb1df11 | ||
|
|
a5a89443de | ||
|
|
e5583a3b92 | ||
|
|
a89cbbf2c8 | ||
|
|
db848b428f | ||
|
|
2e78f37d54 | ||
|
|
c1cbe82bcd | ||
|
|
0aea87dcea | ||
|
|
385dc543ad | ||
|
|
b309136b5c | ||
|
|
f8a322d5c1 | ||
|
|
75daf25f1c | ||
|
|
f1b737439d | ||
|
|
0d976de526 | ||
|
|
8e6378208c |
+195
-99
@@ -1,140 +1,236 @@
|
|||||||
name: Mod Build
|
name: Mod Build
|
||||||
on:
|
on: push
|
||||||
push:
|
|
||||||
tags:
|
|
||||||
- "*"
|
|
||||||
env:
|
env:
|
||||||
MOD_NAME: "RefinedRDApi"
|
MOD_NAME: "RefinedRDApi"
|
||||||
MOD_ID: "7q2RnptXynYzEX"
|
MOD_ID: "7q2RnptXynYzEX"
|
||||||
SML_DIR: "S:/SF/SML"
|
SML_DIR: "S:/SML"
|
||||||
ENGINE_DIR: "F:/5.3.2-CSS"
|
ENGINE_DIR: "S:/UE"
|
||||||
BUILT_MODS_DIR: "${{ gitea.workspace }}/BuiltMods"
|
BUILT_MODS_DIR: "${{ gitea.workspace }}/BuiltMods"
|
||||||
DEV_BUILDS_DIR: "${{ gitea.workspace }}/DevBuilds"
|
DEV_BUILDS_DIR: "${{ gitea.workspace }}/DevBuilds"
|
||||||
|
MODS_TO_BUILD: "RefinedRDApi"
|
||||||
|
MOD_DEPENDENCIES: ""
|
||||||
|
IS_GAME_FEATURE_PLUGIN: "false"
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
Setup:
|
Details:
|
||||||
runs-on: windows-2022
|
runs-on: ubuntu-docker
|
||||||
|
steps:
|
||||||
|
- run: |
|
||||||
|
echo "DEPLOY: ${{vars.DEPLOY}}"
|
||||||
|
echo "DEVBUILD: ${{vars.DEVBUILD}}"
|
||||||
|
echo "Branch/Tag: ${{gitea.ref_name}}"
|
||||||
|
echo "Mod Name: ${{env.MOD_NAME}}"
|
||||||
|
echo "SML Directory: ${{env.SML_DIR}}"
|
||||||
|
echo "Engine Directory: ${{env.ENGINE_DIR}}"
|
||||||
|
echo "Built Mods Directory: ${{env.BUILT_MODS_DIR}}"
|
||||||
|
echo "Dev Build Directory: ${{env.DEV_BUILDS_DIR}}"
|
||||||
|
echo "Change Log: ${{vars.CHANGELOG}}"
|
||||||
|
|
||||||
|
Build:
|
||||||
|
runs-on: windows-ue
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
shell: pwsh
|
shell: pwsh
|
||||||
|
outputs:
|
||||||
|
version: ${{steps.version.outputs.version}}
|
||||||
steps:
|
steps:
|
||||||
|
- name: Compute Version
|
||||||
|
id: version
|
||||||
|
run: |
|
||||||
|
$year = (Get-Date).Year
|
||||||
|
$month = (Get-Date).Month
|
||||||
|
$quarter = [math]::Ceiling($month / 3)
|
||||||
|
$quarterKey = "$year.$quarter"
|
||||||
|
|
||||||
|
$response = curl -s -X POST `
|
||||||
|
-H "x-rp-key: ${{secrets.RRD_API_KEY}}" `
|
||||||
|
-H "Content-Type: application/json" `
|
||||||
|
-d "{`"quarter`":`"$quarterKey`"}" `
|
||||||
|
"${{secrets.RRD_API_URL}}/api/v1/mods/buildnumber/${{env.MOD_NAME}}/increment" | ConvertFrom-Json
|
||||||
|
|
||||||
|
if (-not $response.build) {
|
||||||
|
Write-Error "Failed to get build number from API"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
$version = "$quarterKey.$($response.build)"
|
||||||
|
Write-Output "version=$version" >> $Env:GITHUB_OUTPUT
|
||||||
|
echo "Computed version: $version"
|
||||||
|
|
||||||
- name: Setup SML
|
- name: Setup SML
|
||||||
run: |
|
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}}/.git" -PathType Container) {
|
||||||
- name: Install WWise
|
cd ${{env.SML_DIR}}
|
||||||
|
git fetch origin dev
|
||||||
|
git reset --hard origin/dev
|
||||||
|
} else {
|
||||||
|
git clone --branch dev https://github.com/satisfactorymodding/SatisfactoryModLoader.git ${{env.SML_DIR}}
|
||||||
|
}
|
||||||
|
|
||||||
|
- name: Pull Wwise Project
|
||||||
run: |
|
run: |
|
||||||
cd ${{env.SML_DIR}}
|
if (!(Test-Path "${{env.SML_DIR}}/SML_WwiseProject" -PathType Container)) {
|
||||||
if ((Test-Path ${{env.SML_DIR}}/Plugins/Wwise) -eq $true){ echo "WWise already Installed Skipping.."; exit 0 }
|
git clone --branch main git@10.10.10.14:RefinedRD/WwiseProject.git "${{env.SML_DIR}}/SML_WwiseProject"
|
||||||
S:/SF/Scripts/wwise-cli.exe integrate-ue --integration-version "2022.1.5.2714" --project "${{env.SML_DIR}}/FactoryGame.uproject"
|
}
|
||||||
- name: "SML Headers"
|
cd ${{env.SML_DIR}}/SML_WwiseProject
|
||||||
run: |
|
|
||||||
cd S:/SF/Scripts/sml-fixer
|
|
||||||
./sml-fixer.exe
|
|
||||||
PullMods:
|
|
||||||
needs: Setup
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
value: ["RefinedRDApi"]
|
|
||||||
runs-on: windows-2022
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
shell: pwsh
|
|
||||||
steps:
|
|
||||||
- name: "Clone Mod"
|
|
||||||
run: |
|
|
||||||
echo "Cloning Mod ${{matrix.value}}"
|
|
||||||
cd ${{env.SML_DIR}}/Mods
|
|
||||||
if (!(Test-Path ${{env.SML_DIR}}/Mods/${{matrix.value}} -PathType Container)) {git clone --branch main git@10.10.10.14:RefinedRD/sf_mod_${{matrix.value}}.git ${{env.SML_DIR}}/Mods/${{matrix.value}}}
|
|
||||||
cd ${{env.SML_DIR}}/Mods/${{matrix.value}}
|
|
||||||
git fetch --all
|
git fetch --all
|
||||||
git reset --hard origin/main
|
git reset --hard origin/main
|
||||||
|
git lfs fetch --all
|
||||||
|
git lfs pull
|
||||||
|
git lfs checkout
|
||||||
|
$wwiseConsole = "C:/Program Files (x86)/Audiokinetic/Wwise2023.1.14.8770/Authoring/x64/Release/bin/WwiseConsole.exe"
|
||||||
|
if (!(Test-Path $wwiseConsole)) {
|
||||||
|
Write-Error "WwiseConsole not found at $wwiseConsole"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
& $wwiseConsole generate-soundbank "${{env.SML_DIR}}/SML_WwiseProject/SML_WwiseProject.wproj" --platform Windows Mac --verbose
|
||||||
echo "Done"
|
echo "Done"
|
||||||
UpdateUPlugins:
|
|
||||||
needs: PullMods
|
- name: Pull Mods
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
value: ["RefinedRDApi"]
|
|
||||||
runs-on: windows-2022
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
shell: pwsh
|
|
||||||
steps:
|
|
||||||
- name: "Update Mod UPlugin Version"
|
|
||||||
run: |
|
run: |
|
||||||
echo "Updating ${{env.SML_DIR}}/Mods/${{matrix.value}}/${{matrix.value}}.uplugin"
|
$modPath = "${{env.SML_DIR}}/Mods/${{env.MOD_NAME}}"
|
||||||
$Uplugin = (Get-Content ${{env.SML_DIR}}/Mods/${{matrix.value}}/${{matrix.value}}.uplugin | convertfrom-json)
|
$repoName = "sf_mod_${{env.MOD_NAME}}"
|
||||||
$UPlugin.SemVersion = $(Get-Content "${{env.SML_DIR}}/Mods/${{matrix.value}}/VERSION")
|
|
||||||
$UPlugin.VersionName = $(Get-Content "${{env.SML_DIR}}/Mods/${{matrix.value}}/VERSION")
|
if ("${{env.IS_GAME_FEATURE_PLUGIN}}" -eq "true") {
|
||||||
$Version = $Uplugin.SemVersion
|
$modPath = "${{env.SML_DIR}}/Mods/GameFeatures/${{env.MOD_NAME}}"
|
||||||
($UPlugin | convertto-json -Depth 100) -replace '\\u0026', '&' | Set-Content ${{env.SML_DIR}}/Mods/${{matrix.value}}/${{matrix.value}}.uplugin
|
}
|
||||||
echo "Done"
|
|
||||||
CompileEditor:
|
if (!(Test-Path $modPath -PathType Container)) {
|
||||||
needs: UpdateUPlugins
|
git clone git@10.10.10.14:RefinedRD/$repoName.git $modPath
|
||||||
runs-on: windows-2022
|
}
|
||||||
outputs:
|
|
||||||
version: ${{steps.getversion.outputs.version}}
|
cd $modPath
|
||||||
defaults:
|
$ref = "${{gitea.ref_name}}"
|
||||||
run:
|
git fetch --all --tags
|
||||||
shell: pwsh
|
if (git rev-parse --verify --quiet "refs/tags/$ref") {
|
||||||
env:
|
git reset --hard $ref
|
||||||
BUILD_TOOL_EXE: ${{env.ENGINE_DIR}}/Engine/Binaries/DotNET/UnrealBuildTool/UnrealBuildTool.exe
|
} else {
|
||||||
steps:
|
git reset --hard "origin/$ref"
|
||||||
- name: Get Version
|
}
|
||||||
id: getversion
|
echo "Pulled ${{env.MOD_NAME}} @ latest (${{gitea.ref_name}})"
|
||||||
|
|
||||||
|
- name: Update UPlugin Versions
|
||||||
run: |
|
run: |
|
||||||
$Version = $(Get-Content "${{env.SML_DIR}}/Mods/${{env.MOD_NAME}}/VERSION")
|
$newVersion = "${{steps.version.outputs.version}}"
|
||||||
Write-Output "version=$($Version)" >> $Env:GITHUB_OUTPUT
|
|
||||||
- name: "Gen-VS-Files"
|
$mod = "${{env.MOD_NAME}}"
|
||||||
run: |
|
$modPath = "${{env.SML_DIR}}/Mods/$mod"
|
||||||
cd ${{env.SML_DIR}}
|
|
||||||
${{env.BUILD_TOOL_EXE}} -projectfiles -project="${{env.SML_DIR}}/FactoryGame.uproject" -game -rocket -progress
|
if ("${{env.IS_GAME_FEATURE_PLUGIN}}" -eq "true") {
|
||||||
|
$modPath = "${{env.SML_DIR}}/Mods/GameFeatures/$mod"
|
||||||
|
}
|
||||||
|
|
||||||
|
$upluginPath = "$modPath/$mod.uplugin"
|
||||||
|
$UPlugin = (Get-Content $upluginPath | ConvertFrom-Json)
|
||||||
|
|
||||||
|
$majorVersion = [int]($newVersion -split '\.')[0]
|
||||||
|
|
||||||
|
$UPlugin.Version = $majorVersion
|
||||||
|
$UPlugin.SemVersion = $newVersion
|
||||||
|
$UPlugin.VersionName = $newVersion
|
||||||
|
echo "Set $mod version to $newVersion (Version=$majorVersion)"
|
||||||
|
|
||||||
|
($UPlugin | ConvertTo-Json -Depth 100) -replace '\\u0026', '&' | Set-Content $upluginPath
|
||||||
|
|
||||||
- name: Compile Editor
|
- name: Compile Editor
|
||||||
run: |
|
run: |
|
||||||
|
$buildTool = "${{env.ENGINE_DIR}}/Engine/Binaries/DotNET/UnrealBuildTool/UnrealBuildTool.exe"
|
||||||
cd ${{env.SML_DIR}}
|
cd ${{env.SML_DIR}}
|
||||||
${{env.BUILD_TOOL_EXE}} Development Win64 -project="${{env.SML_DIR}}/FactoryGame.uproject" -TargetType="Editor" -progress
|
& $buildTool -projectfiles -project="${{env.SML_DIR}}/FactoryGame.uproject" -game -rocket -progress
|
||||||
BuildMods:
|
& $buildTool Development Win64 -project="${{env.SML_DIR}}/FactoryGame.uproject" -TargetType="Editor" -progress
|
||||||
needs: CompileEditor
|
|
||||||
strategy:
|
- name: Build Mods
|
||||||
matrix:
|
|
||||||
value: ["RefinedRDApi"]
|
|
||||||
runs-on: windows-2022
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
shell: pwsh
|
|
||||||
steps:
|
|
||||||
- name: "Build Mod"
|
|
||||||
run: |
|
run: |
|
||||||
$Version = $(Get-Content "${{env.SML_DIR}}/Mods/${{matrix.value}}/VERSION")
|
$newVersion = "${{steps.version.outputs.version}}"
|
||||||
& "${{env.ENGINE_DIR}}/Engine/Build/BatchFiles/RunUAT.bat" -ScriptsForProject="${{env.SML_DIR}}/FactoryGame.uproject" PackagePlugin -Project="${{env.SML_DIR}}/FactoryGame.uproject" -dlcname="${{matrix.value}}" -build -server -clientconfig=Shipping -serverconfig=Shipping -platform=Win64 -serverplatform=Win64+Linux -nocompileeditor -installed -merge
|
|
||||||
if (!(Test-Path ${{env.BUILT_MODS_DIR}})) {New-Item -ItemType Directory -Force -Path ${{env.BUILT_MODS_DIR}}}
|
if (!(Test-Path ${{env.BUILT_MODS_DIR}})) {
|
||||||
Copy-Item ${{env.SML_DIR}}/Saved/ArchivedPlugins/${{matrix.value}}/${{matrix.value}}.zip ${{env.BUILT_MODS_DIR}}/${{matrix.value}}.$Version.zip -Force
|
New-Item -ItemType Directory -Force -Path ${{env.BUILT_MODS_DIR}}
|
||||||
|
}
|
||||||
|
$mod = "${{env.MOD_NAME}}"
|
||||||
|
if (Test-Path "${{env.SML_DIR}}/Saved/ArchivedPlugins/$mod") {
|
||||||
|
Remove-Item -Recurse "${{env.SML_DIR}}/Saved/ArchivedPlugins/$mod"
|
||||||
|
}
|
||||||
|
|
||||||
|
if ("${{env.IS_GAME_FEATURE_PLUGIN}}" -eq "true") {
|
||||||
|
$modPath = "${{env.SML_DIR}}/Mods/GameFeatures/$mod"
|
||||||
|
}else {
|
||||||
|
$modPath = "${{env.SML_DIR}}/Mods/$mod"
|
||||||
|
}
|
||||||
|
|
||||||
|
$version = $newVersion
|
||||||
|
|
||||||
|
& "${{env.ENGINE_DIR}}/Engine/Build/BatchFiles/RunUAT.bat" `
|
||||||
|
-ScriptsForProject="${{env.SML_DIR}}/FactoryGame.uproject" `
|
||||||
|
PackagePlugin `
|
||||||
|
-Project="${{env.SML_DIR}}/FactoryGame.uproject" `
|
||||||
|
-dlcname="$mod" `
|
||||||
|
-build -server `
|
||||||
|
-clientconfig=Shipping -serverconfig=Shipping `
|
||||||
|
-platform=Win64 -serverplatform=Win64+Linux `
|
||||||
|
-nocompileeditor -installed -merge
|
||||||
|
|
||||||
|
Copy-Item "${{env.SML_DIR}}/Saved/ArchivedPlugins/$mod/$mod.zip" "${{env.BUILT_MODS_DIR}}/$mod.$version.zip" -Force
|
||||||
|
|
||||||
|
echo "Done $mod @ $version"
|
||||||
|
|
||||||
|
- name: Publish Built Version
|
||||||
|
run: |
|
||||||
|
$version = "${{steps.version.outputs.version}}"
|
||||||
|
$modPath = "${{env.SML_DIR}}/Mods/${{env.MOD_NAME}}"
|
||||||
|
if ("${{env.IS_GAME_FEATURE_PLUGIN}}" -eq "true") {
|
||||||
|
$modPath = "${{env.SML_DIR}}/Mods/GameFeatures/${{env.MOD_NAME}}"
|
||||||
|
}
|
||||||
|
$commit = (git -C $modPath rev-parse HEAD)
|
||||||
|
$body = "{`"version`":`"$version`",`"commit`":`"$commit`"}"
|
||||||
|
curl -s -X POST `
|
||||||
|
-H "x-rp-key: ${{secrets.RRD_API_KEY}}" `
|
||||||
|
-H "Content-Type: application/json" `
|
||||||
|
-d $body `
|
||||||
|
"${{secrets.RRD_API_URL}}/api/v1/mods/version/${{env.MOD_NAME}}"
|
||||||
|
echo ""
|
||||||
|
echo "Published ${{env.MOD_NAME}} @ $version ($commit)"
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v3
|
- uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: built-mods
|
name: built-mods
|
||||||
path: ${{env.BUILT_MODS_DIR}}/${{matrix.value}}.*.zip
|
path: |
|
||||||
|
${{env.BUILT_MODS_DIR}}/*.zip
|
||||||
|
${{env.BUILT_MODS_DIR}}/Install-DevBuild.ps1
|
||||||
overwrite: true
|
overwrite: true
|
||||||
|
|
||||||
SMRDeploy:
|
SMRDeploy:
|
||||||
if: ${{ vars.DEPLOY != 'false' }}
|
if: ${{ vars.DEPLOY == 'true' }}
|
||||||
needs: BuildMods
|
needs: Build
|
||||||
runs-on: windows-2022
|
runs-on: windows-ue
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
shell: pwsh
|
shell: pwsh
|
||||||
steps:
|
steps:
|
||||||
- name: Download a artifact
|
- name: Download artifact
|
||||||
uses: actions/download-artifact@v3
|
uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: built-mods
|
name: built-mods
|
||||||
path: ${{env.BUILT_MODS_DIR}}
|
path: ${{env.BUILT_MODS_DIR}}
|
||||||
- name: "Deploy to SMR"
|
|
||||||
|
- name: Deploy to SMR
|
||||||
run: |
|
run: |
|
||||||
echo "Deploying to SMR"
|
echo "Deploying to SMR"
|
||||||
$Version = $(Get-Content "${{env.SML_DIR}}/Mods/${{env.MOD_NAME}}/VERSION")
|
$Version = "${{needs.Build.outputs.version}}"
|
||||||
$query = '{ "query": "query { getModByReference(modReference:\"${{env.MOD_NAME}}\"){ versions(filter:{limit: 1}){ version } }}"}'
|
$query = '{ "query": "query { getModByReference(modReference:\"${{env.MOD_NAME}}\"){ versions(filter:{limit: 1}){ version } }}"}'
|
||||||
echo $query
|
$SMRVersion = (Invoke-RestMethod `
|
||||||
$SMRVersion = (Invoke-RestMethod -Method POST -uri "https://api.ficsit.app/v2/query" -body $query -ContentType "application/json").data.getModByReference.versions[0].version
|
-Method POST `
|
||||||
if($Version -eq $SMRVersion) { echo "SMR Mod Version Already Exists.. Skip"; exit 0 }
|
-Uri "https://api.ficsit.app/v2/query" `
|
||||||
|
-Body $query `
|
||||||
|
-ContentType "application/json").data.getModByReference.versions[0].version
|
||||||
|
if ($Version -eq $SMRVersion) {
|
||||||
|
echo "SMR Mod Version Already Exists.. Skip"
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
$File = (Get-ChildItem "${{env.BUILT_MODS_DIR}}/${{env.MOD_NAME}}*").FullName
|
$File = (Get-ChildItem "${{env.BUILT_MODS_DIR}}/${{env.MOD_NAME}}*").FullName
|
||||||
$APIURL="https://api.ficsit.app"
|
$APIURL = "https://api.ficsit.app"
|
||||||
write-host "$File, $APIURL"
|
Write-Host "Uploading $File to $APIURL"
|
||||||
& "S:/SF/Scripts/ficsit_windows_amd64.exe" smr upload --api-base "$APIURL" --api-key "${{secrets.FICSIT_TOKEN}}" "${{env.MOD_ID}}" "$File" "${{vars.CHANGELOG}}"
|
& "S:/ficsit_windows_amd64.exe" smr upload `
|
||||||
|
--api-base "$APIURL" `
|
||||||
|
--api-key "${{secrets.FICSIT_TOKEN}}" `
|
||||||
|
"${{env.MOD_ID}}" "$File" "${{vars.CHANGELOG}}"
|
||||||
echo "Done"
|
echo "Done"
|
||||||
|
|||||||
@@ -1,3 +1,28 @@
|
|||||||
|
## 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.1 (November 25, 2024)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"FileVersion": 3,
|
"FileVersion": 3,
|
||||||
"Version": 1,
|
"Version": 1,
|
||||||
"VersionName": "1.0.1",
|
"VersionName": "1.0.7",
|
||||||
"SemVersion": "1.0.1",
|
"SemVersion": "1.0.7",
|
||||||
"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,8 +26,8 @@
|
|||||||
{
|
{
|
||||||
"Name": "SML",
|
"Name": "SML",
|
||||||
"Enabled": true,
|
"Enabled": true,
|
||||||
"SemVersion": "^3.8.0"
|
"SemVersion": "^3.12.0"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"GameVersion": ">=377620"
|
"GameVersion": ">=491125"
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
// Fill out your copyright notice in the Description page of Project Settings.
|
||||||
|
|
||||||
|
|
||||||
|
#include "DataAssets/RRDADataAssetDSItemFilter.h"
|
||||||
|
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
//
|
||||||
|
|
||||||
|
#include "DataAssets/RRDADataAssetSolarPower.h"
|
||||||
@@ -67,8 +67,11 @@ void URRDADataAssetSubsystem::StartScanForDataAssets() {
|
|||||||
ReCacheGeneratorDataAssets();
|
ReCacheGeneratorDataAssets();
|
||||||
|
|
||||||
mDSBuildingData.Empty();
|
mDSBuildingData.Empty();
|
||||||
|
ReCacheDSItemFilters();
|
||||||
ReCacheDSModAdapterDataAssets();
|
ReCacheDSModAdapterDataAssets();
|
||||||
ReCacheDSAdapterCoversDataAssets();
|
ReCacheDSAdapterCoversDataAssets();
|
||||||
|
|
||||||
|
ReCacheSolarPowerDataAssets();
|
||||||
}
|
}
|
||||||
|
|
||||||
void URRDADataAssetSubsystem::ReCacheDirtDataAssets() {
|
void URRDADataAssetSubsystem::ReCacheDirtDataAssets() {
|
||||||
@@ -178,6 +181,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 +202,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 +218,44 @@ 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());
|
||||||
|
}
|
||||||
|
|
||||||
|
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 {
|
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!"));
|
||||||
@@ -220,13 +265,13 @@ int32 URRDADataAssetSubsystem::GetAllDirtItems(TArray<TSubclassOf<UFGItemDescrip
|
|||||||
|
|
||||||
URRDADirtDataAsset* URRDADataAssetSubsystem::GetDataForDirtItem(TSubclassOf<UFGItemDescriptor> Item) const {
|
URRDADirtDataAsset* URRDADataAssetSubsystem::GetDataForDirtItem(TSubclassOf<UFGItemDescriptor> Item) const {
|
||||||
if (!Item) return nullptr;
|
if (!Item) return nullptr;
|
||||||
URRDADirtDataAsset* const* Desc = mDirtAssets.Find(Item);
|
TObjectPtr<URRDADirtDataAsset> const* Desc = mDirtAssets.Find(Item);
|
||||||
if (!Desc) return nullptr;
|
if (!Desc) return nullptr;
|
||||||
return *Desc;
|
return *Desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
TArray<URRDADirtDataAsset*> URRDADataAssetSubsystem::GetAllDirtAssets() const {
|
TArray<URRDADirtDataAsset*> URRDADataAssetSubsystem::GetAllDirtAssets() const {
|
||||||
TArray<URRDADirtDataAsset*> Assets;
|
TArray<TObjectPtr<URRDADirtDataAsset>> Assets;
|
||||||
mDirtAssets.GenerateValueArray(Assets);
|
mDirtAssets.GenerateValueArray(Assets);
|
||||||
return Assets;
|
return Assets;
|
||||||
}
|
}
|
||||||
@@ -308,6 +353,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;
|
||||||
@@ -336,13 +402,14 @@ TArray<URRDATurbineDataAsset*> URRDADataAssetSubsystem::GetAllTurbineAssets(int3
|
|||||||
return TArray<URRDATurbineDataAsset*>();
|
return TArray<URRDATurbineDataAsset*>();
|
||||||
}
|
}
|
||||||
|
|
||||||
TArray<URRDATurbineDataAsset*> Assets;
|
TArray<TObjectPtr<URRDATurbineDataAsset>> Assets;
|
||||||
mTurbineAssets[Tier].Data.GenerateValueArray(Assets);
|
mTurbineAssets[Tier].Data.GenerateValueArray(Assets);
|
||||||
return Assets;
|
return Assets;
|
||||||
}
|
}
|
||||||
|
|
||||||
URRDATurbineDataAsset* URRDADataAssetSubsystem::GetDefaultTurbineAsset(int32 Tier) const {
|
URRDATurbineDataAsset* URRDADataAssetSubsystem::GetDefaultTurbineAsset(int32 Tier) const {
|
||||||
return GetAllTurbineAssets(Tier).Top();
|
TArray<URRDATurbineDataAsset*> Assets = GetAllTurbineAssets(Tier);
|
||||||
|
return Assets.Num() > 0 ? Assets.Top() : nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
URRDATurbineDataAsset* URRDADataAssetSubsystem::GetTurbineItemData(TSubclassOf<UFGItemDescriptor> Item, int32 Tier) const {
|
URRDATurbineDataAsset* URRDADataAssetSubsystem::GetTurbineItemData(TSubclassOf<UFGItemDescriptor> Item, int32 Tier) const {
|
||||||
@@ -369,7 +436,8 @@ URRDACoolerDataAsset* URRDADataAssetSubsystem::GetCoolerItemData(TSubclassOf<UFG
|
|||||||
}
|
}
|
||||||
|
|
||||||
URRDACoolerDataAsset* URRDADataAssetSubsystem::GetDefaultCoolerAsset(ERRDACoolerType Type) const {
|
URRDACoolerDataAsset* URRDADataAssetSubsystem::GetDefaultCoolerAsset(ERRDACoolerType Type) const {
|
||||||
return GetAllCoolerAssets(Type).Top();
|
TArray<URRDACoolerDataAsset*> Assets = GetAllCoolerAssets(Type);
|
||||||
|
return Assets.Num() > 0 ? Assets.Top() : nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
TArray<URRDACoolerDataAsset*> URRDADataAssetSubsystem::GetAllCoolerAssets(ERRDACoolerType Type) const {
|
TArray<URRDACoolerDataAsset*> URRDADataAssetSubsystem::GetAllCoolerAssets(ERRDACoolerType Type) const {
|
||||||
@@ -378,7 +446,7 @@ TArray<URRDACoolerDataAsset*> URRDADataAssetSubsystem::GetAllCoolerAssets(ERRDAC
|
|||||||
return TArray<URRDACoolerDataAsset*>();
|
return TArray<URRDACoolerDataAsset*>();
|
||||||
}
|
}
|
||||||
|
|
||||||
TArray<URRDACoolerDataAsset*> Assets;
|
TArray<TObjectPtr<URRDACoolerDataAsset>> Assets;
|
||||||
mCoolerAssets[Type].Data.GenerateValueArray(Assets);
|
mCoolerAssets[Type].Data.GenerateValueArray(Assets);
|
||||||
|
|
||||||
return Assets;
|
return Assets;
|
||||||
@@ -415,7 +483,8 @@ bool URRDADataAssetSubsystem::GetAllBoilerRelevantItems(TArray<TSubclassOf<UFGIt
|
|||||||
}
|
}
|
||||||
|
|
||||||
URRDABoilerDataAsset* URRDADataAssetSubsystem::GetDefaultBoilerAsset(int32 Tier) const {
|
URRDABoilerDataAsset* URRDADataAssetSubsystem::GetDefaultBoilerAsset(int32 Tier) const {
|
||||||
return GetAllBoilerAssets(Tier).Top();
|
TArray<URRDABoilerDataAsset*> Assets = GetAllBoilerAssets(Tier);
|
||||||
|
return Assets.Num() > 0 ? Assets.Top() : nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
TArray<URRDABoilerDataAsset*> URRDADataAssetSubsystem::GetAllBoilerAssets(int32 Tier) const {
|
TArray<URRDABoilerDataAsset*> URRDADataAssetSubsystem::GetAllBoilerAssets(int32 Tier) const {
|
||||||
@@ -424,7 +493,7 @@ TArray<URRDABoilerDataAsset*> URRDADataAssetSubsystem::GetAllBoilerAssets(int32
|
|||||||
return TArray<URRDABoilerDataAsset*>();
|
return TArray<URRDABoilerDataAsset*>();
|
||||||
}
|
}
|
||||||
|
|
||||||
TArray<URRDABoilerDataAsset*> Assets;
|
TArray<TObjectPtr<URRDABoilerDataAsset>> Assets;
|
||||||
mBoilerAssets[Tier].Data.GenerateValueArray(Assets);
|
mBoilerAssets[Tier].Data.GenerateValueArray(Assets);
|
||||||
|
|
||||||
return Assets;
|
return Assets;
|
||||||
@@ -456,7 +525,8 @@ bool URRDADataAssetSubsystem::GetAllHeaterRelevantItems(TArray<TSubclassOf<UFGIt
|
|||||||
}
|
}
|
||||||
|
|
||||||
URRDAHeaterDataAsset* URRDADataAssetSubsystem::GetDefaultHeaterAsset(ERRDAHeaterType Type) const {
|
URRDAHeaterDataAsset* URRDADataAssetSubsystem::GetDefaultHeaterAsset(ERRDAHeaterType Type) const {
|
||||||
return GetAllHeaterAssets(Type).Top();
|
TArray<URRDAHeaterDataAsset*> Assets = GetAllHeaterAssets(Type);
|
||||||
|
return Assets.Num() > 0 ? Assets.Top() : nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
TArray<URRDAHeaterDataAsset*> URRDADataAssetSubsystem::GetAllHeaterAssets(ERRDAHeaterType Type) const {
|
TArray<URRDAHeaterDataAsset*> URRDADataAssetSubsystem::GetAllHeaterAssets(ERRDAHeaterType Type) const {
|
||||||
@@ -465,8 +535,13 @@ TArray<URRDAHeaterDataAsset*> URRDADataAssetSubsystem::GetAllHeaterAssets(ERRDAH
|
|||||||
return TArray<URRDAHeaterDataAsset*>();
|
return TArray<URRDAHeaterDataAsset*>();
|
||||||
}
|
}
|
||||||
|
|
||||||
TArray<URRDAHeaterDataAsset*> Assets;
|
TArray<TObjectPtr<URRDAHeaterDataAsset>> Assets;
|
||||||
mHeaterAssets[Type].Data.GenerateValueArray(Assets);
|
mHeaterAssets[Type].Data.GenerateValueArray(Assets);
|
||||||
|
|
||||||
return Assets;
|
return Assets;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TArray<URRDADataAssetSolarPower*> URRDADataAssetSubsystem::GetAllSolarPowerAssets() const
|
||||||
|
{
|
||||||
|
return mSolarPowerAssets;
|
||||||
|
}
|
||||||
|
|||||||
@@ -42,5 +42,5 @@ public:
|
|||||||
* Curve for the production to Heat
|
* Curve for the production to Heat
|
||||||
*/
|
*/
|
||||||
UPROPERTY( EditDefaultsOnly, BlueprintReadOnly, Category = "Boiler" )
|
UPROPERTY( EditDefaultsOnly, BlueprintReadOnly, Category = "Boiler" )
|
||||||
UCurveFloat* mBoilerCurve;
|
TObjectPtr<UCurveFloat> mBoilerCurve;
|
||||||
};
|
};
|
||||||
@@ -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;
|
||||||
|
};
|
||||||
@@ -24,7 +24,7 @@ public:
|
|||||||
|
|
||||||
/* The Adapter Cover Asset */
|
/* The Adapter Cover Asset */
|
||||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="ModAdapter")
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="ModAdapter")
|
||||||
URRDADataAssetDSAdapterCovers* mAdapterCoversAsset;
|
TObjectPtr<URRDADataAssetDSAdapterCovers> mAdapterCoversAsset;
|
||||||
|
|
||||||
/* Select which inventories can be accessed by Digital Storage */
|
/* Select which inventories can be accessed by Digital Storage */
|
||||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="ModAdapter")
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="ModAdapter")
|
||||||
|
|||||||
@@ -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;
|
||||||
|
};
|
||||||
@@ -36,5 +36,5 @@ public:
|
|||||||
* Curve that defines the power output of the generator
|
* Curve that defines the power output of the generator
|
||||||
*/
|
*/
|
||||||
UPROPERTY( EditAnywhere, BlueprintReadWrite, Category = "Generator" )
|
UPROPERTY( EditAnywhere, BlueprintReadWrite, Category = "Generator" )
|
||||||
UCurveFloat* mGeneratorCurve;
|
TObjectPtr<UCurveFloat> mGeneratorCurve;
|
||||||
};
|
};
|
||||||
@@ -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,7 +13,9 @@
|
|||||||
#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 "DataAssets/RRDADataAssetSolarPower.h"
|
||||||
#include "Enums/RRDARPEnums.h"
|
#include "Enums/RRDARPEnums.h"
|
||||||
#include "Resources/FGItemDescriptor.h"
|
#include "Resources/FGItemDescriptor.h"
|
||||||
|
|
||||||
@@ -26,7 +28,7 @@ struct FRRDADataHolderTurbineData
|
|||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
UPROPERTY(BlueprintReadOnly)
|
UPROPERTY(BlueprintReadOnly)
|
||||||
TMap<TSubclassOf<UFGItemDescriptor>, URRDATurbineDataAsset*> Data;
|
TMap<TSubclassOf<UFGItemDescriptor>, TObjectPtr<URRDATurbineDataAsset>> Data;
|
||||||
};
|
};
|
||||||
|
|
||||||
USTRUCT(BlueprintType)
|
USTRUCT(BlueprintType)
|
||||||
@@ -35,7 +37,7 @@ struct FRRDADataHolderBoilerData
|
|||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
UPROPERTY(BlueprintReadOnly)
|
UPROPERTY(BlueprintReadOnly)
|
||||||
TMap<TSubclassOf<UFGItemDescriptor>, URRDABoilerDataAsset*> Data;
|
TMap<TSubclassOf<UFGItemDescriptor>, TObjectPtr<URRDABoilerDataAsset>> Data;
|
||||||
};
|
};
|
||||||
|
|
||||||
USTRUCT(BlueprintType)
|
USTRUCT(BlueprintType)
|
||||||
@@ -44,7 +46,7 @@ struct FRRDADataHolderCoolerData
|
|||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
UPROPERTY(BlueprintReadOnly)
|
UPROPERTY(BlueprintReadOnly)
|
||||||
TMap<TSubclassOf<UFGItemDescriptor>, URRDACoolerDataAsset*> Data;
|
TMap<TSubclassOf<UFGItemDescriptor>, TObjectPtr<URRDACoolerDataAsset>> Data;
|
||||||
};
|
};
|
||||||
|
|
||||||
USTRUCT(BlueprintType)
|
USTRUCT(BlueprintType)
|
||||||
@@ -53,7 +55,7 @@ struct FRRDADataHolderHeaterData
|
|||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
UPROPERTY(BlueprintReadOnly)
|
UPROPERTY(BlueprintReadOnly)
|
||||||
TMap<TSubclassOf<UFGItemDescriptor>, URRDAHeaterDataAsset*> Data;
|
TMap<TSubclassOf<UFGItemDescriptor>, TObjectPtr<URRDAHeaterDataAsset>> Data;
|
||||||
};
|
};
|
||||||
|
|
||||||
USTRUCT(BlueprintType)
|
USTRUCT(BlueprintType)
|
||||||
@@ -62,10 +64,13 @@ struct FRRDADataHolderDSBuildingData
|
|||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
UPROPERTY()
|
UPROPERTY()
|
||||||
URRDADataAssetDSAdapterCovers* AdapterCovers;
|
TObjectPtr<URRDADataAssetDSAdapterCovers> AdapterCovers;
|
||||||
|
|
||||||
UPROPERTY()
|
UPROPERTY()
|
||||||
URRDADataAssetDSModAdapter* ModAdapter;
|
TObjectPtr<URRDADataAssetDSModAdapter> ModAdapter;
|
||||||
|
|
||||||
|
UPROPERTY()
|
||||||
|
TArray<TObjectPtr<URRDADataAssetDSItemFilter>> ItemFilters;
|
||||||
};
|
};
|
||||||
|
|
||||||
UCLASS()
|
UCLASS()
|
||||||
@@ -98,6 +103,8 @@ public:
|
|||||||
void ReCacheGeneratorDataAssets();
|
void ReCacheGeneratorDataAssets();
|
||||||
void ReCacheDSModAdapterDataAssets();
|
void ReCacheDSModAdapterDataAssets();
|
||||||
void ReCacheDSAdapterCoversDataAssets();
|
void ReCacheDSAdapterCoversDataAssets();
|
||||||
|
void ReCacheDSItemFilters();
|
||||||
|
void ReCacheSolarPowerDataAssets();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Dirt Functions
|
// Dirt Functions
|
||||||
@@ -133,6 +140,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;
|
||||||
@@ -198,6 +213,9 @@ public:
|
|||||||
UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP")
|
UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP")
|
||||||
TArray<URRDAHeaterDataAsset*> GetAllHeaterAssets(ERRDAHeaterType Type) const;
|
TArray<URRDAHeaterDataAsset*> GetAllHeaterAssets(ERRDAHeaterType Type) const;
|
||||||
|
|
||||||
|
UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|Solar")
|
||||||
|
TArray<URRDADataAssetSolarPower*> GetAllSolarPowerAssets() const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
* Find all data assets of a specific class
|
* Find all data assets of a specific class
|
||||||
@@ -209,13 +227,13 @@ public:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
UPROPERTY(BlueprintReadOnly, Category = "RRDA|DataAsset")
|
UPROPERTY(BlueprintReadOnly, Category = "RRDA|DataAsset")
|
||||||
TMap<TSubclassOf<UFGItemDescriptor>, URRDADirtDataAsset*> mDirtAssets;
|
TMap<TSubclassOf<UFGItemDescriptor>, TObjectPtr<URRDADirtDataAsset>> mDirtAssets;
|
||||||
|
|
||||||
UPROPERTY(BlueprintReadOnly, Category = "RRDA|DataAsset")
|
UPROPERTY(BlueprintReadOnly, Category = "RRDA|DataAsset")
|
||||||
TMap<TSubclassOf<AFGBuildableFactory>, FRRDADataHolderDSBuildingData> mDSBuildingData;
|
TMap<TSubclassOf<AFGBuildableFactory>, FRRDADataHolderDSBuildingData> mDSBuildingData;
|
||||||
|
|
||||||
UPROPERTY(BlueprintReadOnly, Category = "RRDA|DataAsset")
|
UPROPERTY(BlueprintReadOnly, Category = "RRDA|DataAsset")
|
||||||
TMap<int32, URRDAGeneratorDataAsset*> mGeneratorAssets;
|
TMap<int32, TObjectPtr<URRDAGeneratorDataAsset>> mGeneratorAssets;
|
||||||
|
|
||||||
UPROPERTY(BlueprintReadOnly, Category = "RRDA|DataAsset")
|
UPROPERTY(BlueprintReadOnly, Category = "RRDA|DataAsset")
|
||||||
TMap<int32, FRRDADataHolderTurbineData> mTurbineAssets;
|
TMap<int32, FRRDADataHolderTurbineData> mTurbineAssets;
|
||||||
@@ -230,10 +248,13 @@ public:
|
|||||||
TMap<ERRDAHeaterType, FRRDADataHolderHeaterData> mHeaterAssets;
|
TMap<ERRDAHeaterType, FRRDADataHolderHeaterData> mHeaterAssets;
|
||||||
|
|
||||||
UPROPERTY(BlueprintReadOnly, Category = "RRDA|DataAsset")
|
UPROPERTY(BlueprintReadOnly, Category = "RRDA|DataAsset")
|
||||||
TSet<URRDADataAssetBase*> mDisabledDataAssets;
|
TArray<TObjectPtr<URRDADataAssetSolarPower>> mSolarPowerAssets;
|
||||||
|
|
||||||
UPROPERTY(BlueprintReadOnly, Category = "RRDA|DataAsset")
|
UPROPERTY(BlueprintReadOnly, Category = "RRDA|DataAsset")
|
||||||
TSet<URRDADataAssetBase*> mEnabledDataAssets;
|
TSet<TObjectPtr<URRDADataAssetBase>> mDisabledDataAssets;
|
||||||
|
|
||||||
|
UPROPERTY(BlueprintReadOnly, Category = "RRDA|DataAsset")
|
||||||
|
TSet<TObjectPtr<URRDADataAssetBase>> mEnabledDataAssets;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ public class RefinedRDApi : ModuleRules
|
|||||||
PublicDependencyModuleNames.AddRange(new[]
|
PublicDependencyModuleNames.AddRange(new[]
|
||||||
{
|
{
|
||||||
"AbstractInstance",
|
"AbstractInstance",
|
||||||
"InstancedSplinesComponent",
|
//"InstancedSplinesComponent",
|
||||||
"SignificanceISPC"
|
"SignificanceISPC"
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user