115 lines
2.6 KiB
Lua
115 lines
2.6 KiB
Lua
local UIWidgetBase = require_ex('Common/Core/UIWidgetBase')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TrashToggle = HL.Class('TrashToggle', UIWidgetBase)
|
|
|
|
|
|
TrashToggle.itemId = HL.Field(HL.String) << ""
|
|
|
|
|
|
TrashToggle.instId = HL.Field(HL.Number) << 0
|
|
|
|
|
|
|
|
|
|
|
|
TrashToggle._OnFirstTimeInit = HL.Override() << function(self)
|
|
self:RegisterMessage(MessageConst.ON_ITEM_TRASH_STATE_CHANGED, function(arg)
|
|
self:_OnItemTrashStateChanged(arg)
|
|
end)
|
|
|
|
self.view.toggle.onValueChanged:AddListener(function(isOn)
|
|
self:_TrashItem(isOn)
|
|
end)
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
TrashToggle.InitTrashToggle = HL.Method(HL.String, HL.Number).Return(HL.Boolean) << function(self, itemId, instId)
|
|
self:_FirstTimeInit()
|
|
|
|
self.itemId = ""
|
|
if not instId or instId <= 0 or not (GameInstance.player.inventory:TryGetInstItem(Utils.getCurrentScope(), instId)) then
|
|
self.view.gameObject:SetActive(false)
|
|
return false
|
|
end
|
|
|
|
local itemData = Tables.itemTable[itemId]
|
|
if itemData == nil then
|
|
self.view.gameObject:SetActive(false)
|
|
return false
|
|
end
|
|
|
|
local itemType = itemData.type
|
|
if itemType == GEnums.ItemType.WeaponGem then
|
|
self.view.gameObject:SetActive(true)
|
|
else
|
|
self.view.gameObject:SetActive(false)
|
|
return false
|
|
end
|
|
|
|
self.itemId, self.instId = itemId, instId
|
|
self:_UpdateTrashState()
|
|
|
|
return true
|
|
end
|
|
|
|
|
|
|
|
|
|
TrashToggle._TrashItem = HL.Method(HL.Boolean) << function(self, isOn)
|
|
if string.isEmpty(self.itemId) then
|
|
return
|
|
end
|
|
|
|
local isItemTrash = GameInstance.player.inventory:IsItemTrash(Utils.getCurrentScope(), self.itemId, self.instId)
|
|
if isItemTrash ~= isOn then
|
|
GameInstance.player.inventory:TrashItem(Utils.getCurrentScope(), self.itemId, self.instId, isOn)
|
|
end
|
|
end
|
|
|
|
|
|
|
|
|
|
TrashToggle._OnItemTrashStateChanged = HL.Method(HL.Table) << function(self, args)
|
|
if string.isEmpty(self.itemId) then
|
|
return
|
|
end
|
|
self:_UpdateTrashState()
|
|
end
|
|
|
|
|
|
|
|
TrashToggle._UpdateTrashState = HL.Method() << function(self)
|
|
local isTrash = GameInstance.player.inventory:IsItemTrash(Utils.getCurrentScope(), self.itemId, self.instId)
|
|
self.view.toggle:SetIsOnWithoutNotify(isTrash)
|
|
if DeviceInfo.usingController then
|
|
self:_UpdateControllerKeyHint(isTrash)
|
|
end
|
|
end
|
|
|
|
|
|
|
|
|
|
TrashToggle._UpdateControllerKeyHint = HL.Method(HL.Boolean) << function(self, isTrash)
|
|
local bindingId = self.view.toggle.hoverConfirmBindingId
|
|
if bindingId > 0 then
|
|
InputManagerInst:SetBindingText(bindingId, isTrash and
|
|
Language.LUA_ITEM_UNTRASH_KEY_HINT or Language.LUA_ITEM_TRASH_KEY_HINT)
|
|
end
|
|
end
|
|
|
|
HL.Commit(TrashToggle)
|
|
return TrashToggle
|
|
|