132 lines
5.2 KiB
Lua
132 lines
5.2 KiB
Lua
|
---@class WBP_AttributePanel_C:UUserWidget
|
|||
|
---@field NewButton_Toggle UNewButton
|
|||
|
---@field Panel_AdvanceAttributes UCanvasPanel
|
|||
|
---@field Panel_BaseAttributes UCanvasPanel
|
|||
|
---@field Panel_BG UWBP_WidgetHeader_C
|
|||
|
---@field Panel_BonusAttributes UCanvasPanel
|
|||
|
---@field Panel_EconomyAttributes UCanvasPanel
|
|||
|
---@field Panel_GrowthAttributes UCanvasPanel
|
|||
|
---@field Panel_Main UCanvasPanel
|
|||
|
---@field TextBlock_Adv_AdditionalAttack UTextBlock
|
|||
|
---@field TextBlock_Adv_CriticalAttack UTextBlock
|
|||
|
---@field TextBlock_Adv_CriticalAttackRate UTextBlock
|
|||
|
---@field TextBlock_Adv_DefencePenetration UTextBlock
|
|||
|
---@field TextBlock_Adv_DefencePenetrationPercent UTextBlock
|
|||
|
---@field TextBlock_Adv_FinalAttack UTextBlock
|
|||
|
---@field TextBlock_Adv_FireAttack UTextBlock
|
|||
|
---@field TextBlock_Base_Attack UTextBlock
|
|||
|
---@field TextBlock_Base_AttackIntervalReduction UTextBlock
|
|||
|
---@field TextBlock_Base_AttackRange UTextBlock
|
|||
|
---@field TextBlock_Base_AttackSpeed UTextBlock
|
|||
|
---@field TextBlock_Base_DamageReduction UTextBlock
|
|||
|
---@field TextBlock_Base_Defence UTextBlock
|
|||
|
---@field TextBlock_Base_EvadeRate UTextBlock
|
|||
|
---@field TextBlock_Base_MaxEnergy UTextBlock
|
|||
|
---@field TextBlock_Base_MaxHP UTextBlock
|
|||
|
---@field TextBlock_Base_RecoverEnergy UTextBlock
|
|||
|
---@field TextBlock_Base_RecoverEnergyPercent UTextBlock
|
|||
|
---@field TextBlock_Base_RecoverHP UTextBlock
|
|||
|
---@field TextBlock_Base_RecoverHPPercent UTextBlock
|
|||
|
---@field TextBlock_Base_Toughness UTextBlock
|
|||
|
---@field TextBlock_Base_Vamp UTextBlock
|
|||
|
---@field TextBlock_Bonus_Attack UTextBlock
|
|||
|
---@field TextBlock_Bonus_CriticalAttack UTextBlock
|
|||
|
---@field TextBlock_Bonus_DamageReduction UTextBlock
|
|||
|
---@field TextBlock_Bonus_Defence UTextBlock
|
|||
|
---@field TextBlock_Bonus_FireAttack UTextBlock
|
|||
|
---@field TextBlock_Bonus_MaxHP UTextBlock
|
|||
|
---@field TextBlock_Eco_CoinPoint UTextBlock
|
|||
|
---@field TextBlock_Eco_DropRate UTextBlock
|
|||
|
---@field TextBlock_Eco_Exp UTextBlock
|
|||
|
---@field TextBlock_Eco_HangupRoomMonsterNum UTextBlock
|
|||
|
---@field TextBlock_Eco_HangupRoomRefreshRate UTextBlock
|
|||
|
---@field TextBlock_Eco_KillPoint UTextBlock
|
|||
|
---@field TextBlock_Growth_Attack UTextBlock
|
|||
|
---@field TextBlock_Growth_Fire_Attack UTextBlock
|
|||
|
---@field TextBlock_Growth_Fire_MaxHP UTextBlock
|
|||
|
---@field TextBlock_Growth_Kill_Attack UTextBlock
|
|||
|
---@field TextBlock_Growth_Kill_CoinPoint UTextBlock
|
|||
|
---@field TextBlock_Growth_Kill_MaxHP UTextBlock
|
|||
|
---@field TextBlock_Growth_KillPoint UTextBlock
|
|||
|
---@field TextBlock_Growth_MaxHP UTextBlock
|
|||
|
--Edit Below--
|
|||
|
local WBP_AttributePanel = {
|
|||
|
bInitDoOnce = false,
|
|||
|
Collapsed = true,
|
|||
|
};
|
|||
|
|
|||
|
function WBP_AttributePanel:Construct()
|
|||
|
self.Panel_BG:Construct()
|
|||
|
|
|||
|
self.Collapsed = true
|
|||
|
local MainPanelSlot = WidgetLayoutLibrary.SlotAsCanvasSlot(self.Panel_Main)
|
|||
|
MainPanelSlot:SetSize({X = 320.0, Y = 400})
|
|||
|
|
|||
|
self.Panel_BonusAttributes:SetVisibility(ESlateVisibility.Collapsed)
|
|||
|
self.Panel_EconomyAttributes:SetVisibility(ESlateVisibility.Collapsed)
|
|||
|
|
|||
|
local PlayerState = GameDataManager.GetLocalPlayerState()
|
|||
|
if UE.IsValid(PlayerState) then
|
|||
|
self:OnPlayerAttributeChanged(PlayerState.Attributes)
|
|||
|
end
|
|||
|
|
|||
|
EventSystem:AddListener(EventType.OnPlayerAttributeChanged, WBP_AttributePanel.OnPlayerAttributeChanged, self)
|
|||
|
self.NewButton_Toggle.OnClicked:Add(WBP_AttributePanel.OnToggleButtonClicked, self)
|
|||
|
end
|
|||
|
|
|||
|
function WBP_AttributePanel:Destruct()
|
|||
|
self.NewButton_Toggle.OnClicked:Remove(WBP_AttributePanel.OnToggleButtonClicked, self)
|
|||
|
EventSystem:RemoveListener(EventType.OnPlayerAttributeChanged, WBP_AttributePanel.OnPlayerAttributeChanged, self)
|
|||
|
end
|
|||
|
|
|||
|
function WBP_AttributePanel:OnPlayerAttributeChanged(InAttributes)
|
|||
|
local NewAttribute = {}
|
|||
|
for i, v in pairs(InAttributes) do
|
|||
|
-- 只能取 j:
|
|||
|
for j, k in pairs(v) do
|
|||
|
local Val = 0
|
|||
|
for c, d in pairs(InAttributes) do
|
|||
|
Val = Val + InAttributes[c][j]
|
|||
|
end
|
|||
|
NewAttribute[j] = Val
|
|||
|
end
|
|||
|
break
|
|||
|
end
|
|||
|
for AttributeName, Value in pairs(NewAttribute) do
|
|||
|
local TextBlockName = "TextBlock_"..AttributeName
|
|||
|
local TextBlock = self[TextBlockName]
|
|||
|
if UE.IsValid(TextBlock) then
|
|||
|
local Txt = ""
|
|||
|
local DisplayType = GlobalFunctions.GetAttributeDisplayType(AttributeName)
|
|||
|
if DisplayType == EAttributeDisplayType.Percent then
|
|||
|
Txt = Txt.." "..tostring(math.ceil(Value * 100.0)).."%"
|
|||
|
else
|
|||
|
Txt = Txt..tostring(math.ceil(Value))
|
|||
|
end
|
|||
|
TextBlock:SetText(Txt)
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function WBP_AttributePanel:OnToggleButtonClicked()
|
|||
|
local MainPanelSlot = WidgetLayoutLibrary.SlotAsCanvasSlot(self.Panel_Main)
|
|||
|
if self.Collapsed == true then
|
|||
|
self.Collapsed = false
|
|||
|
MainPanelSlot:SetSize({X = 320.0, Y = 570})
|
|||
|
|
|||
|
self.NewButton_Toggle:SetRenderScale({X=1, Y=-1})
|
|||
|
|
|||
|
self.Panel_BonusAttributes:SetVisibility(ESlateVisibility.SelfHitTestInvisible)
|
|||
|
self.Panel_EconomyAttributes:SetVisibility(ESlateVisibility.SelfHitTestInvisible)
|
|||
|
else
|
|||
|
self.Collapsed = true
|
|||
|
MainPanelSlot:SetSize({X = 320.0, Y = 400})
|
|||
|
|
|||
|
self.NewButton_Toggle:SetRenderScale({X=1, Y=1})
|
|||
|
|
|||
|
self.Panel_BonusAttributes:SetVisibility(ESlateVisibility.Collapsed)
|
|||
|
self.Panel_EconomyAttributes:SetVisibility(ESlateVisibility.Collapsed)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
return WBP_AttributePanel;
|