194 lines
5.7 KiB
Lua
194 lines
5.7 KiB
Lua
|
---@class WBP_GenerateInfo_C:UUserWidget
|
|||
|
---@field Button_Cancel UButton
|
|||
|
---@field Button_Ok UButton
|
|||
|
---@field VerticalBox_ItemList UVerticalBox
|
|||
|
--Edit Below--
|
|||
|
local WBP_GenerateInfo = {
|
|||
|
bInitDoOnce = false;
|
|||
|
SelectedItems = {}, -- 这里面只是几个Id
|
|||
|
OwningPawn = nil,
|
|||
|
};
|
|||
|
|
|||
|
function WBP_GenerateInfo:Construct()
|
|||
|
EventSystem:AddListener(EventType.CloseGenerateItem, WBP_GenerateInfo.OnCancelGenerateItem, self)
|
|||
|
self.Button_Ok.OnClicked:Add(WBP_GenerateInfo.OnClickOk, self)
|
|||
|
self.Button_Cancel.OnClicked:Add(WBP_GenerateInfo.OnClickCancel, self)
|
|||
|
for i = 1, 3 do
|
|||
|
self.VerticalBox_ItemList:GetChildAt(i - 1):SetVisibility(ESlateVisibility.Collapsed)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- function WBP_GenerateInfo:Tick(MyGeometry, InDeltaTime)
|
|||
|
|
|||
|
-- end
|
|||
|
|
|||
|
function WBP_GenerateInfo:Destruct()
|
|||
|
EventSystem:RemoveListener(EventType.CloseGenerateItem, WBP_GenerateInfo.OnCancelGenerateItem, self)
|
|||
|
self.Button_Ok.OnClicked:Remove(WBP_GenerateInfo.OnClickOk, self)
|
|||
|
self.Button_Cancel.OnClicked:Remove(WBP_GenerateInfo.OnClickCancel, self)
|
|||
|
end
|
|||
|
|
|||
|
function WBP_GenerateInfo:OnClickOk()
|
|||
|
if #self.SelectedItems ~= 3 then
|
|||
|
UIManager:ShowGeneralNotice(string.format("当前选择的数量太少,无法进行合成"))
|
|||
|
return
|
|||
|
end
|
|||
|
-- 判断一下是否都是同样的东西(配件 / 技能)
|
|||
|
local PC = GameDataManager.GetLocalPlayerController()
|
|||
|
PC:GenerateItemList(self.SelectedItems)
|
|||
|
print(string.format('合成结束,检查一下'))
|
|||
|
UIManager.AllPanel[EUIType.Backpack]:CloseOperation(EBagOperateType.Generate)
|
|||
|
self:Clear()
|
|||
|
end
|
|||
|
|
|||
|
function WBP_GenerateInfo:Clear()
|
|||
|
for i = 1, 3 do
|
|||
|
self.VerticalBox_ItemList:GetChildAt(i - 1):SetVisibility(ESlateVisibility.Collapsed)
|
|||
|
end
|
|||
|
self.SelectedItems = {}
|
|||
|
end
|
|||
|
|
|||
|
function WBP_GenerateInfo:GetOwningBackpackComponent()
|
|||
|
local PlayerController = STExtraGameplayStatics.GetFirstPlayerController(self)
|
|||
|
if PlayerController then
|
|||
|
self.OwningPawn = PlayerController:GetPlayerCharacterSafety()
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function WBP_GenerateInfo:OnClickCancel()
|
|||
|
self:Clear()
|
|||
|
UIManager.AllPanel[EUIType.Backpack]:CloseOperation(EBagOperateType.Generate)
|
|||
|
end
|
|||
|
|
|||
|
function WBP_GenerateInfo:OnCancelGenerateItem(InItemId)
|
|||
|
-- 查找一下
|
|||
|
local AttRemoveId = 0
|
|||
|
for i, v in pairs(self.SelectedItems) do
|
|||
|
if v == InItemId then
|
|||
|
AttRemoveId = i
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
table.remove(self.SelectedItems, AttRemoveId)
|
|||
|
-- 刷新一下
|
|||
|
self:RefreshItems()
|
|||
|
end
|
|||
|
|
|||
|
--当拖拽的时候放到的位置
|
|||
|
function WBP_GenerateInfo:OnDrop(MyGeometry, PointerEvent, Operation)
|
|||
|
WBP_GenerateInfo.SuperClass:OnDrop(MyGeometry, PointerEvent, Operation)
|
|||
|
local ItemData = Operation:GetItemData()
|
|||
|
|
|||
|
if ItemData ~= nil then
|
|||
|
self:AddItem(ItemData)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function WBP_GenerateInfo:RemoveItem(InItemId)
|
|||
|
local RemoveIdIndex = 0
|
|||
|
print(string.format('[WBP_GenerateInfo:RemoveItem] 开始移除物品'))
|
|||
|
for i = 1, #self.SelectedItems do
|
|||
|
print(string.format('拥有的 Id == %d', self.SelectedItems[i]))
|
|||
|
if self.SelectedItems[i] == InItemId then
|
|||
|
RemoveIdIndex = i
|
|||
|
--break
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
if RemoveIdIndex ~= 0 then
|
|||
|
table.remove(self.SelectedItems, RemoveIdIndex)
|
|||
|
print('[WBP_GenerateInfo:RemoveItem] 移除成功')
|
|||
|
else
|
|||
|
print(string.format('[WBP_GenerateInfo:RemoveItem] 未找到对应Id的,请检查 Id = %d', InItemId))
|
|||
|
end
|
|||
|
self:RefreshItems()
|
|||
|
end
|
|||
|
|
|||
|
function WBP_GenerateInfo:CheckItemType(InItemId)
|
|||
|
local NewAddItemQuality = GetItemQualityLevel(InItemId)
|
|||
|
local CurrentItemQuality = 0
|
|||
|
local bHadCheck = false
|
|||
|
if #self.SelectedItems > 0 then
|
|||
|
CurrentItemQuality = GetItemQualityLevel(self.SelectedItems[1])
|
|||
|
if CurrentItemQuality == NewAddItemQuality then
|
|||
|
bHadCheck = true
|
|||
|
else
|
|||
|
UIManager:ShowGeneralNotice(string.format("您选择的物品品质跟之前选择的不同,请选择相同品质的物品进行合成"))
|
|||
|
end
|
|||
|
else
|
|||
|
bHadCheck = true
|
|||
|
end
|
|||
|
|
|||
|
if bHadCheck then
|
|||
|
if #self.SelectedItems > 0 then
|
|||
|
if GetItemGrantTypeById(InItemId) ~= GetItemGrantTypeById(self.SelectedItems[1]) then
|
|||
|
bHadCheck = false
|
|||
|
UIManager:ShowGeneralNotice(string.format("您选择的物品类型跟之前选择的不同,请选择相同类型的物品进行合成"))
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
return bHadCheck
|
|||
|
end
|
|||
|
|
|||
|
function WBP_GenerateInfo:FindInnerCountById(InId)
|
|||
|
local TotalCount = 0
|
|||
|
for _, v in pairs(self.SelectedItems) do
|
|||
|
if InId == v then
|
|||
|
TotalCount = TotalCount + 1
|
|||
|
end
|
|||
|
end
|
|||
|
return TotalCount
|
|||
|
end
|
|||
|
|
|||
|
function WBP_GenerateInfo:AddItem(ItemData)
|
|||
|
print('【WBP_GenerateInfo:AddItem】进入')
|
|||
|
|
|||
|
if GetItemQualityLevel(ItemData.ItemID) >= EQualityType.Super then
|
|||
|
UIManager:ShowGeneralNotice("超级的物品无法合成", true)
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local Count = UIManager.AllPanel[EUIType.Backpack]:FindItemCountById(ItemData.ItemID)
|
|||
|
local HadAddCount = self:FindInnerCountById(ItemData.ItemID)
|
|||
|
|
|||
|
local bHadCheck = self:CheckItemType(ItemData.ItemID)
|
|||
|
if not bHadCheck then
|
|||
|
return
|
|||
|
end
|
|||
|
if Count <= HadAddCount then
|
|||
|
--提示一下
|
|||
|
UIManager:ShowGeneralNotice(string.format("当前选择的数量已经足够了,无法继续添加"))
|
|||
|
else
|
|||
|
if table.getCount(self.SelectedItems) < 3 then
|
|||
|
--放进来
|
|||
|
table.insert(self.SelectedItems, ItemData.ItemID)
|
|||
|
--else
|
|||
|
-- UIManager:ShowGeneralNotice(string.format("当前已经满员了,请移除之后再添加"))
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
self:RefreshItems()
|
|||
|
end
|
|||
|
|
|||
|
function WBP_GenerateInfo:RefreshItems()
|
|||
|
for i = 1, 3 do
|
|||
|
if i <= #self.SelectedItems then
|
|||
|
self.VerticalBox_ItemList:GetChildAt(i - 1):SetGenerateData(self.SelectedItems[i])
|
|||
|
self.VerticalBox_ItemList:GetChildAt(i - 1):SetVisibility(ESlateVisibility.Visible)
|
|||
|
else
|
|||
|
self.VerticalBox_ItemList:GetChildAt(i - 1):SetVisibility(ESlateVisibility.Collapsed)
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- 获取当前将要合成的类型
|
|||
|
function WBP_GenerateInfo:GetCurrentType()
|
|||
|
if #self.SelectedItems == 0 then
|
|||
|
return -1
|
|||
|
end
|
|||
|
|
|||
|
return GetItemTypeByItemId(self.SelectedItems[1])
|
|||
|
end
|
|||
|
|
|||
|
return WBP_GenerateInfo;
|