移除slua插件,升级UE5.6 #11

This commit is contained in:
2025-10-25 04:15:58 +08:00
parent 4ae803b4f2
commit 367ac0bab7
292 changed files with 314 additions and 163592 deletions

View File

@ -9,7 +9,7 @@ public class BusyRabbitTarget : TargetRules
{
Type = TargetType.Game;
DefaultBuildSettings = BuildSettingsVersion.V5;
IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_4;
IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_6;
ExtraModuleNames.Add("BusyRabbit");
}
}

View File

@ -4,76 +4,12 @@
#include "BusyGameInstance.h"
#include "Misc/FileHelper.h"
#include "Misc/CoreDelegates.h"
#include "LuaCppBinding.h"
#include "GameplayTagsManager.h"
extern void RegisterDataTableExtension();
static uint8* ReadFile(IPlatformFile& PlatformFile, FString path, uint32& len) {
IFileHandle* FileHandle = PlatformFile.OpenRead(*path);
if (FileHandle) {
len = (uint32)FileHandle->Size();
uint8* buf = new uint8[len];
FileHandle->Read(buf, len);
delete FileHandle;
return buf;
}
return nullptr;
}
static int32 PrintLog(NS_SLUA::lua_State* L)
{
FString str;
size_t len;
const char* s = luaL_tolstring(L, 1, &len);
if (s) str += UTF8_TO_TCHAR(s);
NS_SLUA::Log::Log("PrintLog %s", TCHAR_TO_UTF8(*str));
return 0;
UBusyGameInstance::UBusyGameInstance(){
}
UBusyGameInstance::UBusyGameInstance(): state(nullptr){
CreateLuaState();
}
void UBusyGameInstance::CreateLuaState() {
NS_SLUA::LuaState::onInitEvent.AddUObject(this, &UBusyGameInstance::LuaStateInitCallback);
CloseLuaState();
state = new NS_SLUA::LuaState("SLuaMainState", this);
state->setLoadFileDelegate([](const char* fn, FString& filepath)->TArray<uint8> {
IPlatformFile& PlatformFile = FPlatformFileManager::Get().GetPlatformFile();
FString path = FPaths::ProjectContentDir();
FString filename = UTF8_TO_TCHAR(fn);
path /= "Lua";
path /= filename.Replace(TEXT("."), TEXT("/"));
TArray<uint8> Content;
TArray<FString> luaExts = { UTF8_TO_TCHAR(".lua"), UTF8_TO_TCHAR(".luac") };
for (auto& it : luaExts) {
auto fullPath = path + *it;
FFileHelper::LoadFileToArray(Content, *fullPath);
if (Content.Num() > 0) {
filepath = fullPath;
return MoveTemp(Content);
}
}
return MoveTemp(Content);
});
state->init();
}
void UBusyGameInstance::CloseLuaState() {
if (state) {
state->close();
delete state;
state = nullptr;
}
}
void UBusyGameInstance::Init(){
@ -83,23 +19,10 @@ void UBusyGameInstance::Init(){
void UBusyGameInstance::Shutdown() {
CloseLuaState();
FCoreDelegates::OnEndFrame.RemoveAll(this);
Super::Shutdown();
}
void UBusyGameInstance::LuaStateInitCallback(NS_SLUA::lua_State* L) {
using namespace slua;
lua_pushcfunction(L, PrintLog);
lua_setglobal(L, "PrintLog");
LuaGameInstance = state->doFile("GameInstance");
LuaGameInstance.getFromTable("OnEndFrame", OnLuaEndFrame);
// 注册拓展
RegisterDataTableExtension();
}
void UBusyGameInstance::OnEndFrame(){
OnLuaEndFrame.call();
void UBusyGameInstance::OnEndFrame()
{
}

View File

@ -4,7 +4,6 @@
#include "Math/UnrealMathUtility.h"
UInventoryComponent::UInventoryComponent() : Capacity(20) {
LuaFilePath = TEXT("GamePlay.Components.InventoryComponent");
}
bool UInventoryComponent::DepositItems(int32 ItemID, int32 ItemCnt) {
@ -27,7 +26,7 @@ bool UInventoryComponent::DepositItems(int32 ItemID, int32 ItemCnt) {
RemainItemCnt -= AddCount;
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><EFBFBD>¼<EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><EFBFBD>¼<EFBFBD>
OnInventoryChanged.Broadcast(ItemID);
return true;
}
@ -42,7 +41,7 @@ bool UInventoryComponent::WithdrawItems(int32 ItemID, int32 ItemCnt) {
}
int32 RemainToWithdraw = ItemCnt;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E4BBAF><EFBFBD>
for (int32 i = InventoryList.Num() - 1; i >= 0 && RemainToWithdraw > 0; --i) {
FInventoryGrid& Grid = InventoryList[i];
if (Grid.ItemID == ItemID) {
@ -52,7 +51,7 @@ bool UInventoryComponent::WithdrawItems(int32 ItemID, int32 ItemCnt) {
}
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><EFBFBD>¼<EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><EFBFBD>¼<EFBFBD>
OnInventoryChanged.Broadcast(ItemID);
return true;
}
@ -73,15 +72,15 @@ bool UInventoryComponent::ConsumeItems(int32 Index, int32 ItemCnt) {
return false;
}
// <20>ȿ۳<C8BF>ָ<EFBFBD><D6B8>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>Ʒ
// <20>ȿ۳<C8BF>ָ<EFBFBD><D6B8>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>Ʒ
int32 RemoveFromSpecified = FMath::Min(ItemCnt, SpecifiedGrid.CurrentCount);
SpecifiedGrid.CurrentCount -= RemoveFromSpecified;
int32 RemainToConsume = ItemCnt - RemoveFromSpecified;
// <20>ٿ۳<D9BF><DBB3><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>Ʒ
// <20>ٿ۳<D9BF><DBB3><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>Ʒ
if (RemainToConsume > 0) {
for (int32 i = InventoryList.Num() - 1; i >= 0 && RemainToConsume > 0; --i) {
if (i == Index) continue; // <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD><D1B4><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>λ<EFBFBD><CEBB>
if (i == Index) continue; // <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD><D1B4><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>λ<EFBFBD><CEBB>
FInventoryGrid& Grid = InventoryList[i];
if (Grid.ItemID == ItemID) {
@ -92,7 +91,7 @@ bool UInventoryComponent::ConsumeItems(int32 Index, int32 ItemCnt) {
}
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><EFBFBD>¼<EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><EFBFBD>¼<EFBFBD>
OnInventoryChanged.Broadcast(ItemID);
return true;
}
@ -101,22 +100,22 @@ void UInventoryComponent::SetInventoryCapacity(int MaxCapacity) {
int32 NewCapacity = FMath::Max(0, MaxCapacity);
if (Capacity != NewCapacity) {
Capacity = NewCapacity;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
OnInventoryCapacityChanged.Broadcast();
}
}
void UInventoryComponent::ReSortAllItem() {
// <20>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD>Ϊ0<CEAA>ĸ<EFBFBD><C4B8><EFBFBD>
// <20>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD>Ϊ0<CEAA>ĸ<EFBFBD><C4B8><EFBFBD>
for (int32 i = InventoryList.Num() - 1; i >= 0; --i) {
if (InventoryList[i].CurrentCount <= 0) {
InventoryList.RemoveAt(i);
}
}
// <20><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
InventoryList.Sort([](const FInventoryGrid& A, const FInventoryGrid& B) {
return A.Priority > B.Priority; // <20><><EFBFBD>ȼ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ
return A.Priority > B.Priority; // <20><><EFBFBD>ȼ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD>ǰ
});
}
@ -127,7 +126,7 @@ bool UInventoryComponent::IsCanContain(int32 ItemID, int32 Count) {
int32 ExistingSpace = 0;
int32 ExistingGrids = 0;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>пռ<D0BF>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>пռ<D0BF>
for (const FInventoryGrid& Grid : InventoryList) {
if (Grid.ItemID == ItemID) {
ExistingSpace += (Grid.MaxCount - Grid.CurrentCount);
@ -143,13 +142,13 @@ bool UInventoryComponent::IsCanContain(int32 ItemID, int32 Count) {
int32 NeededSpace = Count - ExistingSpace;
// <20><><EFBFBD><EFBFBD><EFBFBD>¸<EFBFBD><C2B8>ӿ<EFBFBD><D3BF>ÿռ<C3BF>
// <20><><EFBFBD><EFBFBD><EFBFBD>¸<EFBFBD><C2B8>ӿ<EFBFBD><D3BF>ÿռ<C3BF>
int32 AvailableGridSlots = Capacity - InventoryList.Num() + EmptySlotCount;
if (AvailableGridSlots <= 0) {
return false;
}
// <20><>ȡ<EFBFBD><C8A1>ƷĬ<C6B7>϶ѵ<CFB6><D1B5><EFBFBD>С
// <20><>ȡ<EFBFBD><C8A1>ƷĬ<C6B7>϶ѵ<CFB6><D1B5><EFBFBD>С
FInventoryGrid TempGrid;
TempGrid.ItemID = ItemID;
InitItemGrid(TempGrid);
@ -176,13 +175,13 @@ FInventoryGrid UInventoryComponent::GetGridWithIndex(int32 Index) {
void UInventoryComponent::InitItemGrid_Implementation(FInventoryGrid& Grid) {
Grid.CurrentCount = 0;
Grid.MaxCount = 20; // Ĭ<>϶ѵ<CFB6><D1B5><EFBFBD>С
Grid.Priority = 1; // Ĭ<><C4AC><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
Grid.MaxCount = 20; // Ĭ<>϶ѵ<CFB6><D1B5><EFBFBD>С
Grid.Priority = 1; // Ĭ<><C4AC><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
}
void UInventoryComponent::ForEach(const FVisitInventoryGridDelegate& VisitDelegate) {
for (int32 i = 0; i < InventoryList.Num(); ++i) {
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>CurrentCount <= 0<><30>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7>CurrentCount <= 0<><30>
if (InventoryList[i].CurrentCount > 0) {
VisitDelegate.ExecuteIfBound(i, InventoryList[i]);
}
@ -190,7 +189,7 @@ void UInventoryComponent::ForEach(const FVisitInventoryGridDelegate& VisitDelega
}
FInventoryGrid& UInventoryComponent::GetOrCreateGrid(int32 ItemID) {
// <20><><EFBFBD>ҷ<EFBFBD><D2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD><D0B8><EFBFBD>
// <20><><EFBFBD>ҷ<EFBFBD><D2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD><D0B8><EFBFBD>
for (FInventoryGrid& Grid : InventoryList) {
if (Grid.ItemID == 0 || Grid.CurrentCount == 0) {
Grid.ItemID = ItemID;
@ -202,9 +201,9 @@ FInventoryGrid& UInventoryComponent::GetOrCreateGrid(int32 ItemID) {
}
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (InventoryList.Num() >= Capacity) {
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static FInventoryGrid DummyGrid;
DummyGrid = FInventoryGrid();
InitItemGrid(DummyGrid);
@ -212,12 +211,12 @@ FInventoryGrid& UInventoryComponent::GetOrCreateGrid(int32 ItemID) {
return DummyGrid;
}
// <20><><EFBFBD><EFBFBD><EFBFBD>¸<EFBFBD><C2B8><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD>¸<EFBFBD><C2B8><EFBFBD>
FInventoryGrid NewGrid;
NewGrid.ItemID = ItemID;
InitItemGrid(NewGrid);
// <20><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EBB5BD>ȷλ<C8B7><CEBB>
// <20><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EBB5BD>ȷλ<C8B7><CEBB>
int32 InsertIndex = 0;
for (; InsertIndex < InventoryList.Num(); InsertIndex++) {
if (NewGrid.Priority > InventoryList[InsertIndex].Priority) {

View File

@ -4,13 +4,8 @@
#include "Core/PW_Ability.h"
UPW_Ability::UPW_Ability(){
bHasBlueprintActivateFromEvent = true;
}
FString UPW_Ability::GetLuaFilePath_Implementation() const{
return LuaFilePath;
}
void UPW_Ability::ApplyCost(
const FGameplayAbilitySpecHandle Handle,

View File

@ -1,17 +0,0 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "Core/PW_Object.h"
UPW_Object::UPW_Object(){
//FString Left, Right;
//if (this->GetName().Split(TEXT("_"), &Left, &Right)) {
// LuaFilePath = Left;
//}else {
// LuaFilePath = this->GetName();
//}
}
FString UPW_Object::GetLuaFilePath_Implementation() const{
return LuaFilePath;
}

View File

@ -1,33 +0,0 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "Core/PW_TimerModule.h"
//int UPW_TimerModule::SetTimer(slua::LuaVar cb){
// UWorld* World = GetWorld();
// if (!World) {
// return -1;
// }
// FTimerManager &TimerManager = World->GetTimerManager();
//
// //// <20><><EFBFBD><EFBFBD>ί<EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD>Lambda
// //FTimerDelegate Delegate = FTimerDelegate::CreateLambda(
// // [this](int32 index) {
// // UE_LOG(LogTemp, Warning, TEXT("%s"), *Message);
// // }
// //);
//
//
//
// //// <20><><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD>
// //TimerManager.SetTimer(
// // TimerHandle,
// // Delegate,
// // 2.0f,
// // false,
// // "Hello from Timer!" // <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>ί<EFBFBD>д<EFBFBD><D0B4><EFBFBD>
// //);
//
// //TimerManager.SetTimer()
// //return 0;
//}

View File

@ -3,130 +3,129 @@
#include "Core/PW_UserWidget.h"
#include "Core/UI/PW_UIHud.h"
#include "slua.h"
#include "EnhancedInput/Public/EnhancedInputSubsystems.h"
#include "EnhancedInput/Public/EnhancedInputComponent.h"
UPW_SimpleWidget::UPW_SimpleWidget():bVisible(true){
bVisible = true;
SetVisibility(ESlateVisibility::SelfHitTestInvisible);
}
bool UPW_SimpleWidget::Initialize(){
return UUserWidget::Initialize();
}
void UPW_SimpleWidget::SetVisible(bool InVisible){
if (bVisible == InVisible) { return; }
bVisible = InVisible;
if (bVisible) {
SetVisibility(ESlateVisibility::SelfHitTestInvisible);
}
else {
SetVisibility(ESlateVisibility::Collapsed);
}
}
void UPW_SimpleWidget::BP_SetVisible(bool InVisible){
SetVisible(InVisible);
}
FLuaWidgetEventHandle UPW_SimpleWidget::BP_BindLuaEvent(const FName& EventName, const FLuaBPVar& InLuaFunction){
FLuaWidgetEventHandle Handle;
if (!InLuaFunction.value.isFunction()) {
return Handle;
}
TMap<int32, slua::LuaVar>& FunctionPool = LuaFuncMappings.FindOrAdd(EventName);
HandleIndex += 1;
FunctionPool.Add(HandleIndex, InLuaFunction.value);
Handle.EventName = EventName;
Handle.HandleIndex = HandleIndex;
return Handle;
}
void UPW_SimpleWidget::BP_UnBindLuaEvent(const FLuaWidgetEventHandle &InHandle){
TMap<int32, slua::LuaVar>* FunctionPool = LuaFuncMappings.Find(InHandle.EventName);
if (FunctionPool == nullptr) {
return;
}
FunctionPool->Remove(InHandle.HandleIndex);
}
void UPW_SimpleWidget::BP_EmitLuaEvent(const FName& EventName, const FLuaBPVar& InLuaArgs){
TMap<int32, slua::LuaVar>* FunctionPool = LuaFuncMappings.Find(EventName);
if (FunctionPool == nullptr) {
return;
}
for (auto &Pair : *FunctionPool) {
slua::LuaVar& Callback = Pair.Value;
if (!Callback.isFunction()) {
continue;
}
Callback.call(InLuaArgs.value);
}
}
void UPW_SimpleWidget::BP_BindLuaEnhancedInput(UInputAction* Action, FLuaBPVar Callback) {
UEnhancedInputComponent* EnhancedInput;
if (!Action) return;
EnhancedInput = CastChecked<UEnhancedInputComponent>(GetOwningPlayer()->InputComponent);
if (!EnhancedInput) return;
EnhancedInput->BindActionInstanceLambda(Action, ETriggerEvent::Triggered, [Callback](const FInputActionInstance& ActionInstance) {
slua::LuaVar LuaCallback = Callback.value;
if (!LuaCallback.isFunction()) return;
LuaCallback.call();
});
}
void UPW_UserWidget::BP_Close(){
APW_UIHud* Hud = Cast<APW_UIHud>(GetPlayerContext().GetHUD());
if (!Hud) return;
Hud->PopWidget(this);
}
void UPW_UserWidget::SetVisible(bool InVisible){
bVisible = InVisible;
_RefreshVisible();
}
void UPW_UserWidget::FrameWorkSetVisible(bool InVisible){
bFrameWorkVisible = InVisible;
_RefreshVisible();
}
void UPW_UserWidget::_UpdateInputState(bool bNeedRegister) {
APlayerController* PC;
UEnhancedInputLocalPlayerSubsystem* Subsystem;
if (!InputMappingContext) return;
PC = GetOwningPlayer();
if (!PC) return;
Subsystem = ULocalPlayer::GetSubsystem<UEnhancedInputLocalPlayerSubsystem>(PC->GetLocalPlayer());
if (!Subsystem) return;
if (bNeedRegister) {
Subsystem->AddMappingContext(InputMappingContext, 0);
}
else {
Subsystem->RemoveMappingContext(InputMappingContext);
}
}
void UPW_UserWidget::_RefreshVisible(){
bool bFinalVisible = bFrameWorkVisible && bVisible;
if (bFinalVisible) {
SetVisibility(ESlateVisibility::SelfHitTestInvisible);
}
else {
SetVisibility(ESlateVisibility::Collapsed);
}
_UpdateInputState(bFinalVisible);
}
// UPW_SimpleWidget::UPW_SimpleWidget():bVisible(true){
// bVisible = true;
// SetVisibility(ESlateVisibility::SelfHitTestInvisible);
// }
//
// bool UPW_SimpleWidget::Initialize(){
// return UUserWidget::Initialize();
// }
//
// void UPW_SimpleWidget::SetVisible(bool InVisible){
// if (bVisible == InVisible) { return; }
// bVisible = InVisible;
// if (bVisible) {
// SetVisibility(ESlateVisibility::SelfHitTestInvisible);
// }
// else {
// SetVisibility(ESlateVisibility::Collapsed);
// }
// }
//
// void UPW_SimpleWidget::BP_SetVisible(bool InVisible){
// SetVisible(InVisible);
// }
//
// FLuaWidgetEventHandle UPW_SimpleWidget::BP_BindLuaEvent(const FName& EventName, const FLuaBPVar& InLuaFunction){
// FLuaWidgetEventHandle Handle;
// if (!InLuaFunction.value.isFunction()) {
// return Handle;
// }
// TMap<int32, slua::LuaVar>& FunctionPool = LuaFuncMappings.FindOrAdd(EventName);
// HandleIndex += 1;
// FunctionPool.Add(HandleIndex, InLuaFunction.value);
// Handle.EventName = EventName;
// Handle.HandleIndex = HandleIndex;
// return Handle;
// }
//
//
// void UPW_SimpleWidget::BP_UnBindLuaEvent(const FLuaWidgetEventHandle &InHandle){
// TMap<int32, slua::LuaVar>* FunctionPool = LuaFuncMappings.Find(InHandle.EventName);
// if (FunctionPool == nullptr) {
// return;
// }
// FunctionPool->Remove(InHandle.HandleIndex);
// }
//
// void UPW_SimpleWidget::BP_EmitLuaEvent(const FName& EventName, const FLuaBPVar& InLuaArgs){
// TMap<int32, slua::LuaVar>* FunctionPool = LuaFuncMappings.Find(EventName);
// if (FunctionPool == nullptr) {
// return;
// }
// for (auto &Pair : *FunctionPool) {
// slua::LuaVar& Callback = Pair.Value;
// if (!Callback.isFunction()) {
// continue;
// }
// Callback.call(InLuaArgs.value);
// }
// }
//
// void UPW_SimpleWidget::BP_BindLuaEnhancedInput(UInputAction* Action, FLuaBPVar Callback) {
// UEnhancedInputComponent* EnhancedInput;
// if (!Action) return;
//
// EnhancedInput = CastChecked<UEnhancedInputComponent>(GetOwningPlayer()->InputComponent);
// if (!EnhancedInput) return;
//
// EnhancedInput->BindActionInstanceLambda(Action, ETriggerEvent::Triggered, [Callback](const FInputActionInstance& ActionInstance) {
// slua::LuaVar LuaCallback = Callback.value;
// if (!LuaCallback.isFunction()) return;
// LuaCallback.call();
// });
// }
//
//
//
//
// void UPW_UserWidget::BP_Close(){
// APW_UIHud* Hud = Cast<APW_UIHud>(GetPlayerContext().GetHUD());
// if (!Hud) return;
// Hud->PopWidget(this);
// }
//
// void UPW_UserWidget::SetVisible(bool InVisible){
// bVisible = InVisible;
// _RefreshVisible();
// }
//
// void UPW_UserWidget::FrameWorkSetVisible(bool InVisible){
// bFrameWorkVisible = InVisible;
// _RefreshVisible();
// }
//
// void UPW_UserWidget::_UpdateInputState(bool bNeedRegister) {
// APlayerController* PC;
// UEnhancedInputLocalPlayerSubsystem* Subsystem;
//
// if (!InputMappingContext) return;
//
// PC = GetOwningPlayer();
// if (!PC) return;
//
// Subsystem = ULocalPlayer::GetSubsystem<UEnhancedInputLocalPlayerSubsystem>(PC->GetLocalPlayer());
// if (!Subsystem) return;
//
// if (bNeedRegister) {
// Subsystem->AddMappingContext(InputMappingContext, 0);
// }
// else {
// Subsystem->RemoveMappingContext(InputMappingContext);
// }
// }
//
// void UPW_UserWidget::_RefreshVisible(){
// bool bFinalVisible = bFrameWorkVisible && bVisible;
// if (bFinalVisible) {
// SetVisibility(ESlateVisibility::SelfHitTestInvisible);
// }
// else {
// SetVisibility(ESlateVisibility::Collapsed);
// }
// _UpdateInputState(bFinalVisible);
// }

View File

@ -2,9 +2,6 @@
#include "Core/PW_UserWidget.h"
#include "Core/UI/PW_UILayer.h"
FString APW_UIHud::GetLuaFilePath_Implementation() const {
return LuaFilePath;
}
void APW_UIHud::BeginPlay() {
ensureMsgf(LayerClass, TEXT("LayerClass not be nullptr"));

View File

@ -8,82 +8,83 @@
bool UPW_UILayer::PushWidget(UPW_UserWidget* WidgetInst){
UOverlay* Overlay;
UOverlaySlot* OverlaySlot;
Overlay = _GetOverlayByLayerType(WidgetInst->LayoutType);
if (!Overlay) return false;
Overlay->AddChild(WidgetInst);
OverlaySlot = Cast<UOverlaySlot>(WidgetInst->Slot);
if (!OverlaySlot) return false;
OverlaySlot->SetVerticalAlignment(EVerticalAlignment::VAlign_Fill);
OverlaySlot->SetHorizontalAlignment(EHorizontalAlignment::HAlign_Fill);
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>push<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>widget
auto AllOverlayChildren = Overlay->GetAllChildren();
for (int i = 0; i < AllOverlayChildren.Num() - 1; ++i) {
UPW_UserWidget* Child = Cast<UPW_UserWidget>(AllOverlayChildren[i]);
if (!Child) continue;
Child->FrameWorkSetVisible(false);
}
WidgetInst->FrameWorkSetVisible(true);
// UOverlay* Overlay;
// UOverlaySlot* OverlaySlot;
//
// Overlay = _GetOverlayByLayerType(WidgetInst->LayoutType);
// if (!Overlay) return false;
//
// Overlay->AddChild(WidgetInst);
// OverlaySlot = Cast<UOverlaySlot>(WidgetInst->Slot);
// if (!OverlaySlot) return false;
//
// OverlaySlot->SetVerticalAlignment(EVerticalAlignment::VAlign_Fill);
// OverlaySlot->SetHorizontalAlignment(EHorizontalAlignment::HAlign_Fill);
//
// // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>push<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>widget
// auto AllOverlayChildren = Overlay->GetAllChildren();
// for (int i = 0; i < AllOverlayChildren.Num() - 1; ++i) {
// UPW_UserWidget* Child = Cast<UPW_UserWidget>(AllOverlayChildren[i]);
// if (!Child) continue;
// Child->FrameWorkSetVisible(false);
// }
//
// WidgetInst->FrameWorkSetVisible(true);
return true;
}
void UPW_UILayer::PopWidget(const UPW_UserWidget* WidgetInst){
UOverlay* Overlay;
bool bNeedRemove;
int32 i, OverlayWidgetCount;
UPW_UserWidget* Child, * NeedShowWidget;
TArray<UWidget*> AllOverlayChildren;
TArray<UPW_UserWidget*> NeedRemoveWidgets;
bNeedRemove = true;
NeedShowWidget = nullptr;
Overlay = _GetOverlayByLayerType(WidgetInst->LayoutType);
if (!Overlay) return;
AllOverlayChildren = Overlay->GetAllChildren();
OverlayWidgetCount = AllOverlayChildren.Num();
for (i = OverlayWidgetCount - 1; i >= 0; --i) {
Child = Cast<UPW_UserWidget>(AllOverlayChildren[i]);
if (!Child) continue;
if(bNeedRemove){
NeedRemoveWidgets.Add(Child);
}
else if(Child->bVisible) {
NeedShowWidget = Child;
break;
}
if (Child == WidgetInst) {
bNeedRemove = false;
}
}
for (i = 0; i < NeedRemoveWidgets.Num(); ++i) {
NeedRemoveWidgets[i]->FrameWorkSetVisible(false);
NeedRemoveWidgets[i]->RemoveFromParent();
}
if (NeedShowWidget) {
NeedShowWidget->FrameWorkSetVisible(true);
}
// UOverlay* Overlay;
// bool bNeedRemove;
// int32 i, OverlayWidgetCount;
// UPW_UserWidget* Child, * NeedShowWidget;
// TArray<UWidget*> AllOverlayChildren;
// TArray<UPW_UserWidget*> NeedRemoveWidgets;
//
// bNeedRemove = true;
// NeedShowWidget = nullptr;
//
// Overlay = _GetOverlayByLayerType(WidgetInst->LayoutType);
// if (!Overlay) return;
//
// AllOverlayChildren = Overlay->GetAllChildren();
// OverlayWidgetCount = AllOverlayChildren.Num();
//
// for (i = OverlayWidgetCount - 1; i >= 0; --i) {
// Child = Cast<UPW_UserWidget>(AllOverlayChildren[i]);
// if (!Child) continue;
// if(bNeedRemove){
// NeedRemoveWidgets.Add(Child);
// }
// else if(Child->bVisible) {
// NeedShowWidget = Child;
// break;
// }
// if (Child == WidgetInst) {
// bNeedRemove = false;
// }
// }
// for (i = 0; i < NeedRemoveWidgets.Num(); ++i) {
// NeedRemoveWidgets[i]->FrameWorkSetVisible(false);
// NeedRemoveWidgets[i]->RemoveFromParent();
// }
// if (NeedShowWidget) {
// NeedShowWidget->FrameWorkSetVisible(true);
// }
}
UOverlay* UPW_UILayer::_GetOverlayByLayerType(EWidgetLayoutType InLayoutType){
switch (LayoutType) {
case EWidgetLayoutType::MainLayer:
return MainLayer;
case EWidgetLayoutType::PopupLayer:
return PopupLayer;
case EWidgetLayoutType::FloatLayer:
return FloatLayer;
case EWidgetLayoutType::TopLayer:
return TopLayer;
default:
return nullptr;
}
// switch (LayoutType) {
// case EWidgetLayoutType::MainLayer:
// return MainLayer;
// case EWidgetLayoutType::PopupLayer:
// return PopupLayer;
// case EWidgetLayoutType::FloatLayer:
// return FloatLayer;
// case EWidgetLayoutType::TopLayer:
// return TopLayer;
// default:
// return nullptr;
// }
return nullptr;
}

View File

@ -1,9 +0,0 @@
#include "LuaCppBinding.h"
using slua::lua_State, slua::LuaObject, slua::LuaStruct;
extern void RegisterAbilitySystemComponentExtension() {
}

View File

@ -1,25 +0,0 @@
#include "LuaCppBinding.h"
using namespace slua;
static int LuaBinding_FindRow(lua_State* L) {
UDataTable* DataTable = LuaObject::checkUD<UDataTable>(L, 1);
FName RowName = LuaObject::checkValue<FName>(L, 2);
FTableRowBase* TableRow = DataTable->FindRow<FTableRowBase>(RowName, TEXT(""));
const UScriptStruct* rowStruct = DataTable->GetRowStruct();
LuaStruct* luaStruct = new LuaStruct();
luaStruct->Init((uint8*)TableRow, rowStruct->GetStructureSize(), (UScriptStruct*)rowStruct, true);
LuaObject::addLink(L, TableRow);
//auto ret = LuaObject::push(L, luaStruct);
return LuaObject::pushReference<LuaStruct*>(L, luaStruct, TableRow);
}
extern void RegisterDataTableExtension() {
REG_EXTENSION_METHOD_IMP(UDataTable, "FindRow", { return LuaBinding_FindRow(L); });
}

View File

@ -9,7 +9,7 @@ static FString GetPropertyNameInOwner(UObject *Attr){
UObject* Outer = Attr->GetOuter();
if (!Outer) return FString();
// <20><><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
FProperty* Property = nullptr;
for (TFieldIterator<FProperty> PropIt(Outer->GetClass()); PropIt; ++PropIt){
Property = *PropIt;
@ -26,53 +26,12 @@ static FString GetPropertyNameInOwner(UObject *Attr){
return FString();
}
static void CopyAttributeToTable(UObject* Attribute, slua::LuaVar& LuaTable) {
FProperty* Property = nullptr;
FGameplayAttributeData* Data = nullptr;
UClass* AttributeClass = Attribute->GetClass();
for (TFieldIterator<FProperty> PropIt(AttributeClass); PropIt; ++PropIt) {
Property = *PropIt;
if (Property->GetOwnerClass() != AttributeClass) continue; // ȷ<><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ǰ<EFBFBD><EFBFBD><E0A3A8><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><C7B8>
FStructProperty* StructProperty = CastField<FStructProperty>(Property);
if (!StructProperty || StructProperty->Struct != FGameplayAttributeData::StaticStruct()) continue;
Data = StructProperty->ContainerPtrToValuePtr<FGameplayAttributeData>(Attribute);
if (!Data) continue;
LuaTable.setToTable(Property->GetName(),Data->GetBaseValue());
}
}
bool UPW_AttributeSet::RegisterCustomAttribute(){
ILuaOverriderInterface* Owner = Cast<ILuaOverriderInterface>(GetOwningActor());
if (!Owner) return false;
// <20><>ȡActor<6F><72>Lua<75><61><EFBFBD><EFBFBD>
slua::LuaVar SelfTable = Owner->GetSelfTable();
// <20><>ȡ LuaState
slua::lua_State * RawState = SelfTable.getState();
// <20><><EFBFBD><EFBFBD> Reactive ģ<><C4A3>
slua::LuaVar moduleTable = slua::LuaState::get(RawState)->requireModule("Core.Reactive");
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ReactiveProperty <20><><EFBFBD><EFBFBD>
LuaSideData = moduleTable.callField("ReactiveProperty");
// <20><>Attribute<74><65><EFBFBD><EFBFBD><EFBFBD>Գ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>Lua Reactive Property
CopyAttributeToTable(this, LuaSideData);
// <20><><EFBFBD><EFBFBD>Lua Reactive Property
auto name = GetPropertyNameInOwner(this);
Owner->GetSelfTable().setToTable<FString, slua::LuaVar>(
TEXT("Lua") + name, LuaSideData, true
);
return true;
}
void UPW_AttributeSet::PostAttributeChange(const FGameplayAttribute& Attribute, float OldValue, float NewValue){
FString AttributeName = Attribute.GetName();
LuaSideData.setToTable(AttributeName, NewValue);
OnAttributeChanged.Broadcast(AttributeName, OldValue, NewValue);
}

View File

@ -4,12 +4,6 @@
UBusyGameAbility::UBusyGameAbility()
{
bHasBlueprintActivateFromEvent = true;
}
FString UBusyGameAbility::GetLuaFilePath_Implementation()const
{
return LuaFilePath;
}
bool UBusyGameAbility::GetAbilityEffectSpecHandle(const FName& EffectName, const UAbilitySystemComponent* Asc, const int32 Level,

View File

@ -2,9 +2,3 @@
#include "Hud/BusyGameHud.h"
FString ABusyGameHud::GetLuaFilePath_Implementation() const{
return LuaFilePath;
}

View File

@ -1,6 +1 @@
#include "Level/Actor/Components/BusyAbilitySystemComponent.h"
FString UBusyAbilitySystemComponent::GetLuaFilePath_Implementation() const
{
return LuaFilePath;
}

View File

@ -3,7 +3,6 @@
#pragma once
#include "CoreMinimal.h"
#include "LuaOverriderInterface.h"
#include "Camera/CameraComponent.h"
#include "BusyCameraComponent.generated.h"
@ -11,7 +10,7 @@
*
*/
UCLASS()
class BUSYRABBIT_API UBusyCameraComponent : public UCameraComponent, public ILuaOverriderInterface
class BUSYRABBIT_API UBusyCameraComponent : public UCameraComponent
{
GENERATED_BODY()

View File

@ -2,7 +2,6 @@
#pragma once
#include "slua.h"
#include "CoreMinimal.h"
#include "Engine/GameInstance.h"
#include "BusyGameInstance.generated.h"
@ -24,13 +23,6 @@ public:
public:
virtual void Init()override;
virtual void Shutdown() override;
public:
void CreateLuaState();
void CloseLuaState();
void LuaStateInitCallback(NS_SLUA::lua_State* L);
public:
NS_SLUA::LuaState* state;
protected:
@ -38,8 +30,5 @@ protected:
FBusyOnEndFrameDelegate OnEndFrameDelegate;
void OnEndFrame();
protected: // luaside
NS_SLUA::LuaVar LuaGameInstance;
NS_SLUA::LuaVar OnLuaEndFrame;
};

View File

@ -3,14 +3,14 @@
#pragma once
#include "CoreMinimal.h"
#include "LuaGameMode.h"
#include "Runtime/Engine/Classes/GameFramework/GameMode.h"
#include "BusyGameMode.generated.h"
/**
*
*/
UCLASS()
class BUSYRABBIT_API ABusyGameMode : public ALuaGameMode
class BUSYRABBIT_API ABusyGameMode : public AGameMode
{
GENERATED_BODY()

View File

@ -3,14 +3,14 @@
#pragma once
#include "CoreMinimal.h"
#include "LuaGameState.h"
#include "Runtime/Engine/Classes/GameFramework/GameState.h"
#include "BusyGameState.generated.h"
/**
*
*/
UCLASS()
class BUSYRABBIT_API ABusyGameState : public ALuaGameState
class BUSYRABBIT_API ABusyGameState : public AGameState
{
GENERATED_BODY()

View File

@ -3,14 +3,13 @@
#pragma once
#include "CoreMinimal.h"
#include "LuaPlayerController.h"
#include "BusyPlayerController.generated.h"
/**
*
*/
UCLASS()
class BUSYRABBIT_API ABusyPlayerController : public ALuaPlayerController
class BUSYRABBIT_API ABusyPlayerController : public APlayerController
{
GENERATED_BODY()
virtual void BeginPlay()override;

View File

@ -3,14 +3,14 @@
#pragma once
#include "CoreMinimal.h"
#include "LuaPlayerState.h"
#include "Runtime/Engine/Classes/GameFramework/PlayerState.h"
#include "BusyPlayerState.generated.h"
/**
*
*/
UCLASS()
class BUSYRABBIT_API ABusyPlayerState : public ALuaPlayerState
class BUSYRABBIT_API ABusyPlayerState : public APlayerState
{
GENERATED_BODY()
@ -20,5 +20,5 @@ public:
public:
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
TObjectPtr<class UInventoryComponent> Inventory; // <20>ֿ<EFBFBD>
TObjectPtr<class UInventoryComponent> Inventory; // <20>ֿ<EFBFBD>
};

View File

@ -3,7 +3,6 @@
#pragma once
#include "CoreMinimal.h"
#include "LuaActorComponent.h"
#include "InventoryComponent.generated.h"
USTRUCT(BlueprintType)
@ -30,7 +29,7 @@ DECLARE_DYNAMIC_DELEGATE_TwoParams(FVisitInventoryGridDelegate, int32, Index, co
UCLASS()
class BUSYRABBIT_API UInventoryComponent : public ULuaActorComponent {
class BUSYRABBIT_API UInventoryComponent : public UActorComponent {
GENERATED_BODY()
public:
UInventoryComponent();

View File

@ -3,21 +3,20 @@
#pragma once
#include "CoreMinimal.h"
#include "LuaActorComponent.h"
#include "BusyLuaActorComponent.generated.h"
/**
*
*/
UCLASS()
class BUSYRABBIT_API UBusyLuaActorComponent : public ULuaActorComponent
class BUSYRABBIT_API UBusyLuaActorComponent : public UActorComponent
{
GENERATED_BODY()
public: // <20><>д<EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD>
public: // <20><>д<EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD>
virtual void BeginPlay()override;
public: // Lua<75><61>Ҫʵ<D2AA>ֵĺ<D6B5><C4BA><EFBFBD>
public: // Lua<75><61>Ҫʵ<D2AA>ֵĺ<D6B5><C4BA><EFBFBD>
UFUNCTION(BlueprintImplementableEvent)
void ReceiveLuaBeginPlay();

View File

@ -3,13 +3,13 @@
#pragma once
#include "CoreMinimal.h"
#include "LuaUserWidget.h"
#include "Runtime/UMG/Public/Blueprint/UserWidget.h"
#include "BusyLuaUserWidget.generated.h"
/**
*
*/
UCLASS()
class BUSYRABBIT_API UBusyLuaUserWidget : public ULuaUserWidget{
class BUSYRABBIT_API UBusyLuaUserWidget : public UUserWidget{
GENERATED_BODY()
};

View File

@ -3,7 +3,6 @@
#pragma once
#include "CoreMinimal.h"
#include "LuaOverriderInterface.h"
#include "Abilities/GameplayAbility.h"
#include "PW_Ability.generated.h"
@ -11,14 +10,12 @@
*
*/
UCLASS()
class BUSYRABBIT_API UPW_Ability : public UGameplayAbility, public ILuaOverriderInterface{
class BUSYRABBIT_API UPW_Ability : public UGameplayAbility{
GENERATED_BODY()
public:
UPW_Ability();
public:
virtual FString GetLuaFilePath_Implementation() const override;
virtual void ApplyCost(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo) const override;
UFUNCTION(BlueprintNativeEvent)

View File

@ -3,7 +3,7 @@
#pragma once
#include "CoreMinimal.h"
#include "LuaUserWidget.h"
#include "Runtime/UMG/Public/Blueprint/UserWidget.h"
#include "Blueprint/IUserObjectListEntry.h"
#include "PW_ListViewEntry.generated.h"
@ -11,7 +11,7 @@
*
*/
UCLASS()
class BUSYRABBIT_API UPW_ListViewEntry : public ULuaUserWidget, public IUserObjectListEntry{
class BUSYRABBIT_API UPW_ListViewEntry : public UUserWidget, public IUserObjectListEntry{
GENERATED_BODY()
};

View File

@ -1,23 +0,0 @@
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "LuaOverriderInterface.h"
#include "UObject/NoExportTypes.h"
#include "PW_Object.generated.h"
/**
*
*/
UCLASS()
class BUSYRABBIT_API UPW_Object : public UObject, public ILuaOverriderInterface{
GENERATED_BODY()
public:
UPW_Object();
public:
virtual FString GetLuaFilePath_Implementation() const override;
protected:
FString LuaFilePath;
};

View File

@ -1,24 +0,0 @@
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "slua.h"
#include "CoreMinimal.h"
#include "Engine/TimerHandle.h"
#include "UObject/NoExportTypes.h"
#include "PW_TimerModule.generated.h"
/**
*
*/
UCLASS()
class BUSYRABBIT_API UPW_TimerModule : public UObject
{
GENERATED_BODY()
public:
//UFUNCTION(BlueprintCallable)
//int SetTimer(slua::LuaVar cb);
protected:
TArray<FTimerHandle> Timers;
};

View File

@ -3,8 +3,7 @@
#pragma once
#include "CoreMinimal.h"
#include "LuaUserWidget.h"
#include "LuaBlueprintLibrary.h"
#include "Runtime/UMG/Public/Blueprint/UserWidget.h"
#include "PW_UserWidget.generated.h"
UENUM(BlueprintType)
@ -29,40 +28,40 @@ struct FLuaWidgetEventHandle {
*
*/
UCLASS()
class BUSYRABBIT_API UPW_SimpleWidget : public ULuaUserWidget
class BUSYRABBIT_API UPW_SimpleWidget : public UUserWidget
{
GENERATED_BODY()
public:
UPW_SimpleWidget();
virtual bool Initialize() override;
public:
virtual void SetVisible(bool InVisible);
UFUNCTION(BlueprintCallable)
void BP_SetVisible(bool InVisible);
UFUNCTION(BlueprintCallable)
FLuaWidgetEventHandle BP_BindLuaEvent(const FName& EventName, const FLuaBPVar& InLuaFunction);
UFUNCTION(BlueprintCallable)
void BP_UnBindLuaEvent(const FLuaWidgetEventHandle& InHandle);
UFUNCTION(BlueprintCallable)
void BP_EmitLuaEvent(const FName& EventName, const FLuaBPVar& InLuaArgs);
UFUNCTION(BlueprintCallable)
void BP_BindLuaEnhancedInput(class UInputAction* Action, FLuaBPVar Callback);
public:
UPROPERTY(BlueprintReadOnly)
bool bVisible;
protected: // lua相关
int32 HandleIndex = 0;
TMap<FName, TMap<int32, slua::LuaVar>> LuaFuncMappings;
// UPW_SimpleWidget();
// virtual bool Initialize() override;
//
// public:
// virtual void SetVisible(bool InVisible);
//
// UFUNCTION(BlueprintCallable)
// void BP_SetVisible(bool InVisible);
//
// UFUNCTION(BlueprintCallable)
// FLuaWidgetEventHandle BP_BindLuaEvent(const FName& EventName, const FLuaBPVar& InLuaFunction);
//
// UFUNCTION(BlueprintCallable)
// void BP_UnBindLuaEvent(const FLuaWidgetEventHandle& InHandle);
//
// UFUNCTION(BlueprintCallable)
// void BP_EmitLuaEvent(const FName& EventName, const FLuaBPVar& InLuaArgs);
//
// UFUNCTION(BlueprintCallable)
// void BP_BindLuaEnhancedInput(class UInputAction* Action, FLuaBPVar Callback);
//
//
// public:
// UPROPERTY(BlueprintReadOnly)
// bool bVisible;
//
//
// protected: // lua相关
// int32 HandleIndex = 0;
// TMap<FName, TMap<int32, slua::LuaVar>> LuaFuncMappings;
};
@ -74,32 +73,32 @@ UCLASS()
class BUSYRABBIT_API UPW_UserWidget : public UPW_SimpleWidget{
GENERATED_BODY()
public:
UPROPERTY(BlueprintReadOnly, EditDefaultsOnly, DisplayName="是否全局唯一")
bool bSingletonInstance;
public:
UPROPERTY(BlueprintReadOnly, EditDefaultsOnly)
EWidgetLayoutType LayoutType;
UPROPERTY(EditDefaultsOnly, Category = "Input")
TObjectPtr<class UInputMappingContext> InputMappingContext;
public:
UFUNCTION(BlueprintCallable)
void BP_Close();
public:
virtual void SetVisible(bool InVisible)override;
public:
void FrameWorkSetVisible(bool InVisible);
protected:
void _UpdateInputState(bool bNeedRegister);
void _RefreshVisible();
protected:
bool bFrameWorkVisible; // 框架控制的显隐,高优先级
// UPROPERTY(BlueprintReadOnly, EditDefaultsOnly, DisplayName="是否全局唯一")
// bool bSingletonInstance;
//
// public:
// UPROPERTY(BlueprintReadOnly, EditDefaultsOnly)
// EWidgetLayoutType LayoutType;
//
// UPROPERTY(EditDefaultsOnly, Category = "Input")
// TObjectPtr<class UInputMappingContext> InputMappingContext;
//
// public:
// UFUNCTION(BlueprintCallable)
// void BP_Close();
//
// public:
// virtual void SetVisible(bool InVisible)override;
//
// public:
// void FrameWorkSetVisible(bool InVisible);
//
// protected:
// void _UpdateInputState(bool bNeedRegister);
//
// void _RefreshVisible();
//
// protected:
// bool bFrameWorkVisible; // 框架控制的显隐,高优先级
};

View File

@ -3,7 +3,6 @@
#pragma once
#include "CoreMinimal.h"
#include "LuaUserWidget.h"
#include "Blueprint/UserWidget.h"
#include "Core/PW_UserWidget.h"
#include "PW_TableSwitcher.generated.h"
@ -36,7 +35,7 @@ struct FTableSwitcherInfo {
};
UCLASS()
class BUSYRABBIT_API UPW_TableSwitcherWidget: public ULuaUserWidget{
class BUSYRABBIT_API UPW_TableSwitcherWidget: public UUserWidget{
GENERATED_BODY()
public:
FName GetSwitcherName() { return SwitcherName; }

View File

@ -1,18 +1,15 @@
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/HUD.h"
#include "LuaOverriderInterface.h"
#include "PW_UIHud.generated.h"
class UPW_UILayer;
class UPW_UserWidget;
UCLASS()
class BUSYRABBIT_API APW_UIHud : public AHUD, public ILuaOverriderInterface {
class BUSYRABBIT_API APW_UIHud : public AHUD{
GENERATED_BODY()
virtual FString GetLuaFilePath_Implementation() const override;
virtual void BeginPlay()override;
public:

View File

@ -5,7 +5,6 @@
#include "CoreMinimal.h"
#include "AttributeSet.h"
#include "AbilitySystemComponent.h"
#include "LuaOverriderInterface.h"
#include "BusyAttributeSet.generated.h"
@ -33,7 +32,6 @@ public:
FPW_OnAttributeChanged OnAttributeChanged;
protected:
slua::LuaVar LuaSideData;
};
UCLASS()

View File

@ -1,5 +1,4 @@
#pragma once
#include "slua.h"
#include "Data/Ability/BusyAbilityDataAssetBase.h"
#include "Abilities/GameplayAbility.h"
#include "BusyGameAbility.generated.h"
@ -7,16 +6,13 @@
UCLASS(Blueprintable, BlueprintType)
class UBusyGameAbility : public UGameplayAbility, public ILuaOverriderInterface
class UBusyGameAbility : public UGameplayAbility
{
GENERATED_BODY()
public:
UBusyGameAbility();
virtual FString GetLuaFilePath_Implementation()const override;
public:
UFUNCTION(BlueprintCallable)
bool GetAbilityEffectSpecHandle(const FName& EffectName, const UAbilitySystemComponent* Asc, const int32 Level, FGameplayEffectSpecHandle& Handle)const;

View File

@ -4,20 +4,15 @@
#include "CoreMinimal.h"
#include "GameFramework/HUD.h"
#include "LuaOverriderInterface.h"
#include "BusyGameHud.generated.h"
/**
*
*/
UCLASS()
class BUSYRABBIT_API ABusyGameHud : public AHUD, public ILuaOverriderInterface{
class BUSYRABBIT_API ABusyGameHud : public AHUD{
GENERATED_BODY()
virtual FString GetLuaFilePath_Implementation() const override;
public:
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
FString LuaFilePath;
UPROPERTY(EditAnywhere, Category = "UI Class Mapping")
TMap<FName, TSubclassOf<UUserWidget>> UIClassMapping;
};

View File

@ -1,5 +1,4 @@
#pragma once
#include "LuaPawn.h"
#include "Level/Actor/Components/BusyPawnMovement.h"
#include "Level/Actor/Components/BusyAbilitySystemComponent.h"
#include "BusyPawnBase.generated.h"
@ -53,7 +52,7 @@ public:
UCLASS()
class ABusyPawnBase : public ALuaPawn, public IBusyMovable
class ABusyPawnBase : public APawn, public IBusyMovable
{
GENERATED_BODY()
public:

View File

@ -1,5 +1,4 @@
#pragma once
#include "LuaActor.h"
#include "BusyStaticResource.generated.h"
class USpineSkeletonRendererComponent;
@ -7,7 +6,7 @@ class USpineSkeletonAnimationComponent;
UCLASS(Blueprintable, BlueprintType)
class ABusyStaticResource:public ALuaActor
class ABusyStaticResource:public AActor
{
GENERATED_BODY()
public:

View File

@ -1,17 +1,10 @@
#pragma once
#include "slua.h"
#include "AbilitySystemComponent.h"
#include "BusyAbilitySystemComponent.generated.h"
UCLASS()
class UBusyAbilitySystemComponent : public UAbilitySystemComponent, public ILuaOverriderInterface
class UBusyAbilitySystemComponent : public UAbilitySystemComponent
{
GENERATED_BODY()
public:
virtual FString GetLuaFilePath_Implementation() const override;
protected:
FString LuaFilePath;
};

View File

@ -1,5 +1,4 @@
#pragma once
#include "LuaActorComponent.h"
#include "BusyPawnMovement.generated.h"
UINTERFACE(MinimalAPI, Blueprintable)
@ -36,7 +35,7 @@ enum class EBusyMoveState: uint8
UCLASS()
class UBusyPawnMovement : public ULuaActorComponent
class UBusyPawnMovement : public UActorComponent
{
GENERATED_BODY()
public:

View File

@ -1,6 +1,5 @@
#pragma once
#include "LuaPlayerController.h"
#include "GameplayTagContainer.h"
#include "InputAction.h"
#include "LevelPlayerController.generated.h"
@ -49,7 +48,7 @@ struct FBusySkillActionConfig
UCLASS()
class ALevelPlayerController : public ALuaPlayerController
class ALevelPlayerController : public APlayerController
{
GENERATED_BODY()
public:

View File

@ -1,6 +1,6 @@
#pragma once
#include "LuaPlayerState.h"
#include "Runtime/Engine/Classes/GameFramework/PlayerState.h"
#include "LevelPlayerState.generated.h"
class ABusyPlayerRole;
@ -9,7 +9,7 @@ class ABusyPlayerRole;
DECLARE_LOG_CATEGORY_EXTERN(LogLevelPlayerState, Log, All);
UCLASS()
class ALevelPlayerState : public ALuaPlayerState
class ALevelPlayerState : public APlayerState
{
GENERATED_BODY()
public:

View File

@ -1,6 +1,5 @@
#pragma once
#include "Engine/DataTable.h"
#include "LuaActor.h"
#include "Level/Map/Components/TerrainLayerComponent.h"
#include "Level/Map/Components/StaticResourceLayerComponent.h"
#include "GameMapActor.generated.h"
@ -31,7 +30,7 @@ public:
UCLASS(Blueprintable, Blueprintable)
class AGameMapActor : public ALuaActor, public IGameMapInterface
class AGameMapActor : public AActor, public IGameMapInterface
{
GENERATED_BODY()
public:

View File

@ -9,7 +9,7 @@ public class BusyRabbitEditorTarget : TargetRules
{
Type = TargetType.Editor;
DefaultBuildSettings = BuildSettingsVersion.V5;
IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_4;
IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_6;
ExtraModuleNames.Add("BusyRabbit");
}
}