KLChallengeBossPanel.lua 55 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413
  1. ---@class KLChallengeBossPanel:UIKmlLuaPanelBase
  2. ---@field view KLChallengeBossPanelView
  3. local KLChallengeBossPanel = class(UIKmlLuaPanelBase)
  4. local this = KLChallengeBossPanel
  5. ---创建时调用一次
  6. function this:Init()
  7. SL.HideMainPanel()
  8. GUI:UIPanel_Close("dev/outui/ChallengeBoss/Panel/KLPrivilegeBossOpen/KLPrivilegeBossOpenPanel")
  9. GUI:DataListInitData(self.view.gold_boss_level, function()
  10. return self:GoldBossBtnDataListItemCountFunc()
  11. end, function(realIndex)
  12. return self:GoldBossBtnDataListItemGetFunc(realIndex)
  13. end, function(realIndex, kmlcontrol)
  14. return self:GoldBossBtnDataListItemInitFunc(realIndex, kmlcontrol)
  15. end, function(realIndex, kmlcontrol)
  16. return self:GoldBossBtnDataListItemUpdateFunc(realIndex, kmlcontrol)
  17. end)
  18. self.glod_boss_level_btn_all_item = {}
  19. GUI:DataListInitData(self.view.gold_boss_data_list, function()
  20. return self:GoldBossDataListItemCountFunc()
  21. end, function(realIndex)
  22. return self:GoldBossDataListItemGetFunc(realIndex)
  23. end, function(realIndex, kmlcontrol)
  24. return self:GoldBossDataListItemInitFunc(realIndex, kmlcontrol)
  25. end, function(realIndex, kmlcontrol)
  26. return self:GoldBossDataListItemUpdateFunc(realIndex, kmlcontrol)
  27. end)
  28. self.glod_boss_level_all_item = {}
  29. GUI:DataListInitData(self.view.gold_boss_reward, function()
  30. return self:GoldRewardDataListItemCountFunc()
  31. end, function(realIndex)
  32. return self:GoldRewardDataListItemGetFunc(realIndex)
  33. end, function(realIndex, kmlcontrol)
  34. return self:GoldRewardDataListItemInitFunc(realIndex, kmlcontrol)
  35. end, function(realIndex, kmlcontrol)
  36. return self:GoldRewardDataListItemUpdateFunc(realIndex, kmlcontrol)
  37. end)
  38. self.outdoor_reward_level_all_item = {}
  39. GUI:DataListInitData(self.view.outdoor_boss_level_data_list, function()
  40. return self:OutdoorBossBtnDataListItemCountFunc()
  41. end, function(realIndex)
  42. return self:OutdoorBossBtnDataListItemGetFunc(realIndex)
  43. end, function(realIndex, kmlcontrol)
  44. return self:OutdoorBossBtnDataListItemInitFunc(realIndex, kmlcontrol)
  45. end, function(realIndex, kmlcontrol)
  46. return self:OutdoorBossBtnDataListItemUpdateFunc(realIndex, kmlcontrol)
  47. end)
  48. self.outdoor_boss_level_btn_all_item = {}
  49. GUI:DataListInitData(self.view.outdoor_boss_line_data_list, function()
  50. return self:OutdoorBossLineDataListItemCountFunc()
  51. end, function(realIndex)
  52. return self:OutdoorBossLineDataListItemGetFunc(realIndex)
  53. end, function(realIndex, kmlcontrol)
  54. return self:OutdoorBossLineDataListItemInitFunc(realIndex, kmlcontrol)
  55. end, function(realIndex, kmlcontrol)
  56. return self:OutdoorBossLineDataListItemUpdateFunc(realIndex, kmlcontrol)
  57. end)
  58. self.outdoor_boss_line_data_list_all_item = {}
  59. GUI:DataListInitData(self.view.outdoor_boss_reward_data_list, function()
  60. return self:OutdoorRewardDataListItemCountFunc()
  61. end, function(realIndex)
  62. return self:OutdoorRewardDataListItemGetFunc(realIndex)
  63. end, function(realIndex, kmlcontrol)
  64. return self:OutdoorRewardDataListItemInitFunc(realIndex, kmlcontrol)
  65. end, function(realIndex, kmlcontrol)
  66. return self:OutdoorRewardDataListItemUpdateFunc(realIndex, kmlcontrol)
  67. end)
  68. self.glod_reward_level_all_item = {}
  69. GUI:DataListInitData(self.view.secret_boss_level_data_list, function()
  70. return self:SecretBossBtnDataListItemCountFunc()
  71. end, function(realIndex)
  72. return self:SecretBossBtnDataListItemGetFunc(realIndex)
  73. end, function(realIndex, kmlcontrol)
  74. return self:SecretBossBtnDataListItemInitFunc(realIndex, kmlcontrol)
  75. end, function(realIndex, kmlcontrol)
  76. return self:SecretBossBtnDataListItemUpdateFunc(realIndex, kmlcontrol)
  77. end)
  78. self.secrect_boss_level_btn_all_item = {}
  79. GUI:DataListInitData(self.view.secret_boss_line_data_list, function()
  80. return self:SecretBossLineDataListItemCountFunc()
  81. end, function(realIndex)
  82. return self:SecretBossLineDataListItemGetFunc(realIndex)
  83. end, function(realIndex, kmlcontrol)
  84. return self:SecretBossLineDataListItemInitFunc(realIndex, kmlcontrol)
  85. end, function(realIndex, kmlcontrol)
  86. return self:SecretBossLineDataListItemUpdateFunc(realIndex, kmlcontrol)
  87. end)
  88. self.secrect_boss_line_data_list_all_item = {}
  89. GUI:DataListInitData(self.view.secret_reward_data_list, function()
  90. return self:SecretRewardDataListItemCountFunc()
  91. end, function(realIndex)
  92. return self:SecretRewardDataListItemGetFunc(realIndex)
  93. end, function(realIndex, kmlcontrol)
  94. return self:SecretRewardDataListItemInitFunc(realIndex, kmlcontrol)
  95. end, function(realIndex, kmlcontrol)
  96. return self:SecretRewardDataListItemUpdateFunc(realIndex, kmlcontrol)
  97. end)
  98. self.secrect_reward_level_all_item = {}
  99. GUI:DataListInitData(self.view.secret_reward_box_data_list, function()
  100. return self:SecretRewardBoxDataListItemCountFunc()
  101. end, function(realIndex)
  102. return self:SecretRewardBoxDataListItemGetFunc(realIndex)
  103. end, function(realIndex, kmlcontrol)
  104. return self:SecretRewardBoxDataListItemInitFunc(realIndex, kmlcontrol)
  105. end, function(realIndex, kmlcontrol)
  106. return self:SecretRewardBoxDataListItemUpdateFunc(realIndex, kmlcontrol)
  107. end)
  108. self.secrect_reward_box_level_all_item = {}
  109. GUI:DataListInitData(self.view.privilege_boss_level_data_list, function()
  110. return self:PrivilegeBossBtnDataListItemCountFunc()
  111. end, function(realIndex)
  112. return self:PrivilegeBossBtnDataListItemGetFunc(realIndex)
  113. end, function(realIndex, kmlcontrol)
  114. return self:PrivilegeBossBtnDataListItemInitFunc(realIndex, kmlcontrol)
  115. end, function(realIndex, kmlcontrol)
  116. return self:PrivilegeBossBtnDataListItemUpdateFunc(realIndex, kmlcontrol)
  117. end)
  118. self.privilege_boss_level_btn_all_item = {}
  119. GUI:DataListInitData(self.view.privilege_boss_reward_data_list, function()
  120. return self:PrivilegeRewardDataListItemCountFunc()
  121. end, function(realIndex)
  122. return self:PrivilegeRewardDataListItemGetFunc(realIndex)
  123. end, function(realIndex, kmlcontrol)
  124. return self:PrivilegeRewardDataListItemInitFunc(realIndex, kmlcontrol)
  125. end, function(realIndex, kmlcontrol)
  126. return self:PrivilegeRewardDataListItemUpdateFunc(realIndex, kmlcontrol)
  127. end)
  128. self.privilege_reward_level_all_item = {}
  129. --圣域BOSS
  130. GUI:DataListInitData(self.view.sanctuary_boss_level_data_list, function()
  131. return self:SanctuaryBossBtnDataListItemCountFunc()
  132. end, function(realIndex)
  133. return self:SanctuaryBossBtnDataListItemGetFunc(realIndex)
  134. end, function(realIndex, kmlcontrol)
  135. return self:SanctuaryBossBtnDataListItemInitFunc(realIndex, kmlcontrol)
  136. end, function(realIndex, kmlcontrol)
  137. return self:SanctuaryBossBtnDataListItemUpdateFunc(realIndex, kmlcontrol)
  138. end)
  139. self.sanctuary_boss_level_btn_all_item = {}
  140. GUI:DataListInitData(self.view.sanctuary_boss_line_data_list, function()
  141. return self:SanctuaryBossLineDataListItemCountFunc()
  142. end, function(realIndex)
  143. return self:SanctuaryBossLineDataListItemGetFunc(realIndex)
  144. end, function(realIndex, kmlcontrol)
  145. return self:SanctuaryBossLineDataListItemInitFunc(realIndex, kmlcontrol)
  146. end, function(realIndex, kmlcontrol)
  147. return self:SanctuaryBossLineDataListItemUpdateFunc(realIndex, kmlcontrol)
  148. end)
  149. ---@type KLUIChallengeBossLineItem[]
  150. self.sanctuary_boss_line_data_list_all_item = {}
  151. GUI:DataListInitData(self.view.sanctuary_reward_data_list, function()
  152. return self:SanctuaryRewardDataListItemCountFunc()
  153. end, function(realIndex)
  154. return self:SanctuaryRewardDataListItemGetFunc(realIndex)
  155. end, function(realIndex, kmlcontrol)
  156. return self:SanctuaryRewardDataListItemInitFunc(realIndex, kmlcontrol)
  157. end, function(realIndex, kmlcontrol)
  158. return self:SanctuaryRewardDataListItemUpdateFunc(realIndex, kmlcontrol)
  159. end)
  160. self.sanctuary_reward_level_all_item = {}
  161. GUI:DataListInitData(self.view.sanctuary_reward_box_data_list, function()
  162. return self:SanctuaryRewardBoxDataListItemCountFunc()
  163. end, function(realIndex)
  164. return self:SanctuaryRewardBoxDataListItemGetFunc(realIndex)
  165. end, function(realIndex, kmlcontrol)
  166. return self:SanctuaryRewardBoxDataListItemInitFunc(realIndex, kmlcontrol)
  167. end, function(realIndex, kmlcontrol)
  168. return self:SanctuaryRewardBoxDataListItemUpdateFunc(realIndex, kmlcontrol)
  169. end)
  170. self.sanctuary_reward_box_level_all_item = {}
  171. self.secretBossLineLoadEnd = nil
  172. end
  173. ---创建或者刷新界面数据时调用
  174. function this:Refresh()
  175. --SL:LogTable(self.args,true)
  176. if self.args and self.args.monsterType then
  177. --MonsterType 1黄金 ,2野外,3秘境,4特权
  178. self.monsterId = self.args.monsterId
  179. ---转换一下,策划说按cfg_BOSS_challenge表的type走,之前黄金和野外是反的
  180. if self.args.monsterType == 2 then
  181. self.args.monsterType = 1
  182. elseif self.args.monsterType == 1 then
  183. self.args.monsterType = 2
  184. end
  185. if self.args.monsterType == 2 then
  186. --self.view.boss_1_toggle:SetTogDefaultThis()
  187. GUI:SetTogDefaultThis(self.view.boss_1_toggle)
  188. elseif self.args.monsterType == 1 then
  189. --self.view.boss_2_toggle:SetTogDefaultThis()
  190. GUI:SetTogDefaultThis(self.view.boss_2_toggle)
  191. elseif self.args.monsterType == 3 then
  192. --self.view.boss_3_toggle:SetTogDefaultThis()
  193. GUI:SetTogDefaultThis(self.view.boss_3_toggle)
  194. elseif self.args.monsterType == 4 then
  195. --self.view.boss_4_toggle:SetTogDefaultThis()
  196. GUI:SetTogDefaultThis(self.view.boss_4_toggle)
  197. elseif self.args.monsterType == 6 then
  198. --self.view.boss_4_toggle:SetTogDefaultThis()
  199. GUI:SetTogDefaultThis(self.view.boss_6_toggle)
  200. end
  201. else
  202. self.monsterId = nil
  203. --self.view.boss_1_toggle:SetTogDefaultThis()
  204. GUI:SetTogDefaultThis(self.view.boss_1_toggle)
  205. end
  206. -- local level = InfoManager.newVipInfo.vipLevel
  207. -- if level > 0 or PrivilegeCardManager.HavePriviege() then
  208. -- else
  209. -- GUI:setVisible(self.view.boss_4,false)
  210. -- end
  211. end
  212. ---注册UI事件和服务器消息
  213. function this:RegistEvents()
  214. GUI:SetToggleOnValueChange(self.view.boss_1_toggle, self, self.Boss1Click)
  215. GUI:SetToggleOnValueChange(self.view.boss_2_toggle, self, self.Boss2Click)
  216. GUI:SetToggleOnValueChange(self.view.boss_3_toggle, self, self.Boss3Click)
  217. GUI:SetToggleOnValueChange(self.view.boss_4_toggle, self, self.Boss4Click)
  218. GUI:SetToggleOnValueChange(self.view.boss_5_toggle, self, self.Boss5Click)
  219. GUI:SetToggleOnValueChange(self.view.boss_6_toggle, self, self.Boss6Click)
  220. GUI:AddOnClickEvent(self.view.btn_close, self, self.CloseOnclick)
  221. GUI:AddOnClickEvent(self.view.privilege_boss_join_btn, self, self.privilege_boss_join)
  222. SL:RegisterLuaNetMsg(LuaMessageIdToClient.NEAREST_MONSTER, self.MonserPos, self)
  223. SL:RegisterLuaNetMsg(LuaMessageIdToClient.SECRET_REALM_COUNT, self.SecretCount, self)
  224. SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_PRIVILEGE_BOSS_PANEL, self.RES_PRIVILEGE_BOSS_PANEL, self)
  225. SL:RegisterLuaNetMsg(LuaMessageIdToClient.MONSTER_COUNT_RESULT_BY_ID, self.MONSTER_COUNT_RESULT_BY_ID, self)
  226. SL:RegisterLuaNetMsg(LuaMessageIdToClient.SEND_SECRET_REALM_MONSTER_COUNT, self.MonserCopyCount, self)
  227. SL:RegisterLUAEvent(LUA_EVENT_CHALLENGE_BOSS_MONSTER_POS, self.LUA_EVENT_CHALLENGE_BOSS_MONSTER_POS, self)
  228. end
  229. function this:CloseOnclick()
  230. GUI:UIPanel_Close("dev/outui/ChallengeBoss/Panel/KLChallengeBoss/KLChallengeBossPanel")
  231. SL.ShowMainPanel()
  232. end
  233. function this:Boss1Click(kmlCtrl, eventData, args)
  234. if args[1] then
  235. GUI:setColor(self.view.boss_1_toggle_t, "#e6e6e6")
  236. self:ShowBossPanel(EBossChallengeType.Gold)
  237. self:SelectGoldBoss()
  238. else
  239. GUI:setColor(self.view.boss_1_toggle_t, "#999999")
  240. end
  241. end
  242. function this:Boss2Click(kmlCtrl, eventData, args)
  243. if args[1] then
  244. self:ShowBossPanel(EBossChallengeType.Field)
  245. self:SelectOutdoorBoss()
  246. self.monsterId = nil
  247. else
  248. GUI:setColor(self.view.boss_2_toggle_t, "#999999")
  249. end
  250. end
  251. function this:Boss3Click(kmlCtrl, eventData, args)
  252. if args[1] then
  253. GUI:setColor(self.view.boss_3_toggle_t, "#e6e6e6")
  254. self:ShowBossPanel(EBossChallengeType.Secret)
  255. self:SelectSecretBoss()
  256. self.monsterId = nil
  257. else
  258. GUI:setColor(self.view.boss_3_toggle_t, "#999999")
  259. end
  260. end
  261. function this:Boss4Click(kmlCtrl, eventData, args)
  262. if args[1] then
  263. GUI:setColor(self.view.boss_4_toggle_t, "#e6e6e6")
  264. self:ShowBossPanel(EBossChallengeType.Privilege)
  265. self:SelectPrivilegeBoss()
  266. self.monsterId = nil
  267. else
  268. GUI:setColor(self.view.boss_4_toggle_t, "#999999")
  269. end
  270. end
  271. function this:Boss5Click(kmlCtrl, eventData, args)
  272. if args[1] then
  273. GUI:setColor(self.view.boss_5_toggle_t, "#e6e6e6")
  274. self:ShowBossPanel(0)
  275. ---跨服boss不在表类型里
  276. self.monsterId = nil
  277. self.kuaFuInfoItem = GUI:UIPanel_Open("dev/outui/ChallengeBoss/Item/KLKuaFuBossInfo/KLKuaFuBossInfoItem",
  278. self.view.root, self)
  279. else
  280. GUI:setColor(self.view.boss_5_toggle_t, "#999999")
  281. self.kuaFuInfoItem = nil
  282. GUI:UIPanel_Close("dev/outui/ChallengeBoss/Item/KLKuaFuBossInfo/KLKuaFuBossInfoItem")
  283. end
  284. end
  285. function this:Boss6Click(kmlCtrl, eventData, args)
  286. if args[1] then
  287. GUI:setColor(self.view.boss_6_toggle_t, "#e6e6e6")
  288. self:ShowBossPanel(EBossChallengeType.Sanctuary)
  289. self:SelectSanctuaryBoss()
  290. self.monsterId = nil
  291. else
  292. GUI:setColor(self.view.boss_6_toggle_t, "#999999")
  293. end
  294. end
  295. function this:ShowBossPanel(type)
  296. GUI:setVisible(self.view.gold_boss_panel, type == EBossChallengeType.Gold)
  297. GUI:setVisible(self.view.outdoor_boss_panel, type == EBossChallengeType.Field)
  298. GUI:setVisible(self.view.mi_boss_panel, type == EBossChallengeType.Secret)
  299. GUI:setVisible(self.view.privilege_boss_panel, type == EBossChallengeType.Privilege)
  300. GUI:setVisible(self.view.sanctuary_boss_panel, type == EBossChallengeType.Sanctuary)
  301. end
  302. --黄金boss
  303. function this:SelectGoldBoss()
  304. local playerLevel = SL:GetMetaValue(EMetaVarGetKey.LEVEL)
  305. if self.monsterId then
  306. playerLevel = SL:GetConfig("cfg_BOSS_challenge", self.monsterId, "monsterid").level
  307. end
  308. if not self.allGoldLevel then
  309. self.allGoldLevel = {}
  310. --local allBoss = SL:GetConfigMultiKeys('cfg_BOSS_challenge', 1, 'monsterType')
  311. local allBoss = SL:FindConfigs("cfg_BOSS_challenge", "monsterType", 1)
  312. for i, boss in ipairs(allBoss) do
  313. local level = boss.level
  314. if not table.contains(self.allGoldLevel, level) then
  315. table.insert(self.allGoldLevel, level)
  316. end
  317. end
  318. self.select_gold_level = nil
  319. local index = 0
  320. for i, level in ipairs(self.allGoldLevel) do
  321. if not self.select_gold_level then
  322. self.select_gold_level = level
  323. index = i
  324. else
  325. if level <= playerLevel and level > self.select_gold_level then
  326. self.select_gold_level = level
  327. index = i
  328. end
  329. end
  330. end
  331. local percentage = index / #self.allGoldLevel
  332. percentage = percentage - percentage % 0.00001
  333. GUI:DataListUpdateData(self.view.gold_boss_level)
  334. GUI:SetScrollView_scrollpos(self.view.gold_boss_select, percentage)
  335. end
  336. self:RefreshGoldBoss()
  337. end
  338. function this:RefreshGoldBoss()
  339. if not self.monsterId then
  340. end
  341. --self.GoldOneLevel = SL:GetConfigMultiKeys("cfg_BOSS_challenge",1,self.select_gold_level,"monsterType","level")
  342. self.GoldOneLevel = {}
  343. local index = 0
  344. if self.monsterId then
  345. local tab = SL:FindConfigs("cfg_BOSS_challenge", "monsterType", 1)
  346. local isFind = false
  347. for i, v in ipairs(tab) do
  348. if v.level == self.select_gold_level then
  349. table.insert(self.GoldOneLevel, v)
  350. if v.monsterid == self.monsterId then
  351. isFind = true
  352. end
  353. if not isFind then
  354. index = index + 1
  355. end
  356. end
  357. end
  358. --GUI:DataListUpdateData(self.view.gold_boss_data_list)
  359. --GUI:SetScrollView_scrollpos(self.view.gold_boss_view, index)
  360. SL:ScheduleOnce(0.1, function()
  361. self.monsterId = nil
  362. if self.count_data then
  363. self:MonserCount(nil, self.count_data)
  364. end
  365. end)
  366. else
  367. --GUI:DataListUpdateData(self.view.gold_boss_data_list)
  368. --GUI:SetScrollView_scrollpos(self.view.gold_boss_view, 0)
  369. local tab = SL:FindConfigs("cfg_BOSS_challenge", "monsterType", 1)
  370. for i, v in ipairs(tab) do
  371. if v.level == self.select_gold_level then
  372. table.insert(self.GoldOneLevel, v)
  373. end
  374. end
  375. --GUI:DataListUpdateData(self.view.gold_boss_data_list) --TODO CH
  376. self.monsterId = nil
  377. end
  378. self.GoldAllRwward = {}
  379. if #self.GoldOneLevel > 0 then
  380. local Rwward = self.GoldOneLevel[1].monsterDrop
  381. local baseCareer = SL:GetMetaValue(EMetaVarGetKey.JOB)
  382. for i, one_reward in ipairs(Rwward) do
  383. if one_reward[1] == baseCareer then
  384. table.insert(self.GoldAllRwward, one_reward[2])
  385. end
  386. end
  387. end
  388. GUI:DataListUpdateData(self.view.gold_boss_reward)
  389. local message = {}
  390. for i, v in ipairs(self.GoldOneLevel) do
  391. table.insert(message, { id = v.id, state = 1 })
  392. end
  393. GUI:DataListUpdateData(self.view.gold_boss_data_list,true,function()
  394. SL:ScheduleOnce(0.1, function()
  395. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_MONSTER_COUNT_BY_ID, message)
  396. GUI:SetScrollView_scrollpos(self.view.gold_boss_view, index)
  397. end)
  398. end)
  399. end
  400. function this:GoldBossBtnDataListItemCountFunc()
  401. return #self.allGoldLevel
  402. end
  403. function this:GoldBossBtnDataListItemGetFunc(realIndex)
  404. local data = self.allGoldLevel[realIndex + 1]
  405. local item = GUI:UIPanel_Open("dev/outui/ChallengeBoss/Item/KLUIChallengeBossBtnItem/KLUIChallengeBossBtnItem", self.view.gold_boss_level, self, {}, true)
  406. self.glod_boss_level_btn_all_item[item.view.root] = item
  407. return item.view.root
  408. end
  409. function this:GoldBossBtnDataListItemInitFunc(realIndex, kmlcontrol)
  410. end
  411. function this:GoldBossBtnDataListItemUpdateFunc(realIndex, kmlcontrol)
  412. local data = self.allGoldLevel[realIndex + 1]
  413. self.glod_boss_level_btn_all_item[kmlcontrol]:RefreshItem(data, self.select_gold_level, self)
  414. if data == self.select_gold_level then
  415. self.GoldBossLevelBtn = self.glod_boss_level_btn_all_item[kmlcontrol]
  416. end
  417. end
  418. function this:GoldBossDataListItemCountFunc()
  419. return #self.GoldOneLevel
  420. end
  421. function this:GoldBossDataListItemGetFunc(realIndex)
  422. local data = self.GoldOneLevel[realIndex + 1]
  423. local item = GUI:UIPanel_Open("dev/outui/ChallengeBoss/Item/KLUIChallengeBossItem/KLUIChallengeBossItem", self.view.gold_boss_data_list, self, {}, true)
  424. self.glod_boss_level_all_item[realIndex + 1] = item
  425. return item.view.root
  426. end
  427. function this:GoldBossDataListItemInitFunc(realIndex, kmlcontrol)
  428. end
  429. function this:GoldBossDataListItemUpdateFunc(realIndex, kmlcontrol)
  430. local data = self.GoldOneLevel[realIndex + 1]
  431. --SL:LogTable(data,true)
  432. self.glod_boss_level_all_item[realIndex + 1]:RefreshItem(data, self.select_gold_level, self)
  433. if self.monsterId == data.monsterid then
  434. self.glod_boss_level_all_item[realIndex + 1]:ShowSelectImg()
  435. end
  436. end
  437. function this:HideSelectLevel()
  438. self.GoldBossLevelBtn:HideItem()
  439. end
  440. function this:SelectLevel(level, Btn)
  441. self.monsterId = nil
  442. self.GoldBossLevelBtn = Btn
  443. self.select_gold_level = level
  444. self:RefreshGoldBoss()
  445. end
  446. function this:GoldRewardDataListItemCountFunc()
  447. return #self.GoldAllRwward
  448. end
  449. function this:GoldRewardDataListItemGetFunc(realIndex)
  450. local item = GUI:UIPanel_Open("dev/outui/ChallengeBoss/Item/KLUIChallengeBossRewardItem/KLUIChallengeBossRewardItem", self.view.gold_boss_reward, self, {}, true)
  451. self.glod_reward_level_all_item[item.view.root] = item
  452. return item.view.root
  453. end
  454. function this:GoldRewardDataListItemInitFunc(realIndex, kmlcontrol)
  455. end
  456. function this:GoldRewardDataListItemUpdateFunc(realIndex, kmlcontrol)
  457. local data = self.GoldAllRwward[realIndex + 1]
  458. self.glod_reward_level_all_item[kmlcontrol]:RefreshItem({ cfgId = data }, self.select_gold_level, self)
  459. end
  460. --野外boss
  461. function this:SelectOutdoorBoss()
  462. local playerLevel = SL:GetMetaValue(EMetaVarGetKey.LEVEL)
  463. -- if self.monsterId then
  464. -- playerLevel = SL:GetConfig("cfg_BOSS_challenge",self.monsterId,"monsterid").level
  465. -- end
  466. if not self.allOutdoorLevel then
  467. self.allOutdoorLevel = {}
  468. --local allBoss = SL:GetConfigMultiKeys('cfg_BOSS_challenge', 1, 'monsterType')
  469. self.allOutdoorLevel = SL:FindConfigs("cfg_BOSS_challenge", "monsterType", 2)
  470. self.select_outdoor_level = nil
  471. self.select_outdoor_index = 1
  472. local index = 0
  473. for i, data in ipairs(self.allOutdoorLevel) do
  474. data.index = i
  475. local level = data.level
  476. if self.monsterId then
  477. if data.monsterid == self.monsterId then
  478. self.select_outdoor_level = level
  479. self.select_outdoor_index = i
  480. index = i
  481. end
  482. else
  483. if not self.select_outdoor_level then
  484. self.select_outdoor_level = level
  485. self.select_outdoor_index = i
  486. index = i
  487. else
  488. if level <= playerLevel and level > self.select_outdoor_level then
  489. self.select_outdoor_level = level
  490. self.select_outdoor_index = i
  491. index = i
  492. end
  493. end
  494. end
  495. end
  496. local percentage = index / #self.allOutdoorLevel
  497. percentage = percentage - percentage % 0.00001
  498. GUI:DataListUpdateData(self.view.outdoor_boss_level_data_list)
  499. GUI:SetScrollView_scrollpos(self.view.outdoor_boss_select, percentage)
  500. end
  501. self:RefreshOutdoorBoss()
  502. end
  503. function this:RefreshOutdoorBoss()
  504. self.current_outdoor_data = nil
  505. local current_data
  506. for i, data in ipairs(self.allOutdoorLevel) do
  507. local level = data.level
  508. if data.index == self.select_outdoor_index then
  509. self.current_outdoor_data = data
  510. break
  511. end
  512. end
  513. self.OutdoorAllRwward = {}
  514. local monsterid = nil
  515. if self.current_outdoor_data then
  516. monsterid = self.current_outdoor_data.monsterid
  517. local tab = SL:GetConfigMultiKeys('cfg_monster', monsterid, 'id')
  518. local name = tab.name
  519. local icon = tab.icon
  520. local appr = tab.appr
  521. local path = SL:GetConfigMultiKeys('cfg_model_monster', appr, 'id').path
  522. GUI:Text_setString(self.view.outdoor_boss_name, name)
  523. local mscale = ""
  524. if self.current_outdoor_data.size then
  525. local scale = math.ceil(self.current_outdoor_data.size / 100)
  526. mscale = scale .. "," .. scale .. "," .. scale
  527. end
  528. GUI:Model_setSrc(self.view.outdoor_boss_path, path, mscale)
  529. if self.current_outdoor_data.offset and #self.current_outdoor_data.offset >= 2 then
  530. GUI:setPosition(self.view.outdoor_boss_path, self.current_outdoor_data.offset[1], self.current_outdoor_data.offset[2])
  531. end
  532. GUI:DataListUpdateData(self.view.outdoor_boss_line_data_list,true,function()
  533. SL:ScheduleOnce(Time.deltaTime, function()
  534. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_MONSTER_COUNT_BY_ID, { { id = self.current_outdoor_data.id, state = 1 } })
  535. end)
  536. end)
  537. if self.current_outdoor_data then
  538. local Rwward = self.current_outdoor_data.monsterDrop
  539. local baseCareer = SL:GetMetaValue(EMetaVarGetKey.JOB)
  540. for i, one_reward in ipairs(Rwward) do
  541. if one_reward[1] == baseCareer then
  542. table.insert(self.OutdoorAllRwward, one_reward[2])
  543. end
  544. end
  545. end
  546. GUI:DataListUpdateData(self.view.outdoor_boss_reward_data_list)
  547. end
  548. InfoManager.uiHuntingDemonsInfo:SetIntegralInControl(self.view.outdoor_boss_Integral_BG,self.view.outdoor_boss_Integral_Text,monsterid)
  549. end
  550. function this:MONSTER_COUNT_RESULT_BY_ID(id, message)
  551. self.count_data = message
  552. self:MonserCount(id, self.count_data)
  553. end
  554. function this:MonserCount(id, message)
  555. --SL:LogError("MonserCount")
  556. --SL:LogTable(message,true)
  557. if not message then
  558. return
  559. end
  560. if self.current_outdoor_data then
  561. local id = tostring(self.current_outdoor_data.id)
  562. if message[id] then
  563. local msg = message[id]
  564. for i = 1, 10000, 1 do
  565. if msg[tostring(i)] and self.outdoor_boss_line_data_list_all_item[i] then
  566. self.outdoor_boss_line_data_list_all_item[i]:MonserCount(nil, msg[tostring(i)])
  567. else
  568. break
  569. end
  570. end
  571. end
  572. end
  573. if self.GoldOneLevel and #self.GoldOneLevel > 0 then
  574. for i = 1, 10000, 1 do
  575. if self.GoldOneLevel[i] then
  576. local id = tostring(self.GoldOneLevel[i].id)
  577. if message[id] and self.glod_boss_level_all_item[i] then
  578. self.glod_boss_level_all_item[i]:MonserCount(nil, message[id])
  579. else
  580. break
  581. end
  582. else
  583. break
  584. end
  585. end
  586. end
  587. if self.current_Sanctuary_data then
  588. local id = tostring(self.current_Sanctuary_data.id)
  589. if message[id] then
  590. local msg = message[id]
  591. for i = 1, 10000, 1 do
  592. if msg[tostring(i)] and self.sanctuary_boss_line_data_list_all_item[i] then
  593. self.sanctuary_boss_line_data_list_all_item[i]:MonserCount(nil, msg[tostring(i)])
  594. else
  595. break
  596. end
  597. end
  598. end
  599. end
  600. end
  601. function this:OutdoorBossBtnDataListItemCountFunc()
  602. return #self.allOutdoorLevel
  603. end
  604. function this:OutdoorBossBtnDataListItemGetFunc(realIndex)
  605. local data = self.allOutdoorLevel[realIndex + 1]
  606. local item = GUI:UIPanel_Open("dev/outui/ChallengeBoss/Item/KLUIChallengeBossSelectBtnItem/KLUIChallengeBossSelectBtnItem", self.view.outdoor_boss_level_data_list, self, {}, true)
  607. self.outdoor_boss_level_btn_all_item[item.view.root] = item
  608. return item.view.root
  609. end
  610. function this:OutdoorBossBtnDataListItemInitFunc(realIndex, kmlcontrol)
  611. end
  612. function this:OutdoorBossBtnDataListItemUpdateFunc(realIndex, kmlcontrol)
  613. local data = self.allOutdoorLevel[realIndex + 1]
  614. self.outdoor_boss_level_btn_all_item[kmlcontrol]:RefreshItem(data, self.select_outdoor_index, self, 2)
  615. if data.index == self.select_outdoor_index then
  616. self.OutdoorBossLevelBtn = self.outdoor_boss_level_btn_all_item[kmlcontrol]
  617. end
  618. end
  619. function this:HideSelectLevelOutdoor()
  620. self.OutdoorBossLevelBtn:HideItem()
  621. end
  622. function this:SelectLevelOutdoor(level, Btn)
  623. self.OutdoorBossLevelBtn = Btn
  624. self.select_outdoor_index = level
  625. self:RefreshOutdoorBoss()
  626. end
  627. function this:OutdoorBossLineDataListItemCountFunc()
  628. return #self.current_outdoor_data.mapId
  629. end
  630. function this:OutdoorBossLineDataListItemGetFunc(realIndex)
  631. local item = GUI:UIPanel_Open("dev/outui/ChallengeBoss/Item/KLUIChallengeBossLineItem/KLUIChallengeBossLineItem", self.view.outdoor_boss_line_data_list, self, {}, true)
  632. self.outdoor_boss_line_data_list_all_item[realIndex + 1] = item
  633. return item.view.root
  634. end
  635. function this:OutdoorBossLineDataListItemInitFunc(realIndex, kmlcontrol)
  636. end
  637. function this:OutdoorBossLineDataListItemUpdateFunc(realIndex, kmlcontrol)
  638. local data = self.current_outdoor_data.mapId[realIndex + 1]
  639. local move = self.current_outdoor_data.mapMoveId[realIndex + 1]
  640. local monsterid = self.current_outdoor_data.monsterid
  641. self.outdoor_boss_line_data_list_all_item[realIndex + 1]:RefreshItem(monsterid, data, move, self, 210)
  642. end
  643. function this:OutdoorRewardDataListItemCountFunc()
  644. return #self.OutdoorAllRwward
  645. end
  646. function this:OutdoorRewardDataListItemGetFunc(realIndex)
  647. local item = GUI:UIPanel_Open("dev/outui/ChallengeBoss/Item/KLUIChallengeBossRewardItem/KLUIChallengeBossRewardItem", self.view.outdoor_boss_reward_data_list, self, {}, true)
  648. self.outdoor_reward_level_all_item[item.view.root] = item
  649. return item.view.root
  650. end
  651. function this:OutdoorRewardDataListItemInitFunc(realIndex, kmlcontrol)
  652. end
  653. function this:OutdoorRewardDataListItemUpdateFunc(realIndex, kmlcontrol)
  654. local data = self.OutdoorAllRwward[realIndex + 1]
  655. self.outdoor_reward_level_all_item[kmlcontrol]:RefreshItem({ cfgId = data }, self.select_gold_level, self)
  656. end
  657. --秘境boss
  658. function this:SelectSecretBoss()
  659. local playerLevel = SL:GetMetaValue(EMetaVarGetKey.LEVEL)
  660. if self.monsterId then
  661. playerLevel = SL:GetConfig("cfg_BOSS_challenge", self.monsterId, "monsterid").level
  662. end
  663. if not self.allSecretLevel then
  664. self.allSecretLevel = {}
  665. --local allBoss = SL:GetConfigMultiKeys('cfg_BOSS_challenge', 1, 'monsterType')
  666. self.allSecretLevel = SL:FindConfigs("cfg_BOSS_challenge", "monsterType", 3)
  667. self.select_Secret_level = nil
  668. local index = 0
  669. for i, data in ipairs(self.allSecretLevel) do
  670. local level = data.level
  671. if not self.select_Secret_level then
  672. self.select_Secret_level = level
  673. index = i
  674. else
  675. if level <= playerLevel and level > self.select_Secret_level then
  676. self.select_Secret_level = level
  677. index = i
  678. end
  679. end
  680. end
  681. local percentage = index / #self.allSecretLevel
  682. percentage = percentage - percentage % 0.00001
  683. GUI:DataListUpdateData(self.view.secret_boss_level_data_list)
  684. GUI:SetScrollView_scrollpos(self.view.secret_boss_level_select, percentage)
  685. end
  686. self:RefreshSecretBoss()
  687. end
  688. function this:RefreshSecretBoss()
  689. self.current_secrect_data = nil
  690. local current_data
  691. for i, data in ipairs(self.allSecretLevel) do
  692. local level = data.level
  693. if level == self.select_Secret_level then
  694. self.current_secrect_data = data
  695. break
  696. end
  697. end
  698. self.SecretAllRwward = {}
  699. self.SecretAllBoxRwward = {}
  700. self.SecretAllLine = {}
  701. self.repId = 0
  702. local monsterid = nil
  703. if self.current_secrect_data then
  704. monsterid = self.current_secrect_data.monsterid
  705. local tab = SL:GetConfigMultiKeys('cfg_monster', monsterid, 'id')
  706. local name = tab.name
  707. local icon = tab.icon
  708. local appr = tab.appr
  709. local repId = self.current_secrect_data.repId
  710. local path = SL:GetConfigMultiKeys('cfg_model_monster', appr, 'id').path
  711. GUI:Text_setString(self.view.secret_boss_name, name)
  712. local mscale = ""
  713. if self.current_secrect_data.size then
  714. local scale = math.ceil(self.current_secrect_data.size / 100)
  715. mscale = scale .. "," .. scale .. "," .. scale
  716. end
  717. GUI:Model_setSrc(self.view.secret_boss_path, path, mscale)
  718. if self.current_secrect_data.offset and #self.current_secrect_data.offset >= 2 then
  719. GUI:setPosition(self.view.secret_boss_path, self.current_secrect_data.offset[1], self.current_secrect_data.offset[2])
  720. end
  721. --SL:LogError(#self.current_secrect_data.mapId)
  722. if self.current_secrect_data then
  723. local Rwward = self.current_secrect_data.monsterDrop
  724. local baseCareer = SL:GetMetaValue(EMetaVarGetKey.JOB)
  725. for i, one_reward in ipairs(Rwward) do
  726. if one_reward[1] == baseCareer then
  727. table.insert(self.SecretAllRwward, one_reward[2])
  728. end
  729. end
  730. local box = self.current_secrect_data.boxDrop
  731. if box and #box > 0 then
  732. table.insert(self.SecretAllBoxRwward, box[1])
  733. end
  734. end
  735. local tab = SL:GetConfigMultiKeys('cfg_repfairyland_monster', repId, 'id')
  736. self.SecretAllLine = tab.monster1
  737. self.repId = repId
  738. GUI:DataListUpdateData(self.view.secret_boss_line_data_list)
  739. GUI:DataListUpdateData(self.view.secret_reward_box_data_list)
  740. GUI:DataListUpdateData(self.view.secret_reward_data_list)
  741. SL:SendLuaNetMsg(LuaMessageIdToSever.GET_SECRET_REALM_MONSTER_COUNT, { repId = self.repId })
  742. end
  743. GUI:Text_setString(self.view.last_num, "")
  744. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_GET_SECRET_REALM_COUNT, {})
  745. InfoManager.uiHuntingDemonsInfo:SetIntegralInControl(self.view.mijing_boss_Integral_BG,self.view.mijing_boss_Integral_Text,monsterid)
  746. end
  747. function this:SecretCount(id, message)
  748. --SL:LogTable(message,true)
  749. self.last_num = message.count
  750. GUI:Text_setString(self.view.last_num, tostring(message.count))
  751. end
  752. --圣域boss
  753. function this:SelectSanctuaryBoss()
  754. local playerLevel = SL:GetMetaValue(EMetaVarGetKey.LEVEL)
  755. if self.monsterId then
  756. playerLevel = SL:GetConfig("cfg_BOSS_challenge", self.monsterId, "monsterid").level
  757. end
  758. if not self.allSanctuaryLevel or table.count(self.allSanctuaryLevel) == 0 then
  759. self.allSanctuaryLevel = {}
  760. self.allSanctuaryLevel = SL:FindConfigs("cfg_BOSS_challenge", "monsterType", EBossChallengeType.Sanctuary)
  761. self.select_Sanctuary_level = nil
  762. local index = 0
  763. for i, data in ipairs(self.allSanctuaryLevel) do
  764. local level = data.level
  765. if not self.select_Sanctuary_level then
  766. self.select_Sanctuary_level = level
  767. index = i
  768. else
  769. if level <= playerLevel and level > self.select_Sanctuary_level then
  770. self.select_Sanctuary_level = level
  771. index = i
  772. end
  773. end
  774. end
  775. local percentage = index / #self.allSanctuaryLevel
  776. percentage = percentage - percentage % 0.00001
  777. GUI:DataListUpdateData(self.view.sanctuary_boss_level_data_list)
  778. GUI:SetScrollView_scrollpos(self.view.sanctuary_boss_level_select, percentage)
  779. end
  780. self:RefreshSanctuaryBoss()
  781. end
  782. function this:RefreshSanctuaryBoss()
  783. self.current_Sanctuary_data = nil
  784. local current_data
  785. for i, data in ipairs(self.allSanctuaryLevel) do
  786. local level = data.level
  787. if level == self.select_Sanctuary_level then
  788. self.current_Sanctuary_data = data
  789. break
  790. end
  791. end
  792. self.sanctuaryAllRwward = {}
  793. self.sanctuaryAllBoxRwward = {}
  794. self.sanctuaryAllLine = {}
  795. self.repId = 0
  796. local monsterid = nil
  797. if self.current_Sanctuary_data then
  798. monsterid = self.current_Sanctuary_data.monsterid
  799. local tab = SL:GetConfigMultiKeys('cfg_monster', monsterid, 'id')
  800. local name = tab.name
  801. local icon = tab.icon
  802. local appr = tab.appr
  803. local mapData = self.current_Sanctuary_data.mapId[1]
  804. local path = SL:GetConfigMultiKeys('cfg_model_monster', appr, 'id').path
  805. GUI:Text_setString(self.view.sanctuary_boss_name, name)
  806. local mscale = ""
  807. if self.current_Sanctuary_data.size then
  808. local scale = math.ceil(self.current_Sanctuary_data.size / 100)
  809. mscale = scale .. "," .. scale .. "," .. scale
  810. end
  811. GUI:Model_setSrc(self.view.sanctuary_boss_path, path, mscale)
  812. if self.current_Sanctuary_data.offset and #self.current_Sanctuary_data.offset >= 2 then
  813. GUI:setPosition(self.view.sanctuary_boss_path, self.current_Sanctuary_data.offset[1], self.current_Sanctuary_data.offset[2])
  814. end
  815. --SL:LogError(#self.current_Sanctuary_data.mapId)
  816. if self.current_Sanctuary_data then
  817. local Rwward = self.current_Sanctuary_data.monsterDrop
  818. local baseCareer = SL:GetMetaValue(EMetaVarGetKey.JOB)
  819. for i, one_reward in ipairs(Rwward) do
  820. if one_reward[1] == baseCareer then
  821. table.insert(self.sanctuaryAllRwward, one_reward[2])
  822. end
  823. end
  824. local box = self.current_Sanctuary_data.boxDrop
  825. if box and #box > 0 then
  826. table.insert(self.sanctuaryAllBoxRwward, box[1])
  827. end
  828. end
  829. self.sanctuaryAllLine = self.current_Sanctuary_data.mapId
  830. self.repId = mapData[1]
  831. GUI:DataListUpdateData(self.view.sanctuary_boss_line_data_list)
  832. GUI:DataListUpdateData(self.view.sanctuary_reward_box_data_list)
  833. GUI:DataListUpdateData(self.view.sanctuary_reward_data_list)
  834. GUI:DataListUpdateData(self.view.sanctuary_boss_line_data_list,true,function()
  835. SL:ScheduleOnce(Time.deltaTime, function()
  836. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_MONSTER_COUNT_BY_ID, { { id = self.current_Sanctuary_data.id, state = 1 } })
  837. end)
  838. end)
  839. end
  840. GUI:Text_setString(self.view.last_num, "")
  841. InfoManager.uiHuntingDemonsInfo:SetIntegralInControl(self.view.sanctuary_boss_Integral_BG,self.view.sanctuary_boss_Integral_Text,monsterid)
  842. --SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_GET_SECRET_REALM_COUNT, {})
  843. end
  844. function this:SanctuaryCount(id, message)
  845. --SL:LogTable(message,true)
  846. self.last_num = message.count
  847. GUI:Text_setString(self.view.last_num, tostring(message.count))
  848. end
  849. function this:isJoin()
  850. if not self.last_num or self.last_num < 1 then
  851. return false
  852. end
  853. return true
  854. end
  855. function this:MonserCopyCount(id, message)
  856. --SL:LogTable(message,true)
  857. if not self.secretBossLineLoadEnd then
  858. return
  859. end
  860. if not message then
  861. return
  862. end
  863. if not message["1"] then
  864. return
  865. end
  866. if not self.repId then
  867. return
  868. end
  869. if message["1"].repId ~= self.repId then
  870. return
  871. end
  872. for i = 1, 1000, 1 do
  873. if message[tostring(i)] then
  874. if self.secrect_boss_line_data_list_all_item[i] then
  875. self.secrect_boss_line_data_list_all_item[i]:MonserCopyCount(nil, message[tostring(i)])
  876. end
  877. else
  878. break
  879. end
  880. end
  881. end
  882. function this:SecretBossBtnDataListItemCountFunc()
  883. return #self.allSecretLevel
  884. end
  885. function this:SecretBossBtnDataListItemGetFunc(realIndex)
  886. local data = self.allSecretLevel[realIndex + 1]
  887. local item = GUI:UIPanel_Open("dev/outui/ChallengeBoss/Item/KLUIChallengeBossSelectBtnItem/KLUIChallengeBossSelectBtnItem", self.view.secret_boss_level_data_list, self, {}, true)
  888. self.secrect_boss_level_btn_all_item[item.view.root] = item
  889. return item.view.root
  890. end
  891. function this:SecretBossBtnDataListItemInitFunc(realIndex, kmlcontrol)
  892. end
  893. function this:SecretBossBtnDataListItemUpdateFunc(realIndex, kmlcontrol)
  894. local data = self.allSecretLevel[realIndex + 1]
  895. self.secrect_boss_level_btn_all_item[kmlcontrol]:RefreshItem(data, self.select_Secret_level, self, 3)
  896. if data.level == self.select_Secret_level then
  897. self.SecrectrBossLevelBtn = self.secrect_boss_level_btn_all_item[kmlcontrol]
  898. end
  899. end
  900. function this:HideSelectLevelSecret()
  901. self.SecrectrBossLevelBtn:HideItem()
  902. end
  903. function this:SelectLevelSecret(level, Btn)
  904. self.SecrectrBossLevelBtn = Btn
  905. self.select_Secret_level = level
  906. self:RefreshSecretBoss()
  907. end
  908. function this:HideSanctuaryLevelSecret()
  909. self.sanctuaryBossLevelBtn:HideItem()
  910. end
  911. function this:SelectSanctuarySecret(level, Btn)
  912. self.sanctuaryBossLevelBtn = Btn
  913. self.select_Sanctuary_level = level
  914. self:RefreshSanctuaryBoss()
  915. end
  916. function this:SecretBossLineDataListItemCountFunc()
  917. return #self.SecretAllLine
  918. end
  919. function this:SecretBossLineDataListItemGetFunc(realIndex)
  920. local item = GUI:UIPanel_Open("dev/outui/ChallengeBoss/Item/KLUIChallengeBossLineItem/KLUIChallengeBossLineItem", self.view.secret_boss_line_data_list, self, { is_copy = 1 }, true,
  921. function(_item)
  922. self.secrect_boss_line_data_list_all_item[realIndex + 1] = _item
  923. if not self.secretBossLineLoadEnd then
  924. self.secretBossLineLoadEnd = true
  925. SL:SendLuaNetMsg(LuaMessageIdToSever.GET_SECRET_REALM_MONSTER_COUNT, { repId = self.repId })
  926. end
  927. end)
  928. self.secrect_boss_line_data_list_all_item[realIndex + 1] = item
  929. return item.view.root
  930. end
  931. function this:SecretBossLineDataListItemInitFunc(realIndex, kmlcontrol)
  932. end
  933. function this:SecretBossLineDataListItemUpdateFunc(realIndex, kmlcontrol)
  934. local data = self.SecretAllLine[realIndex + 1]
  935. --local monsterid = self.current_secrect_data.monsterid
  936. self.secrect_boss_line_data_list_all_item[realIndex + 1]:RefreshItem(self.repId, data, 0, self, 210)
  937. end
  938. function this:SecretRewardDataListItemCountFunc()
  939. return #self.SecretAllRwward
  940. end
  941. function this:SecretRewardDataListItemGetFunc(realIndex)
  942. local item = GUI:UIPanel_Open("dev/outui/ChallengeBoss/Item/KLUIChallengeBossRewardItem/KLUIChallengeBossRewardItem", self.view.secret_reward_data_list, self, {}, true)
  943. self.secrect_reward_level_all_item[item.view.root] = item
  944. return item.view.root
  945. end
  946. function this:SecretRewardDataListItemInitFunc(realIndex, kmlcontrol)
  947. end
  948. function this:SecretRewardDataListItemUpdateFunc(realIndex, kmlcontrol)
  949. local data = self.SecretAllRwward[realIndex + 1]
  950. self.secrect_reward_level_all_item[kmlcontrol]:RefreshItem({ cfgId = data }, self.select_Secret_level, self)
  951. end
  952. function this:SecretRewardBoxDataListItemCountFunc()
  953. return #self.SecretAllBoxRwward
  954. end
  955. function this:SecretRewardBoxDataListItemGetFunc(realIndex)
  956. local item = GUI:UIPanel_Open("dev/outui/ChallengeBoss/Item/KLUIChallengeBossRewardItem/KLUIChallengeBossRewardItem", self.view.secret_reward_box_data_list, self, {}, true)
  957. self.secrect_reward_box_level_all_item[item.view.root] = item
  958. return item.view.root
  959. end
  960. function this:SecretRewardBoxDataListItemInitFunc(realIndex, kmlcontrol)
  961. end
  962. function this:SecretRewardBoxDataListItemUpdateFunc(realIndex, kmlcontrol)
  963. local data = self.SecretAllBoxRwward[realIndex + 1]
  964. self.secrect_reward_box_level_all_item[kmlcontrol]:RefreshItem({ cfgId = data }, self.select_Secret_level, self)
  965. end
  966. function this:MonserPos(id, message)
  967. if not message then
  968. return
  969. end
  970. if not message.mapCfgId or not message.line or not message.monsterCfgId then
  971. return
  972. end
  973. if SL:GetMetaValue(EMetaVarGetKey.MAP_ID) == message.mapCfgId and SL:GetMetaValue(EMetaVarGetKey.MAP_LINE) == message.line then
  974. else
  975. if InfoManager.redNameInfo:IsLimitTransferById(SL:GetMetaValue("MAIN_ACTOR_ID")) then
  976. SL:TipMessage(SL:GetConfig('cfg_string', 262).text, 1, NoticeType.NoticeMid)--"pk值较高,无法传送",
  977. return
  978. end
  979. end
  980. --SL:LogError(table.toString(message))
  981. SL:StopOnHook(true)
  982. this.pos_monster_id = message.monsterCfgId
  983. GUI:UIPanel_Close("dev/outui/ChallengeBoss/Panel/KLChallengeBoss/KLChallengeBossPanel")
  984. this.map_data = { message.mapCfgId, message.line, message.x, message.y }
  985. SL:Pathfinding(message.mapCfgId, message.line, message.x, message.y, this.MonserPosEnd, this.pos_monster_id)
  986. SL.ShowMainPanel()
  987. end
  988. function this:MonserPosEnd(pos)
  989. --SL:StartOnHook(true,true)
  990. if pos and pos.x and pos.z then
  991. this.scheduleId = SL:ScheduleOnce(0.1, function()
  992. SL:Pathfinding(this.map_data[1], this.map_data[2], pos.x, pos.z, this.BossPointOnHook)
  993. end)
  994. else
  995. SL:StartOnHook(true, true, this.pos_monster_id)
  996. end
  997. end
  998. function this:BossPointOnHook()
  999. SL:StartOnHook(true, true, this.pos_monster_id)
  1000. end
  1001. function this:Close()
  1002. self.monsterId = nil
  1003. self:UnRegistEvents()
  1004. end
  1005. ---选择特权boss
  1006. function this:SelectPrivilegeBoss()
  1007. local playerLevel = SL:GetMetaValue(EMetaVarGetKey.LEVEL)
  1008. if self.monsterId then
  1009. playerLevel = SL:GetConfig("cfg_BOSS_challenge", self.monsterId, "monsterid").level
  1010. end
  1011. if not self.allPrivilegeLevel then
  1012. self.allPrivilegeLevel = {}
  1013. --local allBoss = SL:GetConfigMultiKeys('cfg_BOSS_challenge', 1, 'monsterType')
  1014. local allBoss = SL:FindConfigs("cfg_rep", "type", 18001)
  1015. for i, boss in ipairs(allBoss) do
  1016. boss.index = i
  1017. table.insert(self.allPrivilegeLevel, boss)
  1018. end
  1019. self.select_privilege_level = nil
  1020. self.select_privilege_index = nil
  1021. local index = 0
  1022. for i, boss in ipairs(self.allPrivilegeLevel) do
  1023. local level = boss.level[1]
  1024. if not self.select_privilege_level then
  1025. self.select_privilege_level = level
  1026. self.select_privilege_index = i
  1027. index = i
  1028. else
  1029. if level <= playerLevel and level > self.select_privilege_level then
  1030. self.select_privilege_level = level
  1031. self.select_privilege_index = i
  1032. index = i
  1033. end
  1034. end
  1035. end
  1036. local percentage = index / #self.allPrivilegeLevel
  1037. percentage = percentage - percentage % 0.00001
  1038. GUI:DataListUpdateData(self.view.privilege_boss_level_data_list)
  1039. GUI:SetScrollView_scrollpos(self.view.privilege_boss_select, percentage)
  1040. end
  1041. self:RefreshPrivilegeBoss()
  1042. end
  1043. function this:RefreshPrivilegeBoss()
  1044. self.current_Privilege_data = self.allPrivilegeLevel[self.select_privilege_index]
  1045. --SL:LogTable(self.current_Privilege_data,true)
  1046. self.PrivilegeAllRwward = {}
  1047. self.repId = 0
  1048. local monsterid = nil
  1049. if self.current_Privilege_data then
  1050. monsterid = self.current_Privilege_data.monsterUI
  1051. local tab = SL:GetConfigMultiKeys('cfg_monster', monsterid, 'id')
  1052. local name = tab.name
  1053. local icon = tab.icon
  1054. local appr = tab.appr
  1055. local path = SL:GetConfigMultiKeys('cfg_model_monster', appr, 'id').path
  1056. GUI:Text_setString(self.view.privilege_boss_name, name)
  1057. local mscale = ""
  1058. if self.current_Privilege_data.size then
  1059. local scale = math.ceil(self.current_Privilege_data.size / 100)
  1060. mscale = scale .. "," .. scale .. "," .. scale
  1061. end
  1062. GUI:Model_setSrc(self.view.privilege_boss_path, path, mscale)
  1063. if self.current_Privilege_data.offset and #self.current_Privilege_data.offset >= 2 then
  1064. GUI:setPosition(self.view.privilege_boss_path, self.current_Privilege_data.offset[1], self.current_Privilege_data.offset[2])
  1065. end
  1066. local baseCareer = SL:GetMetaValue(EMetaVarGetKey.JOB)
  1067. for i, one_reward in ipairs(self.current_Privilege_data.UIJobReward) do
  1068. if one_reward[1] == baseCareer then
  1069. table.insert(self.PrivilegeAllRwward, one_reward[2])
  1070. end
  1071. end
  1072. GUI:DataListUpdateData(self.view.privilege_boss_reward_data_list)
  1073. end
  1074. GUI:Text_setString(self.view.privilege_boss_last_num, "")
  1075. self.privilege_num = 0
  1076. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_PRIVILEGE_BOSS_PANEL, { configId = self.current_Privilege_data.id })
  1077. InfoManager.uiHuntingDemonsInfo:SetIntegralInControl(self.view.tequan_boss_Integral_BG,self.view.tequan_boss_Integral_Text,monsterid)
  1078. end
  1079. function this:PrivilegeBossBtnDataListItemCountFunc()
  1080. return #self.allPrivilegeLevel
  1081. end
  1082. function this:PrivilegeBossBtnDataListItemGetFunc(realIndex)
  1083. local item = GUI:UIPanel_Open("dev/outui/ChallengeBoss/Item/KLUIChallengeBossSelectBtnItem/KLUIChallengeBossSelectBtnItem", self.view.privilege_boss_level_data_list, self, {}, true)
  1084. self.privilege_boss_level_btn_all_item[item.view.root] = item
  1085. return item.view.root
  1086. end
  1087. function this:PrivilegeBossBtnDataListItemInitFunc(realIndex, kmlcontrol)
  1088. end
  1089. function this:PrivilegeBossBtnDataListItemUpdateFunc(realIndex, kmlcontrol)
  1090. local _level = self.allPrivilegeLevel[realIndex + 1].level[1]
  1091. local monsterUI = self.allPrivilegeLevel[realIndex + 1].monsterUI
  1092. local data = { level = _level, monsterid = monsterUI, index = self.allPrivilegeLevel[realIndex + 1].index }
  1093. self.privilege_boss_level_btn_all_item[kmlcontrol]:RefreshItem(data, self.select_privilege_index, self, 4)
  1094. if self.allPrivilegeLevel[realIndex + 1].index == self.select_privilege_index then
  1095. self.PrivilegeBossLevelBtn = self.privilege_boss_level_btn_all_item[kmlcontrol]
  1096. end
  1097. end
  1098. function this:HideSelectLevelPrivilege()
  1099. self.PrivilegeBossLevelBtn:HideItem()
  1100. end
  1101. function this:SelectLevelPrivilege(level, Btn)
  1102. self.PrivilegeBossLevelBtn = Btn
  1103. self.select_privilege_index = level
  1104. self:RefreshPrivilegeBoss()
  1105. end
  1106. function this:PrivilegeRewardDataListItemCountFunc()
  1107. return #self.PrivilegeAllRwward
  1108. end
  1109. function this:PrivilegeRewardDataListItemGetFunc(realIndex)
  1110. local item = GUI:UIPanel_Open("dev/outui/ChallengeBoss/Item/KLUIChallengeBossRewardItem/KLUIChallengeBossRewardItem", self.view.privilege_boss_reward_data_list, self, {}, true)
  1111. self.privilege_reward_level_all_item[item.view.root] = item
  1112. return item.view.root
  1113. end
  1114. function this:PrivilegeRewardDataListItemInitFunc(realIndex, kmlcontrol)
  1115. end
  1116. function this:PrivilegeRewardDataListItemUpdateFunc(realIndex, kmlcontrol)
  1117. local data = self.PrivilegeAllRwward[realIndex + 1]
  1118. self.privilege_reward_level_all_item[kmlcontrol]:RefreshItem({ cfgId = data }, self.select_Secret_level, self)
  1119. end
  1120. ---圣域BOSS
  1121. function this:SanctuaryBossBtnDataListItemCountFunc()
  1122. return #self.allSanctuaryLevel
  1123. end
  1124. function this:SanctuaryBossBtnDataListItemGetFunc(realIndex)
  1125. local data = self.allSanctuaryLevel[realIndex + 1]
  1126. local item = GUI:UIPanel_Open("dev/outui/ChallengeBoss/Item/KLUIChallengeBossSelectBtnItem/KLUIChallengeBossSelectBtnItem", self.view.sanctuary_boss_level_data_list, self, {}, true)
  1127. self.sanctuary_boss_level_btn_all_item[item.view.root] = item
  1128. return item.view.root
  1129. end
  1130. function this:SanctuaryBossBtnDataListItemInitFunc(realIndex, kmlcontrol)
  1131. end
  1132. function this:SanctuaryBossBtnDataListItemUpdateFunc(realIndex, kmlcontrol)
  1133. local data = self.allSanctuaryLevel[realIndex + 1]
  1134. self.sanctuary_boss_level_btn_all_item[kmlcontrol]:RefreshItem(data, self.select_Sanctuary_level, self, EBossChallengeType.Sanctuary)
  1135. if data.level == self.select_Sanctuary_level then
  1136. self.sanctuaryBossLevelBtn = self.sanctuary_boss_level_btn_all_item[kmlcontrol]
  1137. end
  1138. end
  1139. function this:SanctuaryBossLineDataListItemCountFunc()
  1140. return #self.sanctuaryAllLine
  1141. end
  1142. function this:SanctuaryBossLineDataListItemGetFunc(realIndex)
  1143. local item = GUI:UIPanel_Open("dev/outui/ChallengeBoss/Item/KLUIChallengeBossLineItem/KLUIChallengeBossLineItem", self.view.sanctuary_boss_line_data_list, self, { is_copy = 1 }, true)
  1144. self.sanctuary_boss_line_data_list_all_item[realIndex + 1] = item
  1145. return item.view.root
  1146. end
  1147. function this:SanctuaryBossLineDataListItemInitFunc(realIndex, kmlcontrol)
  1148. end
  1149. function this:SanctuaryBossLineDataListItemUpdateFunc(realIndex, kmlcontrol)
  1150. local data = self.allSanctuaryLevel[realIndex + 1]
  1151. local mapMoveId = self.current_Sanctuary_data.mapMoveId[1][1]
  1152. self.sanctuary_boss_line_data_list_all_item[realIndex + 1]:RefreshItem(self.repId, data, mapMoveId, self, 210, self.current_Sanctuary_data)
  1153. end
  1154. function this:SanctuaryRewardDataListItemCountFunc()
  1155. return #self.sanctuaryAllRwward
  1156. end
  1157. function this:SanctuaryRewardDataListItemGetFunc(realIndex)
  1158. local item = GUI:UIPanel_Open("dev/outui/ChallengeBoss/Item/KLUIChallengeBossRewardItem/KLUIChallengeBossRewardItem", self.view.sanctuary_reward_data_list, self, {}, true)
  1159. self.sanctuary_reward_level_all_item[item.view.root] = item
  1160. return item.view.root
  1161. end
  1162. function this:SanctuaryRewardDataListItemInitFunc(realIndex, kmlcontrol)
  1163. end
  1164. function this:SanctuaryRewardDataListItemUpdateFunc(realIndex, kmlcontrol)
  1165. local data = self.sanctuaryAllRwward[realIndex + 1]
  1166. self.sanctuary_reward_level_all_item[kmlcontrol]:RefreshItem({ cfgId = data }, self.select_Sanctuary_level, self)
  1167. end
  1168. function this:SanctuaryRewardBoxDataListItemCountFunc()
  1169. return #self.sanctuaryAllBoxRwward
  1170. end
  1171. function this:SanctuaryRewardBoxDataListItemGetFunc(realIndex)
  1172. local item = GUI:UIPanel_Open("dev/outui/ChallengeBoss/Item/KLUIChallengeBossRewardItem/KLUIChallengeBossRewardItem", self.view.sanctuary_reward_box_data_list, self, {}, true)
  1173. self.sanctuary_reward_box_level_all_item[item.view.root] = item
  1174. return item.view.root
  1175. end
  1176. function this:SanctuaryRewardBoxDataListItemInitFunc(realIndex, kmlcontrol)
  1177. end
  1178. function this:SanctuaryRewardBoxDataListItemUpdateFunc(realIndex, kmlcontrol)
  1179. local data = self.sanctuaryAllBoxRwward[realIndex + 1]
  1180. self.sanctuary_reward_box_level_all_item[kmlcontrol]:RefreshItem({ cfgId = data }, self.select_Sanctuary_level, self)
  1181. end
  1182. function this:RES_PRIVILEGE_BOSS_PANEL(id, message)
  1183. local leftCount = message.leftCount
  1184. local numStr = tostring(leftCount)
  1185. -- if not self:IsHavePrivilege() or leftCount == 0 then
  1186. -- numStr = "<color=#ff2323>0</color>"
  1187. -- end
  1188. if leftCount == 0 then
  1189. numStr = "<color=#ff2323>0</color>"
  1190. end
  1191. self.privilege_num = leftCount
  1192. GUI:Text_setString(self.view.privilege_boss_last_num, numStr)
  1193. end
  1194. function this:privilege_boss_join()
  1195. local map_id = SL:GetMetaValue(EMetaVarGetKey.MAP_ID)
  1196. local mapTab = SL:GetConfig("cfg_map_info", map_id)
  1197. if mapTab.nopositionmove and mapTab.nopositionmove == 1 then
  1198. SL:MessageTip({ id = 116 })--"副本中无法传送",
  1199. return
  1200. end
  1201. -- if self:IsHavePrivilege() then
  1202. -- else
  1203. -- --无特权
  1204. -- GUI:UIPanel_Close("dev/outui/ChallengeBoss/Panel/KLChallengeBoss/KLChallengeBossPanel")
  1205. -- GUI:UIPanel_Open("dev/outui/MonthCard/Panel/KLUIMonthCardMain/KLUIMonthCardMainPanel")
  1206. -- return
  1207. -- end
  1208. local playerLevel = SL:GetMetaValue(EMetaVarGetKey.LEVEL)
  1209. if self.current_Privilege_data.level[1] > playerLevel then
  1210. SL:TipMessage(SL:GetConfig('cfg_string', 263).text, 1, NoticeType.NoticeMid)--"当前等级不足",
  1211. return
  1212. end
  1213. if self.privilege_num <= 0 then
  1214. SL:TipMessage(SL:GetConfig('cfg_string', 264).text, 1, NoticeType.NoticeMid)--"挑战次数不足",
  1215. return
  1216. end
  1217. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_ENTER_DUPLICATE, self.current_Privilege_data.id)
  1218. end
  1219. function this:IsHavePrivilege()
  1220. if InfoManager.monthCardInfo.IsGetMonthCard or InfoManager.monthCardInfo.IsGetDailyCard then
  1221. --有月卡或是日卡
  1222. return true
  1223. elseif PrivilegeCardManager.goldPrivilege or PrivilegeCardManager.diamondPrivilege then
  1224. --有黄金或者钻石特权
  1225. return true
  1226. else
  1227. --无特权
  1228. end
  1229. return false
  1230. end
  1231. function this:UnRegistEvents()
  1232. SL:UnRegisterLuaNetMsg(LuaMessageIdToClient.NEAREST_MONSTER, self.MonserPos, self)
  1233. SL:UnRegisterLuaNetMsg(LuaMessageIdToClient.SECRET_REALM_COUNT, self.SecretCount, self)
  1234. SL:UnRegisterLuaNetMsg(LuaMessageIdToClient.RES_PRIVILEGE_BOSS_PANEL, self.RES_PRIVILEGE_BOSS_PANEL, self)
  1235. SL:UnRegisterLuaNetMsg(LuaMessageIdToClient.MONSTER_COUNT_RESULT_BY_ID, self.MonserCount, self)
  1236. SL:UnRegisterLuaNetMsg(LuaMessageIdToClient.SEND_SECRET_REALM_MONSTER_COUNT, self.MonserCopyCount, self)
  1237. end
  1238. function this:LUA_EVENT_CHALLENGE_BOSS_MONSTER_POS(_id, message)
  1239. self:MonserPos(nil, message)
  1240. end
  1241. return this