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

107 lines
3.7 KiB
Lua
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---@class WBP_GenerateItem_C:UUserWidget
---@field CanvasPanel_Main UCanvasPanel
---@field ItemIconAndBG UWBP_WeaponItemFitting_C
---@field TextBlock_ItemCount UTextBlock
---@field TextBlock_ItemType UTextBlock
---@field TextBlock_Quality UTextBlock
--Edit Below--
local WBP_GenerateItem = {
bInitDoOnce = false;
DragDropClass = nil,
--拖拽显示的类
DragVisualClass = nil,
ItemId = 0,
VisualWidget = nil,
GenerateDragTimerHandler = nil,
};
function WBP_GenerateItem:Construct()
-- 设置数据
self.DragDropClass = UE.LoadClass(UGCGameSystem.GetUGCResourcesFullPath('Asset/UI/ChildWidgets/BP_FittingDragDropData.BP_FittingDragDropData_C'))
self.DragVisualClass = UE.LoadClass(UGCGameSystem.GetUGCResourcesFullPath('Asset/UI/ChildWidgets/WBP_DragItemVisual.WBP_DragItemVisual_C'))
end
function WBP_GenerateItem:SetGenerateData(InItemId)
self.ItemId = InItemId
print(string.format("开始设置数据Id%d", InItemId))
if GameDataManager then
local Val = GameDataManager.GetItemInfoByItemID(InItemId)
self.ItemIconAndBG:SetItemIcon(Val.Icon)
self.ItemIconAndBG:SetItemBGColor(GetItemQualityLevel(InItemId))
self.TextBlock_ItemCount:SetText('1')
local TextVal
if InItemId > 20000 then
TextVal = DropItemMap.SkillItemMap[InItemId].SkillName
else
local val = GetItemWeaponTypeByItemId(InItemId)
TextVal = Tables.WeaponClassTypeDesc[val][1]
end
self.TextBlock_ItemType:SetText(TextVal)
-- 设置质量
local Quality = Tables.QualityInfo[GetItemQualityLevel(InItemId)][1]
self.TextBlock_Quality:SetText(string.format("%s", Quality))
-- 根据品质设置颜色
self.CanvasPanel_Main:SetVisibility(ESlateVisibility.SelfHitTestInvisible)
else
print("[WBP_FittingItem:SetItemData] 当前 GameDataManager 没有值,请检查一下是否有保存")
end
end
-- function WBP_GenerateItem:Tick(MyGeometry, InDeltaTime)
-- end
-- function WBP_GenerateItem:Destruct()
-- end
function WBP_GenerateItem:OnMouseButtonDown(MyGeometry, PointerEvent)
--当点击的时候
local ret = self.SuperClass:OnMouseButtonDown(MyGeometry, PointerEvent)
print(string.format('[WBP_GenerateItem:OnMouseButtonDown] 识别到鼠标按下'))
local GameState = UGCGameSystem.GameState
if UE.IsValid(self.DragVisualClass) and UE.IsValid(GameState) then
self.VisualWidget = UserWidget.NewWidgetObjectBP(GameState, self.DragVisualClass)
local that = self
self.GenerateDragTimerHandler = EventSystem.SetTimerLoop(self, function()
if that.VisualWidget.bHasInit then
EventSystem.StopTimer(that.GenerateDragTimerHandler)
local ItemData = {
ItemID = that.ItemId,
ItemCount = 1
}
that.VisualWidget:SetVisualItemData(ItemData, that.ItemIconAndBG:GetItemIcon())
end
end, 0.05)
end
print(string.format('[WBP_GenerateItem:OnMouseButtonDown] 开始进行拖拽'))
WidgetBlueprintLibrary.DetectDragIfPressed(PointerEvent, self, "LeftMouseButton")
return ret
end
function WBP_GenerateItem:OnMouseButtonUp(MyGeometry, InTouchEvent)
print('[WBP_GenerateItem:OnMouseButtonUp] 检测到鼠标抬起')
-- 移除即可
UIManager.AllPanel[EUIType.Backpack].WBP_GenerateInfo:RemoveItem(self.ItemId)
return self.SuperClass:OnMouseButtonUp(MyGeometry, InTouchEvent)
end
function WBP_GenerateItem:OnDragDetected(MyGeometry, PointerEvent, Operation)
print(string.format('[WBP_GenerateItem:OnDragDetected] 鼠标开始拖拽,开始进行赋值操作'))
Operation = UE.NewObject(nil, self.DragDropClass)
local ItemData = {
ItemID = self.ItemId,
ItemCount = 1
}
Operation:SetOperationData(ItemData, EItemDropType.CancelGenerate)
Operation:SetOperationData(self.FittingData, EItemDropType.None)
Operation.DefaultDragVisual = self.VisualWidget
return Operation
end
return WBP_GenerateItem;