KLOpenServerPanel.lua 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837
  1. ---@class KLOpenServerPanel:UIKmlLuaPanelBase
  2. ---@field view KLOpenServerPanelView
  3. local KLOpenServerPanel = class(UIKmlLuaPanelBase)
  4. local this = KLOpenServerPanel
  5. ---创建时调用一次
  6. function this:Init()
  7. self.Info = {}
  8. self.bossInfos = {}
  9. self.strengtInfos = {}
  10. self.rewardInfo = {}
  11. self.athleticsInfos = {}
  12. self.rewardbotInfo = {}
  13. self.equipDropInfos = {}
  14. self.personalRewardItem = {} --追加强化个人奖励
  15. self.athleticsRewardItem = {} --竞技排行个人奖励
  16. ---页签
  17. GUI:DataListInitData(self.view.datalist1, function()
  18. return self:DataListItemCountFunc()
  19. end, function(realIndex)
  20. return self:DataListItemGetFunc(realIndex)
  21. end, function(realIndex, kmlcontrol)
  22. return self:DataListItemInitFunc(realIndex, kmlcontrol)
  23. end, function(realIndex, kmlcontrol)
  24. return self:DataListItemUpdateFunc(realIndex, kmlcontrol)
  25. end)
  26. ---首杀
  27. GUI:DataListInitData(self.view.datalist34, function()
  28. return self:BossKillItemCountFunc()
  29. end, function(realIndex)
  30. return self:BossKillItemGetFunc(realIndex)
  31. end, function(realIndex, kmlcontrol)
  32. return self:BossKillItemInitFunc(realIndex, kmlcontrol)
  33. end, function(realIndex, kmlcontrol)
  34. return self:BossKillItemUpdateFunc(realIndex, kmlcontrol)
  35. end)
  36. ---追加强化
  37. GUI:DataListInitData(self.view.datalist83, function()
  38. return self:StrengtItemCountFunc()
  39. end, function(realIndex)
  40. return self:StrengtItemGetFunc(realIndex)
  41. end, function(realIndex, kmlcontrol)
  42. return self:StrengtItemInitFunc(realIndex, kmlcontrol)
  43. end, function(realIndex, kmlcontrol)
  44. return self:StrengtItemUpdateFunc(realIndex, kmlcontrol)
  45. end)
  46. ---追加强化个人奖励
  47. GUI:DataListInitData(self.view.datalist92, function()
  48. return table.count(self.rewardInfo)
  49. end, function(realIndex)
  50. return self:PersonalItemGetFunc(realIndex)
  51. end, function(realIndex, kmlcontrol)
  52. return self:PersonalItemInitFunc(realIndex, kmlcontrol)
  53. end, function(realIndex, kmlcontrol)
  54. return self:PersonalItemUpdateFunc(realIndex, kmlcontrol)
  55. end)
  56. ---竞技排行
  57. GUI:DataListInitData(self.view.datalistMid, function()
  58. return self:AthleticsItemCountFunc()
  59. end, function(realIndex)
  60. return self:AthleticsItemGetFunc(realIndex)
  61. end, function(realIndex, kmlcontrol)
  62. return self:AthleticsItemInitFunc(realIndex, kmlcontrol)
  63. end, function(realIndex, kmlcontrol)
  64. return self:AthleticsItemUpdateFunc(realIndex, kmlcontrol)
  65. end)
  66. ---竞技排行个人奖励
  67. GUI:DataListInitData(self.view.datalistbot, function()
  68. return table.count(self.rewardbotInfo)
  69. end, function(realIndex)
  70. return self:AthleticsPersonalItemGetFunc(realIndex)
  71. end, function(realIndex, kmlcontrol)
  72. return self:AthleticsPersonalItemInitFunc(realIndex, kmlcontrol)
  73. end, function(realIndex, kmlcontrol)
  74. return self:AthleticsPersonalItemUpdateFunc(realIndex, kmlcontrol)
  75. end)
  76. ---装备首曝
  77. GUI:DataListInitData(self.view.datalist54, function()
  78. return self:EquipDropItemCountFunc()
  79. end, function(realIndex)
  80. return self:EquipDropItemGetFunc(realIndex)
  81. end, function(realIndex, kmlcontrol)
  82. return self:EquipDropItemInitFunc(realIndex, kmlcontrol)
  83. end, function(realIndex, kmlcontrol)
  84. return self:EquipDropItemUpdateFunc(realIndex, kmlcontrol)
  85. end)
  86. end
  87. ---竞技排行个人奖励
  88. function this:AthleticsPersonalItemGetFunc(realIndex)
  89. local data = self.rewardbotInfo[realIndex + 1]
  90. local item = GUI:Item_Create(self.view.datalistbot,{
  91. width = "55",
  92. height = "55",
  93. itemid = data[1],
  94. mfixsize = "55,55",
  95. tips = "1",
  96. itemcustomcount = SL:GetSimpleNumber(data[2],0),
  97. })
  98. GUI:AddOnClickEvent(item,self,function()
  99. SL:OpenTips(nil, data[1])
  100. end)
  101. self.athleticsRewardItem[item.kmlControl] = item
  102. return item
  103. end
  104. function this:AthleticsPersonalItemInitFunc(realIndex, kmlcontrol)
  105. end
  106. function this:AthleticsPersonalItemUpdateFunc(realIndex, kmlcontrol)
  107. local data = self.rewardbotInfo[realIndex + 1]
  108. local item = self.athleticsRewardItem[kmlcontrol]
  109. local count = "<color=#fbd994>"..SL:GetSimpleNumber(tonumber(data[2]),0).."</color>"
  110. GUI:Item_UpdataData(item, {
  111. itemid = data[1],
  112. itemcustomcount = count,
  113. })
  114. GUI:AddOnClickEvent(item, self, function()
  115. SL:OpenTips(nil, data[1])
  116. end)
  117. end
  118. ---追加强化个人奖励
  119. function this:PersonalItemGetFunc(realIndex)
  120. local data = self.rewardInfo[realIndex + 1]
  121. local item = GUI:Item_Create(self.view.datalist92,{
  122. width = "55",
  123. height = "55",
  124. itemid = data[1],
  125. mfixsize = "55,55",
  126. tips = "1",
  127. itemcustomcount = SL:GetSimpleNumber(data[2],0),
  128. })
  129. GUI:AddOnClickEvent(item,self,function()
  130. SL:OpenTips(nil, data[1])
  131. end)
  132. self.personalRewardItem[item.kmlControl] = item
  133. return item
  134. end
  135. function this:PersonalItemInitFunc(realIndex, kmlcontrol)
  136. end
  137. function this:PersonalItemUpdateFunc(realIndex, kmlcontrol)
  138. local data = self.rewardInfo[realIndex + 1]
  139. local item = self.personalRewardItem[kmlcontrol]
  140. local count = "<color=#fbd994>"..SL:GetSimpleNumber(tonumber(data[2]),0).."</color>"
  141. GUI:Item_UpdataData(item, {
  142. itemid = data[1],
  143. itemcustomcount = count,
  144. })
  145. GUI:AddOnClickEvent(item, self, function()
  146. SL:OpenTips(nil, data[1])
  147. end)
  148. end
  149. ---左侧页签添加
  150. function this:DataListItemCountFunc()
  151. return table.count(self.Info)
  152. end
  153. function this:DataListItemGetFunc(realIndex)
  154. end
  155. function this:DataListItemInitFunc(realIndex, kmlcontrol)
  156. end
  157. function this:DataListItemUpdateFunc(realIndex, kmlcontrol)
  158. local idx = realIndex + 1
  159. local data = self.Info[idx]
  160. local btn = self.view.datalist1:GetChildControl(realIndex, 'toggle')
  161. local red = self.view.datalist1:GetChildControl(realIndex, "red")
  162. local text3 = self.view.datalist1:GetChildControl(realIndex, "text3")
  163. GUI:SetActive(red, false)
  164. self.btn[realIndex] = btn
  165. GUI:AddOnClickEvent(self.btn[realIndex], self, function()
  166. self:LoadPanel(realIndex, data.id)
  167. end)
  168. GUI:Text_setString(text3, data.name)
  169. end
  170. ---判断活动开启条件
  171. function this:CheckIsTabOpenData()
  172. local Info2 = {}
  173. --local cfg = SL:GetConfig("cfg_system_switch",216)
  174. local newareaTab = SL:GetConfigTable("cfg_newarea_ranking")
  175. for i, v in pairs(newareaTab) do
  176. local isLv = SL:CheckCalculateConditionGroup(v.condition)
  177. if isLv then
  178. local condition = "checkRunDay>" .. v.startTime[1] .. "&checkRunDay<" .. v.endTime[1]
  179. local lefttime = InfoManager.openServerInfo:GetLeftTimeByRankingId(v.id)
  180. --local isTime = SL:CheckCalculateConditionGroup(condition)
  181. if lefttime > 0 then
  182. table.insert(Info2, v)
  183. end
  184. end
  185. end
  186. return Info2
  187. end
  188. ---创建或者刷新界面数据时调用
  189. function this:Refresh()
  190. ---左侧页签
  191. self.btn = {}
  192. self.Info = self:CheckIsTabOpenData() --SL:GetConfigTable("cfg_newarea_ranking")
  193. if table.count(self.Info) > 0 then
  194. SL.HideMainPanel()
  195. table.sort(self.Info, function(a, b)
  196. return a.sort < b.sort
  197. end)
  198. GUI:DataListUpdateData(self.view.datalist1)
  199. ---默认第一页签
  200. self:LoadPanel(0, self.Info[1].id)
  201. end
  202. end
  203. function this:HideTabPanel()
  204. GUI:SetActive(self.view.BossKillPanel, false)
  205. GUI:SetActive(self.view.StrengthenPanel, false)
  206. GUI:SetActive(self.view.EquipDropPanel, false)
  207. GUI:SetActive(self.view.AthleticsPanel, false)
  208. end
  209. ---切换页签UI
  210. function this:LoadPanel(index, id)
  211. if self.selectid and self.selectid == index + 1 then
  212. return
  213. end
  214. self:HideTabPanel()
  215. self.selectid = index + 1
  216. for i, v in pairs(self.btn) do
  217. if i == index then
  218. GUI:Button_loadTextureNormal(v, "one_button_select_bg", "Atlas/UITradePanel.spriteatlas")
  219. else
  220. GUI:Button_loadTextureNormal(v, "one_button_bg", "Atlas/UITradePanel.spriteatlas")
  221. end
  222. end
  223. self:SelectTabPanel(id)
  224. end
  225. function this:SelectTabPanel(id)
  226. self.ranking_id = id
  227. if id == EOpenServerType.BossKill or id == EOpenServerType.GoldBossKill then
  228. self:SetBossKillPanelData(id)
  229. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_OPEN_SERVER_FIRST_KILL_INFO)
  230. if id == EOpenServerType.BossKill then
  231. GUI:Button_loadTextureNormal(self.view.img8, "bg_boss_kill", "Atlas/KmlXWServerLaunchActivitiesUI.spriteatlas")
  232. else
  233. GUI:Button_loadTextureNormal(self.view.img8, "bg_huangjin_boss", "Atlas/KmlXWServerLaunchActivitiesUI.spriteatlas")
  234. end
  235. GUI:SetActive(self.view.BossKillPanel, true)
  236. elseif id == EOpenServerType.StrengtPlacard or id == EOpenServerType.SupplementPlacard then
  237. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_OPEN_SERVER_ACT_TYPE_RANK_INFO, id)
  238. if id == EOpenServerType.StrengtPlacard then
  239. GUI:Button_loadTextureNormal(self.view.img5, "bg_strengthen", "Atlas/KmlXWServerLaunchActivitiesUI.spriteatlas")
  240. else
  241. GUI:Button_loadTextureNormal(self.view.img5, "bg_zhuijia", "Atlas/KmlXWServerLaunchActivitiesUI.spriteatlas")
  242. end
  243. self:SetStrengtPanelData(id)
  244. GUI:SetActive(self.view.StrengthenPanel, true)
  245. elseif id == EOpenServerType.LevelAthletics or id == EOpenServerType.ExcellenceAthletics or id == EOpenServerType.JewelryAthletics then
  246. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_OPEN_SERVER_ACT_TYPE_RANK_INFO, id)
  247. if id == EOpenServerType.LevelAthletics then
  248. GUI:Button_loadTextureNormal(self.view.imgtip, "bg_level_athletics", "Atlas/TS_OpenServerPanel.spriteatlas")
  249. elseif id == EOpenServerType.ExcellenceAthletics then
  250. GUI:Button_loadTextureNormal(self.view.imgtip, "bg_excellence_athletics", "Atlas/TS_OpenServerPanel.spriteatlas")
  251. else
  252. GUI:Button_loadTextureNormal(self.view.imgtip, "bg_jewelry_athletics", "Atlas/TS_OpenServerPanel.spriteatlas")
  253. end
  254. self:SetAthleticsPanelData(id)
  255. GUI:SetActive(self.view.AthleticsPanel, true)
  256. else
  257. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_OPEN_SERVER_ACT_TYPE_RANK_INFO, id)
  258. self:SetEquipDropPanelData(id)
  259. GUI:SetActive(self.view.EquipDropPanel, true)
  260. end
  261. local lefttime = InfoManager.openServerInfo:GetLeftTimeByRankingId(self.ranking_id)
  262. if lefttime > 0 then
  263. self.countdown = lefttime // 1000
  264. self:SetActivityTimeSchedule()
  265. end
  266. end
  267. ---活动结束时间倒计时
  268. function this:SetActivityTimeSchedule()
  269. self.sectimer = SL:Schedule(self.sectimer, 0, 1, self.countdown, function()
  270. self.countdown = self.countdown - 1
  271. if self.countdown > 0 then
  272. GUI:Text_setString(self.view.countdown1, GUIUtil.FormatTimeDHM(self.countdown))
  273. else
  274. GUI:Text_setString(self.view.countdown1, "00:00:00")
  275. local info = self:CheckIsTabOpenData()
  276. if table.count(info) > 0 then
  277. self:Refresh()
  278. else
  279. if self.sectimer then
  280. SL:UnSchedule(self.sectimer)
  281. self.sectimer = nil
  282. end
  283. SL:onLUAEvent(LUA_EVENT_HIDE_RIGHT_BTN_VIEW)
  284. self:CloseBtnClick()
  285. end
  286. end
  287. end)
  288. end
  289. ---注册UI事件和服务器消息
  290. function this:RegistEvents()
  291. GUI:AddOnClickEvent(self.view.CloseImg, self, self.CloseBtnClick)
  292. GUI:AddOnClickEvent(self.view.img2, self, self.SelectTabHelpPanel)
  293. ---帮助提示
  294. GUI:AddOnClickEvent(self.view.img15, self, self.SelectTabHelpPanel)
  295. GUI:AddOnClickEvent(self.view.img20, self, self.SelectTabHelpPanel)
  296. GUI:AddOnClickEvent(self.view.btntip, self, self.SelectTabHelpPanel)
  297. GUI:AddOnClickEvent(self.view.button22, self, self.MyAthleticsRankGetBtnClick)
  298. ---竞技排行
  299. GUI:AddOnClickEvent(self.view.button2, self, self.MyRankGetBtnClick)
  300. ---强化追加排行榜个人奖励领取
  301. SL:RegisterLuaNetMsg(LuaMessageIdToClient.OPEN_SERVER_ACT_TYPE_RANK_INFO, self.UpdateOPENRankInfo, self)
  302. ---排行信息
  303. SL:RegisterLuaNetMsg(LuaMessageIdToClient.OPEN_SERVER_ACT_REWARD_CHANGE, self.UpdateRankInfoCHANGE, self)
  304. ---排行
  305. SL:RegisterLuaNetMsg(LuaMessageIdToClient.OPEN_SERVER_ACT_RANK_CHANGE, self.UpdateRankInfoCHANGE, self)
  306. ---排行
  307. SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_OPEN_SERVER_FIRST_KILL_INFO, self.UpdateOpenDataSort, self)
  308. ---首杀信息
  309. SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_GLOBAL_FIRST_KILL_CHANGE, self.UpdateDataSort, self)
  310. ---全服首杀变化
  311. SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_PERSONAL_FIRST_KILL_CHANGE, self.UpdateDataSort, self)---个人首杀变化
  312. end
  313. ---首杀刷新排序
  314. function this:UpdateOpenDataSort(id, data)
  315. self:SetBossKillDataSort()
  316. GUI:DataListUpdateData(self.view.datalist34)
  317. end
  318. function this:UpdateDataSort(id, data)
  319. if data and table.count(data) > 0 then
  320. self:SetBossKillPanelData(tonumber(data.group))
  321. self:SetBossKillDataSort()
  322. GUI:DataListUpdateData(self.view.datalist34)
  323. end
  324. end
  325. ---排行榜总 刷新
  326. function this:UpdateOPENRankInfo(id, data)
  327. if data and data.rank_type then
  328. self:RefreshRankUI(data.rank_type)
  329. end
  330. end
  331. ---排行个人奖励/前三 领取刷新
  332. function this:UpdateRankInfoCHANGE(id, data)
  333. if data and data.rankType then
  334. self:RefreshRankUI(data.rankType)
  335. end
  336. end
  337. function this:RefreshRankUI(rankType)
  338. if rankType == EOpenServerType.StrengtPlacard or rankType == EOpenServerType.SupplementPlacard then
  339. self:SetStrengtPanelDataSort()
  340. GUI:DataListUpdateData(self.view.datalist83)
  341. self:SetStrengtPanelText(rankType) ---排名/文本des/个人奖励
  342. elseif rankType == EOpenServerType.LevelAthletics or rankType == EOpenServerType.ExcellenceAthletics or rankType == EOpenServerType.JewelryAthletics then
  343. self:SetAthleticsPanelText(rankType)
  344. ---重新获取数据
  345. self:SetAthleticsInfoData(rankType)
  346. GUI:DataListUpdateData(self.view.datalistMid)
  347. else
  348. self:SetEquipPanelDataSort()
  349. GUI:DataListUpdateData(self.view.datalist54)
  350. end
  351. end
  352. ---强化/追加
  353. function this:MyRankGetBtnClick(id, data)
  354. if self.personalrewardid then
  355. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_OPEN_SERVER_ACT_PERSONAL_REWARD, { goalValue = self.personalrewardid, rankType = self.ranking_id })
  356. end
  357. end
  358. ---等级/..竞技
  359. function this:MyAthleticsRankGetBtnClick(id, data)
  360. if self.athleticsrewardid then
  361. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_OPEN_SERVER_ACT_RANK_ALL_REWARD, { goalValue = self.athleticsrewardid, rankType = self.ranking_id })
  362. end
  363. end
  364. ---各页签帮助提示
  365. function this:SelectTabHelpPanel()
  366. if self.ranking_id == EOpenServerType.BossKill then
  367. SL:CommonStrTipsMessage({ title = "BOSS首杀", str = "1、开服第1天开启BOSS首杀活动,持续10天。\n2、活动期间,全服首次击杀指定BOSS的,其中伤害最高的玩家和致命一击的玩家可上榜,并获得巨额全服首杀奖励。\n3、活动期间,个人首次击杀指定BOSS也可以获得丰厚奖励。奖励领取次数有限,先到先得,不要错过!" })
  368. elseif self.ranking_id == EOpenServerType.GoldBossKill then
  369. SL:CommonStrTipsMessage({ title = "黄金怪首杀", str = "1、开服第1天开启黄金怪首杀活动,持续10天。\n2、活动期间,全服首次击杀指定黄金怪的,其中伤害最高的玩家和致命一击的玩家可上榜,并获得巨额全服首杀奖励。\n3、活动期间,个人首次击杀指定黄金怪也可以获得丰厚奖励。奖励领取次数有限,先到先得,不要错过!" })
  370. elseif self.ranking_id == EOpenServerType.StrengtPlacard then
  371. SL:CommonStrTipsMessage({ title = "强化冲榜", str = "1、开服第1天开启强化冲榜活动,持续10天。\n2、活动期间,全服前三位达到指定强化等级的玩家即可上榜,并获得巨额冲榜奖励。\n3、活动期间,个人首次到达指定强化等级,也可领取丰厚奖励。奖励领取次数有限,先到先得,不要错过!" })
  372. elseif self.ranking_id == EOpenServerType.SupplementPlacard then
  373. SL:CommonStrTipsMessage({ title = "追加冲榜", str = "1、开服第1天开启追加冲榜活动,持续10天。\n2、活动期间,全服前三位达到指定追加等级的玩家即可上榜,并获得巨额冲榜奖励。\n3、活动期间,个人首次到达指定追加等级,也可领取丰厚奖励。奖励领取次数有限,先到先得,不要错过!" })
  374. elseif self.ranking_id == EOpenServerType.EquipDropFirst then
  375. SL:CommonStrTipsMessage({ title = "装备首爆", str = "1、开服第1天开启装备首爆活动,持续10天。\n2、活动期间,玩家成功击杀BOSS首次拾取指定装备即可获得对应的丰厚奖励。\n3、全服指定装备首爆奖励领取次数有限,先到先得,不要错过!" })
  376. elseif self.ranking_id == EOpenServerType.LevelAthletics then
  377. SL:CommonStrTipsMessage({ title = "等级竞技", str = "1、开服第1天开启等级竞技活动,持续10天。\n2、活动期间,达成指定等级获得个人奖励,等级全服上榜时获得额外奖励。" })
  378. elseif self.ranking_id == EOpenServerType.ExcellenceAthletics then
  379. SL:CommonStrTipsMessage({ title = "卓越竞技", str = "1、开服第1天开启卓越竞技活动,持续10天。\n2、活动期间,达成指定等级获得个人奖励,等级全服上榜时获得额外奖励。" })
  380. else
  381. SL:CommonStrTipsMessage({ title = "首饰竞技", str = "1、开服第1天开启首饰竞技活动,持续10天。\n2、活动期间,达成指定等级获得个人奖励,等级全服上榜时获得额外奖励。" })
  382. end
  383. end
  384. ---关闭
  385. function this:CloseBtnClick()
  386. GUI:UIPanel_Close("dev/outui/ServerActivity/Panel/KLOpenServer/KLOpenServerPanel")
  387. SL.ShowMainPanel()
  388. end
  389. ------------------------------------------首杀界面数据---------------------------------------------------------
  390. function this:SetBossKillPanelData(ranking_id)
  391. self.bossInfos = {} --根据BOSS挑战组编号bossGroup读取怪物信息和奖励信息
  392. local cfg = SL:FindConfigs("cfg_newarea_ranking", "id", ranking_id)
  393. local boss_config_list = SL:FindConfigs("cfg_newarea_rankingboss", "group", cfg[1].bossGroup)
  394. for i, v in pairs(boss_config_list) do
  395. local bossdata = SL:FindConfigs("cfg_monster", "id", v.rankingBoss[1])
  396. local data_boss = {}
  397. data_boss.config_index = v.index
  398. data_boss.boss_group = v.group
  399. data_boss.cond_count = v.personalcondition
  400. data_boss.hurt_item = v.mostReward --伤害第一奖励道具
  401. data_boss.kill_item = v.lastReward --致命伤害奖励道具
  402. data_boss.personal_item = v.personalReward --个人奖励,可能配多个
  403. data_boss.boss_id = v.rankingBoss[1]
  404. if bossdata and bossdata[1] then
  405. data_boss.boss_name = bossdata[1].name
  406. data_boss.boss_type = SL:GetConfigMultiKeys('cfg_BOSS_challenge', v.rankingBoss[1], 'monsterid')
  407. end
  408. table.insert(self.bossInfos, data_boss)
  409. end
  410. end
  411. function this:SetBossKillDataSort()
  412. if table.count(self.bossInfos) > 0 then
  413. for i, v in pairs(self.bossInfos) do
  414. local state = InfoManager.openServerInfo:GetNomStateByBossInfo(v.boss_group, v.boss_id)
  415. local hurt_state, kill_state = InfoManager.openServerInfo:GetSerStateOrNameByBossInfo(v.boss_group, v.boss_id)
  416. local personal_count = InfoManager.openServerInfo:GetSerStateOrNameByBossInfo(v.boss_group, v.boss_id, 3)
  417. local left_count = v.cond_count - personal_count
  418. local isget = state == 1 or hurt_state == 1 or kill_state == 1
  419. if not isget and left_count <= 0 then
  420. v.config_index = v.config_index + 100000 ---不可领取
  421. elseif state == 2 and hurt_state == 2 and kill_state == 2 then
  422. v.config_index = v.config_index + 10000 ---全部已领取
  423. elseif state == 2 and hurt_state == 0 and kill_state == 0 then
  424. v.config_index = v.config_index + 1000 ---全部已领取2
  425. elseif state == 1 or hurt_state == 1 or kill_state == 1 then
  426. v.config_index = v.config_index - 1000 ---可领取
  427. --if hurt_state==1 or kill_state==1 then ---可领取
  428. -- v.config_index = v.config_index - 10000
  429. --end
  430. --if state==1 then
  431. -- v.config_index = v.config_index - 1000
  432. --end
  433. else
  434. v.config_index = v.config_index
  435. end
  436. end
  437. table.sort(self.bossInfos, function(a, b)
  438. return a.config_index < b.config_index
  439. end)
  440. end
  441. end
  442. function this:BossKillItemCountFunc()
  443. return table.count(self.bossInfos)
  444. end
  445. function this:BossKillItemGetFunc(realIndex)
  446. local item = GUI:UIPanel_Open("dev/outui/ServerActivity/Item/KLBossKill/KLBossKillItem", self.view.datalist34, self, nil, true)
  447. if not self.bosskillItems then
  448. self.bosskillItems = {}
  449. end
  450. local kmlCtrl = item.view.root
  451. self.bosskillItems[kmlCtrl] = item
  452. return kmlCtrl
  453. end
  454. function this:BossKillItemInitFunc(realIndex, kmlcontrol)
  455. end
  456. function this:BossKillItemUpdateFunc(realIndex, kmlcontrol)
  457. local item = self.bosskillItems[kmlcontrol]
  458. local luaIndex = realIndex + 1
  459. local info = self.bossInfos[luaIndex]
  460. item:UpdateUI(info)
  461. end
  462. -----------------------------------------强化冲榜面板数据----------------------------------------
  463. function this:SetStrengtPanelData(ranking_id)
  464. self.strengtInfos = {}
  465. local cfg = SL:FindConfigs("cfg_newarea_ranking", "id", ranking_id)
  466. local reward_config_list = SL:FindConfigs("cfg_newarea_rankingreward", "group", cfg[1].subtype)
  467. local taskTypedata = {}
  468. for i, v in pairs(reward_config_list) do
  469. if not taskTypedata[v.sort] then
  470. taskTypedata[v.sort] = {}
  471. table.insert(taskTypedata[v.sort], v)
  472. else
  473. table.insert(taskTypedata[v.sort], v)
  474. end
  475. end
  476. for k, v in pairs(taskTypedata) do
  477. local data = {}
  478. data.strengtLv = v[1].taskType --强化综合等级
  479. data.config_index = v[1].taskType
  480. data.first_item = v[1].taskReward[1] ---第一奖励道具
  481. data.second_item = v[2].taskReward[1] ---第二奖励道具
  482. data.third_item = v[3].taskReward[1] ---第三奖励道具
  483. table.insert(self.strengtInfos, data)
  484. end
  485. if table.count(self.strengtInfos) > 0 then
  486. table.sort(self.strengtInfos, function(a, b)
  487. return a.strengtLv < b.strengtLv
  488. end)
  489. end
  490. end
  491. ---都被领取完时(或者都是可领取状态),将该挡放到最底下
  492. function this:SetStrengtPanelDataSort()
  493. if self.strengtInfos and table.count(self.strengtInfos) > 0 then
  494. for k, v in pairs(self.strengtInfos) do
  495. local fist_state, second_state, third_state = InfoManager.openServerInfo:GetRankNameBytaskType(v.strengtLv, 2)
  496. if fist_state == 2 and second_state == 2 and third_state == 2 then
  497. v.config_index = v.strengtLv + 1000
  498. else
  499. v.config_index = v.strengtLv
  500. end
  501. end
  502. table.sort(self.strengtInfos, function(a, b)
  503. return a.config_index < b.config_index
  504. end)
  505. end
  506. end
  507. function this:SetStrengtPanelText(ranking_id)
  508. self.personalrewardid = nil
  509. local rankinfo = InfoManager.openServerInfo.rankInfo
  510. if rankinfo then
  511. local str = ""
  512. local des = "强化等级达到"
  513. local leftcount = 0 ---剩余数量
  514. local preLv = rankinfo.my_value ---当前强化/追加 等级
  515. local limiteLv, mystatus, ranksort, usecount = self:GetPersonalInfo(ranking_id)
  516. local allnum, data = InfoManager.openServerInfo:GetAllCountlimite(ranking_id, limiteLv) ---总次数
  517. local ismaxLv = self.maxlimiteLv == limiteLv and mystatus == 2
  518. if allnum - usecount > 0 then
  519. leftcount = allnum - usecount
  520. end
  521. if mystatus == 1 then
  522. leftcount = leftcount + 1
  523. end
  524. if data then
  525. self.personalrewardid = data.taskType[1] --v.index
  526. self.rewardInfo = data.taskReward
  527. GUI:DataListUpdateData(self.view.datalist92) ---个人奖励
  528. end
  529. if ranksort == 0 then
  530. GUI:Text_setString(self.view.text89, "未上榜")
  531. else
  532. GUI:Text_setString(self.view.text89, tostring(ranksort))
  533. end
  534. GUI:Text_setString(self.view.text66s, "剩余:" .. leftcount)
  535. GUI:Text_setString(self.view.text15, "强化综合等级")
  536. if ranking_id == EOpenServerType.SupplementPlacard then
  537. des = "追加等级达到"
  538. GUI:Text_setString(self.view.text15, "追加综合等级")
  539. end
  540. if preLv >= limiteLv then
  541. str = des .. "<color=#1add1f>" .. preLv .. "/" .. limiteLv .. "</color>" .. "级领取"
  542. else
  543. str = des .. "<color=#ff2323>" .. preLv .. "/" .. limiteLv .. "</color>" .. "级领取"
  544. end
  545. GUI:Text_setString(self.view.text103, str)
  546. GUI:SetActive(self.view.bgReciveImg, ismaxLv) --已领取
  547. if ismaxLv and self.rewardInfo and #self.rewardInfo > 0 then
  548. GUI:setPositionX(self.view.bgReciveImg, -260 + (#self.rewardInfo) * 20)
  549. end
  550. ---是否达到最高已领取,不显示该区域
  551. if ismaxLv then
  552. --GUI:Text_setString(self.view.text103, "")
  553. GUI:SetActive(self.view.button2, false)
  554. GUI:SetActive(self.view.light_btn2, false)
  555. else
  556. GUI:SetActive(self.view.button2, mystatus == 1 and preLv >= limiteLv)
  557. GUI:SetActive(self.view.light_btn2, mystatus == 1 and preLv >= limiteLv)
  558. end
  559. end
  560. end
  561. function this:StrengtItemCountFunc()
  562. return table.count(self.strengtInfos)
  563. end
  564. function this:StrengtItemGetFunc(realIndex)
  565. local item = GUI:UIPanel_Open("dev/outui/ServerActivity/Item/KLStrengthen/KLStrengthenItem", self.view.datalist83, self, nil, true)
  566. if not self.strengtItems then
  567. self.strengtItems = {}
  568. end
  569. local kmlCtrl = item.view.root
  570. self.strengtItems[kmlCtrl] = item
  571. return kmlCtrl
  572. end
  573. function this:StrengtItemInitFunc(realIndex, kmlcontrol)
  574. end
  575. function this:StrengtItemUpdateFunc(realIndex, kmlcontrol)
  576. local item = self.strengtItems[kmlcontrol]
  577. local luaIndex = realIndex + 1
  578. local info = self.strengtInfos[luaIndex]
  579. item:UpdateUI(info, self.ranking_id)
  580. end
  581. ------------------------------------------装备首爆面板数据-----------------------------------
  582. function this:SetEquipDropPanelData(ranking_id)
  583. self.equipDropInfos = {}
  584. local cfg = SL:FindConfigs("cfg_newarea_ranking", "id", ranking_id)
  585. local boss_config_list = SL:FindConfigs("cfg_newarea_rankingreward", "group", cfg[1].subtype)
  586. local personal_config_list = SL:FindConfigs("cfg_newarea_personalreward", "group", cfg[1].subtype)
  587. for i, v in pairs(boss_config_list) do
  588. local data = {}
  589. data.config_sort = v.sort
  590. data.equip_item_id = v.taskType --装备id
  591. data.reward_item = v.taskReward --首曝奖励道具
  592. if personal_config_list[i] then
  593. data.personalreward_type = personal_config_list[i].taskType
  594. data.personalreward_item = personal_config_list[i].taskReward --个人奖励道具
  595. end
  596. table.insert(self.equipDropInfos, data)
  597. end
  598. if table.count(self.equipDropInfos) > 0 then
  599. table.sort(self.equipDropInfos, function(a, b)
  600. return a.config_sort < b.config_sort
  601. end)
  602. end
  603. end
  604. ---刷新次数
  605. function this:SetEquipPanelDataSort()
  606. if self.equipDropInfos and table.count(self.equipDropInfos) > 0 then
  607. for k, v in pairs(self.equipDropInfos) do
  608. local state, usecount, rank = InfoManager.openServerInfo:GetRankAndNumByType(v.personalreward_type[1], v.personalreward_type[2])
  609. local name, serstate = InfoManager.openServerInfo:GetRankNameBySort(v.equip_item_id, 1)
  610. if state == 2 and serstate == 2 then
  611. v.config_sort = v.config_sort + 1000
  612. else
  613. v.config_sort = v.config_sort
  614. end
  615. end
  616. table.sort(self.equipDropInfos, function(a, b)
  617. return a.config_sort < b.config_sort
  618. end)
  619. end
  620. end
  621. function this:EquipDropItemCountFunc()
  622. return table.count(self.equipDropInfos)
  623. end
  624. function this:EquipDropItemGetFunc(realIndex)
  625. local item = GUI:UIPanel_Open("dev/outui/ServerActivity/Item/KLEquipDrop/KLEquipDropItem", self.view.datalist54, self, nil, true)
  626. if not self.equipDropItems then
  627. self.equipDropItems = {}
  628. end
  629. local kmlCtrl = item.view.root
  630. self.equipDropItems[kmlCtrl] = item
  631. return kmlCtrl
  632. end
  633. function this:EquipDropItemInitFunc(realIndex, kmlcontrol)
  634. end
  635. function this:EquipDropItemUpdateFunc(realIndex, kmlcontrol)
  636. local item = self.equipDropItems[kmlcontrol]
  637. for i, v in pairs(self.equipDropItems) do
  638. v:SetPosEquipItem()
  639. end
  640. local luaIndex = realIndex + 1
  641. local info = self.equipDropInfos[luaIndex]
  642. item:UpdateUI(info, self.ranking_id)
  643. end
  644. ---------------------------------------竞技面板数据-------------------------------
  645. function this:SetAthleticsPanelData(ranking_id)
  646. local cfg = SL:FindConfigs("cfg_newarea_ranking", "id", ranking_id)
  647. local config_list = SL:FindConfigs("cfg_newarea_rankingreward", "group", cfg[1].subtype)
  648. self.data_list = {}
  649. self.data_type = {}
  650. if table.count(config_list) > 0 then
  651. for k, v in pairs(config_list) do
  652. if not self.data_list[v.taskType] then
  653. self.data_list[v.taskType] = {}
  654. table.insert(self.data_list[v.taskType], v)
  655. table.insert(self.data_type, { taskType = v.taskType })
  656. else
  657. table.insert(self.data_list[v.taskType], v)
  658. end
  659. end
  660. end
  661. if table.count(self.data_type) > 0 then
  662. table.sort(self.data_type, function(a, b)
  663. return a.taskType < b.taskType
  664. end)
  665. end
  666. end
  667. function this:SetAthleticsInfoData(ranking_id)
  668. local limiteLv, mystatus, ranksort, usecount = self:GetPersonalInfo(ranking_id)
  669. self.athleticsInfos = {}
  670. local rankdata = {}
  671. if self.data_list and table.count(self.data_list) > 0 then
  672. for i, v in pairs(self.data_list) do
  673. if i == limiteLv then
  674. table.insert(rankdata, v)
  675. end
  676. end
  677. end
  678. if rankdata and table.count(rankdata) > 0 then
  679. self.athleticsInfos = rankdata[1]
  680. end
  681. --if self.data_list and self.data_type then
  682. -- local retdata = InfoManager.openServerInfo:GetAthleticsUnGetMinSortData(self.data_list,self.data_type,self.data_type[1].taskType)
  683. -- if retdata and table.count(retdata) > 0 then
  684. -- for k, v in pairs(retdata) do
  685. -- local taskdata = self.data_list[v.tasktype]
  686. -- local sortdata = taskdata[v.sort]
  687. -- table.insert(self.athleticsInfos,sortdata)
  688. -- end
  689. -- end
  690. -- if table.count( self.athleticsInfos) > 0 then
  691. -- table.sort(self.athleticsInfos, function(a, b)
  692. -- return a.sort < b.sort
  693. -- end)
  694. -- end
  695. --end
  696. end
  697. function this:GetPersonalInfo(ranking_id)
  698. local cfg = SL:FindConfigs("cfg_newarea_ranking", "id", ranking_id)
  699. local personal_list = SL:FindConfigs("cfg_newarea_personalreward", "group", cfg[1].subtype)
  700. if table.count(personal_list) > 0 then
  701. table.sort(personal_list, function(a, b)
  702. return a.sort < b.sort
  703. end)
  704. end
  705. self.mixlimiteLv = personal_list[1].taskType[1]
  706. self.maxlimiteLv = personal_list[#personal_list].taskType[1]
  707. local limiteLv, mystatus, ranksort, usecount = InfoManager.openServerInfo:GetUnGetMinlimiteLv(self.maxlimiteLv, self.mixlimiteLv, personal_list)
  708. return limiteLv, mystatus, ranksort, usecount
  709. end
  710. -----个人奖励,排行和描述---------
  711. function this:SetAthleticsPanelText(ranking_id)
  712. self.athleticsrewardid = nil
  713. local rankinfo = InfoManager.openServerInfo.rankInfo
  714. if rankinfo then
  715. local str = ""
  716. local leftcount = 0 ---剩余数量
  717. local preLv = rankinfo.my_value ---当前竞技等级
  718. local limiteLv, mystatus, ranksort, usecount = self:GetPersonalInfo(ranking_id)
  719. local allnum, data = InfoManager.openServerInfo:GetAllCountlimite(ranking_id, limiteLv) ---总次数
  720. local ismaxLv = self.maxlimiteLv == limiteLv and mystatus == 2
  721. if allnum - usecount > 0 then
  722. leftcount = allnum - usecount
  723. end
  724. if mystatus == 1 then
  725. leftcount = leftcount + 1
  726. end
  727. if data then
  728. self.athleticsrewardid = data.taskType[1]
  729. self.rewardbotInfo = data.taskReward
  730. GUI:DataListUpdateData(self.view.datalistbot) ---个人奖励
  731. end
  732. if ranksort == 0 then
  733. GUI:Text_setString(self.view.textrank, "未上榜")
  734. else
  735. GUI:Text_setString(self.view.textrank, tostring(ranksort)) ---排名
  736. end
  737. GUI:Text_setString(self.view.text77s, "剩余:" .. leftcount)
  738. local des = "等级达到"
  739. local desDw = "级"
  740. if ranking_id == EOpenServerType.ExcellenceAthletics then
  741. des = "卓越词条达到"
  742. desDw = "个"
  743. elseif ranking_id == EOpenServerType.JewelryAthletics then
  744. des = "首饰等级达到"
  745. end
  746. if preLv >= limiteLv then
  747. str = des .. "<color=#1add1f>" .. preLv .. "/" .. limiteLv .. "</color>" .. desDw .."领取"
  748. else
  749. str = des .. "<color=#ff2323>" .. preLv .. "/" .. limiteLv .. "</color>" .. desDw .."领取"
  750. end
  751. GUI:Text_setString(self.view.textrankLv, str)
  752. GUI:SetActive(self.view.botReciveImg, ismaxLv) --已领取
  753. if ismaxLv and self.rewardbotInfo and #self.rewardbotInfo > 0 then
  754. GUI:setPositionX(self.view.botReciveImg, -260 + (#self.rewardbotInfo) * 20)
  755. end
  756. if ismaxLv then
  757. --GUI:Text_setString(self.view.textrankLv, "")
  758. GUI:SetActive(self.view.button22, false)
  759. GUI:SetActive(self.view.light_btn22, false)
  760. else
  761. GUI:SetActive(self.view.button22, mystatus == 1 and preLv >= limiteLv) ---是否可领取
  762. GUI:SetActive(self.view.light_btn22, mystatus == 1 and preLv >= limiteLv)
  763. end
  764. end
  765. end
  766. function this:AthleticsItemCountFunc()
  767. return table.count(self.athleticsInfos)
  768. end
  769. function this:AthleticsItemGetFunc(realIndex)
  770. local item = GUI:UIPanel_Open("dev/outui/ServerActivity/Item/KLAthletics/KLAthleticsItem", self.view.datalistMid, self, nil, true)
  771. if not self.athleticsItems then
  772. self.athleticsItems = {}
  773. end
  774. local kmlCtrl = item.view.root
  775. self.athleticsItems[kmlCtrl] = item
  776. return kmlCtrl
  777. end
  778. function this:AthleticsItemInitFunc(realIndex, kmlcontrol)
  779. end
  780. function this:AthleticsItemUpdateFunc(realIndex, kmlcontrol)
  781. local item = self.athleticsItems[kmlcontrol]
  782. local luaIndex = realIndex + 1
  783. local info = self.athleticsInfos[luaIndex]
  784. item:UpdateUI(info, self.ranking_id)
  785. end
  786. function this:Close()
  787. if self.sectimer then
  788. SL:UnSchedule(self.sectimer)
  789. self.sectimer = nil
  790. end
  791. end
  792. return this