源战役客户端
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

178 行
5.6 KiB

  1. RankItem = RankItem or BaseClass(BaseItem)
  2. local RankItem = RankItem
  3. function RankItem:__init()
  4. self.base_file = "rank"
  5. self.layout_file = "RankItem"
  6. self.model = RankModel:getInstance()
  7. self:Load()
  8. end
  9. function RankItem:Load_callback()
  10. self.nodes = {
  11. "bg:obj",
  12. "select_bg:obj",--选中框
  13. "vip_icon:img","sex_icon:img",--性别和vip
  14. "type_icon:img:obj",--社团图标
  15. "rank_icon:img",--前三排行icon
  16. "head_con",--头像框
  17. "rank:tmp",--三名以后的排名
  18. "type_name:tmp","name:tmp",--名字和社团名字
  19. "rank_power:tmp",--排行榜类型战力
  20. "nameClick:obj",
  21. }
  22. self:GetChildren(self.nodes)
  23. self.vipItem = RoleVipItem.New(self.vip_icon)
  24. self:AddEvents()
  25. if self.need_refreshData then
  26. self:UpdateView()
  27. end
  28. end
  29. function RankItem:AddEvents( )
  30. local on_click = function ( click_obj , x, y)
  31. if self.bg_obj == click_obj then
  32. if not self.select then
  33. if self.call_back and self.data then
  34. self:SetSelect(not self.select)
  35. self.call_back(self.item_id)
  36. end
  37. end
  38. elseif self.nameClick_obj == click_obj then
  39. self.operation_x = x
  40. self.operation_y = y
  41. local chat_info = {}
  42. if self.model.is_cs_rank then
  43. chat_info.ser_id = self.data.server_id
  44. else
  45. chat_info.ser_id = RoleManager.Instance:GetMainRoleServerId()
  46. end
  47. if RoleManager.Instance.mainRoleInfo.level < Config.Modulesub["110@2"].open_lv then
  48. Message.show("查看功能未开放")
  49. return
  50. end
  51. if chat_info.ser_id ~= RoleManager.Instance:GetMainRoleServerId() then--跨服玩家先请求figure数据
  52. self.model.request_cs_rank_role_figure = true
  53. self.model:Fire(RankModel.REQUEST_CCMD_EVENT, 22109, self.data.player_id)
  54. else
  55. --请求协议获取对方信息
  56. if self.data.player_id and chat_info.ser_id then
  57. SocialityModel:getInstance():Fire(SocialityModel.REQUEST_OTHER_INFO, self.data.player_id, x, y, chat_info)
  58. end
  59. end
  60. end
  61. end
  62. AddClickEvent(self.bg_obj, on_click)
  63. AddClickEvent(self.nameClick_obj, on_click)
  64. local function show_cs_operation_view(vo)
  65. if vo.role_id == self.data.player_id and not self.model.request_cs_role_by_top then
  66. local chat_info = vo
  67. chat_info.ser_id = self.data.server_id
  68. SocialityModel:getInstance():Fire(SocialityModel.REQUEST_OTHER_INFO, self.data.player_id, self.operation_x, self.operation_y, chat_info)
  69. end
  70. end
  71. self:BindEvent(self.model,RankModel.SHOW_CS_OPERATION_VIEW,show_cs_operation_view)
  72. end
  73. function RankItem:SetSelect(bool)
  74. if self.is_loaded then
  75. if self.select ~= bool then
  76. self.select = bool
  77. self.select_bg_obj:SetActive(bool)
  78. end
  79. self.isSelect = nil
  80. else
  81. self.isSelect = bool
  82. end
  83. end
  84. function RankItem:UpdateView( )
  85. --vip图标
  86. self.vipItem:SetData(self.data.vip_flag,self.data.sup_vip_type)
  87. --排名
  88. if self.data.rank <= 3 then
  89. lua_resM:setImageSprite(self, self.rank_icon_img, "rank_asset","rank_rank_"..self.data.rank, true)
  90. self.rank_tmp.text = ""
  91. else
  92. lua_resM:setImageSprite(self, self.rank_icon_img, "uiComponent_asset","com_empty")
  93. self.rank_tmp.text = self.data.rank
  94. end
  95. --名字
  96. if self.model.is_cs_rank then
  97. self.name_tmp.text = GetCSLongName(self.data.name,self.data.server_num)
  98. else
  99. self.name_tmp.text = self.data.name
  100. end
  101. --性别
  102. lua_resM:setImageSprite(self, self.sex_icon_img, "common_asset", self.data.sex == 1 and "com_boy" or "com_girl",true)
  103. local pos_x, pox_y = GetAnchoredPosition(self.name)
  104. SetAnchoredPositionX(self.sex_icon,pos_x + self.name_tmp.preferredWidth -18)
  105. local rank_des_type = "战力:"
  106. if self.model.selectId >= 2000 and self.model.selectId <= 2004 then--战力榜
  107. rank_des_type = "战力:"
  108. elseif self.model.selectId >= 3000 and self.model.selectId <= 3004 then--等级榜
  109. rank_des_type = "等级:"
  110. elseif self.model.selectId >= 1520 and self.model.selectId <= 1524 then--装备榜
  111. rank_des_type = "战力:"
  112. elseif self.model.selectId == 411 or self.model.selectId == 413 or self.model.selectId == 112 then--称号&时装&聊天装扮
  113. rank_des_type = "收集数:"
  114. elseif self.model.selectId == 163 then--孩子
  115. rank_des_type = "战力:"
  116. elseif self.model.selectId >= 1461 and self.model.selectId <= 1464 then--进阶
  117. rank_des_type = ""
  118. elseif self.model.selectId >= 1465 and self.model.selectId <= 1468 then--ai娘
  119. rank_des_type = "等级:"
  120. elseif self.model.selectId == 2231 then--人气值
  121. rank_des_type = "人气:"
  122. elseif self.model.selectId == 2232 then--壕气值
  123. rank_des_type = "壕气:"
  124. elseif self.model.selectId == 407 then--社团
  125. rank_des_type = "社团战力:"
  126. end
  127. --排行榜分数
  128. if self.model.selectId >= 1461 and self.model.selectId <= 1464 then--进阶
  129. self.rank_power_tmp.text = string.format(" %s阶%s星", self.data.first_value, self.data.second_value)
  130. elseif self.model.selectId >= 1465 and self.model.selectId <= 1468 then--ai娘
  131. self.rank_power_tmp.text = rank_des_type..self.data.first_value
  132. else
  133. self.rank_power_tmp.text = rank_des_type..self.data.first_value
  134. end
  135. if self.isSelect ~= nil then
  136. self:SetSelect(self.isSelect)
  137. end
  138. if self.item_id == self.model.rank_req_idx then
  139. self.model:Fire(RankModel.RANK_LIST_UPDATE_NEXT, self.item_id)
  140. end
  141. end
  142. function RankItem:SetData(item_id,data,call_back,tab_data,sub_tab_id)
  143. self.item_id = item_id
  144. self.data = data
  145. self.call_back = call_back
  146. self.tab_data = tab_data
  147. self.sub_tab_id = sub_tab_id
  148. if self.is_loaded then
  149. self.need_refreshData = false
  150. self:UpdateView()
  151. else
  152. self.need_refreshData = true
  153. end
  154. end
  155. function RankItem:__delete( )
  156. if self.vipItem then
  157. self.vipItem:DeleteMe()
  158. self.vipItem = nil
  159. end
  160. end