- Added "Have you been Crit Recently?" option - Fixed template tooltips in all/shared items lists - Fixed issue causing mod ranges to be lost when adding to shared item list
134 lines
4.4 KiB
Lua
134 lines
4.4 KiB
Lua
-- Path of Building
|
|
--
|
|
-- Class: Item list
|
|
-- Build item list control.
|
|
--
|
|
local launch, main = ...
|
|
|
|
local pairs = pairs
|
|
local t_insert = table.insert
|
|
|
|
local ItemListClass = common.NewClass("ItemList", "ListControl", function(self, anchor, x, y, width, height, itemsTab)
|
|
self.ListControl(anchor, x, y, width, height, 16, true, itemsTab.orderList)
|
|
self.itemsTab = itemsTab
|
|
self.label = "^7All items:"
|
|
self.defaultText = "^x7F7F7FThis is the list of items that have been added to this build.\nYou can add items to this list by dragging them from\none of the other lists, or by clicking 'Add to build' when\nviewing an item."
|
|
self.dragTargetList = { }
|
|
self.controls.delete = common.New("ButtonControl", {"BOTTOMRIGHT",self,"TOPRIGHT"}, 0, -2, 60, 18, "Delete", function()
|
|
self:OnSelDelete(self.selIndex, self.selValue)
|
|
end)
|
|
self.controls.delete.enabled = function()
|
|
return self.selValue ~= nil
|
|
end
|
|
self.controls.deleteAll = common.New("ButtonControl", {"RIGHT",self.controls.delete,"LEFT"}, -4, 0, 70, 18, "Delete All", function()
|
|
main:OpenConfirmPopup("Delete All", "Are you sure you want to delete all items in this build?", "Delete", function()
|
|
for _, slot in pairs(itemsTab.slots) do
|
|
slot:SetSelItemId(0)
|
|
end
|
|
for _, spec in pairs(itemsTab.build.treeTab.specList) do
|
|
for nodeId, itemId in pairs(spec.jewels) do
|
|
spec.jewels[nodeId] = 0
|
|
end
|
|
end
|
|
wipeTable(self.list)
|
|
wipeTable(self.itemsTab.list)
|
|
itemsTab:PopulateSlots()
|
|
itemsTab:AddUndoState()
|
|
itemsTab.build.buildFlag = true
|
|
self.selIndex = nil
|
|
self.selValue = nil
|
|
end)
|
|
end)
|
|
self.controls.deleteAll.enabled = function()
|
|
return #self.list > 0
|
|
end
|
|
self.controls.sort = common.New("ButtonControl", {"RIGHT",self.controls.deleteAll,"LEFT"}, -4, 0, 60, 18, "Sort", function()
|
|
itemsTab:SortItemList()
|
|
end)
|
|
end)
|
|
|
|
function ItemListClass:GetRowValue(column, index, itemId)
|
|
local item = self.itemsTab.list[itemId]
|
|
if column == 1 then
|
|
return data.colorCodes[item.rarity] .. item.name .. (not self.itemsTab:GetEquippedSlotForItem(item) and " ^9(Unused)" or "")
|
|
end
|
|
end
|
|
|
|
function ItemListClass:AddValueTooltip(index, itemId)
|
|
local item = self.itemsTab.list[itemId]
|
|
if not main.popups[1] then
|
|
self.itemsTab:AddItemTooltip(item)
|
|
return data.colorCodes[item.rarity], true
|
|
end
|
|
end
|
|
|
|
function ItemListClass:GetDragValue(index, itemId)
|
|
return "Item", self.itemsTab.list[itemId]
|
|
end
|
|
|
|
function ItemListClass:ReceiveDrag(type, value, source)
|
|
if type == "Item" then
|
|
local newItem = itemLib.makeItemFromRaw(value.raw)
|
|
itemLib.normaliseQuality(newItem)
|
|
self.itemsTab:AddItem(newItem, true, self.selDragIndex)
|
|
self.itemsTab:PopulateSlots()
|
|
self.itemsTab:AddUndoState()
|
|
self.itemsTab.build.buildFlag = true
|
|
end
|
|
end
|
|
|
|
function ItemListClass:OnOrderChange()
|
|
self.itemsTab:AddUndoState()
|
|
end
|
|
|
|
function ItemListClass:OnSelClick(index, itemId, doubleClick)
|
|
local item = self.itemsTab.list[itemId]
|
|
if IsKeyDown("CTRL") then
|
|
local slotName = itemLib.getPrimarySlotForItem(item)
|
|
if slotName and self.itemsTab.slots[slotName] then
|
|
if self.itemsTab.slots[slotName].weaponSet == 1 and self.itemsTab.useSecondWeaponSet then
|
|
-- Redirect to second weapon set
|
|
slotName = slotName .. " Swap"
|
|
end
|
|
if IsKeyDown("SHIFT") then
|
|
-- Redirect to second slot if possible
|
|
local altSlot = slotName:gsub("1","2")
|
|
if self.itemsTab:IsItemValidForSlot(item, altSlot) then
|
|
slotName = altSlot
|
|
end
|
|
end
|
|
if self.itemsTab.slots[slotName].selItemId == item.id then
|
|
self.itemsTab.slots[slotName]:SetSelItemId(0)
|
|
else
|
|
self.itemsTab.slots[slotName]:SetSelItemId(item.id)
|
|
end
|
|
self.itemsTab:PopulateSlots()
|
|
self.itemsTab:AddUndoState()
|
|
self.itemsTab.build.buildFlag = true
|
|
end
|
|
elseif doubleClick then
|
|
self.itemsTab:SetDisplayItem(copyTable(item))
|
|
end
|
|
end
|
|
|
|
function ItemListClass:OnSelCopy(index, itemId)
|
|
local item = self.itemsTab.list[itemId]
|
|
Copy(itemLib.createItemRaw(item):gsub("\n","\r\n"))
|
|
end
|
|
|
|
function ItemListClass:OnSelDelete(index, itemId)
|
|
local item = self.itemsTab.list[itemId]
|
|
local equipSlot = self.itemsTab:GetEquippedSlotForItem(item)
|
|
if equipSlot then
|
|
main:OpenConfirmPopup("Delete Item", item.name.." is currently equipped in "..equipSlot.label..".\nAre you sure you want to delete it?", "Delete", function()
|
|
self.itemsTab:DeleteItem(item)
|
|
self.selIndex = nil
|
|
self.selValue = nil
|
|
end)
|
|
else
|
|
self.itemsTab:DeleteItem(item)
|
|
self.selIndex = nil
|
|
self.selValue = nil
|
|
end
|
|
end
|