107 lines
3.7 KiB
Lua
107 lines
3.7 KiB
Lua
|
---@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;
|