KLArmbandUpgradePanel.lua 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441
  1. ---@class KLArmbandUpgradePanel:UIKmlLuaPanelBase
  2. ---@field view KLArmbandUpgradePanelView
  3. local KLArmbandUpgradePanel = class(UIKmlLuaPanelBase)
  4. local this =KLArmbandUpgradePanel
  5. ---创建时调用一次
  6. function this:Init()
  7. end
  8. function this:GetAllStarCount()
  9. local StarNum = 0
  10. local skillInfoTbl = SL:FindConfigs('cfg_gard_armbands')
  11. for i, v in ipairs(skillInfoTbl) do
  12. if v.armbandsStar > StarNum then
  13. StarNum = v.armbandsStar
  14. end
  15. end
  16. return StarNum
  17. end
  18. function this:SetStarDataList()
  19. local starnum = self:GetAllStarCount()
  20. GUI:DataListInitData(self.view.datalist_armbandstar, function()
  21. return starnum
  22. end, function(realIndex)
  23. return self:StarItemGetFunc(realIndex)
  24. end, function(realIndex, kmlcontrol)
  25. return self:StarItemInitFunc(realIndex, kmlcontrol)
  26. end, function(realIndex, kmlcontrol)
  27. return self:StarItemUpdateFunc(realIndex, kmlcontrol)
  28. end)
  29. GUI:DataListUpdateData(self.view.datalist_armbandstar)
  30. end
  31. function this:StarItemGetFunc(realIndex)
  32. end
  33. function this:StarItemInitFunc(realIndex, kmlcontrol)
  34. end
  35. function this:StarItemUpdateFunc(realIndex, kmlcontrol)
  36. local index = realIndex+1
  37. local ico_star = GUI:GetChildControl(self.view.datalist_armbandstar,realIndex, 'ico_star')
  38. local armbandstar = 0
  39. if self.armbandTbl then
  40. armbandstar = self.armbandTbl[1].armbandsStar
  41. end
  42. GUI:SetActive(ico_star, index <= armbandstar)
  43. end
  44. --------------------------------------------------------------------------------------------
  45. function this:SetArrDataList()
  46. --属性
  47. GUI:DataListInitData(self.view.arrData_list, function()
  48. return table.count(self.attInfos)
  49. end, function(realIndex)
  50. return self:AttItemGetFunc(realIndex)
  51. end, function(realIndex, kmlcontrol)
  52. return self:AttItemInitFunc(realIndex, kmlcontrol)
  53. end, function(realIndex, kmlcontrol)
  54. return self:AttItemUpdateFunc(realIndex, kmlcontrol)
  55. end)
  56. GUI:DataListUpdateData(self.view.arrData_list)
  57. end
  58. function this:AttItemGetFunc(realIndex)
  59. local index = realIndex + 1
  60. local item = GUI:UIPanel_Open("dev/outui/Union/Item/KLUnionArmband/KLUnionArmbandItem", self.view.arrData_list, self, nil, true)
  61. if not self.armAttItems then
  62. self.armAttItems = {}
  63. end
  64. local kmlCtrl = item.view.root
  65. self.armAttItems[index] = item
  66. return kmlCtrl
  67. end
  68. function this:AttItemInitFunc(realIndex, kmlcontrol)
  69. end
  70. function this:AttItemUpdateFunc(realIndex, kmlcontrol)
  71. local index = realIndex + 1
  72. local item = self.armAttItems[index]
  73. local info = self.attInfos[index]
  74. item:UpdateUI(info)
  75. end
  76. ---创建或者刷新界面数据时调用
  77. function this:Refresh()
  78. SL.HideMainPanel()
  79. self.selectTab = 1
  80. self.AnimTimer = nil
  81. self.reAnim = self.view.resultAnim
  82. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_GET_UNION_INFO)
  83. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_GET_UNION_ARMBAND_INFO)
  84. end
  85. ---注册UI事件和服务器消息
  86. function this:RegistEvents()
  87. GUI:AddOnClickEvent(self.view.costItem,self,self.costItemTipClick)
  88. GUI:AddOnClickEvent(self.view.costAdd,self,self.costAddTipClick)
  89. GUI:AddOnClickEvent(self.view.btnarmtip,self,self.BtnarmtipClick)
  90. GUI:AddOnClickEvent(self.view.CloseButton,self,self.CloseButtonClick)
  91. GUI:AddOnClickEvent(self.view.UpgradeBtn,self,self.UpgradeBtnClick)
  92. GUI:AddOnClickEvent(self.view.StrengthenBtn,self,self.StrengthenBtnClick)
  93. GUI:AddOnClickEvent(self.view.OperateBtn,self,self.OperateBtnClick)
  94. SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_GET_UNION_INFO, self.ResUnionInfo, self)
  95. SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_SEND_UNION_ARMBAND_INFO, self.ResUnionAembandInfo, self)
  96. SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_UNION_ARMBAND_LEVEL_UP, self.ResUnionAembandLevelup, self)
  97. SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_UNION_ARMBAND_STRONG, self.ResUnionAembandStrong, self)
  98. end
  99. function this:ResUnionInfo(id,data)
  100. if data and data.unionarmband then
  101. self.unionlevel = tonumber(data.unionlevel)
  102. GUI:Image_loadTexture(self.view.armbandicon, string.format("Texture/log%s.png",data.unionarmband), "")
  103. else
  104. self.unionlevel = 1
  105. end
  106. end
  107. function this:ResUnionAembandInfo(id,data)
  108. self.AembandInfo = data
  109. if self.selectTab == 1 then
  110. self:UpgradeBtnClick()
  111. self:SetStarDataList() --星级
  112. else
  113. self:StrengthenBtnClick()
  114. end
  115. self:SetArrDataList() --属性
  116. end
  117. function this:ResUnionAembandLevelup(id,data)
  118. if self.AembandInfo and data then
  119. self.AembandInfo.level = tonumber(data)
  120. self:UpgradeBtnClick() --默认显示升级UI
  121. end
  122. end
  123. function this:ResUnionAembandStrong(id,data)
  124. if self.AembandInfo and self.reAnim then
  125. if tonumber(data) > self.AembandInfo.strong then
  126. GUI:Image_loadTexture(self.reAnim,"strength_success" ,"Atlas/TS_Union.spriteatlas")
  127. else
  128. GUI:Image_loadTexture(self.reAnim,"strength_fail" ,"Atlas/TS_Union.spriteatlas")
  129. end
  130. GUI:SetActive(self.reAnim, true)
  131. if self.AnimTimer then
  132. SL:UnSchedule(self.AnimTimer)
  133. self.AnimTimer = nil
  134. end
  135. if self.AnimTimer == nil then
  136. self.AnimTimer = SL:ScheduleOnce(1, function()
  137. if self.reAnim then
  138. GUI:SetActive(self.reAnim, false)
  139. end
  140. self.AnimTimer = nil
  141. end)
  142. end
  143. self.AembandInfo.strong = tonumber(data)
  144. self:StrengthenBtnClick()
  145. end
  146. end
  147. ---道具/途径 提示
  148. function this:costItemTipClick(id,event)
  149. SL:OpenTips(nil,self.costId)
  150. end
  151. function this:costAddTipClick(id,event)
  152. SL:CommonItemGetPath(nil, self.costId, nil, nil, self)
  153. end
  154. function this:BtnarmtipClick(id,event)
  155. SL:CommonStrTipsMessage({title="战盟臂章",str="1、战盟臂章可给玩家增加一些属性上的加成。\n2、可消耗战盟贡献对臂章进行升级,等级上限与当前所在战盟等级相关。\n3、离开战盟将对臂章进行冻结,失去所加属性,当加入新战盟后根据战盟等级解冻臂章属性"})
  156. end
  157. function this:CloseButtonClick(id,event)
  158. GUI:UIPanel_Close("dev/outui/Union/Panel/KLArmbandUpgrade/KLArmbandUpgradePanel")
  159. GUI:UIPanel_Close("dev/ui/Union/Panel/KLUnionToggleList/KLUnionToggleListPanel")
  160. SL.ShowMainPanel()
  161. end
  162. ----获取属性列表
  163. function this:GetAttListData(curAtts,nextAtts,islast)
  164. local attInfos = {}
  165. for i, v in ipairs(curAtts) do
  166. if SL:HasConfig("cfg_att_info",v[1],"id") then
  167. local attdata = SL:FindConfigs("cfg_att_info","id",v[1])
  168. if attdata and attdata[1] then
  169. local data = {
  170. des = attdata[1].name,
  171. prenum = tostring(v[2]),
  172. }
  173. if not islast and nextAtts then
  174. data = {
  175. des = attdata[1].name,
  176. prenum = tostring(v[2]),
  177. nextnum = tostring(nextAtts[i][2]),
  178. }
  179. end
  180. table.insert(attInfos,data)
  181. end
  182. end
  183. end
  184. return attInfos
  185. end
  186. --当前区间等级最大臂章name
  187. function this:GetArmbandsNameByUnionlevel(unionlevel)
  188. local TblData = SL:GetConfigTable("cfg_gard_armbands")
  189. local taskdata = {}
  190. for i, v in ipairs(TblData) do
  191. if v.GuildRank and v.GuildRank[1] then
  192. local Lv = v.GuildRank[1]
  193. if Lv <= unionlevel then
  194. table.insert(taskdata,{unLv = Lv,armLv = v.GuildRank[2] })
  195. end
  196. end
  197. end
  198. table.sort(taskdata, function(a, b)
  199. return a.unLv > b.unLv
  200. end)
  201. local data = taskdata[1]
  202. if data then
  203. self.maxlevel = data.armLv
  204. local tbldata = SL:FindConfigs('cfg_gard_armbands', 'Level', data.armLv)
  205. return tbldata[1].armbandsName
  206. end
  207. return nil
  208. end
  209. ---显示升级UI
  210. function this:UpgradeBtnClick(id,event)
  211. if SL:HasConfig("cfg_gard_armbands",self.AembandInfo.level,"Level") then
  212. self.armbandTbl = SL:FindConfigs('cfg_gard_armbands', 'Level', self.AembandInfo.level)
  213. end
  214. self.selectTab = 1
  215. self.iscanUp = false
  216. self.maxlevel = self.armbandTbl[1].GuildRank[2]
  217. GUI:Image_loadTexture(self.view.UpgradeBtn,"btn_upgrade_select" ,"Atlas/TS_Union.spriteatlas")
  218. GUI:Image_loadTexture(self.view.StrengthenBtn,"btn_strength" ,"Atlas/TS_Union.spriteatlas")
  219. GUI:Text_setString(self.view.arr_title, "臂章属性")
  220. GUI:Button_setTitleText(self.view.OperateBtn,"升级")
  221. if self.armbandTbl then
  222. local curAtts = self.armbandTbl[1].levelupAttribute
  223. ---基础信息
  224. local armbandsName = self:GetArmbandsNameByUnionlevel(self.unionlevel)
  225. if armbandsName then
  226. local str = "当前<color=#1add1f>战盟等级"..self.unionlevel.."</color>"..",臂章上限<color=#ff2323>"..armbandsName.."</color>"
  227. GUI:Text_setString(self.view.armbandtip, str)
  228. else
  229. GUI:Text_setString(self.view.armbandtip, "")
  230. end
  231. GUI:Text_setString(self.view.armbandname, self.armbandTbl[1].armbandsName)
  232. ---属性
  233. self.nextdata = nil
  234. if SL:HasConfig("cfg_gard_armbands",self.armbandTbl[1].Level+1,"Level") then
  235. self.nextdata = SL:FindConfigs("cfg_gard_armbands",'Level',self.armbandTbl[1].Level+1)
  236. local nextAtts = self.nextdata[1].levelupAttribute
  237. self.attInfos = self:GetAttListData(curAtts,nextAtts,false)
  238. else
  239. self.attInfos = self:GetAttListData(curAtts,nil,true)
  240. end
  241. ---消耗
  242. if self.nextdata then
  243. self.costId = self.nextdata[1].levelupCost[1]
  244. local needCount = self.nextdata[1].levelupCost[2]
  245. local itemdata = SL:FindConfigs('cfg_item', 'id', self.costId)
  246. local ownCount = SL:GetMetaValue(EMetaVarGetKey.MONEY, MUEResourceType.UnionGx)
  247. --local ownCount = SL:GetBagItemCount(self.costId)
  248. local str = "<color=#ff2323>"..ownCount.."/"..needCount.."</color>"
  249. if ownCount >= needCount then
  250. self.iscanUp = true
  251. str = "<color=#1add1f>"..ownCount.."/"..needCount.."</color>"
  252. end
  253. GUI:Text_setString(self.view.costName, itemdata[1].name)
  254. GUI:Item_setItemId(self.view.costItem, self.costId)
  255. GUI:Text_setString(self.view.costNum, str)
  256. end
  257. end
  258. ---显示
  259. GUI:SetActive(self.view.armbandtip, true)
  260. GUI:SetActive(self.view.resultAnim, false)
  261. GUI:SetActive(self.view.resultLv, false)
  262. GUI:SetActive(self.view.resultAnimText, false)
  263. GUI:SetActive(self.view.KmlEquipReborn, false)
  264. GUI:SetActive(self.view.layout_armbandstar, true)
  265. GUI:SetActive(self.view.btntip, false)
  266. ---是否已满级
  267. GUI:SetActive(self.view.costBg, not (self.nextdata==nil))
  268. GUI:SetActive(self.view.OperateBtn, not (self.nextdata==nil))
  269. GUI:SetActive(self.view.fulllevel, self.nextdata==nil)
  270. ---属性,星级刷新
  271. GUI:DataListUpdateData(self.view.arrData_list)
  272. GUI:DataListUpdateData(self.view.datalist_armbandstar)
  273. end
  274. ---显示强化UI
  275. function this:StrengthenBtnClick(id,event)
  276. local playerLevel = SL:GetMetaValue(EMetaVarGetKey.LEVEL)
  277. if SL:HasConfig("cfg_gard_bandsStrength",self.AembandInfo.strong,"level") then
  278. self.armStrengthTbl = SL:FindConfigs('cfg_gard_bandsStrength', 'level', self.AembandInfo.strong)
  279. end
  280. self.selectTab = 2
  281. self.iscanStrengthen = false
  282. self.iscanStrengLv = true
  283. GUI:Image_loadTexture(self.view.UpgradeBtn,"btn_upgrade" ,"Atlas/TS_Union.spriteatlas")
  284. GUI:Image_loadTexture(self.view.StrengthenBtn,"btn_strength_select" ,"Atlas/TS_Union.spriteatlas")
  285. GUI:Text_setString(self.view.arr_title, "强化属性")
  286. GUI:Button_setTitleText(self.view.OperateBtn,"强化")
  287. if self.armStrengthTbl then
  288. ---失败退到
  289. local curAtts = self.armStrengthTbl[1].strengthenAttribute
  290. --local levelFailure1 = self.armStrengthTbl[1].levelFailure1
  291. --local StrengthLevel = self.armStrengthTbl[1].level
  292. --if levelFailure1 and levelFailure1 > 0 and levelFailure1 < StrengthLevel then
  293. -- GUI:SetActive(self.view.btntip, true)
  294. -- GUI:Text_setString(self.view.btntip, "失败退到"..levelFailure1.."级")
  295. --else
  296. -- ---空或大于等于当前等级=不退回 停留在当前等级
  297. -- GUI:SetActive(self.view.btntip, false)
  298. --end
  299. ---成功率
  300. local Probalv = self.armStrengthTbl[1].strengthenProbability / 10000
  301. local successLv = math.ceil(Probalv *100) .."%"
  302. GUI:Text_setString(self.view.resultAnimText, successLv)
  303. ---属性
  304. self.nextStrengthdata = nil
  305. if SL:HasConfig("cfg_gard_bandsStrength",self.armStrengthTbl[1].level+1,"level") then
  306. self.nextStrengthdata = SL:FindConfigs("cfg_gard_bandsStrength",'level',self.armStrengthTbl[1].level+1)
  307. local nextAtts = self.nextStrengthdata[1].strengthenAttribute
  308. self.attInfos = self:GetAttListData(curAtts,nextAtts,false)
  309. ---成功率
  310. local Probalv = self.nextStrengthdata[1].strengthenProbability / 10000
  311. local successLv = math.ceil(Probalv *100) .."%"
  312. GUI:Text_setString(self.view.resultAnimText, successLv)
  313. else
  314. self.attInfos = self:GetAttListData(curAtts,nil,true)
  315. end
  316. ---消耗
  317. if self.nextStrengthdata then
  318. local levelLimit = self.nextStrengthdata[1].playerLevelLimit
  319. self.costId = self.nextStrengthdata[1].strengthCost[1]
  320. local needCount = self.nextStrengthdata[1].strengthCost[2]
  321. --local ownCount = SL:GetMetaValue(EMetaVarGetKey.MONEY, MUEResourceType.UnionGx)
  322. local ownCount = SL:GetBagItemCount(self.costId)
  323. local itemdata = SL:FindConfigs('cfg_item', 'id', self.costId)
  324. local str = "<color=#ff2323>"..ownCount.."/"..needCount.."</color>"
  325. if ownCount >= needCount then
  326. self.iscanStrengthen = true
  327. str = "<color=#1add1f>"..ownCount.."/"..needCount.."</color>"
  328. end
  329. if levelLimit and levelLimit > playerLevel then
  330. self.iscanStrengLv = false
  331. GUI:Text_setString(self.view.btntip, "角色达到"..levelLimit.."级可强化")
  332. else
  333. GUI:Text_setString(self.view.btntip, "")
  334. end
  335. GUI:Text_setString(self.view.costName, itemdata[1].name) --臂章宝石
  336. GUI:Text_setString(self.view.costNum, str)
  337. GUI:Item_setItemId(self.view.costItem, self.costId)
  338. GUI:setPosition(self.view.strengthIntro,-120,10)
  339. GUI:setPosition(self.view.preLevel,-10,-10)
  340. GUI:Text_setString(self.view.preLevel, "+"..self.armStrengthTbl[1].level)
  341. GUI:Text_setString(self.view.nextLevel, "+"..self.armStrengthTbl[1].level+1)
  342. else
  343. GUI:setPosition(self.view.strengthIntro,-60,10)
  344. GUI:setPosition(self.view.preLevel,40,-10)
  345. GUI:Text_setString(self.view.btntip, "")
  346. GUI:Text_setString(self.view.preLevel, "+"..self.armStrengthTbl[1].level)
  347. GUI:Text_setString(self.view.nextLevel, "")
  348. end
  349. end
  350. ---显示
  351. GUI:SetActive(self.view.KmlEquipReborn, true)
  352. GUI:SetActive(self.view.layout_armbandstar, false)
  353. GUI:SetActive(self.view.armbandtip, false)
  354. ---是否已满级
  355. GUI:SetActive(self.view.costBg, not (self.nextStrengthdata==nil))
  356. GUI:SetActive(self.view.OperateBtn, not (self.nextStrengthdata==nil))
  357. GUI:SetActive(self.view.fulllevel, self.nextStrengthdata==nil)
  358. GUI:SetActive(self.view.btntip, not (self.nextStrengthdata==nil))
  359. GUI:SetActive(self.view.resultLv, not (self.nextStrengthdata==nil))
  360. GUI:SetActive(self.view.resultAnimText, not (self.nextStrengthdata==nil))
  361. GUI:SetActive(self.view.arrow, not (self.nextStrengthdata==nil))
  362. ---属性刷新
  363. GUI:DataListUpdateData(self.view.arrData_list)
  364. end
  365. ---升级/强化 提交判断消息
  366. function this:OperateBtnClick(id,event)
  367. if self.selectTab ==1 then
  368. local isMaxlevel = self.armbandTbl and self.maxlevel and self.maxlevel > self.armbandTbl[1].Level
  369. local uplevel = self:GetArmbandsNameByUnionlevel(self.unionlevel) == nil
  370. if isMaxlevel or uplevel then
  371. if self.iscanUp then
  372. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_UNION_ARMBAND_LEVEL_UP)
  373. else
  374. SL:TipMessage( SL:GetConfig('cfg_string',282).text, 1, NoticeType.NoticeMid )--"道具不足!",
  375. end
  376. else
  377. SL:TipMessage( SL:GetConfig('cfg_string',283).text,1, NoticeType.NoticeMid )--"臂章已达到当前等级上限",
  378. end
  379. else
  380. if self.iscanStrengthen then
  381. if self.iscanStrengLv then
  382. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_UNION_ARMBAND_STRONG)
  383. else
  384. SL:TipMessage( SL:GetConfig('cfg_string',249).text,1, NoticeType.NoticeMid )--"等级不足!",
  385. end
  386. else
  387. SL:TipMessage( SL:GetConfig('cfg_string',282).text,1, NoticeType.NoticeMid )--"道具不足!",
  388. end
  389. end
  390. end
  391. function this:Close()
  392. GUI:UIPanel_Close("dev/outui/Union/Panel/KLArmbandUpgrade/KLArmbandUpgradePanel")
  393. end
  394. return this