KLUIItemTipsPanel.lua 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797
  1. ---@class KLUIItemTipsPanel:UIKmlLuaPanelBase
  2. ---@field view KLUIItemTipsPanelView
  3. local KLUIItemTipsPanel = class(UIKmlLuaPanelBase)
  4. local this = KLUIItemTipsPanel
  5. ---创建时调用一次
  6. function this:Init()
  7. if self.args.equip_pos and self.args.equip_pos == "bag" then
  8. GUI:setAnchorPoint(self.view.root, 2, 0)
  9. GUI:setPositionX(self.view.root,-450)
  10. end
  11. if self.args.info and self.args.info.hideMask then
  12. GUI:setVisible(self.view.background_close, false)
  13. else
  14. GUI:setVisible(self.view.background_close, true)
  15. end
  16. if self.args.info and self.args.info.isRight then
  17. GUI:setAnchorPoint(self.view.root, 2, 0)
  18. end
  19. if self.args.info and self.args.info.posX then
  20. GUI:setPositionX(self.view.root,self.args.info.posX)
  21. end
  22. local itemInfo = SL:GetPosItemInfo(self.args.equip_pos, self.args.cfgId, self.args.id)
  23. local name = SL:GetEquipValue(EMetaVarGetKey.EQUIP_NAME, self.args.equip_pos, self.args.cfgId, self.args.id)
  24. self.type = SL:GetMetaValue(EMetaVarGetKey.ITEMTYPE, self.args.cfgId)
  25. self.subType = SL:GetMetaValue(EMetaVarGetKey.ITEMSUBTYPE, self.args.cfgId)
  26. --是否是果实
  27. self.isFruit = SL:HasConfig("cfg_fruit",self.args.cfgId)
  28. if self.isFruit then
  29. ---是否是从果实界面打开
  30. self.isFruitUI = GUI:GetUI("dev/outui/UIFruit/Panel/KLUIFruit/KLUIFruitPanel")
  31. end
  32. self.isGemBagUI= GUI:GetUI("dev/outui/Bag/Panel/KLGemSlateBag/KLGemSlateBagPanel")
  33. local itemData = SL:GetConfig("cfg_item",self.args.cfgId)
  34. local name_color = SL:GetConfig("cfg_item",self.args.cfgId).color
  35. GUI:Text_setString(self.view.item_name, name)
  36. GUI:Text_setTextColor(self.view.item_name, tostring(name_color))
  37. GUI:Item_setItemId(self.view.item_img, self.args.cfgId)
  38. local shape = SL:GetConfig("cfg_item",self.args.cfgId).shape[1]
  39. local rotation = SL:GetConfig("cfg_model_charactor",shape).rotateAxis
  40. local rotation_str = rotation .. ",50,0"
  41. self.Schedule1 = SL:ScheduleOnce(0.2, function()
  42. GUI:Item_Rotate(self.view.item_img, rotation_str)
  43. end)
  44. local equip_status = ""
  45. local isDeal = 0
  46. if itemInfo then
  47. if itemInfo.bind then
  48. isDeal = 2
  49. else
  50. isDeal = 1
  51. end
  52. else
  53. local lockItem = SL:GetConfig("cfg_item",self.args.cfgId).lockItem
  54. if lockItem[1] then
  55. isDeal = lockItem[1]
  56. end
  57. end
  58. if isDeal == 1 then
  59. equip_status = "可交易"
  60. elseif isDeal == 2 then
  61. equip_status = "不可交易"
  62. end
  63. local typeStr = self:GetTypeStr(self.type)
  64. local topDesc = SL:GetMetaValue(EMetaVarGetKey.ITEM_TOP_DESC,self.args.cfgId)
  65. local midDesc = SL:GetMetaValue(EMetaVarGetKey.ITEM_MID_DESC,self.args.cfgId)
  66. local bottomDesc = SL:GetMetaValue(EMetaVarGetKey.ITEM_BOTTOM_DESC,self.args.cfgId)
  67. GUI:Text_setString(self.view.top_text, topDesc)
  68. GUI:Text_setString(self.view.mid_text, midDesc)
  69. GUI:Text_setString(self.view.bottom_text, bottomDesc)
  70. GUI:Text_setString(self.view.equip_deal, equip_status)
  71. GUI:Text_setString(self.view.item_type, typeStr)
  72. local is_show_btn = true
  73. if self.args.equip_pos == "bag" then
  74. GUI:setVisible(self.view.bag_root, true)
  75. GUI:setVisible(self.view.item_button, false)
  76. self:bagBtnUpdate()
  77. elseif self.args.equip_pos == "depots" then
  78. GUI:setVisible(self.view.bag_root, true)
  79. GUI:setVisible(self.view.item_button, false)
  80. self:depotsBtnUpdate()
  81. elseif self.args.equip_pos == "gems" then
  82. GUI:setVisible(self.view.bag_root, true)
  83. GUI:setVisible(self.view.item_button, false)
  84. self:gemSlateInlayBtnUpdate()
  85. else
  86. GUI:setVisible(self.view.bag_root, false)
  87. GUI:setVisible(self.view.item_button, true)
  88. is_show_btn = false
  89. end
  90. GUI:DataListInitData(self.view.yulan_data_list,function()
  91. return self:yulanDataListItemCountFunc()
  92. end,function(realIndex)
  93. return self:yulanDataListItemGetFunc(realIndex)
  94. end,function(realIndex, kmlcontrol)
  95. return self:yulanDataListItemInitFunc(realIndex, kmlcontrol)
  96. end, function(realIndex, kmlcontrol)
  97. return self:yulanDataListItemUpdateFunc(realIndex, kmlcontrol)
  98. end)
  99. self.All_yulan = {}
  100. self.yulan_all_item = {}
  101. local yulan_height = 0
  102. --自选宝箱预览
  103. if itemData.type == 4 and itemData.subType == 2 and not string.isNullOrEmpty(itemData.useParam) then
  104. local strList = string.split(itemData.useParam,'|')
  105. for ii, one_str in ipairs(strList) do
  106. local id_yulan = string.split(one_str,'#')
  107. local one_id = tonumber(id_yulan[1])
  108. table.insert( self.All_yulan,one_id)
  109. end
  110. local yulan_hang = math.ceil(#self.All_yulan/4)
  111. yulan_height = yulan_hang *70
  112. GUI:DataListUpdateData(self.view.yulan_data_list)
  113. GUI:setVisible(self.view.yulan_content,true)
  114. --随机宝箱预览
  115. elseif itemData.type == 4 and itemData.subType == 1 and not string.isNullOrEmpty(itemData.useParam) then
  116. local all_tab = SL:GetConfigTable(itemData.useParam)
  117. for i, v in ipairs(all_tab) do
  118. table.insert( self.All_yulan,v.item)
  119. end
  120. local yulan_hang = math.ceil(#self.All_yulan/4)
  121. yulan_height = yulan_hang *70
  122. GUI:DataListUpdateData(self.view.yulan_data_list)
  123. GUI:setVisible(self.view.yulan_content,true)
  124. else
  125. GUI:setVisible(self.view.yulan_content,false)
  126. end
  127. --计算高度
  128. local x_1,y_1 = GUI:getSizeDelta(self.view.top_text)
  129. local x_2,y_2 = GUI:getSizeDelta(self.view.mid_text)
  130. local x_3,y_3 = GUI:getSizeDelta(self.view.bottom_text)
  131. local str_height = y_1 + y_2 + y_3 + 20 + yulan_height
  132. if str_height > 310 then
  133. str_height = 310
  134. end
  135. GUI:setContentSize(self.view.view_info,340,str_height)
  136. if is_show_btn then
  137. local all_add = str_height - 180
  138. local change_y = all_add/2
  139. local info_y = -20
  140. local head_y = 105 + change_y
  141. local btn_y = -155 - change_y
  142. local bg_h = 400 + all_add
  143. GUI:setPositionY(self.view.item_head,head_y)
  144. GUI:setPositionY(self.view.view_info,info_y)
  145. GUI:setPositionY(self.view.bag_root,btn_y)
  146. GUI:setPositionY(self.view.item_button,btn_y)
  147. GUI:setContentSize(self.view.panel_bg,370,bg_h)
  148. EquipFunc.tipsHeight = bg_h
  149. else
  150. local all_add = str_height - 180
  151. local change_y = all_add/2
  152. local info_y = -20 - 30
  153. local head_y = 105 + change_y -30
  154. local btn_y = -155 - change_y -30
  155. local bg_h = 400 + all_add - 60
  156. GUI:setPositionY(self.view.item_head,head_y)
  157. GUI:setPositionY(self.view.view_info,info_y)
  158. GUI:setPositionY(self.view.bag_root,btn_y)
  159. GUI:setPositionY(self.view.item_button,btn_y)
  160. GUI:setContentSize(self.view.panel_bg,370,bg_h)
  161. EquipFunc.tipsHeight = bg_h
  162. end
  163. local bg_height = EquipFunc.tipsHeight
  164. local bg_str = ""
  165. local item_bg_str = ""
  166. local bg_effect_id = 0
  167. local item_effect_id = 0
  168. if itemData.itemTips and itemData.itemTips ~= 0 then
  169. local style_tab = SL:GetConfig("cfg_tips_style",itemData.itemTips)
  170. if not string.isNullOrEmpty(style_tab.background) then
  171. bg_str = style_tab.background
  172. end
  173. if not string.isNullOrEmpty(style_tab.itemBg) then
  174. item_bg_str = style_tab.itemBg
  175. end
  176. bg_effect_id = style_tab.borderEffect
  177. item_effect_id = style_tab.itemBorderEffect
  178. end
  179. if string.isNullOrEmpty(bg_str) then
  180. GUI:Image_loadTexture(self.view.panel_bg, "img_interface_main122", "Atlas/Common.spriteatlas")
  181. else
  182. GUI:Image_loadTexture(self.view.panel_bg, bg_str, "Atlas/UITips.spriteatlas")
  183. end
  184. --GUI:Image_loadTexture(self.view.panel_bg, bg_str, "Atlas/Common.spriteatlas")
  185. if string.isNullOrEmpty(item_bg_str) then
  186. GUI:setVisible(self.view.item_bg, false)
  187. else
  188. GUI:setVisible(self.view.item_bg, true)
  189. GUI:Image_loadTexture(self.view.item_bg, item_bg_str, "Atlas/UITips.spriteatlas")
  190. end
  191. if bg_effect_id and bg_effect_id ~= 0 then
  192. local effect_tbl = SL:GetConfig("cfg_model_effect",bg_effect_id)
  193. local m_y = 370/523 * bg_height
  194. m_y = math.floor( m_y )
  195. local mscale = "240,"..m_y..",1"
  196. GUI:Model_setSrc(self.view.bg_effect_model,effect_tbl.path,mscale)
  197. GUI:setVisible(self.view.bg_effect_model, true)
  198. else
  199. GUI:setVisible(self.view.bg_effect_model, false)
  200. end
  201. if item_effect_id and item_effect_id ~= 0 then
  202. local effect_tbl = SL:GetConfig("cfg_model_effect",bg_effect_id)
  203. GUI:Model_setSrc(self.view.item_effect_model,effect_tbl.path)
  204. GUI:setVisible(self.view.item_effect_model, true)
  205. else
  206. GUI:setVisible(self.view.item_effect_model, false)
  207. end
  208. end
  209. ---创建或者刷新界面数据时调用
  210. function this:Refresh()
  211. if self.type==6 and (self.subType==14 or self.subType==13) then--变身戒指or守护皮肤
  212. SL:OpenEquipTips(self.args.equip_pos, self.args.cfgId, self.args.id)
  213. return
  214. end
  215. if self.type==9 and self.subType==1 then--圣杯
  216. self:CloseItemTips()
  217. GUI:UIPanel_Open("dev/outui/Archangel/Panel/KLArchangelGrailTips/KLArchangelGrailTipsPanel",nil,nil,self.args)
  218. return
  219. end
  220. end
  221. ---注册UI事件和服务器消息
  222. function this:RegistEvents()
  223. GUI:AddOnClickEvent(self.view.background_close,self,self.CloseItemTips)
  224. GUI:AddOnClickEvent(self.view.left_btn,self,self.BtnLeftOnClick)
  225. GUI:AddOnClickEvent(self.view.right_btn,self,self.BtnRightOnClick)
  226. end
  227. function this:CloseItemTips()
  228. GUI:UIPanel_Close("dev/ui/Tips/Panel/KLIUItemTips/KLUIItemTipsPanel")
  229. local itemGetPathPanel = GUI:GetUI("dev/ui/Common/Panel/KLItemGetPath/KLItemGetPathPanel")
  230. if itemGetPathPanel then
  231. GUI:UIPanel_Close("dev/ui/Common/Panel/KLItemGetPath/KLItemGetPathPanel")
  232. end
  233. GUI:UIPanel_Close("dev/ui/Tips/Panel/KLIUItemTipsOther/KLIUItemTipsOtherPanel")
  234. GUI:UIPanel_Close("dev/ui/Tips/Panel/KLUIEquipTips/KLUIEquipTipsPanel")
  235. GUI:UIPanel_Close("dev/outui/Archangel/Panel/KLArchangelGrailTips/KLArchangelGrailTipsPanel")
  236. end
  237. function this:Close()
  238. if self.Schedule1 then
  239. SL:UnSchedule(self.Schedule1)
  240. end
  241. SL:onLUAEvent(LUA_EVENT_TIPS_PANEL_CLOSE)
  242. end
  243. function this:bagBtnUpdate()
  244. local leftButton = SL:GetEquipValue(EMetaVarGetKey.EQUIP_TIPS_LEFT_BUTTON,self.args.equip_pos,self.args.cfgId,self.args.id)
  245. local rightButton = SL:GetEquipValue(EMetaVarGetKey.EQUIP_TIPS_RIGHT_BUTTON,self.args.equip_pos,self.args.cfgId,self.args.id)
  246. local isDelete = SL:GetConfig("cfg_item",self.args.cfgId).isDelete
  247. ---当是果实并且从果实界面打开时需要变成 左:使用 右:使用x个
  248. if self.isFruit and self.isFruitUI then
  249. leftButton = {}
  250. rightButton = {}
  251. if self.args.count > 0 then
  252. leftButton = {{"1"}}
  253. rightButton = {{"8"}}
  254. end
  255. end
  256. if self.isGemBagUI then
  257. leftButton = {}
  258. rightButton = {{"15"}}
  259. end
  260. self.left_all = {}
  261. self.left_all_item = {}
  262. for i, v in ipairs(leftButton) do
  263. -- for j, btn_type in ipairs(v) do
  264. -- if btn_type == "9" and isDelete == 0 then
  265. -- else
  266. -- table.insert(self.left_all,btn_type)
  267. -- end
  268. -- end
  269. local btn_type = v[1]
  270. if btn_type == "9" and isDelete == 0 then
  271. else
  272. table.insert(self.left_all, v)
  273. end
  274. end
  275. self.right_all = {}
  276. self.right_all_item = {}
  277. for i, vRight in ipairs(rightButton) do
  278. -- for j, btn_type in ipairs(v) do
  279. -- if btn_type == "9" and isDelete == 0 then
  280. -- else
  281. -- table.insert(self.right_all,btn_type)
  282. -- end
  283. -- end
  284. local btn_type = vRight[1]
  285. if btn_type == "9" and isDelete == 0 then
  286. else
  287. table.insert(self.right_all, vRight)
  288. end
  289. end
  290. -- SL:LogTable(self.right_all,true)
  291. -- SL:LogTable(self.right_all[1],true)
  292. self.left_is_open = false
  293. if #self.left_all < 1 then
  294. GUI:setVisible(self.view.left_btn,false)
  295. elseif #self.left_all == 1 then
  296. GUI:setVisible(self.view.left_btn,true)
  297. local str = self:getBtnName(self.left_all[1])
  298. GUI:Button_setTitleText(self.view.left_btn,str)
  299. else
  300. GUI:setVisible(self.view.left_btn,true)
  301. GUI:Button_setTitleText(self.view.left_btn,"更多")
  302. GUI:DataListInitData(self.view.left_data_list,function()
  303. return self:LeftDataListItemCountFunc()
  304. end,function(realIndex)
  305. return self:LeftDataListItemGetFunc(realIndex)
  306. end,function(realIndex, kmlcontrol)
  307. return self:LeftDataListItemInitFunc(realIndex, kmlcontrol)
  308. end, function(realIndex, kmlcontrol)
  309. return self:LeftDataListItemUpdateFunc(realIndex, kmlcontrol)
  310. end)
  311. end
  312. self.right_is_open = false
  313. if #self.right_all < 1 then
  314. GUI:setVisible(self.view.right_btn,false)
  315. elseif #self.right_all == 1 then
  316. GUI:setVisible(self.view.right_btn,true)
  317. local str = self:getBtnName(self.right_all[1])
  318. GUI:Button_setTitleText(self.view.right_btn,str)
  319. else
  320. GUI:setVisible(self.view.right_btn,true)
  321. GUI:Button_setTitleText(self.view.right_btn,"更多")
  322. GUI:DataListInitData(self.view.right_data_list,function()
  323. return self:RightDataListItemCountFunc()
  324. end,function(realIndex)
  325. return self:RightDataListItemGetFunc(realIndex)
  326. end,function(realIndex, kmlcontrol)
  327. return self:RightDataListItemInitFunc(realIndex, kmlcontrol)
  328. end, function(realIndex, kmlcontrol)
  329. return self:RightDataListItemUpdateFunc(realIndex, kmlcontrol)
  330. end)
  331. end
  332. if GUI:GetUI("dev/ui/Bag/Panel/KLDepots/KLDepotsPanel") then
  333. GUI:setVisible(self.view.right_btn, true)
  334. GUI:Button_setTitleText(self.view.right_btn, "放入")
  335. return
  336. end
  337. end
  338. function this:depotsBtnUpdate()
  339. GUI:setVisible(self.view.left_btn, true)
  340. GUI:Button_setTitleText(self.view.left_btn, "丢弃")
  341. GUI:setVisible(self.view.right_btn, true)
  342. GUI:Button_setTitleText(self.view.right_btn, "取出")
  343. end
  344. function this:gemSlateInlayBtnUpdate()
  345. GUI:setVisible(self.view.left_btn, false)
  346. GUI:setVisible(self.view.right_btn, true)
  347. GUI:Button_setTitleText(self.view.right_btn, "卸下")
  348. end
  349. function this:BtnLeftOnClick()
  350. if self.args.equip_pos == "depots" then
  351. local storeIndex = SL:GetDepotsIndex(self.args.id)
  352. SL:ReqStoreGiveUpItemMessage(storeIndex)
  353. self:CloseItemTips()
  354. return
  355. end
  356. if #self.left_all < 1 then
  357. elseif #self.left_all == 1 then
  358. local btnType = self.left_all[1][1]
  359. if not InfoManager.equipOrItemTipsInfo:IsCanOnClickButton(self.left_all[1]) then
  360. return
  361. end
  362. if btnType == "0" then
  363. self:CloseItemTips()
  364. elseif btnType == "1" then
  365. self:UseItem()
  366. elseif btnType == "2" then
  367. self:CloseItemTips()
  368. elseif btnType == "9" then
  369. local name = SL:GetEquipValue(EMetaVarGetKey.EQUIP_NAME, self.args.equip_pos, self.args.cfgId, self.args.id)
  370. SL:CommonTipsMessage({ showTips = "是否摧毁"..name ,
  371. ui = self,
  372. sureBtnText = "确定",
  373. cancelBtnText = "取消",
  374. callback = self.DestroyItem
  375. })
  376. elseif btnType == "10" then
  377. self:JieFeng()
  378. elseif btnType == "11" then
  379. self:DiuQi()
  380. elseif btnType == "99" then
  381. self:OpenPanel(self.left_all[1])
  382. end
  383. else
  384. if not self.left_is_open then
  385. GUI:setVisible(self.view.left_btn_content,true)
  386. self.left_is_open = true
  387. GUI:DataListUpdateData(self.view.left_data_list)
  388. else
  389. GUI:setVisible(self.view.left_btn_content,false)
  390. self.left_is_open = false
  391. end
  392. end
  393. end
  394. function this:PutOneEquip()
  395. local ItemInfo = SL:GetPosItemInfo(self.args.equip_pos,self.args.cfgId,self.args.id)
  396. if SL:CheckEquipWear(ItemInfo) == 1 then
  397. SL:PutOnEquip(ItemInfo)
  398. else
  399. SL:ShowCantEquipTip(ItemInfo)
  400. end
  401. self:CloseItemTips()
  402. end
  403. function this.DestroyItem(returnData)
  404. local ui = returnData.ui
  405. local index = SL:GetBagIndex(ui.args.id)
  406. SL:ReqDestroyItemMessage(index)
  407. ui:CloseItemTips()
  408. end
  409. function this:JieFeng()
  410. self:CloseItemTips()
  411. end
  412. function this:DiuQi()
  413. local index = SL:GetBagIndex(self.args.id)
  414. SL:ReqGiveUpItemMessage(index)
  415. self:CloseItemTips()
  416. end
  417. function this:TakeOffEquip()
  418. if not self.args.id then
  419. return
  420. end
  421. local wearBarId, pos = SL:GetEquipWearBarIdPos(self.args.id)
  422. SL:TakeOffEquip(wearBarId, pos)
  423. self:CloseItemTips()
  424. end
  425. function this:ForgeOnClick()
  426. if not InfoManager.equipOrItemTipsInfo:IsCanOnClickButton("",10401) then
  427. return
  428. end
  429. self:CloseItemTips()
  430. GUI:UIPanel_Close("dev/ui/Bag/Panel/KLUIBag/KLUIBagPanel")
  431. GUI:UIPanel_Close("dev/ui/Equip/Panel/KLEquipUI/KLEquipUIPanel")
  432. SL:OpenForgeGroupUI()
  433. end
  434. function this:UseItem()
  435. if self.isFruit then--跳转到果实界面
  436. ---@type cfg_global_column
  437. local switchCfg = SL:GetConfig("cfg_global",3003)
  438. if SL:MeData_GetLevel() < tonumber(switchCfg.value) then
  439. SL:TipMessage(SL:GetConfig('cfg_string',117).text,1, NoticeType.NoticeMid )-- "等级不足!",
  440. self:CloseItemTips()
  441. return
  442. end
  443. if self.isFruitUI then
  444. SL:UseItem(self.args.cfgId, self.args.id, 1)
  445. self:CloseItemTips()
  446. else
  447. self:CloseItemTips()
  448. GUI:UIPanel_Close("dev/ui/Tips/Panel/KLUIEquipTips/KLUIEquipTipsPanel")
  449. GUI:UIPanel_Close("dev/ui/Tips/Panel/KLIUItemTips/KLUIItemTipsPanel")
  450. GUI:UIPanel_Close("dev/ui/Tips/Panel/KLUIEquipTipsComparsion/KLUIEquipTipsComparsionPanel")
  451. GUI:UIPanel_Close("dev/ui/Equip/Panel/KLEquipUI/KLEquipUIPanel")
  452. GUI:UIPanel_Close("dev/ui/Bag/Panel/KLUIBag/KLUIBagPanel")
  453. GUI:UIPanel_Open("dev/ui/Role/Panel/KLAttr/KLAttrPanel",_,_,{isShowFruit = true})
  454. end
  455. return
  456. end
  457. ---@type cfg_item_column
  458. local itemTbl = SL:GetConfig("cfg_item",self.args.cfgId)
  459. if itemTbl.type == E_ItemType.TriggerItem and itemTbl.subType == 10 and self.args.cfgId == 60090002 then --角色改名卡
  460. GUI:UIPanel_Close("dev/ui/Tips/Panel/KLIUItemTips/KLUIItemTipsPanel")
  461. GUI:UIPanel_Open("dev/outui/ReName/Panel/KLRoleReName/KLRoleReNamePanel", nil, nil, {title="role_rename",des="请输入新的角色名称:",cfgId=self.args.cfgId})
  462. return
  463. elseif itemTbl.type == E_ItemType.TriggerItem and itemTbl.subType == 10 and self.args.cfgId == 60090003 then --战盟改名卡
  464. local isJoinUnion = SL:GetMetaValue(EMetaVarGetKey.ACTOR_HAVE_GUIDE)
  465. if isJoinUnion then
  466. GUI:UIPanel_Close("dev/ui/Tips/Panel/KLIUItemTips/KLUIItemTipsPanel")
  467. GUI:UIPanel_Open("dev/outui/ReName/Panel/KLRoleReName/KLRoleReNamePanel", nil, nil, {title="rename",des="请输入新的战盟名称:",cfgId=self.args.cfgId})
  468. else
  469. SL:TipMessage("未加入战盟",1,NoticeType.NoticeMid)
  470. end
  471. return
  472. end
  473. --背包石特殊处理
  474. if self.args.cfgId == 50040001 then
  475. self:forbidClick()
  476. return
  477. end
  478. SL:UseItem(self.args.cfgId, self.args.id, self.args.count)
  479. self:CloseItemTips()
  480. if itemTbl.type == E_ItemType.TriggerItem and itemTbl.subType == E_OutTriggerItemType.TransferRing then
  481. GUI:UIPanel_Close("dev/ui/Bag/Panel/KLUIBag/KLUIBagPanel")
  482. SL.HideMainPanel()
  483. --守护处理,跳转到外观守护界面
  484. GUI:UIPanel_Open("dev/outui/AppearGroup/Panel/KLAppearGroup/KLAppearGroupPanel", nil, nil, E_FashionType.TransferRing)
  485. SL:ScheduleOnce(0.3,function()
  486. SL:onLUAEvent(TRANSFER_RING_SELECT_ITEM, self.args.cfgId)
  487. end)
  488. elseif itemTbl.type == E_ItemType.TriggerItem and itemTbl.subType == E_OutTriggerItemType.GuardSkin then
  489. GUI:UIPanel_Close("dev/ui/Bag/Panel/KLUIBag/KLUIBagPanel")
  490. SL.HideMainPanel()
  491. --守护处理,跳转到外观守护界面
  492. GUI:UIPanel_Open("dev/outui/AppearGroup/Panel/KLAppearGroup/KLAppearGroupPanel", nil, nil, E_FashionType.Appear)
  493. SL:ScheduleOnce(0.3,function()
  494. SL:onLUAEvent(APPEAR_SELECT_ITEM, self.args.cfgId)
  495. end)
  496. end
  497. end
  498. ---使用多个item(self.args.count的数量)
  499. function this:UseMultipleItem()
  500. SL:UseItem(self.args.cfgId, self.args.id, self.args.count)
  501. self:CloseItemTips()
  502. end
  503. function this:forbidClick()
  504. local bag_unlock_info = SL:GetConfig('cfg_global', 107).value
  505. local bag_unlock_split = string.split(bag_unlock_info, '#')
  506. local itemId = tonumber(bag_unlock_split[1])
  507. local needCount = tonumber(bag_unlock_split[2])
  508. SL:CommonTipsMessage({ stringTblID = 207,
  509. ui = self, cfgId = itemId, needCount = needCount, callback = self.UnlockGrid, callbackData = nil })
  510. --GUI:UIPanel_Open("dev/ui/Common/Panel/KLCommonItemTips/KLCommonItemTipsPanel", nil, nil, { showTips = string.format("是否消耗%s扩充背包空间?", "背包石"), ui = self, cfgId = itemId, needCount = needCount, callback = self.UnlockGrid, callbackData = nil })
  511. self:CloseItemTips()
  512. end
  513. function this:UnlockGrid()
  514. SL:ReqBagAddCapacityMessage(1)
  515. end
  516. function this:getBtnName(data)
  517. local btn_type = data[1]
  518. --SL:LogTable(data,true)
  519. if btn_type == "0" then
  520. return "取消"
  521. elseif btn_type == "1" then
  522. if GUI:GetUI("dev/ui/Bag/Panel/KLDepots/KLDepotsPanel") then
  523. return "放置"
  524. else
  525. return "使用"
  526. end
  527. elseif btn_type == "2" then
  528. return "回收"
  529. elseif btn_type == "3" then
  530. return "穿戴"
  531. elseif btn_type == "4" then
  532. return "强化"
  533. elseif btn_type == "5" then
  534. return "上架"
  535. elseif btn_type == "6" then
  536. return "合并"
  537. elseif btn_type == "7" then
  538. return "拆分"
  539. elseif btn_type == "8" then
  540. if self.isFruitUI and self.isFruit then
  541. return "使用"..self.args.count.."个"
  542. end
  543. return "批量使用"
  544. elseif btn_type == "9" then
  545. return "摧毁"
  546. elseif btn_type == "10" then
  547. return "解封"
  548. elseif btn_type == "11" then
  549. return "丢弃"
  550. elseif btn_type == "13" then
  551. return "分解"
  552. elseif btn_type == "14" then
  553. return "装备"
  554. elseif btn_type == "15" then
  555. return "镶嵌"
  556. elseif btn_type == "16" then
  557. return "卸下"
  558. elseif btn_type == "99" then
  559. return data[2]
  560. end
  561. return ""
  562. end
  563. function this:LeftDataListItemCountFunc()
  564. return #self.left_all
  565. end
  566. function this:LeftDataListItemGetFunc(realIndex)
  567. local data = self.left_all[realIndex + 1]
  568. local str = self:getBtnName(data)
  569. local message = {equip_pos=self.args.equip_pos,cfgId=self.args.cfgId,id=self.args.id,btnType=data,nameStr=str}
  570. local item = GUI:UIPanel_Open("dev/ui/Tips/Item/KLUITips/KLTipBtntem",self.view.left_data_list,self,message,true)
  571. self.left_all_item[item.view.root] = item
  572. return item.view.root
  573. end
  574. function this:LeftDataListItemInitFunc(realIndex, kmlcontrol)
  575. end
  576. function this:LeftDataListItemUpdateFunc(realIndex, kmlcontrol)
  577. end
  578. function this:BtnRightOnClick()
  579. if self.args.equip_pos == "depots" then
  580. local storeIndex = SL:GetDepotsIndex(self.args.id)
  581. SL.Equip:ReqStoreTakeButtonMessage(storeIndex)
  582. self:CloseItemTips()
  583. return
  584. end
  585. if self.args.equip_pos == "gems" then
  586. InfoManager.gemSlateInfo:ReqUnloadGem()
  587. self:CloseItemTips()
  588. return
  589. end
  590. local depotPanel = GUI:GetUI("dev/ui/Bag/Panel/KLDepots/KLDepotsPanel")
  591. if depotPanel then
  592. local BagIndex = SL:GetBagIndex(self.args.id)
  593. if depotPanel.bagType == "privilege" then
  594. SL.Equip:ReqBagPutStoreButtonMessage(BagIndex, SL:GetDepotsCurPage() + depotPanel.maxDepotsPages)
  595. else
  596. SL.Equip:ReqBagPutStoreButtonMessage(BagIndex, SL:GetDepotsCurPage())
  597. end
  598. self:CloseItemTips()
  599. return
  600. end
  601. if #self.right_all < 1 then
  602. elseif #self.right_all == 1 then
  603. local btnType = self.right_all[1][1]
  604. if not InfoManager.equipOrItemTipsInfo:IsCanOnClickButton(self.right_all[1]) then
  605. return
  606. end
  607. if btnType == "0" then
  608. self:CloseEquipTips()
  609. elseif btnType == "1" then
  610. self:UseItem()
  611. elseif btnType == "2" then
  612. self:CloseEquipTips()
  613. elseif btnType == "9" then
  614. SL:CommonTipsMessage({ showTips = "是否摧毁"..name ,
  615. ui = self,
  616. sureBtnText = "确定",
  617. cancelBtnText = "取消",
  618. callback = self.DestroyItem
  619. })
  620. elseif btnType == "8" then
  621. self:UseMultipleItem()
  622. elseif btnType == "10" then
  623. self:JieFeng()
  624. elseif btnType == "11" then
  625. self:DiuQi()
  626. elseif btnType == "15" then
  627. self:InlayGem()
  628. elseif btnType == "99" then
  629. self:OpenPanel(self.right_all[1])
  630. end
  631. else
  632. if not self.right_is_open then
  633. GUI:setVisible(self.view.right_btn_content,true)
  634. self.right_is_open = true
  635. GUI:DataListUpdateData(self.view.right_data_list)
  636. else
  637. GUI:setVisible(self.view.right_btn_content,false)
  638. self.right_is_open = false
  639. end
  640. end
  641. end
  642. function this:OpenPanel(btnType)
  643. if #btnType < 3 then
  644. return
  645. end
  646. self:CloseItemTips()
  647. GUI:UIPanel_Close("dev/ui/Bag/Panel/KLUIBag/KLUIBagPanel")
  648. GUI:UIPanel_Close("dev/ui/Equip/Panel/KLEquipUI/KLEquipUIPanel")
  649. local panel = btnType[4]
  650. if #btnType == 4 then
  651. GUI:UIPanel_Open(panel)
  652. elseif #btnType == 5 then
  653. local num = btnType[5]
  654. if tonumber(num) then
  655. num = tonumber(num)
  656. end
  657. GUI:UIPanel_Open(panel,nil,nil,num)
  658. elseif #btnType >=7 then
  659. local message = {}
  660. for i=5,#btnType-2,3 do
  661. if btnType[i] and btnType[i+1] and btnType[i+2] then
  662. if btnType[i+1] == "string" then
  663. message[btnType[i]] = btnType[i+2]
  664. else
  665. message[btnType[i]] = tonumber(btnType[i+2])
  666. end
  667. end
  668. end
  669. GUI:UIPanel_Open(panel,nil,nil,message)
  670. end
  671. SL.HideMainPanel()
  672. end
  673. function this:RightDataListItemCountFunc()
  674. return #self.right_all
  675. end
  676. function this:RightDataListItemGetFunc(realIndex)
  677. local data = self.right_all[realIndex + 1]
  678. local str = self:getBtnName(data)
  679. local message = {equip_pos=self.args.equip_pos,cfgId=self.args.cfgId,id=self.args.id,btnType=data,nameStr=str}
  680. local item = GUI:UIPanel_Open("dev/ui/Tips/Item/KLUITips/KLTipBtntem",self.view.right_data_list,self,message,true)
  681. self.right_all_item[item.view.root] = item
  682. return item.view.root
  683. end
  684. function this:RightDataListItemInitFunc(realIndex, kmlcontrol)
  685. end
  686. function this:RightDataListItemUpdateFunc(realIndex, kmlcontrol)
  687. end
  688. function this:GetTypeStr(type)
  689. if type == 1 then
  690. return "货币"
  691. elseif type == 2 then
  692. return "装备"
  693. elseif type == 3 then
  694. return "消耗品"
  695. elseif type == 4 then
  696. return "宝箱"
  697. elseif type == 5 then
  698. return "材料"
  699. elseif type == 6 then
  700. return "道具"
  701. end
  702. return ""
  703. end
  704. function this:InlayGem()
  705. InfoManager.gemSlateInfo:ReqInlayGem(self.args.cfgId, self.args.id)
  706. self:CloseItemTips()
  707. end
  708. ----自选宝箱预览
  709. function this:yulanDataListItemCountFunc()
  710. return #self.All_yulan
  711. end
  712. function this:yulanDataListItemGetFunc(realIndex)
  713. local item = GUI:UIPanel_Open("dev/ui/Tips/Item/KLUIItemPreviewItem/KLUIItemPreviewItem",self.view.yulan_data_list,self,{},true)
  714. self.yulan_all_item[item.view.root] = item
  715. return item.view.root
  716. end
  717. function this:yulanDataListItemInitFunc(realIndex, kmlcontrol)
  718. end
  719. function this:yulanDataListItemUpdateFunc(realIndex, kmlcontrol)
  720. local data = self.All_yulan[realIndex + 1]
  721. self.yulan_all_item[kmlcontrol]:RefreshItem({cfgId=data,equip_pos=self.args.equip_pos},self.select_Secret_level,self)
  722. end
  723. return this