feat: functions for Turbine
This commit is contained in:
parent
4e1ea32b9d
commit
ce944794dc
@ -0,0 +1,3 @@
|
||||
// Fill out your copyright notice in the Description page of Project Settings.
|
||||
|
||||
#include "DataAssets/RRDAGeneratorDataAsset.h"
|
@ -1,3 +1,11 @@
|
||||
// Fill out your copyright notice in the Description page of Project Settings.
|
||||
|
||||
#include "DataAssets/RRDATurbineDataAsset.h"
|
||||
#include "DataAssets/RRDATurbineDataAsset.h"
|
||||
|
||||
bool URRDATurbineDataAsset::IsEnabled_Internal(UObject* WorldContextObject) const
|
||||
{
|
||||
fgcheck(mTier > 0);
|
||||
fgcheck(mRPMDrag > 0);
|
||||
fgcheck(mMaxRPM > 0);
|
||||
return Super::IsEnabled_Internal(WorldContextObject);
|
||||
}
|
@ -6,6 +6,7 @@
|
||||
#include "AssetRegistry/AssetRegistryModule.h"
|
||||
#include "DataAssets/RRDABoilerDataAsset.h"
|
||||
#include "DataAssets/RRDACoolerDataAsset.h"
|
||||
#include "DataAssets/RRDAGeneratorDataAsset.h"
|
||||
#include "DataAssets/RRDAHeaterDataAsset.h"
|
||||
#include "DataAssets/RRDATurbineDataAsset.h"
|
||||
|
||||
@ -69,6 +70,7 @@ void URRDADataAssetSubsystem::StartScanForDataAssets()
|
||||
ReCacheDirtDataAssets();
|
||||
ReCacheHeaterDataAssets();
|
||||
ReCacheTurbineDataAssets();
|
||||
ReCacheGeneratorDataAssets();
|
||||
}
|
||||
|
||||
void URRDADataAssetSubsystem::ReCacheDirtDataAssets()
|
||||
@ -178,6 +180,21 @@ void URRDADataAssetSubsystem::ReCacheHeaterDataAssets() {
|
||||
UE_LOG(LogRRDApi, Log, TEXT("ReCacheHeaterDataAssets: %d"), mTurbineAssets.Num());
|
||||
}
|
||||
|
||||
void URRDADataAssetSubsystem::ReCacheGeneratorDataAssets()
|
||||
{
|
||||
mHeaterAssets.Empty();
|
||||
TSet<URRDAGeneratorDataAsset*> DataAssets;
|
||||
if(FindAllDataAssetsOfClass(DataAssets))
|
||||
{
|
||||
for (URRDAGeneratorDataAsset* DataAsset : DataAssets)
|
||||
{
|
||||
mGeneratorAssets.Add(DataAsset->mTier, DataAsset);
|
||||
}
|
||||
}
|
||||
|
||||
UE_LOG(LogRRDApi, Log, TEXT("ReCacheHeaterDataAssets: %d"), mTurbineAssets.Num());
|
||||
}
|
||||
|
||||
int32 URRDADataAssetSubsystem::GetAllDirtItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items) const
|
||||
{
|
||||
return mDirtAssets.GetKeys(Items);
|
||||
@ -191,3 +208,69 @@ URRDADirtDataAsset* URRDADataAssetSubsystem::GetDataForDirtItem(TSubclassOf<UFGI
|
||||
return *Desc;
|
||||
}
|
||||
|
||||
TArray<URRDADirtDataAsset*> URRDADataAssetSubsystem::GetAllDirtAssets() const {
|
||||
TArray<URRDADirtDataAsset*> Assets;
|
||||
mDirtAssets.GenerateValueArray(Assets);
|
||||
return Assets;
|
||||
}
|
||||
|
||||
bool URRDADataAssetSubsystem::GetAllTurbineItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, int32 Tier) const
|
||||
{
|
||||
if(!mTurbineAssets.Contains(Tier)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Items.Empty();
|
||||
mTurbineAssets[Tier].GetKeys(Items);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool URRDADataAssetSubsystem::GetAllTurbineRelevantItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, int32 Tier) const {
|
||||
if(!mTurbineAssets.Contains(Tier)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Items.Empty();
|
||||
for (TTuple<TSubclassOf<UFGItemDescriptor>, URRDATurbineDataAsset*> TurbineAsset : mTurbineAssets[Tier])
|
||||
{
|
||||
Items.AddUnique(TurbineAsset.Key);
|
||||
if(TurbineAsset.Value->mWasteItem.ItemClass) {
|
||||
Items.AddUnique(TurbineAsset.Value->mWasteItem.ItemClass);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
TArray<URRDATurbineDataAsset*> URRDADataAssetSubsystem::GetAllTurbineAssets(int32 Tier) const {
|
||||
if(!mTurbineAssets.Contains(Tier)) {
|
||||
return TArray<URRDATurbineDataAsset*>();
|
||||
}
|
||||
|
||||
TArray<URRDATurbineDataAsset*> Assets;
|
||||
mTurbineAssets[Tier].GenerateValueArray(Assets);
|
||||
return Assets;
|
||||
}
|
||||
|
||||
URRDATurbineDataAsset* URRDADataAssetSubsystem::GetDefaultTurbineAsset(int32 Tier) const {
|
||||
if(!mTurbineAssets.Contains(Tier)) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
TArray<URRDATurbineDataAsset*> Assets;
|
||||
mTurbineAssets[Tier].GenerateValueArray(Assets);
|
||||
|
||||
// Return the first item in the tier
|
||||
return Assets[0];
|
||||
}
|
||||
|
||||
URRDATurbineDataAsset* URRDADataAssetSubsystem::GetTurbineItemData(TSubclassOf<UFGItemDescriptor> Item, int32 Tier) const
|
||||
{
|
||||
if(!mTurbineAssets.Contains(Tier)) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return mTurbineAssets[Tier].FindRef(Item);
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,40 @@
|
||||
// Fill out your copyright notice in the Description page of Project Settings.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "RRDADataAssetBase.h"
|
||||
#include "ItemAmount.h"
|
||||
|
||||
#include "RRDAGeneratorDataAsset.generated.h"
|
||||
|
||||
UCLASS( BlueprintType )
|
||||
class REFINEDRDAPI_API URRDAGeneratorDataAsset : public URRDADataAssetBase
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
/**
|
||||
* Fuel item that this heater uses
|
||||
*/
|
||||
UPROPERTY( EditAnywhere, BlueprintReadWrite, Category = "Turbine", meta=( UIMin = "1", UIMax = "5" ) )
|
||||
int32 mTier = 1;
|
||||
|
||||
/**
|
||||
* Maximum power output of the generator
|
||||
*/
|
||||
UPROPERTY( EditAnywhere, BlueprintReadWrite, Category = "Mp Generator" )
|
||||
float mMaxPowerOutput;
|
||||
|
||||
/**
|
||||
* Maximum RPM of the generator
|
||||
*/
|
||||
UPROPERTY( EditAnywhere, BlueprintReadWrite, Category = "Mp Generator" )
|
||||
int mMaxRPM;
|
||||
|
||||
/**
|
||||
* Curve that defines the power output of the generator
|
||||
*/
|
||||
UPROPERTY( EditAnywhere, BlueprintReadWrite, Category = "Mp Generator" )
|
||||
UCurveFloat* mGeneratorCurve;
|
||||
};
|
@ -13,6 +13,8 @@ class REFINEDRDAPI_API URRDATurbineDataAsset : public URRDADataAssetBase
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
virtual bool IsEnabled_Internal(UObject* WorldContextObject) const override;
|
||||
|
||||
public:
|
||||
/**
|
||||
* Fuel item that this heater uses
|
||||
@ -38,4 +40,28 @@ public:
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Turbine")
|
||||
float mDuration = 6.f;
|
||||
|
||||
/**
|
||||
* The time it takes to handle the RPM (slow down or speed up)
|
||||
*/
|
||||
UPROPERTY( EditAnywhere, BlueprintReadWrite, Category = "Turbine" )
|
||||
float mRPHandleTime = 0.025f;
|
||||
|
||||
/**
|
||||
* How much the RPM should be dragged down by
|
||||
*/
|
||||
UPROPERTY( EditAnywhere, BlueprintReadWrite, Category = "Turbine" )
|
||||
int mRPMDrag = 5;
|
||||
|
||||
/**
|
||||
* Maximum RPM that this turbine can reach
|
||||
*/
|
||||
UPROPERTY( EditAnywhere, BlueprintReadWrite, Category = "Turbine" )
|
||||
int mMaxRPM = 10000;
|
||||
|
||||
/**
|
||||
* Multiplier for the RPM
|
||||
*/
|
||||
UPROPERTY( EditAnywhere, BlueprintReadWrite, Category = "Turbine" )
|
||||
float mRPMMultiplier = 2;
|
||||
};
|
@ -7,6 +7,11 @@
|
||||
#include "AssetRegistry/AssetRegistryModule.h"
|
||||
#include "DataAssets/RRDADataAssetBase.h"
|
||||
#include "DataAssets/RRDADirtDataAsset.h"
|
||||
#include "DataAssets/RRDABoilerDataAsset.h"
|
||||
#include "DataAssets/RRDAGeneratorDataAsset.h"
|
||||
#include "DataAssets/RRDAHeaterDataAsset.h"
|
||||
#include "DataAssets/RRDATurbineDataAsset.h"
|
||||
#include "DataAssets/RRDACoolerDataAsset.h"
|
||||
#include "Enums/RRDARPEnums.h"
|
||||
#include "Resources/FGItemDescriptor.h"
|
||||
|
||||
@ -41,14 +46,35 @@ public:
|
||||
void ReCacheBoilerDataAssets();
|
||||
void ReCacheCoolerDataAssets();
|
||||
void ReCacheHeaterDataAssets();
|
||||
void ReCacheGeneratorDataAssets();
|
||||
|
||||
public:
|
||||
// Dirt Functions
|
||||
UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|FF")
|
||||
int32 GetAllDirtItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items) const;
|
||||
|
||||
UFUNCTION(BlueprintCallable, Category = "RRDA|DataAsset|FF")
|
||||
URRDADirtDataAsset* GetDataForDirtItem(TSubclassOf<UFGItemDescriptor> Item) const;
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP")
|
||||
TArray<URRDADirtDataAsset*> GetAllDirtAssets() const;
|
||||
|
||||
// Turbine Functions
|
||||
UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP")
|
||||
bool GetAllTurbineItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, int32 Tier) const;
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP")
|
||||
URRDATurbineDataAsset* GetTurbineItemData(TSubclassOf<UFGItemDescriptor>Item, int32 Tier) const;
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP")
|
||||
bool GetAllTurbineRelevantItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, int32 Tier) const;
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP")
|
||||
URRDATurbineDataAsset* GetDefaultTurbineAsset(int32 Tier) const;
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP")
|
||||
TArray<URRDATurbineDataAsset*> GetAllTurbineAssets(int32 Tier) const;
|
||||
|
||||
public:
|
||||
/**
|
||||
* Find all data assets of a specific class
|
||||
@ -60,12 +86,15 @@ public:
|
||||
|
||||
private:
|
||||
UPROPERTY()
|
||||
TMap<TSubclassOf<UFGItemDescriptor>, class URRDADirtDataAsset*> mDirtAssets;
|
||||
TMap<TSubclassOf<UFGItemDescriptor>, URRDADirtDataAsset*> mDirtAssets;
|
||||
|
||||
TMap<int32, TMap<TSubclassOf<UFGItemDescriptor>, class URRDATurbineDataAsset*>> mTurbineAssets;
|
||||
TMap<int32, TMap<TSubclassOf<UFGItemDescriptor>, class URRDABoilerDataAsset*>> mBoilerAssets;
|
||||
TMap<ERRDACoolerType, TMap<TSubclassOf<UFGItemDescriptor>, class URRDACoolerDataAsset*>> mCoolerAssets;
|
||||
TMap<ERRDAHeaterType, TMap<TSubclassOf<UFGItemDescriptor>, class URRDAHeaterDataAsset*>> mHeaterAssets;
|
||||
UPROPERTY()
|
||||
TMap<int32, URRDAGeneratorDataAsset*> mGeneratorAssets;
|
||||
|
||||
TMap<int32, TMap<TSubclassOf<UFGItemDescriptor>, URRDATurbineDataAsset*>> mTurbineAssets;
|
||||
TMap<int32, TMap<TSubclassOf<UFGItemDescriptor>, URRDABoilerDataAsset*>> mBoilerAssets;
|
||||
TMap<ERRDACoolerType, TMap<TSubclassOf<UFGItemDescriptor>, URRDACoolerDataAsset*>> mCoolerAssets;
|
||||
TMap<ERRDAHeaterType, TMap<TSubclassOf<UFGItemDescriptor>, URRDAHeaterDataAsset*>> mHeaterAssets;
|
||||
|
||||
public:
|
||||
UPROPERTY(BlueprintReadOnly, Transient, Category = "RRDA|DataAsset")
|
||||
|
Loading…
x
Reference in New Issue
Block a user