源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

749 lines
22 KiB

  1. RankModel = RankModel or BaseClass(BaseVo, true)
  2. local RankModel = RankModel
  3. RankModel.REQUEST_CCMD_EVENT = "RankModel.REQUEST_CCMD_EVENT"
  4. RankModel.CLICK_SUB_TYPE_ITEM = "RankModel.CLICK_SUB_TYPE_ITEM" -- 点击子类型按钮
  5. RankModel.UPDATE_RANK_CONTENT = "RankModel.UPDATE_RANK_CONTENT" -- 刷新榜单列表界面
  6. RankModel.RANK_LIST_UPDATE_NEXT = "RankModel.RANK_LIST_UPDATE_NEXT" -- 滚动框继续滚动时动态请求榜单数据
  7. RankModel.UPDATE_LIKE_CON = "RankModel.UPDATE_LIKE_CON" -- 刷新点赞栏的状态
  8. RankModel.UPDATE_LIKE_NUM = "RankModel.UPDATE_LIKE_NUM" -- 刷新当前选中角色的点赞数
  9. RankModel.REQUEST_EQUIP_CCMD_EVENT = "RankModel.REQUEST_EQUIP_CCMD_EVENT" -- 查看玩家装备信息
  10. RankModel.UPDATE_EQUIP_INFO = "RankModel.UPDATE_EQUIP_INFO" -- 刷新玩家装备信息
  11. RankModel.UPDATE_WARSOUL_INFO = "RankModel.UPDATE_WARSOUL_INFO" -- 刷新玩家战魂信息
  12. RankModel.CHANGE_RANK_MIAN_TYPE = "RankModel.CHANGE_RANK_MIAN_TYPE" -- 切换跨服排行和本服排行
  13. RankModel.OPEN_RANK_TARGET_VIEW = "RankModel.OPEN_RANK_TARGET_VIEW" -- 打开排行目标奖励界面
  14. RankModel.OPEN_RANK_PROGRESS_VIEW = "RankModel.OPEN_RANK_PROGRESS_VIEW" -- 打开排行前五进度界面
  15. RankModel.UPDATE_CS_ROLE_SHOW = "RankModel.UPDATE_CS_ROLE_SHOW" -- 跨服排行榜请求figure后刷新展示
  16. RankModel.UPDATE_RANK_TARGET_VIEW = "RankModel.UPDATE_RANK_TARGET_VIEW"
  17. RankModel.ANS_UPDATE_RED_DOT = "RankModel.ANS_UPDATE_RED_DOT"
  18. RankModel.UPDATE_RED_DOT = "RankModel.UPDATE_RED_DOT"
  19. RankModel.UPDATE_RANK_PROGRESS_VIEW = "RankModel.UPDATE_RANK_PROGRESS_VIEW"
  20. RankModel.SHOW_CS_OPERATION_VIEW = "RankModel.SHOW_CS_OPERATION_VIEW"
  21. RankModel.UPDATE_MAIN_UI_BTN_RED = "RankModel.UPDATE_MAIN_UI_BTN_RED" -- 主界面入口按钮红点
  22. RankModel.TabId = {
  23. KfRush_1 = 1, --开服冲榜
  24. KfRush_2 = 2, --开服冲榜
  25. KfRush_3 = 3, --开服冲榜
  26. Power = 4, -- 战力
  27. Level = 5, -- 等级
  28. Equip = 6, -- 装备
  29. WarSoul = 7, -- 战魂
  30. Advance = 8, -- 进阶
  31. AIGirl = 9, -- AI娘
  32. Fashion = 10, -- 收集
  33. Charm = 11, -- 魅力
  34. }
  35. RankModel.CSTabId = {
  36. Power = 1, -- 战力
  37. Level = 2, -- 等级
  38. }
  39. RankModel.PageSize = 40
  40. RankModel.PageReqOffSize = 15 --请求数据的相对名次。例如 15 - 5 = 10,显示第10条,就请求 16 到 30条的数据
  41. RankModel.PageSizeMax = 200 --排行榜中最多100条数据
  42. function RankModel:__init()
  43. RankModel.Instance = self
  44. self.rank_chat_list = {}--保存聊天item栏需用到的排行列表
  45. self.rank_equip_list = {}
  46. self.rank_like_list = {} --点赞状态
  47. self.rank_target_data = {}
  48. self.rank_target_cfg = {} --排行目标奖励配置
  49. self.rank_target_red_info = {} --排行目标奖励红点
  50. self.rank_progress_data = {} --榜单进度数据
  51. self.rank_warSoul_list = {}
  52. self:InitRankTargetCfg()
  53. self:Reset()
  54. end
  55. function RankModel:getInstance()
  56. if RankModel.Instance == nil then
  57. RankModel.Instance = RankModel.New()
  58. end
  59. return RankModel.Instance
  60. end
  61. --这里是关掉排行榜就要清空的数据
  62. function RankModel:Reset()
  63. self.is_cs_rank = false --当前是否为跨服排行榜
  64. self.start = 1 --列表的开始排名
  65. self.selectId = 0 --排行榜类型id(对应Config.ConfigRank.RankTab的id字段)
  66. self.rank_info = nil --排行榜信息
  67. self.curPage = 1 --当前页
  68. self.maxPage = 0 --最大页数
  69. self.rank_req_idx = 0 --当前请求的序号,当刷新这个数据的时候,就开始请求之后的数据
  70. self.rank_list_sum = 0 --当前排行榜的成员总数
  71. self.now_equip_suit_id = 6 --当前装备榜选中的套数 ,点击其他玩家查看时需要继承该套数
  72. end
  73. function RankModel:GetAllRedDot( )
  74. return self.rank_target_red_info
  75. end
  76. function RankModel:IsNeedRedAll( )
  77. for k,v in pairs(Config.ConfigRank.RankTab) do
  78. self:IsNeedRed(v.id)
  79. end
  80. end
  81. function RankModel:IsNeedRed(tab_id)
  82. local bool = false
  83. local rank_type_list = self:GetRankTargetTabListByTabId(tab_id)
  84. for k,v in pairs(rank_type_list) do
  85. if self:IsRankTypeNeedRed(v.rank_type) then
  86. bool = true
  87. break
  88. end
  89. end
  90. self.rank_target_red_info[tab_id] = bool
  91. self:Fire(RankModel.ANS_UPDATE_RED_DOT,tab_id)
  92. end
  93. function RankModel:IsRankTypeNeedRed(rank_type)
  94. local bool = false
  95. local rank_cfg = self:GetRankTabDataByType(rank_type)
  96. if not rank_cfg then return false end
  97. if not GetModuleIsOpen(rank_cfg.module_id, rank_cfg.sub_id) then return false end
  98. if self.rank_target_data[rank_type] then
  99. for i,v in ipairs(self.rank_target_data[rank_type].top_list) do
  100. if v.award_state == 1 then
  101. bool = true
  102. break
  103. end
  104. end
  105. end
  106. return bool
  107. end
  108. --根据榜单类型获取榜单配置
  109. function RankModel:GetRankTabDataByType(type)
  110. for k,v in pairs(Config.ConfigRank.RankTab) do
  111. for kk,vv in pairs(v.sub_tab) do
  112. if vv.id == type and v.id > 3 then
  113. return vv
  114. end
  115. end
  116. end
  117. return nil
  118. end
  119. --初始化排行目标奖励配置
  120. function RankModel:InitRankTargetCfg( )
  121. for k,v in pairs(Config.Commonranktargetreward) do
  122. self.rank_target_cfg[v.type] = self.rank_target_cfg[v.type] or {}
  123. v.sort_rank = 2
  124. table.insert(self.rank_target_cfg[v.type],v)
  125. end
  126. for k,v in pairs(self.rank_target_cfg) do
  127. local function onSortFunction(v1, v2)
  128. return v1.index < v2.index
  129. end
  130. table.sort(v, onSortFunction)
  131. end
  132. end
  133. --根据榜单类型获取目标配置
  134. function RankModel:GetRankTargetCfgByType(type)
  135. if self.rank_target_cfg[type] then
  136. return self.rank_target_cfg[type]
  137. else
  138. return nil
  139. end
  140. end
  141. --判断该榜单类型是否开放展示
  142. function RankModel:IsRankTypeOpen(type)
  143. local tab_id = self:GetTabIdByRankType(type)
  144. if tab_id ~= 0 then
  145. return true
  146. end
  147. return false
  148. end
  149. --判断该榜单类型属于哪个榜单大类
  150. function RankModel:GetTabIdByRankType(type)
  151. local tab_id = 0
  152. for k,v in pairs(Config.ConfigRank.RankTab) do
  153. for kk,vv in pairs(v.sub_tab) do
  154. if type == vv.id and v.id > 3 then
  155. tab_id = v.id
  156. return tab_id
  157. end
  158. end
  159. end
  160. return tab_id
  161. end
  162. --根据榜单大类tab_id获取其拥有首度目标的榜单子类型列表
  163. function RankModel:GetRankTargetTabListByTabId(tab_id)
  164. local list = {}
  165. local rank_tab_data = nil
  166. for k,v in pairs(Config.ConfigRank.RankTab) do
  167. if v.id == tab_id and tab_id > 3 then --前3个页签是冲榜用的,不要检测红点
  168. rank_tab_data = v
  169. break
  170. end
  171. end
  172. if rank_tab_data then
  173. for k,v in pairs(rank_tab_data.sub_tab) do
  174. if self:GetRankTargetCfgByType(v.id) then
  175. local temp = {rank_type = v.id, is_history = false}
  176. table.insert(list,temp)
  177. --插入一个历史记录栏
  178. local need_history = false
  179. for m,n in pairs(Config.ConfigRank.RankTargetNeedHistory) do
  180. if v.id == n then
  181. need_history = true
  182. break
  183. end
  184. end
  185. if need_history then
  186. local history_temp = {rank_type = v.id*1000, is_history = true}
  187. table.insert(list,history_temp)--将ranktype乘一千作为历史记录的标签
  188. end
  189. end
  190. end
  191. end
  192. return list
  193. end
  194. --根据页签id判断是否有目标奖励配置
  195. function RankModel:IsTabRankTargetCfg(tab_id)
  196. --前三个tab是给开服冲榜位置预留的,不要显示目标奖励
  197. if tab_id >= 1 and tab_id <= 3 then return false end
  198. local rank_tab_data = nil
  199. for k,v in pairs(Config.ConfigRank.RankTab) do
  200. if v.id == tab_id then
  201. rank_tab_data = v
  202. break
  203. end
  204. end
  205. if not rank_tab_data then return false end
  206. for k,v in pairs(rank_tab_data.sub_tab) do
  207. if self:GetRankTargetCfgByType(v.id) then
  208. return true
  209. end
  210. end
  211. return false
  212. end
  213. --保存首度目标达成信息 22106
  214. -- rank_type :int32
  215. -- top_list:array{
  216. -- target :int64
  217. -- award_state :int8 // 领奖状态 1|可领取 2|已领完
  218. -- score :int64 // 对应target(等级榜发等级战力榜发战力进阶榜发阶数……)
  219. -- figure :rec_picture // 形象信息
  220. -- }
  221. function RankModel:SetRankTargetData(vo)
  222. local function onSortFunction(v1, v2)
  223. return v1.target < v2.target
  224. end
  225. table.sort(vo.top_list, onSortFunction)
  226. self.rank_target_data[vo.rank_type] = vo
  227. end
  228. --根据榜单类型获取首度目标达成信息
  229. function RankModel:GetRankTargetData(rank_type)
  230. return self.rank_target_data[rank_type] and self.rank_target_data[rank_type] or nil
  231. end
  232. --保存榜单进度数据
  233. function RankModel:SetRankProgressData(vo)
  234. local function onSortFunction(v1, v2)
  235. return v1.rank < v2.rank
  236. end
  237. table.sort(vo.rank_list, onSortFunction)
  238. self.rank_progress_data[vo.rank_type] = vo.rank_list
  239. end
  240. --获取榜单进度数据
  241. function RankModel:GetRankProgressData(rank_type)
  242. return self.rank_progress_data[rank_type] and self.rank_progress_data[rank_type] or {}
  243. end
  244. --根据排行榜类型获取基础的排行榜配置
  245. function RankModel:GetRankingCfg(type_id)
  246. local cfg = Config.Ranking
  247. return cfg[type_id] or nil
  248. end
  249. function RankModel:GetRankInfo( )
  250. return self.rank_info or {}
  251. end
  252. function RankModel:SetRankInfo(vo)
  253. local bool = false
  254. if self.rank_info == nil or self.rank_info.rank_type ~= vo.rank_type then
  255. self.rank_list_sum = vo.sum
  256. local list_size = TableSize(vo.rank_list)
  257. self.start = list_size + 1
  258. for i= list_size + 1 , self.rank_list_sum do
  259. local list =
  260. {
  261. player_id = 0,
  262. name = "",
  263. guild_name = "",
  264. grade_id = 0,
  265. praise_num = 0,
  266. sel_combat = 0,
  267. first_value = 0,
  268. second_value = 0,
  269. third_value = 0,
  270. rank = i,
  271. turn = 0,
  272. extra_values = "",
  273. have_data = true,
  274. }
  275. table.insert(vo.rank_list, list)
  276. end
  277. self.rank_info = vo
  278. bool = true
  279. else
  280. local list_size = TableSize(vo.rank_list)
  281. if list_size > 0 then
  282. self.rank_info.rank_list = self.rank_info.rank_list or {}
  283. for i=1, list_size do
  284. self.rank_info.rank_list[self.start + i - 1] = vo.rank_list[i]
  285. end
  286. self.start = self.start + list_size
  287. self.start = self.start < self.rank_list_sum and self.start or self.rank_list_sum
  288. end
  289. end
  290. return bool
  291. end
  292. function RankModel:SetCSRankInfo(vo)
  293. for i,v in ipairs(vo.rank_list) do
  294. v.vip_flag = v.vip
  295. v.sup_vip_type = v.sup_vip
  296. end
  297. local function onSortFunction(v1, v2)
  298. return v1.rank < v2.rank
  299. end
  300. table.sort(vo.rank_list, onSortFunction)
  301. table.sort(vo.top_three, onSortFunction)
  302. local bool = false
  303. if self.rank_info == nil or self.rank_info.rank_type ~= vo.rank_type then
  304. self.rank_list_sum = vo.sum
  305. local list_size = TableSize(vo.rank_list)
  306. self.start = list_size + 1
  307. for i= list_size + 1 , self.rank_list_sum do
  308. local list =
  309. {
  310. player_id = 0,
  311. name = "",
  312. guild_name = "",
  313. grade_id = 0,
  314. praise_num = 0,
  315. sel_combat = 0,
  316. first_value = 0,
  317. second_value = 0,
  318. third_value = 0,
  319. rank = i,
  320. turn = 0,
  321. extra_values = "",
  322. have_data = true,
  323. }
  324. table.insert(vo.rank_list, list)
  325. end
  326. self.rank_info = vo
  327. bool = true
  328. else
  329. local list_size = TableSize(vo.rank_list)
  330. if list_size > 0 then
  331. self.rank_info.rank_list = self.rank_info.rank_list or {}
  332. for i=1, list_size do
  333. self.rank_info.rank_list[self.start + i - 1] = vo.rank_list[i]
  334. end
  335. self.start = self.start + list_size
  336. self.start = self.start < self.rank_list_sum and self.start or self.rank_list_sum
  337. end
  338. end
  339. return bool
  340. end
  341. function RankModel:GetRankItemInfo(rank_type, index)
  342. local t = nil
  343. if self.rank_info and self.rank_info.rank_list and rank_type == self.rank_info.rank_type then
  344. t = self.rank_info.rank_list[index]
  345. end
  346. return t
  347. end
  348. --获取榜单子类型列表
  349. function RankModel:GetRankSubTypeData(is_cs_rank)
  350. local final_rank_tab_data = {}
  351. if not is_cs_rank then
  352. final_rank_tab_data = self:GetFinalRankTabData()
  353. end
  354. local RankTab = {}
  355. if is_cs_rank then
  356. RankTab = DeepCopy(Config.ConfigRank.CSRankTab)
  357. else
  358. RankTab = DeepCopy(Config.ConfigRank.RankTab)
  359. end
  360. local temp_tab = {}
  361. for i,v in ipairs(RankTab) do
  362. if not GetModuleIsOpen(v.module_id, v.sub_id) then
  363. RankTab[i] = nil
  364. elseif not is_cs_rank and final_rank_tab_data[v.id] and final_rank_tab_data[v.id].open_lv > RoleManager.Instance.mainRoleInfo.level then
  365. RankTab[i] = nil
  366. else
  367. if v.sub_tab then
  368. for i=#v.sub_tab,1,-1 do
  369. if not GetModuleIsOpen(v.sub_tab[i].module_id, v.sub_tab[i].sub_id) then
  370. table.remove(v.sub_tab,i)
  371. end
  372. end
  373. if #v.sub_tab>0 then
  374. temp_tab[v.id] = v
  375. end
  376. end
  377. end
  378. end
  379. return temp_tab
  380. end
  381. function RankModel:GetFinalRankTabData( )
  382. --开服前七天需要加首位加上冲榜的榜
  383. local final_rank_tab_data = DeepCopy(RankView.TabData)
  384. local rush_rank_data = self:GetTodayKfRushTabList()
  385. final_rank_tab_data[RankModel.TabId.KfRush_1].open_lv = 9999
  386. final_rank_tab_data[RankModel.TabId.KfRush_2].open_lv = 9999
  387. final_rank_tab_data[RankModel.TabId.KfRush_3].open_lv = 9999
  388. if #rush_rank_data == 0 then
  389. else
  390. for i=1,#rush_rank_data do
  391. local key = RankModel.TabId.KfRush_1
  392. if i == 1 then
  393. key = RankModel.TabId.KfRush_1
  394. elseif i == 2 then
  395. key = RankModel.TabId.KfRush_2
  396. elseif i == 3 then
  397. key = RankModel.TabId.KfRush_3
  398. end
  399. final_rank_tab_data[key].open_lv = 0
  400. if rush_rank_data[i].id == 1 then
  401. final_rank_tab_data[key].name = "座驾"
  402. Config.ConfigRank.RankTab[key].name = "座驾"
  403. for k,v in pairs(Config.ConfigRank.RankTab) do
  404. if v.id == key then
  405. for m,n in pairs(v.sub_tab) do
  406. n.id = 1461
  407. n.name = "座驾"
  408. n.sub_type_tab = "horse"
  409. end
  410. end
  411. end
  412. elseif rush_rank_data[i].id == 2 then
  413. final_rank_tab_data[key].name = "炫翼"
  414. Config.ConfigRank.RankTab[key].name = "炫翼"
  415. for k,v in pairs(Config.ConfigRank.RankTab) do
  416. if v.id == key then
  417. for m,n in pairs(v.sub_tab) do
  418. n.id = 1462
  419. n.name = "炫翼"
  420. n.sub_type_tab = "wing"
  421. end
  422. end
  423. end
  424. elseif rush_rank_data[i].id == 3 then
  425. final_rank_tab_data[key].name = "宝具"
  426. Config.ConfigRank.RankTab[key].name = "宝具"
  427. for k,v in pairs(Config.ConfigRank.RankTab) do
  428. if v.id == key then
  429. for m,n in pairs(v.sub_tab) do
  430. n.id = 1463
  431. n.name = "宝具"
  432. n.sub_type_tab = "pearl"
  433. end
  434. end
  435. end
  436. elseif rush_rank_data[i].id == 4 then
  437. final_rank_tab_data[key].name = "武器"
  438. Config.ConfigRank.RankTab[key].name = "武器"
  439. for k,v in pairs(Config.ConfigRank.RankTab) do
  440. if v.id == key then
  441. for m,n in pairs(v.sub_tab) do
  442. n.id = 1464
  443. n.name = "武器"
  444. n.sub_type_tab = "weapon"
  445. end
  446. end
  447. end
  448. elseif rush_rank_data[i].id == 5 then
  449. final_rank_tab_data[key].name = "AI娘"
  450. Config.ConfigRank.RankTab[key].name = "AI娘"
  451. for k,v in pairs(Config.ConfigRank.RankTab) do
  452. if v.id == key then
  453. for m,n in pairs(v.sub_tab) do
  454. n.id = 1465
  455. n.name = "AI娘"
  456. n.sub_type_tab = "jarvis"
  457. end
  458. end
  459. end
  460. elseif rush_rank_data[i].id == 6 then
  461. final_rank_tab_data[key].name = "磁炮"
  462. Config.ConfigRank.RankTab[key].name = "磁炮"
  463. for k,v in pairs(Config.ConfigRank.RankTab) do
  464. if v.id == key then
  465. for m,n in pairs(v.sub_tab) do
  466. n.id = 1466
  467. n.name = "磁炮"
  468. n.sub_type_tab = "gun"
  469. end
  470. end
  471. end
  472. elseif rush_rank_data[i].id == 7 then
  473. final_rank_tab_data[key].name = "星翼"
  474. Config.ConfigRank.RankTab[key].name = "星翼"
  475. for k,v in pairs(Config.ConfigRank.RankTab) do
  476. if v.id == key then
  477. for m,n in pairs(v.sub_tab) do
  478. n.id = 1467
  479. n.name = "星翼"
  480. n.sub_type_tab = "cloud"
  481. end
  482. end
  483. end
  484. elseif rush_rank_data[i].id == 8 then
  485. final_rank_tab_data[key].name = "幻甲"
  486. Config.ConfigRank.RankTab[key].name = "幻甲"
  487. for k,v in pairs(Config.ConfigRank.RankTab) do
  488. if v.id == key then
  489. for m,n in pairs(v.sub_tab) do
  490. n.id = 1468
  491. n.name = "幻甲"
  492. n.sub_type_tab = "armour"
  493. end
  494. end
  495. end
  496. end
  497. end
  498. end
  499. return final_rank_tab_data
  500. end
  501. --保存该类型排行榜的点赞状态 22103
  502. function RankModel:SetRankLikeState(vo)
  503. -- self.rank_like_list[vo.rank_type] = vo.state == 0 and true or false
  504. self.rank_like_list[vo.rank_type] = vo
  505. end
  506. --根据排行榜类型获取点赞状态
  507. function RankModel:GetRankLikeStateByTypeId(type_id, role_id)
  508. -- return false
  509. if self.rank_like_list[type_id] then
  510. if self.rank_like_list[type_id].role_id == role_id and self.rank_like_list[type_id].state == 1 then
  511. return true
  512. end
  513. end
  514. return false
  515. end
  516. --刷新某个类型榜单下玩家的点赞数 22104
  517. function RankModel:RefreshRankRoleLikeNum(vo)
  518. if self.rank_info and self.rank_info.rank_list and vo.rank_type == self.rank_info.rank_type then
  519. for k,v in pairs(self.rank_info.rank_list) do
  520. if v.role_id == vo.role_id then
  521. v.praise_num = vo.praise_num
  522. return
  523. end
  524. end
  525. end
  526. end
  527. -----聊天模块需用到以下部分
  528. function RankModel:GetRankChatList( )
  529. return self.rank_chat_list
  530. end
  531. function RankModel:SetRankChatList(vo)
  532. local RankTab = DeepCopy(Config.ConfigRank.RankTab)
  533. local rank_type_power = RankTab[RankModel.TabId.Power].sub_tab[1].id
  534. local rank_type_level = RankTab[RankModel.TabId.Level].sub_tab[1].id
  535. if vo.rank_type and vo.rank_type == rank_type_power then
  536. self.rank_chat_list.fight_list = vo.rank_list or {}
  537. elseif vo.rank_type and vo.rank_type == rank_type_level then
  538. self.rank_chat_list.level_list = vo.rank_list or {}
  539. end
  540. --print("=============>>> YiRan:RankModel [start:186] self.rank_chat_list ------------------------------------------")
  541. --PrintTable(self.rank_chat_list)
  542. --print("=============>>> YiRan:RankModel [end] ------------------------------------------")
  543. end
  544. function RankModel:SendForRankChat( )
  545. local RankTab = DeepCopy(Config.ConfigRank.RankTab)
  546. local rank_type_power = RankTab[RankModel.TabId.Power].sub_tab[1].id
  547. local rank_type_level = RankTab[RankModel.TabId.Level].sub_tab[1].id
  548. RankModel:getInstance():Fire(RankModel.REQUEST_CCMD_EVENT,22105,rank_type_power,1,10)
  549. RankModel:getInstance():Fire(RankModel.REQUEST_CCMD_EVENT,22105,rank_type_level,1,10)
  550. end
  551. ------------------------------------------------------------------------------------------------------------------>>>>
  552. --更新当前穿着的装备列表
  553. function RankModel:UpdateEquipList(role_id, list, power)
  554. if not list or not role_id then
  555. print("是不是数据出现了问题?15017:", list)
  556. return
  557. end
  558. if self.rank_equip_list and self.rank_equip_list[role_id] then
  559. RankModel:getInstance():Fire(RankModel.UPDATE_EQUIP_INFO,role_id)
  560. return
  561. end
  562. self.rank_equip_list[role_id] = {}
  563. local goods_model = GoodsModel:getInstance()
  564. local equip_model = EquipModel:getInstance()
  565. local count = #list
  566. local vo = nil
  567. for i = 1, count do
  568. vo = list[i]
  569. local equip_cfg = equip_model:GetEquipmentCfg(vo.type_id)
  570. if equip_cfg then
  571. local pos = equip_cfg.equip_type
  572. local series = equip_cfg.series
  573. vo.equip_suit_type = pos
  574. goods_model:SetBaseInfo(vo)
  575. vo.power = power
  576. if not self.rank_equip_list[role_id][series] then
  577. self.rank_equip_list[role_id][series] = {}
  578. end
  579. self.rank_equip_list[role_id][series][equip_cfg.equip_type] = vo
  580. end
  581. end
  582. RankModel:getInstance():Fire(RankModel.UPDATE_EQUIP_INFO,role_id)
  583. end
  584. function RankModel:ClearRoleEquipList()
  585. self.rank_equip_list = {}
  586. end
  587. function RankModel:GetEquipList(role_id, suit_id)
  588. if not role_id or not suit_id then return {} end
  589. return (self.rank_equip_list and self.rank_equip_list[role_id] and self.rank_equip_list[role_id][suit_id]) and self.rank_equip_list[role_id][suit_id] or {}
  590. end
  591. function RankModel:GetAllEquipList(role_id)
  592. if not role_id then return {} end
  593. return (self.rank_equip_list and self.rank_equip_list[role_id]) and self.rank_equip_list[role_id] or {}
  594. end
  595. function RankModel:GetMateShipData( role_id )
  596. self.mate_ship_data = self.mate_ship_data or {}
  597. return self.mate_ship_data[role_id]
  598. end
  599. function RankModel:SetMateShipData( role_id,mate_stage,mate_star )
  600. self.mate_ship_data = self.mate_ship_data or {}
  601. self.mate_ship_data[role_id] = {mate_stage = mate_stage,mate_star = mate_star}
  602. end
  603. ------------------------------------------------------------------------------------------------------------------<<<<
  604. ------------------------------------------------------------------------------------------------------------------>>>>
  605. --更新当前的战魂装备列表
  606. function RankModel:UpdateWarSoulList(vo)
  607. if not vo then return end
  608. if not vo.equip_list then return end
  609. local role_id = vo.player_id
  610. if self.rank_warSoul_list and self.rank_warSoul_list[role_id] then
  611. RankModel:getInstance():Fire(RankModel.UPDATE_WARSOUL_INFO,role_id)
  612. return
  613. end
  614. self.rank_warSoul_list[role_id] = vo
  615. local count = #vo.equip_list
  616. local data = nil
  617. for i = 1, count do
  618. data = vo.equip_list[i]
  619. local warSoul_cfg = WarSoulModel:getInstance():GetWarSoulCfg(data.type_id)
  620. data.warSoul_cfg = warSoul_cfg
  621. data.pos = 20
  622. data.bind = 1
  623. data.expire_time = 0
  624. data.goods_num = 1
  625. data.convert_time = 0
  626. end
  627. RankModel:getInstance():Fire(RankModel.UPDATE_WARSOUL_INFO,role_id)
  628. end
  629. function RankModel:ClearRoleWarSoulList()
  630. self.rank_warSoul_list = {}
  631. end
  632. function RankModel:GetWarSoulList(role_id)
  633. if not role_id then return {} end
  634. return (self.rank_warSoul_list and self.rank_warSoul_list[role_id]) and self.rank_warSoul_list[role_id] or {}
  635. end
  636. function RankModel:GetWarSoulDataByCell(role_id,cell)
  637. if not role_id or not cell then return nil end
  638. if self.rank_warSoul_list and self.rank_warSoul_list[role_id] then
  639. for k,v in pairs(self.rank_warSoul_list[role_id].equip_list) do
  640. if v.cell == cell then
  641. return v
  642. end
  643. end
  644. end
  645. return nil
  646. end
  647. ------------------------------------------------------------------------------------------------------------------<<<<\
  648. --获取今天的开服冲榜项
  649. function RankModel:GetTodayKfRushTabList( )
  650. local tab_list = {}
  651. local openDay = ServerTimeModel:getInstance():GetOpenServerDay()
  652. for k,v in pairs(Config.Rushrank) do
  653. if v.start_day == openDay and v.id <= 8 then
  654. table.insert(tab_list,v)
  655. end
  656. end
  657. return tab_list
  658. end
  659. --判断今天开服冲榜有几项
  660. function RankModel:GetKfRushTabNum( )
  661. local tab_list = {}
  662. local openDay = ServerTimeModel:getInstance():GetOpenServerDay()
  663. for k,v in pairs(Config.Rushrank) do
  664. if v.start_day == openDay and v.id <= 8 then
  665. table.insert(tab_list,v)
  666. end
  667. end
  668. return #tab_list
  669. end