KLGemEquipItemItem.lua 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667
  1. ---@class KLGemEquipItemItem:UIKmlLuaPanelBase
  2. ---@field view KLGemEquipItemItemView
  3. local KLGemEquipItemItem = class(UIKmlLuaPanelBase)
  4. local this =KLGemEquipItemItem
  5. -- 当前鼠标的状态
  6. this.EClickState = {
  7. None = enum(0),
  8. Down = enum(), --鼠标按下
  9. DragScrollView = enum(), -- 鼠标拖拽滑动条
  10. ReallyToDrag = enum(), -- 鼠标拖拽滑动条
  11. StartDragItem = enum(), -- 鼠标拖拽道具
  12. DragItemButForbid = enum(), -- 鼠标拖拽道具, 但道具是不让拖拽的
  13. ShowTips = enum(), -- 展示tips
  14. }
  15. ---创建时调用一次
  16. function KLGemEquipItemItem:Init()
  17. self.equipAttItems = {}
  18. self.isEquipGrid = self.args.isEquipGrid
  19. self.BagTileScrollViewId = self.args.BagTileScrollViewId---仓库或者背包
  20. self.item = self.args.item
  21. self.x = self.args.x or 0
  22. self.y = self.args.y or 0
  23. self.z = self.args.z or 0
  24. self.mouseState = this.EClickState.None
  25. self.clickTime = 0
  26. self.canDrag = self.args.canDrag ~= nil and self.args.canDrag or false
  27. self.originPos = nil
  28. self.beginDragCallback = self.args.beginDrag
  29. self.ins = self.args.ins
  30. self.onDragCallback = self.args.onDrag
  31. self.endDragCallback = self.args.endDrag
  32. self.index = self.args.index
  33. self.click = self.args.click
  34. self.callBackUI = self.args.callBackUI
  35. self.showItemTips = true
  36. if self.isEquipGrid and self.args.default then
  37. ---@type EEquipGridDefaultData
  38. local data = self.args.default
  39. GUI:setVisible(self.view.holdImg_, false)
  40. GUI:setVisible(self.view.bg, true)
  41. GUI:Image_loadTexture(self.view.bg, data.bg, "Atlas/UIBagPanel.spriteatlas")
  42. self:SetGridSizeDelta(data.width, data.height)
  43. GUI:setPosition(self.view.quality_, data.qualityX, data.qualityY)
  44. GUI:setPositionX(self.view.strengthLevel_, data.strengthX)
  45. GUI:setPositionX(self.view.appendLevel_, data.strengthX)
  46. self:SetSelectUi(data.selectX, data.selectY, data.selectWidth or data.width, data.selectHeight or data.height)
  47. elseif self.args.type == "common" then
  48. self.showItemTips = self.args.showTips
  49. local data = self.args.default
  50. GUI:setVisible(self.view.holdImg_, false)
  51. GUI:setVisible(self.view.bg, false)
  52. self:SetGridSizeDelta(data.width, data.height)
  53. self:SetItemMfixSize(data.mfixSizeX, data.mfixSizeY)
  54. if data.qualityX then
  55. GUI:setPosition(self.view.quality_, data.qualityX, data.qualityY)
  56. end
  57. if data.strengthX then
  58. GUI:setPositionX(self.view.strengthLevel_, data.strengthX)
  59. GUI:setPositionX(self.view.appendLevel_, data.strengthX)
  60. end
  61. else
  62. GUI:setVisible(self.view.bg, false)
  63. GUI:setVisible(self.view.holdImg_, true)
  64. GUI:setPosition(self.view.quality_, 0, 0)
  65. if self.item then
  66. local horSize, vetSize = BagInfo.GetBagSizeByCfgId(self.item.cfgId)
  67. self:SetGridSizeDelta(horSize * BagInfo.oneTileWidth, vetSize * BagInfo.oneTileWidth)
  68. end
  69. end
  70. GUI:setVisible(self.view.selectImg, self.args.isSelect)
  71. GUI:setPosition(self.view.bag_item_, self.x, self.y, self.z)
  72. GUI:UIPanel_Open("dev/ui/Common/Item/KLEquipQualityEntry/KLEquipQualityEntryItem",
  73. self.view.quality_, self, {},true,function(qualityItem)
  74. self.qualityItem = qualityItem
  75. end)
  76. end
  77. function this:SetSelectUi(x, y, width, height)
  78. GUI:setPosition(self.view.selectImg, x, y)
  79. GUI:setContentSize(self.view.selectImg, width, height)
  80. end
  81. ---创建或者刷新界面数据时调用
  82. function KLGemEquipItemItem:Refresh()
  83. self.item = self.args.item
  84. self:RefreshGemShow()
  85. if self.item and self.item.cfgId == EMonthType.MonthCardTime then---月卡时间特殊显示
  86. GUI:Text_setString(self.view.TimeText, GUIUtil.FormatTimeD((InfoManager.monthCardInfo.MonthCardTimeTotal-SL:GetMetaValue(EMetaVarGetKey.SERVER_TIME))//1000))
  87. GUI:setVisible(self.view.tipsIcon_, false)
  88. else
  89. GUI:Text_setString(self.view.TimeText, "")
  90. end
  91. if not self.isEquipGrid and self.item and self.args.type ~= "common" then
  92. local horSize, vetSize = BagInfo.GetBagSizeByCfgId(self.item.cfgId)
  93. self:SetGridSizeDelta(horSize * BagInfo.oneTileWidth, vetSize * BagInfo.oneTileWidth)
  94. self:RefreshInfo()
  95. end
  96. if self.isEquipGrid then
  97. GUI:setVisible(self.view.tipsIcon_, false)
  98. GUI:setVisible(self.view.arrow_, false)
  99. end
  100. self:SetItemData(self.item)
  101. end
  102. ---@param item CommonProtos.Item
  103. function this:SetItem(item)
  104. if not self.args then
  105. self.args = {}
  106. end
  107. self.args.item = item
  108. self:Refresh()
  109. end
  110. ---@param item CommonProtos.Item
  111. function KLGemEquipItemItem:SetItemData(item)
  112. --默认显示写在这里
  113. GUI:setVisible(self.view.quality_, false)
  114. GUI:setVisible(self.view.strengthLevel_, false)
  115. GUI:setVisible(self.view.appendLevel_, false)
  116. GUI:setVisible(self.view.item_model_, false)
  117. GUI:setVisible(self.view.puton, false)
  118. if item == nil then
  119. return
  120. end
  121. GUI:setVisible(self.view.item_model_, true)
  122. --交易行需求展示货币,货币数量过多,转换一下
  123. local count = item.count
  124. if item.count >= 10000 then
  125. count = 0
  126. GUI:setVisible(self.view.item_count_unit,true)
  127. GUI:Text_setString(self.view.item_count_unit,tostring(SL:GetSimpleNumber(item.count,0)))
  128. else
  129. GUI:setVisible(self.view.item_count_unit,false)
  130. end
  131. --显示模型
  132. GUI:Item_UpdataData(self.view.item_model_, {
  133. ["itemid"] = item.cfgId,
  134. ["uniqueid"] = item.id,
  135. ["itemcount"] =count,
  136. })
  137. --装备品阶及卓越词条数量
  138. ---@type cfg_item_column
  139. local itemCfg = SL:GetConfig("cfg_item", item.cfgId)
  140. local entryCount = 0
  141. local pos = itemCfg.strPart[1]
  142. if pos and pos >= EEquipSlotType.Weapon and pos <= EEquipSlotType.Boot then
  143. local entryAttr = SL:GetEquipEntrys(item)
  144. entryCount = table.count(entryAttr)
  145. end
  146. GUI:setVisible(self.view.quality_, true)
  147. if item.cfgId ~= EMonthType.MonthCardTime then---月卡时间不在背包里出现的
  148. self.qualityItem:SetData(item.cfgId, entryCount)
  149. end
  150. self:SetItemOutDataInfo(item)
  151. self:SetItemPuton(item)
  152. end
  153. --显示item的强化追加等属性,外置功能
  154. ---@param item CommonProtos.Item
  155. function this:SetItemOutDataInfo(item)
  156. self:SetLiuGuang(item)
  157. local data = self.args.default or {}
  158. if data.strengthX then
  159. GUI:setPositionX(self.view.strengthLevel_, data.strengthX)
  160. GUI:setPositionX(self.view.appendLevel_, data.strengthX)
  161. else
  162. GUI:setPositionX(self.view.strengthLevel_, 5)
  163. GUI:setPositionX(self.view.appendLevel_, 5)
  164. end
  165. --强化等级
  166. local strengthLevel = EquipFunc.GetEquipStrengthLevel(item)
  167. GUI:setVisible(self.view.strengthLevel_, true)
  168. GUI:Text_setString(self.view.strengthLevel_, strengthLevel ~= 0 and ("+" .. strengthLevel) or "")
  169. --追加等级
  170. local appendLv = EquipFunc.GetEquipAppendLevel(item)
  171. GUI:setVisible(self.view.appendLevel_, true)
  172. GUI:Text_setString(self.view.appendLevel_, appendLv ~= 0 and ("+" .. appendLv) or "")
  173. end
  174. --显示是否已经装备,外置功能装备叠加所需
  175. ---@param item CommonProtos.Item
  176. function this:SetItemPuton(item)
  177. if not self.isEquipGrid and self.args.BagTileScrollViewId == EBagShowType.EquipAdd then
  178. local putonTab = SL:GetTotalWearEquips()[1]
  179. if not putonTab then
  180. return
  181. end
  182. for _, v in pairs(putonTab) do
  183. if v.id == item.id then
  184. GUI:setVisible(self.view.puton, true)
  185. return
  186. end
  187. end
  188. end
  189. end
  190. function this:SetGridSizeDelta(x, y)
  191. GUI:setContentSize(self.view.bag_item_, x, y)
  192. GUI:setContentSize(self.view.holdImg_, x, y)
  193. GUI:setContentSize(self.view.empty, x, y)
  194. GUI:setContentSize(self.view.bg, x, y)
  195. GUI:setContentSize(self.view.selectImg, x, y)
  196. GUI:setContentSize(self.view.equipInfo, x, y)
  197. GUI:Item_UpdataData(self.view.item_model_, {
  198. ["width"] = x,
  199. ["height"] = y,
  200. })
  201. end
  202. function this:SetItemMfixSize(x, y)
  203. if x and y then
  204. GUI:Item_UpdataData(self.view.item_model_, { mfixsize = x .. "," .. y })
  205. end
  206. end
  207. ---注册UI事件和服务器消息
  208. function KLGemEquipItemItem:RegistEvents()
  209. GUI:AddOnTouchEvent(self.view.empty, self, function(ui, control, eventType, systemData)
  210. if eventType == EUIEventName.OnPointerDown then
  211. if systemData.button ~= InputButton.Left then
  212. return
  213. end
  214. self.clickTime = Misc.GetTimeStamp()
  215. self.mouseState = this.EClickState.Down
  216. Coroutine.Start(self.StartDrag, self)
  217. end
  218. if eventType == EUIEventName.OnPointerUp then
  219. if systemData.button ~= InputButton.Left then
  220. return
  221. end
  222. -- 拖拽滑动条或者拖拽物品, 则不触发逻辑
  223. if self.mouseState == this.EClickState.DragScrollView or self.mouseState == this.EClickState.StartDragItem then
  224. return
  225. end
  226. if self.mouseState == this.EClickState.ReallyToDrag then
  227. GUI:setAnchorPoint(self.view.empty, 1, 1)
  228. GUI:Item_Rotate(self.view.item_model_, "")
  229. ---- 结束拖拽时显示占位底图
  230. GUI:setVisible(self.view.holdImg_, true)
  231. GUI:setScale(self.view.item_model_, 1)
  232. GUI:setVisible(self.view.equipInfo, true)
  233. return
  234. end
  235. self.mouseState = this.EClickState.ShowTips
  236. ---有外部传入的点击事件,调用外部的
  237. if self.click then
  238. self.click(self.callBackUI, self.view, self.item)
  239. return
  240. end
  241. self:OpenItemTips()
  242. end
  243. if eventType == EUIEventName.OnBeginDrag then
  244. self:BeginDrag(control, systemData)
  245. end
  246. if eventType == EUIEventName.OnDrag then
  247. self:OnDrag(control, systemData)
  248. end
  249. if eventType == EUIEventName.OnEndDrag then
  250. -- 如果物品不允许拖拽或者不是拖拽物品, 也就没有后续的逻辑,直接返回即可
  251. -- 后续逻辑和拖拽道具结束逻辑相关, 根据位置把道具放到对应的位置上
  252. if self.canDrag == false or self.mouseState ~= this.EClickState.StartDragItem then
  253. return
  254. end
  255. --local raycastObj = callbackData[1]["pointerCurrentRaycast"].gameObject
  256. --if self.willEndDragCallBack then
  257. -- self.willEndDragCallBack(self.cls, { raycastObj = raycastObj, temp = self })
  258. --end
  259. --
  260. GUI:Item_Rotate(self.view.item_model_, "")
  261. GUI:setAnchorPoint(self.view.empty, 1, 1)
  262. GUI:SetParent(self.view.empty, self.parentTrans)
  263. control.rectTransform.anchoredPosition = self.originPos
  264. SL.AudioMgr.PlaySound(EAudioPlayByCfgType.Item, self.item.cfgId, ESoundFieldType.DownSound)
  265. if self.endDragCallback then
  266. self.endDragCallback(self.ins, { raycastObj = systemData["pointerCurrentRaycast"].gameObject, dragItem = self, index = self.index }, systemData)
  267. end
  268. --
  269. ---- 结束拖拽时显示占位底图
  270. GUI:setVisible(self.view.holdImg_, true)
  271. GUI:Button_setBright(self.view.empty, true)
  272. GUI:setScale(self.view.item_model_, 1)
  273. GUI:setVisible(self.view.equipInfo, true)
  274. self.mouseState = this.EClickState.None
  275. end
  276. end)
  277. SL:RegisterLUAEvent(LUA_EVENT_STRENGTH_OK, self.LUA_EVENT_STRENGTH_OK, self)
  278. SL:RegisterLUAEvent(LUA_EVENT_APPEND_OK, self.LUA_EVENT_STRENGTH_OK, self)
  279. SL:RegisterLUAEvent(LUA_EVENT_TRANSFER_SUCCESS, self.LUA_EVENT_TRANSFER_SUCCESS, self)
  280. SL:RegisterLUAEvent(LUA_EVENT_REFRESH_GEM_SLATE_INFO, self.RefreshGemShow, self)
  281. end
  282. function this:LUA_EVENT_STRENGTH_OK(id, data)
  283. if self.item and self.item.id == data.itemId then
  284. local item
  285. if self.isEquipGrid then
  286. item = SL:GetWearEquipByItemId(data.itemId)
  287. else
  288. item = SL:GetItemInfoByItemId(data.itemId)
  289. end
  290. self.item = item
  291. self:SetItemOutDataInfo(item)
  292. end
  293. end
  294. function this:LUA_EVENT_TRANSFER_SUCCESS(_, eventData)
  295. if eventData and eventData.refresh then
  296. if self.item then
  297. if self.item.id == eventData.oldItem or self.item.id == eventData.newItem then
  298. self:LUA_EVENT_STRENGTH_OK(nil, { itemId = self.item.id })
  299. end
  300. end
  301. end
  302. end
  303. function this:BeginDrag(control, systemData)
  304. -- 不能拖拽则不执行下面开始拖拽相关的逻辑
  305. if not self.canDrag then
  306. return
  307. end
  308. if self.mouseState == this.EClickState.ReallyToDrag then
  309. self.mouseState = this.EClickState.StartDragItem
  310. GUI:setAnchorPoint(self.view.empty, 0, 0)
  311. self.originPos = control.rectTransform.anchoredPosition
  312. self.parentTrans = self.view.empty.rectTransform.parent
  313. self.beginDragCallback(self.ins, {}, systemData)
  314. SL.AudioMgr.PlaySound(EAudioPlayByCfgType.Item, self.item.cfgId, ESoundFieldType.HoldSound)
  315. local panel = GUI:GetUI("dev/ui/Common/Panel/KLTop/KLTopPanel")
  316. GUI:SetParent(self.view.empty, GUI:GetRectTransform(panel.view.root))
  317. end
  318. end
  319. function this:OnDrag(control, systemData)
  320. if self.mouseState == this.EClickState.Down then
  321. self.mouseState = this.EClickState.DragScrollView
  322. end
  323. -- 拖拽滑动条的逻辑
  324. if self.mouseState == this.EClickState.DragScrollView then
  325. -- 需要有拖拽滑动条的回调函数, 否则不执行
  326. -- 有的模块的UIItemGridItem是不依附于BagTileScrollView的
  327. if self.onDragCallback then
  328. self.onDragCallback(self.ins, { raycastObj = systemData["pointerCurrentRaycast"].gameObject, dragItem = false, temp = self }, systemData)
  329. end
  330. return
  331. end
  332. if self.mouseState == this.EClickState.StartDragItem then
  333. -- 防止反复SetParent
  334. --if control.transform.parent ~= UIMostDeepPanel.root.transform then
  335. -- self.bagGridButton.transform:SetParent(UIMostDeepPanel.root.transform, true)
  336. -- local x, y = self.bagGridButton:GetAnchoredPosition()
  337. -- self.bagGridButton:SetAnchoredPosition3D(x, y, -500)
  338. --
  339. -- -- 防止拖拽结束后射线打到道具icon上
  340. GUI:Button_setBright(self.view.empty, false)
  341. --end
  342. -- 此为基本的拖拽逻辑, 让道具跟着鼠标移动
  343. local ok, globalMousePos = GUI:ScreenPointToWorldPointInRectangle(control, systemData["position"])
  344. if ok then
  345. local pos = globalMousePos
  346. control.rectTransform.position = pos
  347. end
  348. self.onDragCallback(self.ins, { raycastObj = systemData["pointerCurrentRaycast"].gameObject, dragItem = true, temp = self }, systemData)
  349. end
  350. end
  351. -- 开始拖拽
  352. function this:StartDrag()
  353. Coroutine.Wait(0.3)
  354. -- 如果鼠标是按下状态, 不是拖拽状态(在此函数调用前对道具直接拖拽是移动滑动条,
  355. -- 此时 self.mouseState == this.EClickState.DragScrollView)
  356. if self.mouseState == this.EClickState.Down then
  357. -- 根据道具能否拖拽, 设置不同状态
  358. if self.canDrag == true then
  359. self.mouseState = this.EClickState.ReallyToDrag
  360. -- 开始旋转
  361. --if not self.notSelectRotate then
  362. -- self.modelIconTable:StartRotation()
  363. --end
  364. local modelId = SL:GetConfig('cfg_item', self.item.cfgId).shape[1]
  365. --GUI:setAnchorPoint(self.view.empty,0, 0)
  366. local model_rot = SL:GetConfig('cfg_model_charactor', modelId).rotateAxis
  367. if model_rot then
  368. GUI:Item_Rotate(self.view.item_model_, string.format("%s,50,0", model_rot))
  369. --self.originRot = GUI:getAllRotation(self.view.item_model_)
  370. end
  371. -- 开始拖拽道具,隐藏底图, 让玩家知道可以拖拽了
  372. GUI:setVisible(self.view.holdImg_, false)
  373. local model_scale = SL:GetConfig('cfg_model_charactor', modelId).dragScale
  374. GUI:setScale(self.view.item_model_, model_scale / 100)
  375. GUI:setVisible(self.view.equipInfo, false)
  376. else
  377. self.mouseState = this.EClickState.DragItemButForbid
  378. end
  379. end
  380. end
  381. ---显示tips
  382. function this:OpenItemTips()
  383. if self.item and self.showItemTips then
  384. local bag = "bag"
  385. local item = SL:GetConfig("cfg_item",self.item.cfgId)
  386. --道具在仓库显示取出tips
  387. if item.type ~= EItemType.Equip and self.BagTileScrollViewId == EBagTileScrollViewId.Storage then
  388. --SL:TipMessage({ "仓库不能使用物品", 1, NoticeType.NoticeMid })
  389. --return
  390. end
  391. --if item.type ~= EItemType.Equip and self.BagTileScrollViewId == EBagTileScrollViewId.Bag then
  392. -- self:UseItem(1)
  393. -- return
  394. --end
  395. if self.BagTileScrollViewId == EBagTileScrollViewId.Storage then
  396. SL:OpenTips("depots", self.item.cfgId, self.item.id)
  397. else
  398. SL:OpenTips(bag, self.item.cfgId, self.item.id)
  399. end
  400. end
  401. end
  402. function this:UseItem(count)
  403. if not ItemCdMgr.cdGroupItem[self.item.cfgId] or (ItemCdMgr.cdGroupItem[self.item.cfgId] and ItemCdMgr.cdGroupItem[self.item.cfgId].remainCd <= 0) then
  404. --UIEquipInfoPanel:ClearInfo()
  405. local index = SL:GetBagIndex(self.item.id)
  406. local tbl = SL:GetConfig("cfg_item", self.item.cfgId)
  407. if tbl and tbl.type == EItemType.TriggerItem and tbl.subType == ETriggerItemType.ThankLetter then
  408. BagInfo.thankLetterIndex = index
  409. SL:ReqUseLetterMessage(index)
  410. ---赞助特殊使用
  411. elseif tbl and tbl.type == EItemType.TriggerItem and tbl.subType == ETriggerItemType.Sponsor then
  412. --self:UseSponsor()
  413. BagInfo.ReqUseItemMessage(index)
  414. elseif tbl and tbl.type == EItemType.TriggerItem and tbl.subType == ETriggerItemType.SummonMonsters then
  415. if SL:GetMetaValue(EMetaVarGetKey.GET_IS_SAFEAREA) then
  416. SL:TipMessage( SL:GetConfig('cfg_string',291).text,1, NoticeType.NoticeMid )--"安全区无法使用道具",
  417. return
  418. else
  419. SL:ReqUseItemMessage(index)
  420. end
  421. else
  422. if tbl and tbl.batchUsage == EUseItemType.UseAll then
  423. local count1 = self.item.count > 0 and self.item.count or 1
  424. SL:ReqUseItemMessage(index, count1)
  425. elseif tbl and tbl.batchUsage == EUseItemType.SelectUse and self.item.count > 1 then
  426. GUI:UIPanel_Open("dev/ui/ItemBase/Panel/KLItemBatchUse/KLItemBatchUsePanel", nil, nil, { itemIndex = index, itemCfgId = self.item.cfgId })
  427. elseif tbl and tbl.batchUsage ~= 0 then
  428. SL:ReqUseItemMessage(index, count)
  429. else
  430. SL:ReqUseItemMessage(index, 1)
  431. end
  432. end
  433. if self.item ~= nil then
  434. EventManager.Dispatch(Event.OnRefreshMedicineBottle, self.item.cfgId)
  435. BagInfo.lastUseBagItemId = self.item.cfgId
  436. SL:PlaySoundByTypeAndId(EAudioPlayByCfgType.Item, self.item.cfgId, ESoundFieldType.UseSound)
  437. end
  438. else
  439. SL:TipMessage( SL:GetConfig('cfg_string',292).text, 1, NoticeType.NoticeLeftBottom )---物品使用冷却中
  440. end
  441. end
  442. function KLGemEquipItemItem:Close()
  443. GUI:SetActive(self.view.selectImg, false)
  444. GUI:SetActive(self.view.arrow_, false)
  445. GUI:UIPanel_Close(_, self.qualityItem)
  446. self.qualityItem = nil
  447. end
  448. function this:SetSelect(val)
  449. GUI:SetActive(self.view.selectImg, val)
  450. end
  451. function this:RefreshInfo()
  452. if SL:GetConfig('cfg_item', self.item.cfgId).type ~= EItemType.Equip then
  453. GUI:setVisible(self.view.tipsIcon_, false)
  454. GUI:setVisible(self.view.arrow_, false)
  455. return
  456. end
  457. if SL:CheckEquipBaseCareer(self.item) then
  458. GUI:setVisible(self.view.tipsIcon_, false)
  459. local equip = self.item
  460. ---@type cfg_item_column
  461. local itemCfg = SL:GetConfig("cfg_item", equip.cfgId)
  462. ---@type cfg_equip_entryLib_column
  463. local entryLib = SL:GetConfig("cfg_equip_entryLib", equip.cfgId)
  464. --获取穿戴栏
  465. local wearBars = SL:GetMetaValue(EMetaVarGetKey.GET_OPEN_WEARBARS)
  466. local wearBar = itemCfg.wearBarID[1]
  467. if wearBars and table.count(itemCfg.wearBarID) > 0 then
  468. for _, v in pairs(itemCfg.wearBarID) do
  469. if table.contains(wearBars, v) then
  470. wearBar = v
  471. break
  472. end
  473. end
  474. end
  475. local targetGrade
  476. local targetEquip
  477. local show = false
  478. --如果有多个穿戴位置
  479. --如果有位置没穿装备则算作该评分大于身上装备评分
  480. --如果都穿装备了,则与评分最低的装备做比较
  481. for _, pos in pairs(itemCfg.strPart) do
  482. local target = SL:GetMetaValue("EQUIP_TARGET_DATA", wearBar, pos)
  483. if target then
  484. ---@type cfg_equip_entryLib_column
  485. local targetEntryLib = SL:GetConfig("cfg_equip_entryLib", target.cfgId)
  486. if entryLib.replaceRating[1] and targetEntryLib.replaceRating[1] and targetEntryLib.replaceRating[1] == entryLib.replaceRating[1] then
  487. if not targetGrade then
  488. targetGrade = targetEntryLib.replaceRating[2]
  489. targetEquip = target
  490. else
  491. if targetEntryLib.replaceRating[2] < targetGrade then
  492. targetGrade = targetEntryLib.replaceRating[2]
  493. targetEquip = target
  494. end
  495. end
  496. end
  497. else
  498. show = true
  499. break
  500. end
  501. end
  502. --评分高则显示箭头
  503. --评分相同则词条数量多的显示箭头
  504. if not show and targetGrade then
  505. if entryLib.replaceRating[2] > targetGrade then
  506. show = true
  507. elseif entryLib.replaceRating[2] == targetGrade and targetEquip then
  508. local entryCount = table.count(SL:GetEquipEntrys(equip))
  509. local entryCount_ = table.count(SL:GetEquipEntrys(targetEquip))
  510. if entryCount > entryCount_ then
  511. show = true
  512. end
  513. end
  514. end
  515. if show then
  516. GUI:setVisible(self.view.arrow_, true)
  517. if SL:CheckEquipWear(self.item) == 1 then
  518. GUI:Image_loadTexture(self.view.arrow_, "ty_icon_arrow_small", "Atlas/TS_Common.spriteatlas")
  519. else
  520. GUI:Image_loadTexture(self.view.arrow_, "tips_yellow2", "Atlas/TS_Common.spriteatlas")
  521. end
  522. else
  523. GUI:setVisible(self.view.arrow_, false)
  524. end
  525. --[[ local resCompare = SL:CompareInitGrage(self.item)
  526. if resCompare == 1 then
  527. GUI:setVisible(self.view.arrow_, true)
  528. if SL:CheckEquipWear(self.item) == 1 then
  529. GUI:Image_loadTexture(self.view.arrow_, "ty_icon_arrow_small", "Atlas/TS_Common.spriteatlas")
  530. else
  531. GUI:Image_loadTexture(self.view.arrow_, "tips_yellow2", "Atlas/TS_Common.spriteatlas")
  532. end
  533. elseif resCompare == 0 then
  534. end]]
  535. else
  536. GUI:setVisible(self.view.tipsIcon_, true)
  537. GUI:setVisible(self.view.arrow_, false)
  538. end
  539. end
  540. function this:Updatenoclip(value)
  541. GUI:Model_setnoclip(self.view.item_model_, value)
  542. end
  543. function this:SetLiuGuang(equipInfo)
  544. local liuGuangId = EquipFunc.GetEquipLiuGuangId(equipInfo)
  545. if liuGuangId then
  546. GUI:SetStreamAttr(self.view.item_model_, liuGuangId)
  547. else
  548. GUI:ResetStreamAttr(self.view.item_model_)
  549. end
  550. end
  551. function this:RefreshGemShow()
  552. GUI:setVisible(self.view.gemCell1,false)
  553. GUI:setVisible(self.view.gemCell2,false)
  554. GUI:setVisible(self.view.gemCell3,false)
  555. if self.item then
  556. local pos
  557. if self.args and self.args.equipPos then
  558. pos=self.args.equipPos
  559. end
  560. ---@type cfg_item_column
  561. local itemCfg = SL:GetConfig("cfg_item", self.item.cfgId)
  562. if pos and pos > EEquipSlotType.None and pos <= EEquipSlotType.Boot then
  563. GUI:setVisible(self.view.gemCell1,true)
  564. GUI:setVisible(self.view.gemCell2,true)
  565. GUI:setVisible(self.view.gemCell3,true)
  566. if pos==EEquipSlotType.Weapon and itemCfg and itemCfg.strPart[1]==EEquipSlotType.TwoHandWeapon then
  567. pos=EEquipSlotType.TwoHandWeapon
  568. end
  569. local tmpGem1=InfoManager.gemSlateInfo:GetCurActiveSchemeGemByEquipPos("1",tostring(pos))
  570. local tmpGem2=InfoManager.gemSlateInfo:GetCurActiveSchemeGemByEquipPos("2",tostring(pos))
  571. local tmpGem3=InfoManager.gemSlateInfo:GetCurActiveSchemeGemByEquipPos("3",tostring(pos))
  572. local gemImgPathStr1="gem_NoInlay"
  573. local gemImgPathStr2="gem_NoInlay"
  574. local gemImgPathStr3="gem_NoInlay"
  575. if tmpGem1 then
  576. local cfg=SL:GetConfig("cfg_equip_gem", tmpGem1)
  577. gemImgPathStr1=cfg.gemColorImg
  578. end
  579. if tmpGem2 then
  580. local cfg=SL:GetConfig("cfg_equip_gem", tmpGem2)
  581. gemImgPathStr2=cfg.gemColorImg
  582. end
  583. if tmpGem3 then
  584. local cfg=SL:GetConfig("cfg_equip_gem", tmpGem3)
  585. gemImgPathStr3=cfg.gemColorImg
  586. end
  587. GUI:Image_loadTexture(self.view.gemImg1,gemImgPathStr1,"Atlas/TS_GemInlayPanel.spriteatlas")
  588. GUI:Image_loadTexture(self.view.gemImg2,gemImgPathStr2,"Atlas/TS_GemInlayPanel.spriteatlas")
  589. GUI:Image_loadTexture(self.view.gemImg3,gemImgPathStr3,"Atlas/TS_GemInlayPanel.spriteatlas")
  590. end
  591. -- end
  592. end
  593. end
  594. return this