Files
BusyRabbit/Source/BusyRabbit/Private/BusyGameplayLibrary.cpp
wyatt bccdc3d231 剔除不需要的插件依赖,比如Paper2D系列 #8
Paper2D系列还需要,如瓦片地图。提出了对PaperZD的依赖,以及依赖FlipBook组件的Actor
2025-10-20 22:45:08 +08:00

90 lines
3.1 KiB
C++

// Fill out your copyright notice in the Description page of Project Settings.
#include "BusyGameplayLibrary.h"
#include "BusyDataAsset.h"
static inline const UBusyDataAsset* GetGameAsset() {
FSoftObjectPath AssetPath(TEXT("BusyRabbit.BusyDataAsset'/Game/Data/BusyGameAsset.BusyGameAsset'"));
return Cast<UBusyDataAsset>(AssetPath.TryLoad());
}
template<typename RowStruct>
static bool GetTableConfig(const FString& TableName, const FName& RowName, RowStruct& RowData) {
UDataTable* Table = UBusyGameplayLibrary::GetGameDataTable(TableName);
RowStruct* Config = Table->FindRow<RowStruct>(
RowName,
*FString::Printf(TEXT("GetTableConfig, %s"), *RowName.ToString()),
true
);
if (Config != nullptr) {
RowData = *Config;
return true;
}
else {
return false;
}
}
UDataTable* UBusyGameplayLibrary::GetGameDataTable(const FString& TableName){
const UBusyDataAsset* GameAsset = GetGameAsset();
if (!GameAsset) return nullptr;
auto Table = (GameAsset->DataTableMapping.Find(TableName));
return Table ? Table->Get() : nullptr;
}
UClass* UBusyGameplayLibrary::GetGameClass(const FString& ClassName){
const UBusyDataAsset* GameAsset = GetGameAsset();
if (!GameAsset) return nullptr;
auto Class = (GameAsset->ClassPathMapping.Find(ClassName));
return Class ? Class->Get() : nullptr;
}
UClass* UBusyGameplayLibrary::GetGameUIClass(const FString& ClassName){
const UBusyDataAsset* GameAsset = GetGameAsset();
if (!GameAsset) return nullptr;
auto Class = (GameAsset->UIPathMapping.Find(ClassName));
return Class ? Class->Get() : nullptr;
}
UWorld* UBusyGameplayLibrary::K2_GetWorld(const UObject* UObj){
return UObj->GetWorld();
}
bool UBusyGameplayLibrary::GetLevelItemConfig(const FName& RowName, FBusyLevelItemConfig& RowData){
return GetTableConfig<FBusyLevelItemConfig>(TEXT("LevelItems"), RowName, RowData);
}
bool UBusyGameplayLibrary::GetLevelItemDescription(const FName& RowName, FBusyLevelItemDescription& RowData){
return GetTableConfig<FBusyLevelItemDescription>(TEXT("LevelItemDesc"), RowName, RowData);
}
bool UBusyGameplayLibrary::GetHomelandItemDescription(const FName& RowName, FBusyHomelandItemDescription& RowData){
return GetTableConfig<FBusyHomelandItemDescription>(TEXT("HomelandItemDesc"), RowName, RowData);
}
bool UBusyGameplayLibrary::GetItemDescription(const FName& RowName, FBusyItemDescription& RowData){
return GetTableConfig<FBusyItemDescription>(TEXT("ItemDesc"), RowName, RowData);
}
bool UBusyGameplayLibrary::GetCookMaterialStateConfig(const FName& RowName, FBusyCookMaterialStateConfig& RowData){
return GetTableConfig<FBusyCookMaterialStateConfig>(TEXT("CookMaterialStateConfig"), RowName, RowData);
}
FGameplayTag UBusyGameplayLibrary::RequestGameplayTag(const FName& TagName)
{
return FGameplayTag::RequestGameplayTag(TagName);
}
#pragma optimize("",off)
FGameplayTagContainer UBusyGameplayLibrary::RequestGameplayTags(const TArray<FName>& TagNames)
{
TArray<FGameplayTag> GameplayTags;
for (const FName& TagName : TagNames)
{
GameplayTags.Add(FGameplayTag::RequestGameplayTag(TagName));
}
return FGameplayTagContainer::CreateFromArray(GameplayTags);
}
#pragma optimize("",on)