UGCProjects/GZJ/Script/UI/ChildWidgets/WBP_SelectWeaponItem.lua
2025-01-08 22:46:12 +08:00

91 lines
3.0 KiB
Lua

---@class WBP_SelectWeaponItem_C:UUserWidget
---@field Button_WeaponItem UNewButton
---@field Image_Icon UImage
---@field Image_Selected UImage
---@field Image_Weapon UImage
---@field Panel_Weapon_1 UCanvasPanel
---@field TextBlock_Desc UTextBlock
---@field TextBlock_WeaponName UTextBlock
---@field WeaponName FText
--Edit Below--
local WBP_SelectWeaponItem = {
bInitDoOnce = false,
bHasClick = false,
WeaponId = 0,
};
function WBP_SelectWeaponItem:Construct()
self.Button_WeaponItem.OnClicked:Add(WBP_SelectWeaponItem.OnClickWeaponItem, self)
self.Button_WeaponItem:SetTouchMethod(EButtonTouchMethod.PreciseTap)
end
-- function WBP_SelectWeaponItem:Tick(MyGeometry, InDeltaTime)
-- end
function WBP_SelectWeaponItem:Destruct()
self.Button_WeaponItem.OnClicked:Remove(WBP_SelectWeaponItem.OnClickWeaponItem, self)
end
function WBP_SelectWeaponItem:SetIsSelect(InIsSelect)
if InIsSelect then
self.Image_Selected:SetVisibility(ESlateVisibility.SelfHitTestInvisible)
else
self.Image_Selected:SetVisibility(ESlateVisibility.Collapsed)
end
end
-- 设置默认数据
function WBP_SelectWeaponItem:SetDefaultData(InWeaponId)
self.WeaponId = InWeaponId
local Data = GameDataManager.GetWeaponConstructDataByID(InWeaponId)
if Data == nil then
UE.Log("[WBP_SelectWeaponItem:SetDefaultData] Data is nil")
return
end
local Val = DropItemMap.WeaponTable[Data.WeaponType]
self.TextBlock_WeaponName:SetText(Val.ChineseName)
self.TextBlock_Desc:SetText(Val.Text)
local Icon = UE.LoadObject(Val.Sign)
self.Image_Icon:SetBrushFromTexture(Icon)
local WeaponIcon = UE.LoadObject(Val.Icon)
-- 调整
local IconSlot = WidgetLayoutLibrary.SlotAsCanvasSlot(self.Image_Weapon)
-- 算一下比例
local NewIconX = 32 / 80 * WeaponIcon:Blueprint_GetSizeX()
IconSlot:SetSize({ X = NewIconX, Y = 32 })
self.Image_Weapon:SetBrushFromTexture(WeaponIcon)
self.Image_Selected:SetVisibility(ESlateVisibility.Collapsed)
end
--现在是点一下就拿到
function WBP_SelectWeaponItem:OnClickWeaponItem()
--添加到背包中
-- local PlayerController = GameDataManager.GetLocalPlayerController()
-- --local Pawn = PlayerController.Pawn
-- local OwningPawn = PlayerController:GetPlayerCharacterSafety()
-- print(string.format("[WBP_SelectWeaponItem:OnClickWeaponItem] 要添加的武器 Id = %d", self.WeaponId))
-- -- 获取当前玩家
-- local PlayerKey = UGCPawnAttrSystem.GetPlayerKeyInt64(OwningPawn)
-- print(string.format("[WBP_SelectWeaponItem:OnClickWeaponItem] InPlayerKey = %d", PlayerKey))
-- UnrealNetwork.CallUnrealRPC(PlayerController, PlayerController, "ServerRPC_AddWeapon", self.WeaponId, PlayerKey)
-- 提示背包添加
local PlayerController = GameDataManager.GetLocalPlayerController()
UnrealNetwork.CallUnrealRPC(PlayerController, PlayerController, "ServerRPC_StartSpawnBreachMonster", self.WeaponId)
UIManager:ShowGeneralNotice("已选择突破奖励,即将生成突破怪")
EventSystem:SendEvent(EventType.ToggleBreachButton, false)
UIManager:HidePanel(EUIType.SelectWeapon)
NewPlayerGuideManager:TriggerGuide(29)
end
return WBP_SelectWeaponItem;