源战役客户端
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.

254 lines
7.7 KiB

  1. --[[@------------------------------------------------------------------
  2. @description:
  3. @author:huangcong
  4. ----------------------------------------------------------------------]]
  5. RechargeAddView = RechargeAddView or BaseClass(BaseView)
  6. local RechargeAddView = RechargeAddView
  7. RechargeAddView.TabPosList = {--页签位置
  8. [1] = {78,-1},
  9. [2] = {5,-124},
  10. [3] = {78,-251},
  11. }
  12. function RechargeAddView:__init()
  13. self.base_file = "rechargeActivity"
  14. self.layout_file = "RechargeAddView"
  15. self.layer_name = "Activity"
  16. self.destroy_imm = true
  17. self.use_background = false
  18. self.need_show_money = false --是否要显示顶部的金钱栏
  19. self.use_background = true
  20. self.hide_maincancas = false --全屏界面需要放开隐藏主UI
  21. self.append_to_ctl_queue = true --添加进入控制队列
  22. self.blur_activity_bg = true
  23. self.model = RechargeActivityModel:getInstance()
  24. self.mainVo = RoleManager.Instance.mainRoleInfo
  25. self.tab_index = 1
  26. self.tab_list = {}--页签列表
  27. self.load_callback = function ()
  28. self:LoadSuccess()
  29. self:AddEvent()
  30. end
  31. self.open_callback = function ( )
  32. self:OpenSuccess()
  33. end
  34. self.destroy_callback = function ( )
  35. self:DestroySuccess()
  36. end
  37. end
  38. function RechargeAddView:DestroySuccess( )
  39. for i,v in ipairs(self.tab_list) do
  40. v:DeleteMe()
  41. v = nil
  42. end
  43. self.tab_list = {}
  44. end
  45. function RechargeAddView:Open()
  46. BaseView.Open(self)
  47. end
  48. function RechargeAddView:OpenSuccess( )
  49. self:UpdateView()
  50. end
  51. function RechargeAddView:LoadSuccess()
  52. local nodes = {
  53. "showImg:img", "bg:raw", "closeBtn:obj",
  54. "tabCon","itemScorll", "itemScorll/Viewport/itemCon", "rechargeBtn:obj",
  55. "limitProText:tmp", "btn_copy/red_copy:obj", "btn_copy:obj:img",
  56. }
  57. self:GetChildren(nodes)
  58. lua_resM:setOutsideImageSprite(self,self.btn_copy_img,"/client/assets/icon/kfActivity/kfActivit_money_copy_3.png")
  59. lua_resM:setOutsideRawImage(self, self.bg_raw, GameResPath.GetViewBigBg("recharge_add_bg"))
  60. if self.need_load_again then
  61. self:UpdateView()
  62. end
  63. end
  64. function RechargeAddView:AddEvent()
  65. local on_click = function ( click_obj )
  66. if self.closeBtn_obj == click_obj then--关闭按钮
  67. self:Close()
  68. elseif click_obj == self.btn_copy_obj then--存钱
  69. KfActivityModel:getInstance():Fire(KfActivityModel.OPEN_MONEY_COPY_VIEW, "chargeplus")
  70. elseif click_obj == self.rechargeBtn_obj then--充值
  71. OpenFun.Open(450,1)
  72. end
  73. end
  74. AddClickEvent(self.closeBtn_obj, on_click)
  75. AddClickEvent(self.btn_copy_obj, on_click)
  76. AddClickEvent(self.rechargeBtn_obj, on_click)
  77. local updateFunc = function ()
  78. self:UpdateView()
  79. end
  80. self:BindEvent(self.model, RechargeActivityModel.UPDATE_FIRST_RECHARGE_VIEW, updateFunc)
  81. local function UPDATE_MONEY_COPY_VIEW( )
  82. if self._use_delete_method then return end
  83. self:RefreshCopy()
  84. end
  85. self:BindEvent(KfActivityModel:getInstance(), KfActivityModel.UPDATE_MONEY_COPY_VIEW, UPDATE_MONEY_COPY_VIEW)
  86. end
  87. function RechargeAddView:UpdateView()
  88. if not self.is_loaded then
  89. self.need_load_again = true
  90. return
  91. end
  92. self:RefreshCopy()
  93. self:UpdateTabList()
  94. end
  95. function RechargeAddView:RefreshCopy( )
  96. local tag_str = "chargeplus"
  97. local sub_type = KfActivityModel:getInstance():GetMoneyCopySubTypeByTag( tag_str )
  98. local is_show = sub_type and KfActivityModel:getInstance():IsInMoneyCopyTime( sub_type ) or false
  99. self.btn_copy_obj:SetActive(is_show)
  100. self.red_copy_obj:SetActive(KfActivityModel:getInstance():IsMoneyCopyRedByTag( tag_str ))
  101. end
  102. function RechargeAddView:UpdateTabList( )--更新页签
  103. local tab_list = self.model:GetAllRechargeInfo()
  104. for k,v in pairs(self.tab_list) do
  105. v:SetVisible(false)
  106. end
  107. if not tab_list or TableSize(tab_list) == 0 then
  108. if self.tab_list_info and #self.tab_list_info > 0 then--最后一个要特殊处理了
  109. tab_list = self.tab_list_info
  110. for k,v in pairs(tab_list) do
  111. for kk,vv in pairs(v.award_cfg) do
  112. vv.state = 2
  113. end
  114. end
  115. else
  116. return
  117. end
  118. end
  119. if self.tab_list_info and #self.tab_list_info ~= #tab_list then
  120. self.choose_tab_data = nil
  121. end
  122. self.tab_list_info = tab_list
  123. local function callback( item_data,index )
  124. if not item_data or not item_data.product_cfg then return end
  125. self.tab_index = index
  126. self.choose_tab_data = item_data
  127. for k,v in pairs(self.tab_list) do
  128. v:SetSelect(index)
  129. end
  130. local need_find_add_recharge_list = CookieWrapper.Instance:GetCookie(CookieLevelType.Account,CookieKey.RECHARGE_ADD_RED) or {}
  131. if need_find_add_recharge_list[item_data.product_cfg.product_id] then
  132. need_find_add_recharge_list[item_data.product_cfg.product_id] = nil
  133. CookieWrapper.Instance:SaveCookie(CookieLevelType.Account,CookieTimeType.TYPE_ALWAYS,CookieKey.RECHARGE_ADD_RED,need_find_add_recharge_list)
  134. CookieWrapper.Instance:WriteAll()
  135. self.model:Fire(RechargeActivityModel.REQUEST_CCMD_EVENT, 15905)
  136. else
  137. self:RefreshView()
  138. end
  139. end
  140. local x = 0
  141. local y = 0
  142. for i, v in ipairs(tab_list) do
  143. local item = self.tab_list[i]
  144. if item == nil then
  145. item = RechargeAddTab.New(self.tabCon, nil, self.layer_name)
  146. self.tab_list[i] = item
  147. if RechargeAddView.TabPosList[i] then
  148. x = RechargeAddView.TabPosList[i][1]
  149. y = RechargeAddView.TabPosList[i][2]
  150. else
  151. x = i%2 == 1 and 76 or 3
  152. y = -1 - i*124
  153. end
  154. item:SetPosition(x,y)
  155. item:SetCallBack(callback)
  156. end
  157. item:SetVisible(true)
  158. item:SetData(v,i)
  159. end
  160. if not self.choose_tab_data then
  161. self.tab_index = 1
  162. end
  163. self.choose_tab_data = tab_list[self.tab_index]
  164. callback(self.choose_tab_data,self.tab_index)
  165. end
  166. --刷新界面
  167. function RechargeAddView:RefreshView( )
  168. -- print("huangcong:RechargeAddView [start:131] :", self.choose_tab_data)
  169. -- PrintTable(self.choose_tab_data)
  170. -- print("huangcong:RechargeAddView [end]")
  171. lua_resM:setOutsideImageSprite(self, self.showImg_img, GameResPath.GetRechargeActivityImage("recharge_add_show_"..self.choose_tab_data.product_cfg.product_id), true)
  172. local cur_recharge_num = self.choose_tab_data.charge_value and self.choose_tab_data.charge_value/100 or 0
  173. local need_recharge_num = self.choose_tab_data.product_cfg and self.choose_tab_data.product_cfg.money or 0
  174. self.limitProText_tmp.text = string.format("已充值 %s/%s元",HtmlColorTxt(cur_recharge_num >= need_recharge_num and need_recharge_num or cur_recharge_num, cur_recharge_num >= need_recharge_num and ColorUtil.GREEN_DARK or ColorUtil.RED_DARK),need_recharge_num)
  175. self:UpdateItemList()
  176. end
  177. --更新充值列表
  178. function RechargeAddView:UpdateItemList( )
  179. local item_list = self.choose_tab_data.award_cfg
  180. if not item_list or TableSize(item_list) == 0 then return end
  181. -- print("huangcong:CompetingListCon [97]list: ",item_list)
  182. -- PrintTable(item_list)
  183. if #item_list > 1 then
  184. local sort_func = function ( a, b )
  185. return a.sort_id < b.sort_id
  186. end
  187. table.sort(item_list, sort_func)
  188. end
  189. self.item_list_info = item_list
  190. local function final_callback( ... )
  191. local jump_index = 1
  192. for k,v in ipairs(item_list) do
  193. if v.state == 1 then
  194. self.item_list_com:ScrollToItem(k)
  195. break
  196. end
  197. end
  198. end
  199. if not self.item_list_com then
  200. self.item_list_com = self:AddUIComponent(UI.ItemListCreator)
  201. else
  202. final_callback()
  203. end
  204. local info = {
  205. data_list = item_list,
  206. item_con = self.itemCon,
  207. item_class = RechargeAddItem,
  208. item_height = RechargeAddItem.Height,
  209. start_x = 2,
  210. start_y = -2,
  211. space_y = 0,
  212. scroll_view = self.itemScorll.transform,
  213. create_frequency = 0.02,
  214. final_callback = final_callback,
  215. on_update_item = function(item, i, v)
  216. item:SetData(v, i, i)
  217. end,
  218. }
  219. self.item_list_com:UpdateItems(info)
  220. end
  221. --隐藏以后再显示
  222. function RechargeAddView:CancelHide( )
  223. BaseView.CancelHide(self)
  224. if self.is_loaded then
  225. if self.item_list_info and #self.item_list_info > 0 then
  226. local jump_index = 1
  227. for k,v in ipairs(self.item_list_info) do
  228. if v.state == 1 then
  229. self.item_list_com:ScrollToItem(k)
  230. break
  231. end
  232. end
  233. end
  234. end
  235. end