683 lines
No EOL
22 KiB
Lua
683 lines
No EOL
22 KiB
Lua
local mathMin = math.min
|
||
local mathMax = math.max
|
||
local mathFloor = math.floor
|
||
|
||
XUiBagItem = XClass(nil, "XUiBagItem")
|
||
|
||
-- 初始化
|
||
function XUiBagItem:Ctor(rootUi, ui, openCloseCb, clickCb)
|
||
self.RootUi = rootUi
|
||
self.CallBack = openCloseCb
|
||
self.ClickCallback = clickCb
|
||
self.IsShowBtnMinusWhenMinSelectCount = false
|
||
self.GameObject = ui.gameObject
|
||
self.Transform = ui.transform
|
||
self:InitUi()
|
||
self:AddListener()
|
||
if self.WgtBtn then
|
||
self.WidgetBtnLongClick = XUiButtonLongClick.New(self.WgtBtn, 100, self, nil, self.BtnLongClickCallback, nil, true)
|
||
end
|
||
if self.WgtBtnMinusSelect then
|
||
self.WidgetBtnMinusLongClick = XUiButtonLongClick.New(self.WgtBtnMinusSelect, 100, self, nil, self.BtnMinusSelectLongClickCallback, nil, true)
|
||
end
|
||
if self.WgtBtnAddSelect then
|
||
self.WidgetBtnMinusLongClick = XUiButtonLongClick.New(self.WgtBtnAddSelect, 100, self, nil, self.BtnAddSelectLongClickCallback, nil, true)
|
||
end
|
||
self.DefaultMinSelectCount = 0
|
||
self.SelectCount = 0
|
||
end
|
||
|
||
function XUiBagItem:InitUi()
|
||
-- 基础信息 -----------------------------------------------------------------------------
|
||
-- 图标
|
||
self.RImgIcon = XUiHelper.TryGetComponent(self.Transform, "RImgIcon", "RawImage")
|
||
-- 图标背景图
|
||
self.ImgIconBg = XUiHelper.TryGetComponent(self.Transform, "ImgIconBg", "Image")
|
||
-- 图标品质底图
|
||
self.ImgIconQuality = XUiHelper.TryGetComponent(self.Transform, "ImgIconQuality", "Image")
|
||
-- 物品数量
|
||
self.TxtCount = XUiHelper.TryGetComponent(self.Transform, "TxtCount", "Text")
|
||
-- 物品名字
|
||
self.TxtName = XUiHelper.TryGetComponent(self.Transform, "TxtName", "Text")
|
||
-- 物品描述
|
||
self.TxtDescription = XUiHelper.TryGetComponent(self.Transform, "TxtDescription", "Text")
|
||
-- 物品经验是否加倍
|
||
self.TxtEx = XUiHelper.TryGetComponent(self.Transform, "TxtEx", "Text")
|
||
-- 世界观描述
|
||
self.TxtWorldDesc = XUiHelper.TryGetComponent(self.Transform, "TxtWorldDesc", "Text")
|
||
|
||
-- 自定义回调 -----------------------------------------------------------------------------
|
||
-- 自定义回调Button
|
||
self.Btn = XUiHelper.TryGetComponent(self.Transform, "Btn", "Button")
|
||
-- 自定义回调Button2
|
||
self.Btn2 = XUiHelper.TryGetComponent(self.Transform, "Btn2", "Button")
|
||
-- 自定义Widget
|
||
self.WgtBtn = XUiHelper.TryGetComponent(self.Transform, "Btn", "XUiPointer")
|
||
|
||
-- 选择相关 -----------------------------------------------------------------------------
|
||
-- 选中Image
|
||
self.ImgSelect = XUiHelper.TryGetComponent(self.Transform, "ImgSelect", "Image")
|
||
-- 选中Image背景
|
||
self.ImgSelectBg = XUiHelper.TryGetComponent(self.Transform, "ImgSelectBg", "Image")
|
||
-- 选择数量
|
||
self.TxtSelect = XUiHelper.TryGetComponent(self.Transform, "TxtSelect", "Text")
|
||
-- 选择数量 为0自动隐藏
|
||
self.TxtSelectHide = XUiHelper.TryGetComponent(self.Transform, "TxtSelectHide", "Text")
|
||
-- 需要数量 例如升级部件 16/100,其中100为需要数量
|
||
self.TxtNeedCount = XUiHelper.TryGetComponent(self.Transform, "TxtNeedCount", "Text")
|
||
-- 现有数量 例如升级部件 16/100,其中16为需现有数量
|
||
self.TxtHaveCount = XUiHelper.TryGetComponent(self.Transform, "TxtHaveCount", "Text")
|
||
-- 减少选择按钮
|
||
self.BtnMinusSelect = XUiHelper.TryGetComponent(self.Transform, "BtnMinusSelect", "Button")
|
||
-- 减少选择长按组件
|
||
self.WgtBtnMinusSelect = XUiHelper.TryGetComponent(self.Transform, "BtnMinusSelect", "XUiPointer")
|
||
-- 增加选择按钮
|
||
self.BtnAddSelect = XUiHelper.TryGetComponent(self.Transform, "BtnAddSelect", "Button")
|
||
-- 增加选择长按组件
|
||
self.WgtBtnAddSelect = XUiHelper.TryGetComponent(self.Transform, "BtnAddSelect", "XUiPointer")
|
||
-- 全选按钮
|
||
self.BtnMax = XUiHelper.TryGetComponent(self.Transform, "BtnMax", "Button")
|
||
|
||
-- 操作按钮 -----------------------------------------------------------------------------
|
||
-- 确定按钮 隐藏Item
|
||
self.BtnOk = XUiHelper.TryGetComponent(self.Transform, "BtnOk", "Button")
|
||
-- 使用按钮
|
||
self.BtnUse = XUiHelper.TryGetComponent(self.Transform, "BtnUse", "Button")
|
||
-- 出售按钮
|
||
self.BtnSell = XUiHelper.TryGetComponent(self.Transform, "BtnSell", "Button")
|
||
-- 关闭按钮
|
||
self.BtnClose = XUiHelper.TryGetComponent(self.Transform, "BtnClose", "Button")
|
||
-- 获取按钮
|
||
self.BtnGet = XUiHelper.TryGetComponent(self.Transform, "BtnGet", "Button")
|
||
-- 阻挡按钮 防穿透
|
||
self.BtnBlock = XUiHelper.TryGetComponent(self.Transform, "BtnBlock", "Button")
|
||
-- Tips 显示
|
||
self.BtnItemTip = XUiHelper.TryGetComponent(self.Transform, "BtnItemTip", "Button")
|
||
|
||
-- 状态相关 -----------------------------------------------------------------------------
|
||
-- 状态图片
|
||
self.ImgState = XUiHelper.TryGetComponent(self.Transform, "ImgState", "Image")
|
||
self.TxtState = XUiHelper.TryGetComponent(self.Transform, "ImgState/TxtState", "Text")
|
||
-- 可使用
|
||
self.ImgCanUse = XUiHelper.TryGetComponent(self.Transform, "ImgCanUse", "Image")
|
||
-- 物品使用等级
|
||
self.TxtUseLevel = XUiHelper.TryGetComponent(self.Transform, "TxtUseLevel", "Text")
|
||
-- 当前格子数量,根据Refresh时传入的GridIndex算
|
||
self.TxtGridCount = XUiHelper.TryGetComponent(self.Transform, "TxtGridCount", "Text")
|
||
end
|
||
|
||
function XUiBagItem:GetAutoKey(uiNode, eventName)
|
||
if not uiNode then return end
|
||
return eventName .. uiNode:GetHashCode()
|
||
end
|
||
|
||
function XUiBagItem:RegisterListener(uiNode, eventName, func)
|
||
local key = self:GetAutoKey(uiNode, eventName)
|
||
if not key then return end
|
||
local listener = self.AutoCreateListeners[key]
|
||
if listener ~= nil then
|
||
uiNode[eventName]:RemoveListener(listener)
|
||
end
|
||
if func ~= nil then
|
||
if type(func) ~= "function" then
|
||
XLog.Error("XUiPanelBagItemCommon:RegisterListener函数错误, 参数func需要是function类型, func的类型是" .. type(func))
|
||
end
|
||
|
||
listener = function()
|
||
func(self)
|
||
end
|
||
|
||
uiNode[eventName]:AddListener(listener)
|
||
self.AutoCreateListeners[key] = listener
|
||
end
|
||
end
|
||
|
||
function XUiBagItem:AddListener()
|
||
self.AutoCreateListeners = {}
|
||
|
||
if self.Btn then
|
||
XUiHelper.RegisterClickEvent(self, self.Btn, self.OnBtnClick)
|
||
end
|
||
|
||
if self.Btn2 then
|
||
XUiHelper.RegisterClickEvent(self, self.Btn2, self.OnBtn2Click)
|
||
end
|
||
|
||
if self.BtnOk then
|
||
XUiHelper.RegisterClickEvent(self, self.BtnOk, self.Hide)
|
||
end
|
||
|
||
if self.BtnSell then
|
||
XUiHelper.RegisterClickEvent(self, self.BtnSell, self.OnBtnSellClick)
|
||
end
|
||
|
||
if self.BtnClose then
|
||
XUiHelper.RegisterClickEvent(self, self.BtnClose, self.Hide)
|
||
end
|
||
|
||
if self.BtnGet then
|
||
XUiHelper.RegisterClickEvent(self, self.BtnGet, self.OnBtnGetClick)
|
||
end
|
||
|
||
if self.BtnBlock then
|
||
XUiHelper.RegisterClickEvent(self, self.BtnBlock, self.Hide)
|
||
end
|
||
|
||
if self.BtnMinusSelect then
|
||
XUiHelper.RegisterClickEvent(self, self.BtnMinusSelect, self.MinusSelectCount)
|
||
end
|
||
|
||
if self.BtnAddSelect then
|
||
XUiHelper.RegisterClickEvent(self, self.BtnAddSelect, self.AddSelectCount)
|
||
end
|
||
|
||
if self.BtnMax then
|
||
XUiHelper.RegisterClickEvent(self, self.BtnMax, self.SelectAll)
|
||
end
|
||
|
||
if self.BtnUse then
|
||
XUiHelper.RegisterClickEvent(self, self.BtnUse, self.OnBtnUseClick)
|
||
end
|
||
|
||
if self.BtnItemTip then
|
||
XUiHelper.RegisterClickEvent(self, self.BtnItemTip, self.OnBtnItemTipClick)
|
||
end
|
||
end
|
||
|
||
-- 操作回调
|
||
function XUiBagItem:OnBtnItemTipClick()
|
||
if self.BtnItemTip then
|
||
XLuaUiManager.Open("UiTip", { TemplateId = self.TemplateId, Count = self.Data.Count })
|
||
end
|
||
end
|
||
|
||
function XUiBagItem:OnBtnClick()
|
||
if self.ClickCallback then
|
||
self.ClickCallback({ Data = self.Data, GridIndex = self.GridIndex, RecycleBatch = self.RecycleBatch }, self)
|
||
end
|
||
--CS.XAudioManager.PlaySound(XSoundManager.UiBasicsMusic.UiBag_Chip_Click)
|
||
end
|
||
|
||
function XUiBagItem:OnBtnUseClick()
|
||
if self.SelectCount <= 0 then
|
||
return
|
||
end
|
||
local closeCallback = function()
|
||
self:RefreshSelf()
|
||
end
|
||
local callback = function(rewardGoodsList)
|
||
if self.UseRefreshCallback then
|
||
self.UseRefreshCallback()
|
||
end
|
||
XUiManager.OpenUiObtain(rewardGoodsList, nil, closeCallback, nil)
|
||
end
|
||
XDataCenter.ItemManager.Use(self.Data.Id, self.RecycleBatch and self.RecycleBatch.RecycleTime, self.SelectCount, callback)
|
||
if self.CallBack then
|
||
self.CallBack(false)
|
||
end
|
||
self.GameObject:SetActive(false)
|
||
end
|
||
|
||
function XUiBagItem:OnBtn2Click()
|
||
if self.ClickCallback2 then
|
||
self.ClickCallback2()
|
||
end
|
||
end
|
||
|
||
function XUiBagItem:Hide()
|
||
if self.CallBack then
|
||
self.CallBack(false)
|
||
end
|
||
|
||
self.GameObject:SetActive(false)
|
||
end
|
||
|
||
function XUiBagItem:OnBtnSellClick()
|
||
print("XUiBagItem:OnBtnSellClick")
|
||
end
|
||
function XUiBagItem:OnBtnGetClick()
|
||
XLuaUiManager.Open("UiSkip", self.Template.Id)
|
||
end
|
||
|
||
function XUiBagItem:BtnLongClickCallback(time)
|
||
local maxCount = self:GetGridCount()
|
||
if maxCount and self.SelectCount >= maxCount then
|
||
return
|
||
end
|
||
|
||
local delta = mathMax(0, mathFloor(time / 300))
|
||
local count = self.SelectCount + delta
|
||
if maxCount and count >= maxCount then
|
||
count = maxCount
|
||
end
|
||
|
||
self:UpdateSelectCount(count)
|
||
end
|
||
|
||
function XUiBagItem:BtnMinusSelectLongClickCallback(time)
|
||
if self.SelectCount == 0 then
|
||
return
|
||
end
|
||
|
||
local delta = mathMax(0, mathFloor(time / 150))
|
||
local count = self.SelectCount - delta
|
||
if count <= 0 then
|
||
count = 0
|
||
end
|
||
self:UpdateSelectCount(count)
|
||
end
|
||
|
||
function XUiBagItem:BtnAddSelectLongClickCallback(time)
|
||
local maxCount = self:GetGridCount()
|
||
if maxCount and self.SelectCount >= maxCount then
|
||
return
|
||
end local delta = mathMax(0, mathFloor(time / 150))
|
||
local count = self.SelectCount + delta
|
||
if maxCount and count >= maxCount then
|
||
count = maxCount
|
||
end
|
||
|
||
self:UpdateSelectCount(count)
|
||
end
|
||
|
||
-- 选择操作接口
|
||
function XUiBagItem:UpdateSelectCount(count)
|
||
local newCount = mathMax(count, self.DefaultMinSelectCount)
|
||
newCount = mathMin(newCount, self.Data.GridCount or self.Data.Count)
|
||
if self.SelectCountChangeCondition and not self.SelectCountChangeCondition(newCount) then
|
||
return
|
||
end
|
||
|
||
if newCount == self.SelectCount then
|
||
return
|
||
end
|
||
|
||
self:SetSelectCount(newCount)
|
||
end
|
||
|
||
function XUiBagItem:SetSelectCount(newCount)
|
||
local oldCount = self.SelectCount
|
||
self.SelectCount = mathMax(newCount, self.DefaultMinSelectCount)
|
||
if self.BtnUse then
|
||
self.BtnUse.interactable = newCount > 0
|
||
end
|
||
if self.OnSelectCountChanged then
|
||
self.OnSelectCountChanged(newCount - oldCount)
|
||
end
|
||
self:SetSelectState(newCount > self.DefaultMinSelectCount, true)
|
||
end
|
||
|
||
function XUiBagItem:MinusSelectCount()
|
||
if self.SelectCount <= 0 then
|
||
return
|
||
end
|
||
self:UpdateSelectCount(self.SelectCount - 1)
|
||
end
|
||
|
||
function XUiBagItem:AddSelectCount()
|
||
local maxCount = self:GetGridCount()
|
||
if maxCount and self.SelectCount >= maxCount then
|
||
return
|
||
end
|
||
|
||
if self.SelectCount < self.Data.Count then
|
||
self:UpdateSelectCount(self.SelectCount + 1)
|
||
end
|
||
end
|
||
|
||
function XUiBagItem:SelectAll()
|
||
self:UpdateSelectCount(self.Template.MaxCount)
|
||
end
|
||
|
||
function XUiBagItem:ClearSelectState()
|
||
self:UpdateSelectCount(0)
|
||
end
|
||
|
||
function XUiBagItem:GetSelectCount()
|
||
return self.SelectCount
|
||
end
|
||
|
||
function XUiBagItem:SetSelectState(isSelected, forceRefresh)
|
||
if isSelected ~= self.SelectState then
|
||
self.SelectState = isSelected
|
||
if self.OnSelectStateChanged then
|
||
self.OnSelectStateChanged(self.SelectState)
|
||
end
|
||
self:RefreshSelectState()
|
||
else
|
||
if forceRefresh then
|
||
self:RefreshSelectState()
|
||
end
|
||
end
|
||
end
|
||
|
||
function XUiBagItem:IsSelected()
|
||
return self.SelectState
|
||
end
|
||
|
||
-- 其他接口
|
||
function XUiBagItem:GetGridCount()
|
||
if self.RecycleBatch then
|
||
return self.RecycleBatch.RecycleCount
|
||
end
|
||
|
||
local gridCount = self.Template.GridCount
|
||
if gridCount <= 0 then
|
||
return self.Data.Count
|
||
else
|
||
if self.TxtGridCount and self.GridIndex then
|
||
local minCount = mathMin(self.Data.Count - (self.GridIndex - 1) * gridCount, gridCount)
|
||
return minCount
|
||
end
|
||
end
|
||
end
|
||
|
||
function XUiBagItem:SetNeedCount(needCount)
|
||
if needCount then
|
||
self.NeedCount = needCount
|
||
self.TxtNeedCount.text = needCount
|
||
end
|
||
end
|
||
|
||
function XUiBagItem:IsEnable()
|
||
return self and self.GameObject and self.GameObject.activeSelf
|
||
end
|
||
|
||
function XUiBagItem:Refresh(data, NeedDefulatQulity, isSmallIcon, notCommonBg)
|
||
local showSmallIcon = false
|
||
if isSmallIcon then
|
||
showSmallIcon = isSmallIcon
|
||
end
|
||
|
||
if self.CallBack then
|
||
self.CallBack(data)
|
||
end
|
||
|
||
self.GameObject:SetActive(data ~= nil)
|
||
|
||
if data == nil then
|
||
return
|
||
end
|
||
|
||
self.SelectCount = self.DefaultMinSelectCount
|
||
self.SelectState = false
|
||
|
||
if data.Data and data.GridIndex then
|
||
self.Data = data.Data
|
||
self.GridIndex = data.GridIndex
|
||
self.RecycleBatch = data.RecycleBatch
|
||
else
|
||
self.Data = data
|
||
end
|
||
|
||
self.TemplateId = self.Data.TemplateId and self.Data.TemplateId or self.Data.Id
|
||
if not self.TemplateId then
|
||
XLog.Error("XUiBagItem:Refresh 函数错误: 参数data的TemplateId字段和Id字段不能全部为空.. 参数:" .. tostring(data))
|
||
return
|
||
end
|
||
|
||
self.Template = self.Data.Template or XGoodsCommonManager.GetGoodsShowParamsByTemplateId(self.TemplateId)
|
||
|
||
self:RefreshSelf(NeedDefulatQulity, showSmallIcon, notCommonBg)
|
||
|
||
self:RefreshSelectState()
|
||
end
|
||
|
||
function XUiBagItem:RefreshSelectState()
|
||
local isNotMaxCount = self.SelectCount ~= self.Data.Count
|
||
if self.BtnMinusSelect then
|
||
self.BtnMinusSelect.interactable = self.SelectState
|
||
if self.SelectCount <= self.DefaultMinSelectCount then
|
||
if (not self.IsShowBtnMinusWhenMinSelectCount) then
|
||
self.BtnMinusSelect.gameObject:SetActive(false)
|
||
end
|
||
else
|
||
self.BtnMinusSelect.gameObject:SetActive(true)
|
||
end
|
||
end
|
||
if self.BtnAddSelect then
|
||
self.BtnAddSelect.interactable = isNotMaxCount
|
||
end
|
||
if self.TxtSelect then
|
||
self.TxtSelect.text = self.SelectCount
|
||
if self.SelectCount == 0 then
|
||
self.TxtSelect.text = ""
|
||
end
|
||
end
|
||
if self.TxtSelectHide then
|
||
self.TxtSelectHide.gameObject:SetActive(self.SelectState)
|
||
if self.SelectState then
|
||
self.TxtSelectHide.text = "x" .. self.SelectCount
|
||
end
|
||
end
|
||
if self.ImgSelect then
|
||
self.ImgSelect.gameObject:SetActive(self.SelectState)
|
||
end
|
||
if self.ImgSelectBg then
|
||
self.ImgSelectBg.gameObject:SetActive(self.SelectState)
|
||
end
|
||
if self.TxtNeedCount and self.NeedCount then
|
||
if self.Data.Count >= self.NeedCount then
|
||
self.TxtNeedCount.text = self.Data.Count .. "/" .. self.NeedCount
|
||
if self.TxtHaveCount then
|
||
self.TxtHaveCount.gameObject:SetActive(false)
|
||
end
|
||
else
|
||
self.TxtNeedCount.text = "/" .. self.NeedCount
|
||
if self.TxtHaveCount then
|
||
self.TxtHaveCount.text = self.Data.Count
|
||
self.TxtHaveCount.gameObject:SetActive(true)
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
function XUiBagItem:SetDefaultMinSelectCount(minSelectCount)
|
||
self.DefaultMinSelectCount = minSelectCount
|
||
self.SelectCount = self.DefaultMinSelectCount
|
||
end
|
||
|
||
function XUiBagItem:ShowBtnMinusWhenMinSelectCount(show)
|
||
self.IsShowBtnMinusWhenMinSelectCount = show
|
||
end
|
||
|
||
function XUiBagItem:RefreshSelf(NeedDefulatQulity, isSmallIcon, notCommonBg)
|
||
if self.BtnUse then
|
||
local isUseable = XDataCenter.ItemManager.IsUseable(self.TemplateId)
|
||
self.BtnUse.gameObject:SetActive(isUseable)
|
||
self.BtnUse.interactable = self.SelectCount > 0
|
||
end
|
||
|
||
if self.ImgCanUse then
|
||
local isUseable = XDataCenter.ItemManager.IsUseable(self.TemplateId)
|
||
self.ImgCanUse.gameObject:SetActive(isUseable)
|
||
end
|
||
|
||
if self.BtnOk then
|
||
local isUseable = XDataCenter.ItemManager.IsUseable(self.TemplateId)
|
||
self.BtnOk.gameObject:SetActive(not isUseable)
|
||
end
|
||
|
||
self:RefreshSelfCount()
|
||
|
||
local template = self.Template
|
||
if self.TxtName then
|
||
self.TxtName.text = template.Name
|
||
end
|
||
|
||
if self.TxtDescription then
|
||
self.TxtDescription.text = template.Description
|
||
end
|
||
|
||
if self.TxtWorldDesc then
|
||
self.TxtWorldDesc.text = template.WorldDesc
|
||
end
|
||
|
||
if self.TxtUseLevel then
|
||
self.TxtUseLevel.text = CS.XTextManager.GetText("CharacterUpgradeSkillConsumeTitle") .. "Lv." .. template.UseLevel
|
||
end
|
||
|
||
if self.TxtCount and self.Data.Count ~= nil then
|
||
self.TxtCount.text = self.Data.Count
|
||
end
|
||
|
||
if self.RImgIcon and isSmallIcon then
|
||
self.RImgIcon:SetRawImage(template.Icon)
|
||
elseif self.RImgIcon and not isSmallIcon then
|
||
self.RImgIcon:SetRawImage(template.BigIcon)
|
||
end
|
||
|
||
local quality = template.Quality
|
||
|
||
-- 角色品质背景特殊处理
|
||
if template.RewardType == XRewardManager.XRewardType.Character then
|
||
quality = quality < 3 and 5 or 6
|
||
end
|
||
-- 宠物品质背景特殊处理
|
||
if template.RewardType == XRewardManager.XRewardType.Partner then
|
||
quality = quality < 3 and 5 or 6
|
||
end
|
||
|
||
if self.ImgIconBg then
|
||
if self.BtnGet or notCommonBg then
|
||
XUiHelper.SetQualityIcon(self.RootUi, self.ImgIconBg, quality)
|
||
else
|
||
self.RootUi:SetUiSprite(self.ImgIconBg, XArrangeConfigs.GeQualityBgPath(quality))
|
||
end
|
||
end
|
||
|
||
if self.ImgIconQuality then
|
||
XUiHelper.SetQualityIcon(self.RootUi, self.ImgIconQuality, quality)
|
||
end
|
||
|
||
if NeedDefulatQulity and self.ImgIconBg then
|
||
XUiHelper.SetQualityIcon(self.RootUi, self.ImgIconBg, quality)
|
||
end
|
||
|
||
if self.ImgState then
|
||
local sprite = nil
|
||
local text = ""
|
||
|
||
if XDataCenter.ItemManager.IsCanConvert(self.TemplateId) then
|
||
sprite = XUiHelper.TagBgPath.Blue
|
||
text = CS.XTextManager.GetText("ItemCanConvert")
|
||
elseif XDataCenter.ItemManager.IsTimeLimit(self.TemplateId) then
|
||
local leftTime = self.RecycleBatch and self.RecycleBatch.RecycleTime - XTime.GetServerNowTimestamp()
|
||
or XDataCenter.ItemManager.GetRecycleLeftTime(self.Data.Id)
|
||
local tmpTime = XUiHelper.GetBagTimeStrAndBg(leftTime)
|
||
sprite = XUiHelper.TagBgPath.Red
|
||
text = tmpTime
|
||
end
|
||
|
||
if sprite then
|
||
self.RootUi:SetUiSprite(self.ImgState, sprite)
|
||
self.ImgState.gameObject:SetActive(true)
|
||
else
|
||
self.ImgState.gameObject:SetActive(false)
|
||
end
|
||
|
||
if text then
|
||
self.TxtState.text = text
|
||
self.TxtState.gameObject:SetActive(true)
|
||
else
|
||
self.TxtState.gameObject:SetActive(false)
|
||
end
|
||
end
|
||
|
||
if self.RefreshCallback then
|
||
self.RefreshCallback()
|
||
end
|
||
end
|
||
|
||
function XUiBagItem:RefreshSelfCount(useSelectCout)
|
||
if self.TxtGridCount then
|
||
local gridCount = self:GetGridCount()
|
||
|
||
if useSelectCout and useSelectCout > 0 then
|
||
gridCount = gridCount - useSelectCout
|
||
end
|
||
|
||
if gridCount <= 0 then
|
||
if self.CallBack then
|
||
self.CallBack(false)
|
||
end
|
||
|
||
self.GameObject:SetActive(false)
|
||
else
|
||
self.TxtGridCount.text = gridCount
|
||
end
|
||
end
|
||
end
|
||
|
||
function XUiBagItem:SetEnable(active)
|
||
if self.Btn then
|
||
self.Btn.interactable = active
|
||
end
|
||
if self.Btn2 then
|
||
self.Btn2.interactable = active
|
||
end
|
||
if self.BtnAddSelect then
|
||
self.BtnAddSelect.interactable = active
|
||
end
|
||
if self.WgtBtnAddSelect then
|
||
self.WgtBtnAddSelect.enabled = active
|
||
end
|
||
if self.BtnMinusSelect then
|
||
self.BtnMinusSelect.interactable = active
|
||
end
|
||
if self.WgtBtnMinusSelect then
|
||
self.WgtBtnMinusSelect.enabled = active
|
||
end
|
||
if self.BtnGet then
|
||
self.BtnGet.interactable = active
|
||
end
|
||
if self.BtnClose then
|
||
self.BtnClose.interactable = active
|
||
end
|
||
if self.BtnOk then
|
||
|
||
self.BtnOk.interactable = active
|
||
end
|
||
if self.BtnUse then
|
||
self.BtnUse.interactable = active
|
||
end
|
||
if self.WgtBtn then
|
||
self.WgtBtn.enabled = active
|
||
end
|
||
end
|
||
|
||
-- 回调修改
|
||
-- 参数: 无
|
||
function XUiBagItem:SetClickCallback(callback)
|
||
self.ClickCallback = callback
|
||
end
|
||
|
||
-- 参数: 无
|
||
function XUiBagItem:SetClickCallback2(callback)
|
||
self.ClickCallback2 = callback
|
||
end
|
||
|
||
-- 参数: 无
|
||
function XUiBagItem:SetRefreshCallback(callback)
|
||
self.RefreshCallback = callback
|
||
end
|
||
|
||
-- 参数: 使用数量
|
||
function XUiBagItem:SetUseRefreshCallback(callback)
|
||
self.UseRefreshCallback = callback
|
||
end
|
||
|
||
-- 参数: 变化量
|
||
function XUiBagItem:SetSelectCountChangedCallback(callback)
|
||
self.OnSelectCountChanged = callback
|
||
end
|
||
|
||
-- 参数: 新的选择状态
|
||
function XUiBagItem:SetSelectStateChangedCallback(callback)
|
||
self.OnSelectStateChanged = callback
|
||
end
|
||
|
||
-- 参数: newCount
|
||
function XUiBagItem:SetChangeSelectCountCondition(condition)
|
||
self.SelectCountChangeCondition = condition
|
||
end |