大厅接入
This commit is contained in:
		
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -41,6 +41,7 @@ | |||||||
| *.sdf | *.sdf | ||||||
| *.VC.db | *.VC.db | ||||||
| *.VC.opendb | *.VC.opendb | ||||||
|  | .vsconfig | ||||||
|  |  | ||||||
| # Precompiled Assets | # Precompiled Assets | ||||||
| SourceArt/**/*.png | SourceArt/**/*.png | ||||||
|  | |||||||
| @ -15,8 +15,8 @@ ManualIPAddress= | |||||||
| [/Script/EngineSettings.GameMapsSettings] | [/Script/EngineSettings.GameMapsSettings] | ||||||
| GlobalDefaultGameMode=/Game/Blueprint/Bp_BusyGameMode.Bp_BusyGameMode_C | GlobalDefaultGameMode=/Game/Blueprint/Bp_BusyGameMode.Bp_BusyGameMode_C | ||||||
| GameInstanceClass=/Script/BusyRabbit.BusyGameInstance | GameInstanceClass=/Script/BusyRabbit.BusyGameInstance | ||||||
| EditorStartupMap=/Game/Level/FalconPlain.FalconPlain | EditorStartupMap=/Game/Level/HomeLand.HomeLand | ||||||
| GameDefaultMap=/Game/Level/FalconPlain.FalconPlain | GameDefaultMap=/Game/Level/HomeLand.HomeLand | ||||||
|  |  | ||||||
| [/Script/Engine.RendererSettings] | [/Script/Engine.RendererSettings] | ||||||
| r.Mobile.AntiAliasing=0 | r.Mobile.AntiAliasing=0 | ||||||
|  | |||||||
							
								
								
									
										
											BIN
										
									
								
								Content/Blueprint/Bp_HomelandGameMode.uasset
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Content/Blueprint/Bp_HomelandGameMode.uasset
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								Content/Blueprint/HomeLand/Bp_HomeLandHud.uasset
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Content/Blueprint/HomeLand/Bp_HomeLandHud.uasset
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								Content/Blueprint/HomeLand/Bp_HomeLandPlayerController.uasset
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Content/Blueprint/HomeLand/Bp_HomeLandPlayerController.uasset
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								Content/Blueprint/HomeLand/Bp_HomelandGameMode.uasset
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Content/Blueprint/HomeLand/Bp_HomelandGameMode.uasset
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							| @ -16,6 +16,10 @@ local function CreateItemGenerator(level_config_data) | |||||||
|     return Generator(period, item_data) |     return Generator(period, item_data) | ||||||
| end | end | ||||||
|  |  | ||||||
|  | function SubSystem:Bp_ShouldCreateSubsystem(world) | ||||||
|  |     return false | ||||||
|  | end | ||||||
|  |  | ||||||
| function SubSystem:ReceiveSubSystemInitialize() | function SubSystem:ReceiveSubSystemInitialize() | ||||||
|     local world = BusyGamePlayLibrary.K2_GetWorld(self) |     local world = BusyGamePlayLibrary.K2_GetWorld(self) | ||||||
|     self.start_time = GameplayStatics.GetTimeSeconds(world) |     self.start_time = GameplayStatics.GetTimeSeconds(world) | ||||||
|  | |||||||
| @ -5,26 +5,15 @@ local RoleUtils = require("GamePlay.Utils.RoleUtils") | |||||||
| local GameplayUtils = require("GamePlay.Utils") | local GameplayUtils = require("GamePlay.Utils") | ||||||
| local KismetSystemLibrary = import("KismetSystemLibrary") | local KismetSystemLibrary = import("KismetSystemLibrary") | ||||||
|  |  | ||||||
| --[[ |  | ||||||
|  |  | ||||||
| Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_0" ExportPath="/Script/BlueprintGraph.K2Node_CallFunction'/Game/Blueprint/Bp_BusyCharacter.Bp_BusyCharacter:EventGraph.K2Node_CallFunction_0'" |  | ||||||
|    bIsPureFunc=True |  | ||||||
|    FunctionReference=(MemberParent="/Script/CoreUObject.Class'/Script/Engine.KismetSystemLibrary'",MemberName="IsValid") |  | ||||||
|    NodePosX=416 |  | ||||||
|    NodePosY=576 |  | ||||||
|    NodeGuid=FAEC35AE4921EA704624228C12C6567F |  | ||||||
|    CustomProperties Pin (PinId=560B26AF426C21B8AC88EDB90990EDF1,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nKismet System Library Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.Class'/Script/Engine.KismetSystemLibrary'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetSystemLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) |  | ||||||
|    CustomProperties Pin (PinId=5F3C3BC8429FA25D9B78099F2107C098,PinName="Object",PinToolTip="Object\nObject Reference",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject="/Script/CoreUObject.Class'/Script/CoreUObject.Object'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) |  | ||||||
|    CustomProperties Pin (PinId=5C7188354FCB6B61DE0AC8A14D6E3EEC,PinName="ReturnValue",PinToolTip="Return Value\nBoolean\n\nReturn true if the object is usable : non-null and not pending kill",Direction="EGPD_Output",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) |  | ||||||
| End Object |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ]] |  | ||||||
|  |  | ||||||
| function LevelItem:ReceiveBeginPlay() | function LevelItem:ReceiveBeginPlay() | ||||||
|     self.Super:ReceiveBeginPlay() |  | ||||||
|     self:SetLevelItemID(self.CurrentItemID) |     self:SetLevelItemID(self.CurrentItemID) | ||||||
|     self.world = self:GetWorld() |     self.world = self:GetWorld() | ||||||
|  |     print("LevelItem:ReceiveBeginPlay") | ||||||
|  | end | ||||||
|  |  | ||||||
|  |  | ||||||
|  | function LevelItem:TempSetting() | ||||||
|  |     self:ReceiveBeginPlay() | ||||||
| end | end | ||||||
|  |  | ||||||
| function LevelItem:ReceiveLevelItemSetted(Config) | function LevelItem:ReceiveLevelItemSetted(Config) | ||||||
| @ -46,17 +35,6 @@ function LevelItem:ReceiveLevelItemSetted(Config) | |||||||
|     end) |     end) | ||||||
| end | end | ||||||
|  |  | ||||||
| -- function LevelItem:ReceiveDamage(value) |  | ||||||
| --     local remain = self.proxy.RemainProcess - value |  | ||||||
| --     if remain > 0 then |  | ||||||
| --         self.proxy.RemainProcess = remain |  | ||||||
| --         return true |  | ||||||
| --     else |  | ||||||
| --         self.proxy.RemainProcess = 0 |  | ||||||
| --         self:SetLifeSpan(0.3) |  | ||||||
| --         return false |  | ||||||
| --     end |  | ||||||
| -- end |  | ||||||
|  |  | ||||||
| function LevelItem:GenerateDropItems() | function LevelItem:GenerateDropItems() | ||||||
|     local BusyActorManagerSubSystem = import("BusyActorManagerSubSystem").Get(self.world) |     local BusyActorManagerSubSystem = import("BusyActorManagerSubSystem").Get(self.world) | ||||||
|  | |||||||
							
								
								
									
										11
									
								
								Content/Lua/HomeLand/UI/HomeLandMainUI.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								Content/Lua/HomeLand/UI/HomeLandMainUI.lua
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,11 @@ | |||||||
|  | local GameplayStatics = import("GameplayStatics") | ||||||
|  | local HomeLandMainUI = {} | ||||||
|  |  | ||||||
|  | function HomeLandMainUI:Construct() | ||||||
|  |     self.Gateway.OnClicked:Add(function() | ||||||
|  |         GameplayStatics.OpenLevel(self, "FalconPlain", false, "") | ||||||
|  |     end) | ||||||
|  |  | ||||||
|  | end | ||||||
|  |  | ||||||
|  | return Class(nil, nil, HomeLandMainUI) | ||||||
							
								
								
									
										7
									
								
								Content/Lua/UI/UIHud/HomeLandHud.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								Content/Lua/UI/UIHud/HomeLandHud.lua
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,7 @@ | |||||||
|  | local HomeLandHud = {} | ||||||
|  |  | ||||||
|  | function HomeLandHud:ReceiveBeginPlay() | ||||||
|  |     self:PushWidget("HomeLandMain") | ||||||
|  | end | ||||||
|  |  | ||||||
|  | return Class(nil, nil, HomeLandHud) | ||||||
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								Content/UI/HomeLand/WBP_HomeLandMain.uasset
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Content/UI/HomeLand/WBP_HomeLandMain.uasset
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							| @ -2,6 +2,7 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
| #include "BusyLevelLogicSubSystem.h" | #include "BusyLevelLogicSubSystem.h" | ||||||
|  | #include "Kismet/GameplayStatics.h" | ||||||
|  |  | ||||||
| UBusyLevelLogicSubSystem::UBusyLevelLogicSubSystem(){ | UBusyLevelLogicSubSystem::UBusyLevelLogicSubSystem(){ | ||||||
| 	 | 	 | ||||||
| @ -12,6 +13,14 @@ void UBusyLevelLogicSubSystem::Initialize(FSubsystemCollectionBase& Collection){ | |||||||
| 	ReceiveSubSystemInitialize(); | 	ReceiveSubSystemInitialize(); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | bool UBusyLevelLogicSubSystem::ShouldCreateSubsystem(UObject* Outer) const{ | ||||||
|  | 	if (!Super::ShouldCreateSubsystem(Outer)) { | ||||||
|  | 		return false; | ||||||
|  | 	} | ||||||
|  | 	auto s = UGameplayStatics::GetCurrentLevelName(Outer); | ||||||
|  | 	return UGameplayStatics::GetCurrentLevelName(Outer) != "HomeLand"; | ||||||
|  | } | ||||||
|  |  | ||||||
| void UBusyLevelLogicSubSystem::Tick(float DeltaTime){ | void UBusyLevelLogicSubSystem::Tick(float DeltaTime){ | ||||||
| 	Super::Tick(DeltaTime); | 	Super::Tick(DeltaTime); | ||||||
| 	ReceiveSubSystemTick(DeltaTime); | 	ReceiveSubSystemTick(DeltaTime); | ||||||
|  | |||||||
							
								
								
									
										37
									
								
								Source/BusyRabbit/Private/Core/UI/PW_UIHud.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								Source/BusyRabbit/Private/Core/UI/PW_UIHud.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,37 @@ | |||||||
|  | #include "Core/UI/PW_UIHud.h" | ||||||
|  | #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")); | ||||||
|  | 	if ((UILayer = CreateWidget<UPW_UILayer>(GetWorld(), LayerClass))) { | ||||||
|  | 		UILayer->AddToViewport(); | ||||||
|  | 	} | ||||||
|  | 	Super::BeginPlay(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | UPW_UserWidget* APW_UIHud::PushWidget(const FName& WidgetName) { | ||||||
|  | 	if (UILayer == nullptr) { | ||||||
|  | 		return nullptr; | ||||||
|  | 	} | ||||||
|  | 	TSubclassOf<UPW_UserWidget>* WidgetClass = UIClassMapping.Find(WidgetName); | ||||||
|  | 	if (WidgetClass == nullptr) { | ||||||
|  | 		return nullptr; | ||||||
|  | 	} | ||||||
|  | 	UPW_UserWidget* Inst = CreateWidget<UPW_UserWidget>(GetWorld(), WidgetClass->Get()); | ||||||
|  | 	if (Inst == nullptr) { | ||||||
|  | 		return nullptr; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if (UILayer->PushWidget(WidgetName, Inst)) { | ||||||
|  | 		return Inst; | ||||||
|  | 	} | ||||||
|  | 	else { | ||||||
|  | 		return nullptr; | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
							
								
								
									
										53
									
								
								Source/BusyRabbit/Private/Core/UI/PW_UILayer.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								Source/BusyRabbit/Private/Core/UI/PW_UILayer.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,53 @@ | |||||||
|  | // Fill out your copyright notice in the Description page of Project Settings. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include "Core/UI/PW_UILayer.h" | ||||||
|  | #include "Core/PW_UserWidget.h" | ||||||
|  | #include "Components/Overlay.h" | ||||||
|  | #include "Components/OverlaySlot.h" | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | bool UPW_UILayer::ShowWidget(const FName& WidgetName){ | ||||||
|  | 	UPW_UserWidget* Widget = *WidgetPool.Find(WidgetName); | ||||||
|  | 	if (Widget == nullptr) { | ||||||
|  | 		return false; | ||||||
|  | 	} | ||||||
|  | 	Widget->SetVisible(true); | ||||||
|  | 	return true; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | bool UPW_UILayer::HideWidget(const FName& WidgetName){ | ||||||
|  | 	UPW_UserWidget* Widget = *WidgetPool.Find(WidgetName); | ||||||
|  | 	if (Widget == nullptr) { | ||||||
|  | 		return false; | ||||||
|  | 	} | ||||||
|  | 	Widget->SetVisible(false); | ||||||
|  | 	return true; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | bool UPW_UILayer::PushWidget(const FName& WidgetName, UPW_UserWidget* WidgetInst){ | ||||||
|  | 	UOverlay* Overlay; | ||||||
|  | 	UOverlaySlot* OverlaySlot; | ||||||
|  | 	switch (WidgetInst->LayoutType) { | ||||||
|  | 		case EWidgetLayoutType::MainLayer: Overlay = MainLayer; break; | ||||||
|  | 		case EWidgetLayoutType::PopupLayer: Overlay = PopupLayer; break; | ||||||
|  | 		case EWidgetLayoutType::FloatLayer: Overlay = FloatLayer; break; | ||||||
|  | 		case EWidgetLayoutType::TopLayer: Overlay = TopLayer; break; | ||||||
|  | 		default: return false; | ||||||
|  | 	} | ||||||
|  | 	Overlay->AddChild(WidgetInst); | ||||||
|  | 	if ((OverlaySlot = Cast<UOverlaySlot>(WidgetInst->Slot))) { | ||||||
|  | 		OverlaySlot->SetVerticalAlignment(EVerticalAlignment::VAlign_Fill); | ||||||
|  | 		OverlaySlot->SetHorizontalAlignment(EHorizontalAlignment::HAlign_Fill); | ||||||
|  | 		WidgetInst->SetVisible(true); | ||||||
|  | 		WidgetPool.Add(WidgetName, WidgetInst); | ||||||
|  | 		return true; | ||||||
|  | 	} else { | ||||||
|  | 		return false; | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | bool UPW_UILayer::PopWidget(const FName& WidgetName){ | ||||||
|  | 	return true; | ||||||
|  | } | ||||||
| @ -3,12 +3,8 @@ | |||||||
|  |  | ||||||
| #include "Hud/BusyGameHud.h" | #include "Hud/BusyGameHud.h" | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| FString ABusyGameHud::GetLuaFilePath_Implementation() const{ | FString ABusyGameHud::GetLuaFilePath_Implementation() const{ | ||||||
| 	return LuaFilePath; | 	return LuaFilePath; | ||||||
| } | } | ||||||
|  |  | ||||||
| //void ABusyGameHud::PushWidget(const FName& WidgetName){ |  | ||||||
| //	auto WidgetClass = UIClassMapping.Find(WidgetName); |  | ||||||
| //	APlayerController* PC = GetOwningPlayerController(); |  | ||||||
| //	CreateWidget<UUserWidget>(); |  | ||||||
| //} |  | ||||||
| @ -39,6 +39,18 @@ void ABusyLevelItem::BeginPlay(){ | |||||||
| 		PickBar->SetWidgetClass(cls); | 		PickBar->SetWidgetClass(cls); | ||||||
| 	} | 	} | ||||||
| 	Super::BeginPlay(); | 	Super::BeginPlay(); | ||||||
|  | 	bIsBeginPlay = true; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void ABusyLevelItem::EndPlay(const EEndPlayReason::Type EndPlayReason){ | ||||||
|  | 	Super::EndPlay(EndPlayReason); | ||||||
|  | 	bIsBeginPlay = false; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void ABusyLevelItem::PostLuaHook(){ | ||||||
|  | 	if (bIsBeginPlay) { | ||||||
|  | 		CallLuaFunctionIfExist("TempSetting"); | ||||||
|  | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| void ABusyLevelItem::InitCapsule(){ | void ABusyLevelItem::InitCapsule(){ | ||||||
|  | |||||||
| @ -23,6 +23,9 @@ public: | |||||||
| public: | public: | ||||||
| 	virtual void Initialize(FSubsystemCollectionBase& Collection) override; | 	virtual void Initialize(FSubsystemCollectionBase& Collection) override; | ||||||
|  |  | ||||||
|  | 	virtual bool ShouldCreateSubsystem(UObject* Outer) const override; | ||||||
|  |  | ||||||
|  |  | ||||||
| 	virtual void Tick(float DeltaTime) override; | 	virtual void Tick(float DeltaTime) override; | ||||||
|  |  | ||||||
| 	virtual FString GetLuaFilePath_Implementation() const override; | 	virtual FString GetLuaFilePath_Implementation() const override; | ||||||
| @ -47,5 +50,4 @@ public:  //  | |||||||
| 	UFUNCTION(BlueprintImplementableEvent) | 	UFUNCTION(BlueprintImplementableEvent) | ||||||
| 	void ReceiveSubSystemTick(float DeltaTime); | 	void ReceiveSubSystemTick(float DeltaTime); | ||||||
|  |  | ||||||
|  |  | ||||||
| }; | }; | ||||||
|  | |||||||
							
								
								
									
										
											BIN
										
									
								
								Source/BusyRabbit/Public/BusyRabbit.lnk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Source/BusyRabbit/Public/BusyRabbit.lnk
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										34
									
								
								Source/BusyRabbit/Public/Core/UI/PW_UIHud.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								Source/BusyRabbit/Public/Core/UI/PW_UIHud.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,34 @@ | |||||||
|  | #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 { | ||||||
|  | 	GENERATED_BODY() | ||||||
|  |  | ||||||
|  | 	virtual FString GetLuaFilePath_Implementation() const override; | ||||||
|  |  | ||||||
|  | 	virtual void BeginPlay()override; | ||||||
|  |  | ||||||
|  | public: | ||||||
|  | 	UFUNCTION(BlueprintCallable) | ||||||
|  | 	UPW_UserWidget* PushWidget(const FName& WidgetName); | ||||||
|  |  | ||||||
|  | public: | ||||||
|  | 	UPROPERTY(EditDefaultsOnly, BlueprintReadWrite) | ||||||
|  | 	FString LuaFilePath; | ||||||
|  |  | ||||||
|  | 	UPROPERTY(EditDefaultsOnly, BlueprintReadWrite) | ||||||
|  | 	TSubclassOf<UPW_UILayer> LayerClass; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	UPROPERTY(EditAnywhere, Category = "UI Class Mapping") | ||||||
|  | 	TMap<FName, TSubclassOf<UPW_UserWidget>> UIClassMapping; | ||||||
|  |  | ||||||
|  | protected: | ||||||
|  | 	TObjectPtr<UPW_UILayer> UILayer; | ||||||
|  | }; | ||||||
							
								
								
									
										48
									
								
								Source/BusyRabbit/Public/Core/UI/PW_UILayer.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								Source/BusyRabbit/Public/Core/UI/PW_UILayer.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,48 @@ | |||||||
|  | // Fill out your copyright notice in the Description page of Project Settings. | ||||||
|  |  | ||||||
|  | #pragma once | ||||||
|  |  | ||||||
|  | #include "CoreMinimal.h" | ||||||
|  | #include "Core/PW_UserWidget.h" | ||||||
|  | #include "PW_UILayer.generated.h" | ||||||
|  |  | ||||||
|  | class UOverlay; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  *  | ||||||
|  |  */ | ||||||
|  | UCLASS() | ||||||
|  | class BUSYRABBIT_API UPW_UILayer : public UPW_UserWidget | ||||||
|  | { | ||||||
|  |     GENERATED_BODY() | ||||||
|  |  | ||||||
|  | public: | ||||||
|  |     UFUNCTION(BlueprintCallable) | ||||||
|  |     bool ShowWidget(const FName& WidgetName); | ||||||
|  |  | ||||||
|  |     UFUNCTION(BlueprintCallable) | ||||||
|  |     bool HideWidget(const FName& WidgetName); | ||||||
|  |  | ||||||
|  |     UFUNCTION(BlueprintCallable) | ||||||
|  |     bool PushWidget(const FName& WidgetName, UPW_UserWidget* WidgetInst); | ||||||
|  |  | ||||||
|  |     UFUNCTION(BlueprintCallable) | ||||||
|  |     bool PopWidget(const FName& WidgetName); | ||||||
|  |  | ||||||
|  |  | ||||||
|  | protected: | ||||||
|  |     UPROPERTY(BlueprintReadOnly, meta = (BindWidget)) | ||||||
|  |     TObjectPtr<UOverlay> MainLayer; | ||||||
|  |  | ||||||
|  |     UPROPERTY(BlueprintReadOnly, meta = (BindWidget)) | ||||||
|  |     TObjectPtr<UOverlay> PopupLayer; | ||||||
|  |  | ||||||
|  |     UPROPERTY(BlueprintReadOnly, meta = (BindWidget)) | ||||||
|  |     TObjectPtr<UOverlay> FloatLayer; | ||||||
|  |  | ||||||
|  |     UPROPERTY(BlueprintReadOnly, meta = (BindWidget)) | ||||||
|  |     TObjectPtr<UOverlay> TopLayer; | ||||||
|  |  | ||||||
|  | protected: | ||||||
|  |     TMap<FName, UPW_UserWidget*> WidgetPool; | ||||||
|  | }; | ||||||
| @ -29,6 +29,7 @@ public: | |||||||
| 	virtual void PostAttributeChange(const FGameplayAttribute& Attribute, float OldValue, float NewValue)override; | 	virtual void PostAttributeChange(const FGameplayAttribute& Attribute, float OldValue, float NewValue)override; | ||||||
|  |  | ||||||
| public: | public: | ||||||
|  | 	UPROPERTY(BlueprintReadWrite) | ||||||
| 	FPW_OnAttributeChanged OnAttributeChanged; | 	FPW_OnAttributeChanged OnAttributeChanged; | ||||||
|  |  | ||||||
| protected: | protected: | ||||||
|  | |||||||
| @ -15,11 +15,6 @@ class BUSYRABBIT_API ABusyGameHud : public AHUD, public ILuaOverriderInterface{ | |||||||
| 	GENERATED_BODY() | 	GENERATED_BODY() | ||||||
|  |  | ||||||
| 	virtual FString GetLuaFilePath_Implementation() const override; | 	virtual FString GetLuaFilePath_Implementation() const override; | ||||||
|  |  | ||||||
| public: |  | ||||||
| 	//UFUNCTION(BlueprintCallable) |  | ||||||
| 	//void PushWidget(const FName& WidgetName); |  | ||||||
|  |  | ||||||
| public: | public: | ||||||
| 	UPROPERTY(EditDefaultsOnly, BlueprintReadWrite) | 	UPROPERTY(EditDefaultsOnly, BlueprintReadWrite) | ||||||
| 	FString LuaFilePath; | 	FString LuaFilePath; | ||||||
|  | |||||||
| @ -63,6 +63,10 @@ public: | |||||||
|  |  | ||||||
| 	virtual void BeginPlay() override; | 	virtual void BeginPlay() override; | ||||||
|  |  | ||||||
|  | 	virtual void EndPlay(const EEndPlayReason::Type EndPlayReason)override; | ||||||
|  |  | ||||||
|  | 	virtual void PostLuaHook() override; | ||||||
|  |  | ||||||
| protected: | protected: | ||||||
| 	void InitCapsule(); | 	void InitCapsule(); | ||||||
| 	void InitSprite(); | 	void InitSprite(); | ||||||
| @ -102,6 +106,9 @@ protected: | |||||||
| 	UPROPERTY() | 	UPROPERTY() | ||||||
| 	TObjectPtr<UBusyLevelItemAttributeSet> LevelItemAttribute; | 	TObjectPtr<UBusyLevelItemAttributeSet> LevelItemAttribute; | ||||||
|  |  | ||||||
|  | protected: | ||||||
|  | 	bool bIsBeginPlay; | ||||||
|  |  | ||||||
| public:  // 需要蓝图实现的函数 | public:  // 需要蓝图实现的函数 | ||||||
| 	// LevelItem被设置时的回调 | 	// LevelItem被设置时的回调 | ||||||
| 	UFUNCTION(BlueprintImplementableEvent) | 	UFUNCTION(BlueprintImplementableEvent) | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user