源战役客户端
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

234 行
6.2 KiB

  1. RankTargetView = RankTargetView or BaseClass(BaseView)
  2. local RankTargetView = RankTargetView
  3. function RankTargetView:__init()
  4. self.base_file = "rank"
  5. self.layout_file = "RankTargetView"
  6. self.layer_name = "Activity"
  7. self.destroy_imm = true
  8. self.use_background = true
  9. self.change_scene_close = true
  10. self.hide_maincancas = true --是否隐藏主界面
  11. self.append_to_ctl_queue = false --是否要添加进界面堆栈
  12. self.need_show_money = false --是否要显示顶部的金钱栏
  13. self.click_bg_toClose = true
  14. self.is_set_zdepth = true
  15. self.blur_activity_bg = true
  16. self.model = RankModel:getInstance()
  17. self.tab_item_list = {}
  18. self.now_select_rank_type = 0
  19. self.load_callback = function ()
  20. self:LoadSuccess()
  21. self:AddEvent()
  22. end
  23. self.open_callback = function ( )
  24. self:OpenSuccess()
  25. end
  26. self.close_win_callback = function ( )
  27. self:Close()
  28. end
  29. self.destroy_callback = function ( )
  30. self:DestroySuccess()
  31. end
  32. end
  33. function RankTargetView:Open(rank_tab_id)
  34. self.rank_tab_id = rank_tab_id
  35. self.rank_type_list = self.model:GetRankTargetTabListByTabId(self.rank_tab_id)
  36. BaseView.Open(self)
  37. end
  38. function RankTargetView:LoadSuccess()
  39. local nodes = {
  40. "container",
  41. "tabCon",
  42. "ScrollView", "ScrollView/Viewport/Content",
  43. "empty_add:obj", "empty_add/image:raw",
  44. }
  45. self:GetChildren(nodes)
  46. self.tabWindowComponent = UITabWindow.New(self.transform, nil, nil, self.close_win_callback, self.background_wnd,
  47. self.container,UITabWindow.SizeSmallNoTab,nil,nil,nil)
  48. self.tabWindowComponent:SetBackgroundRes("rank_target_bg")
  49. self.tabWindowComponent:SetTitleText("排行榜目标奖励")
  50. lua_resM:setOutsideRawImage(self, self.image_raw, GameResPath.GetViewBigBg("com_empty_bg1"))
  51. end
  52. function RankTargetView:AddEvent()
  53. local function update_target_view(rank_type)
  54. if self.is_loaded and self.now_select_rank_type == rank_type then
  55. self:UpdateTargetItem(rank_type,true)
  56. end
  57. end
  58. self:BindEvent(self.model,RankModel.UPDATE_RANK_TARGET_VIEW,update_target_view)
  59. end
  60. function RankTargetView:OpenSuccess()
  61. self:UpdateTabList()
  62. end
  63. function RankTargetView:UpdateTabList( )
  64. local function tab_click_back(rank_type,is_history)
  65. self.now_select_rank_type = rank_type
  66. for k,v in pairs(self.tab_item_list) do
  67. v:SetSelect(rank_type)
  68. end
  69. if not is_history then
  70. self:UpdateTargetItem(rank_type)
  71. else
  72. self:UpdateHistoryList(rank_type)
  73. end
  74. end
  75. for k,v in pairs(self.tab_item_list) do
  76. v:SetVisible(false)
  77. end
  78. for i,v in ipairs(self.rank_type_list) do
  79. local item = self.tab_item_list[i]
  80. if not item then
  81. item = RankTargetTabItem.New(self.tabCon)
  82. self.tab_item_list[i] = item
  83. end
  84. item:SetVisible(true)
  85. item:SetData(v.rank_type, tab_click_back, v.is_history)
  86. item:SetAnchoredPosition(126*(i-1)+1,-0.5)
  87. end
  88. local jump_to_rank_type = self.rank_type_list[1].rank_type
  89. for i,v in ipairs(self.rank_type_list) do
  90. local red = self.model:IsRankTypeNeedRed(rank_type)
  91. if red then
  92. jump_to_rank_type = v.rank_type
  93. break
  94. end
  95. end
  96. tab_click_back(jump_to_rank_type)
  97. end
  98. --allow_change_to_next_tab:是否允许在领取完当前页时,跳转到下一个可领奖励的页签
  99. function RankTargetView:UpdateTargetItem(rank_type,allow_change_to_next_tab)
  100. local target_cfg = DeepCopy(self.model:GetRankTargetCfgByType(rank_type))
  101. --排序 0|不可领 1|可领取 2|已领完
  102. local target_server_data = self.model:GetRankTargetData(rank_type) and self.model:GetRankTargetData(rank_type).top_list or {}
  103. local have_reward_can_get = false --是否有奖励可以领取
  104. for i,v in ipairs(target_server_data) do
  105. if target_cfg[i] then
  106. if v.award_state == 0 then
  107. target_cfg[i].sort_rank = 2
  108. elseif v.award_state == 1 then
  109. have_reward_can_get = true
  110. target_cfg[i].sort_rank = 1
  111. elseif v.award_state == 2 then
  112. target_cfg[i].sort_rank = 3
  113. end
  114. end
  115. end
  116. if allow_change_to_next_tab and not have_reward_can_get then--没有奖励领取时,跳到下一个页签去
  117. local jump_to_rank_type = 0
  118. for i,v in ipairs(self.rank_type_list) do
  119. local red = self.model:IsRankTypeNeedRed(v.rank_type)
  120. if red then
  121. jump_to_rank_type = v.rank_type
  122. break
  123. end
  124. end
  125. local function tab_click_back(rank_type)
  126. self.now_select_rank_type = rank_type
  127. for k,v in pairs(self.tab_item_list) do
  128. v:SetSelect(rank_type)
  129. end
  130. self:UpdateTargetItem(rank_type)
  131. end
  132. if jump_to_rank_type ~= 0 then
  133. tab_click_back(jump_to_rank_type)
  134. return
  135. end
  136. end
  137. local arg = {"sort_rank","index"}
  138. local condition = {Array.LOWER,Array.LOWER}
  139. SortTools.MoreKeysSorter(target_cfg, arg, condition)
  140. self:UpdateTargetScrollView(target_cfg,false)
  141. end
  142. function RankTargetView:UpdateHistoryList(rank_type)
  143. local true_rank_type = rank_type/1000
  144. local target_cfg = DeepCopy(self.model:GetRankTargetCfgByType(true_rank_type))
  145. --排序 0|不可领 1|可领取 2|已领完
  146. local hostory_list = {}
  147. local target_server_data = self.model:GetRankTargetData(true_rank_type) and self.model:GetRankTargetData(true_rank_type).top_list or {}
  148. for i,v in ipairs(target_server_data) do
  149. if target_cfg[i] then
  150. if v.award_state ~= 0 and target_cfg[i].index == v.target then
  151. table.insert(hostory_list,target_cfg[i])
  152. end
  153. end
  154. end
  155. local arg = {"index"}
  156. local condition = {Array.UPPER}
  157. SortTools.MoreKeysSorter(hostory_list, arg, condition)
  158. self:UpdateTargetScrollView(hostory_list,true)
  159. end
  160. function RankTargetView:UpdateTargetScrollView(data,is_history)
  161. if not self.item_list_com then
  162. self.item_list_com = self:AddUIComponent(UI.ItemListCreator)
  163. end
  164. self.item_list_com:Reset()
  165. local info = {
  166. data_list = data,
  167. item_con = self.Content,
  168. item_class = RankTargetItem,
  169. item_width = 899,
  170. item_height = 137,
  171. space_y = 3,
  172. start_x = 5,
  173. start_y = -5,
  174. -- create_frequency = 0.01,
  175. scroll_view = self.ScrollView,
  176. on_update_item = function(item, i, v)
  177. item:SetData(v,i,is_history)
  178. end,
  179. }
  180. self.item_list_com:UpdateItems(info)
  181. self.empty_add_obj:SetActive(#data==0)
  182. end
  183. function RankTargetView:UpdateRed( )
  184. end
  185. function RankTargetView:DestroySuccess( )
  186. if self.tabWindowComponent then
  187. self.tabWindowComponent:DeleteMe()
  188. end
  189. self.tabWindowComponent = nil
  190. for i, v in ipairs(self.tab_item_list) do
  191. v:DeleteMe()
  192. end
  193. self.tab_item_list = {}
  194. end