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

250 lines
8.1 KiB

  1. --通用奖励结算界面
  2. ComSpecialTaskRewardView = ComSpecialTaskRewardView or BaseClass(BaseView)
  3. local ComSpecialTaskRewardView = ComSpecialTaskRewardView
  4. function ComSpecialTaskRewardView:__init()
  5. self.base_file = "common"
  6. self.layout_file = "ComSpecialTaskRewardView"
  7. self.layer_name = "Top"
  8. self.destroy_imm = true
  9. self.use_background = true
  10. self.hide_maincancas = true --全屏界面需要放开隐藏主UI
  11. self.change_scene_close = true
  12. self.append_to_ctl_queue = false --是否要添加进界面堆栈
  13. self.need_show_money = false --是否要显示顶部的金钱栏
  14. self.delay_time = 15
  15. self.col_num = 3 -- 奖励展示的行展示数
  16. self.item_list = {}
  17. self.is_set_zdepth = true --是否设置z深度,当需要盖住下层的UI界面上的模型时,要设true
  18. self.jump_close = true --用于某些界面跳转了之后就需要关掉界面
  19. ItemUseModel:getInstance():HideItemUseView( )
  20. -- self.model = NatureModel:getInstance()
  21. self.load_callback = function ()
  22. self:LoadSuccess()
  23. self:AddEvent()
  24. end
  25. self.open_callback = function ( )
  26. self:OpenSuccess()
  27. end
  28. self.destroy_callback = function ( )
  29. self:DestroySuccess()
  30. end
  31. end
  32. function ComSpecialTaskRewardView:LoadSuccess()
  33. local nodes = {
  34. "mask_bg:obj","bg:raw","titlebg:img","time_text:tmp","awardScroll/Viewport/award_con"
  35. ,"scroll_mask:obj","awardSmall_con:obj", "awardScroll:obj","effect","effect_forever",
  36. "natureDes:tmp", "natureValue:tmp",
  37. }
  38. self:GetChildren(nodes)
  39. lua_resM:setOutsideRawImage(self, self.bg_raw, GameResPath.GetViewBigBg("nature_reward_view_997_586"),false)
  40. lua_resM:setOutsideImageSprite(self, self.titlebg_img, GameResPath.GetCommonImage("com_award_title_bg"),false)
  41. local function onDelay()
  42. local function end_call_func( ... )
  43. if self.effect_forever then
  44. self:AddUIEffect("getgoods_02",self.effect_forever, self.layer_name, nil, 1, true,nil,nil,nil)
  45. end
  46. end
  47. self:AddUIEffect("getgoods_01",self.effect, self.layer_name, nil, 1, false,nil,nil,end_call_func)
  48. end
  49. self.slow_effect_id = GlobalTimerQuest:AddDelayQuest(onDelay, 0.1)
  50. self.natureDes_tmp.text = ""
  51. self.natureValue_tmp.text = ""
  52. if self.need_refreshData then
  53. self:UpdateView( )
  54. end
  55. end
  56. function ComSpecialTaskRewardView:UpdateView( )
  57. if self.is_loaded then
  58. self.need_refreshData = false
  59. else
  60. self.need_refreshData = true
  61. return
  62. end
  63. if not self.data then return end
  64. self:UpdateItemList()
  65. self:UpdateTime()
  66. -- self:UpdateNatureTxt()
  67. end
  68. -- function ComSpecialTaskRewardView:UpdateNatureTxt( )
  69. -- self.natureDes_tmp.text = self.model:GetTaskNatureTxtStr()
  70. -- self.natureValue_tmp.text = string.format('额外奖励%s点性格点奖励', HtmlColorTxt( self.model:GetTaskNatureValue(), ColorUtil.GREEN_DARK))
  71. -- end
  72. function ComSpecialTaskRewardView:DestroySuccess()
  73. self:ClearUIEffect(self.effect)
  74. self:ClearUIEffect(self.effect_forever)
  75. if self.slow_effect_id then
  76. GlobalTimerQuest:CancelQuest(self.slow_effect_id)
  77. self.slow_effect_id = nil
  78. end
  79. if self.pos_id then
  80. TweenLite.Stop(self.pos_id)
  81. self.pos_id = nil
  82. end
  83. if self.award_timer_id then
  84. GlobalTimerQuest:CancelQuest(self.award_timer_id)
  85. self.award_timer_id = nil
  86. end
  87. if self.timer_id then
  88. GlobalTimerQuest:CancelQuest(self.timer_id)
  89. self.timer_id = nil
  90. end
  91. for i,item in pairs(self.item_list) do
  92. item:DeleteMe()
  93. item = nil
  94. end
  95. self.item_list = {}
  96. ItemUseModel:getInstance():ShowItemUseView( )
  97. end
  98. function ComSpecialTaskRewardView:AddEvent()
  99. local function onBtnClickHandler(target,x,y)
  100. if target == self.mask_bg_obj then--关闭
  101. self:Close()
  102. end
  103. end
  104. AddClickEvent(self.mask_bg_obj,onBtnClickHandler,1)
  105. end
  106. --data.delay_time--关闭时间
  107. --data.title_res--标题资源
  108. --data.title_ab_name--标题资源ab包路径
  109. --data.award = {kind,type_id,goods_num,goods_vo}
  110. --data.col_num = 6 -- 每行展示的个数
  111. function ComSpecialTaskRewardView:Open( data )
  112. self.data = data
  113. self.delay_time = self.data and self.data.delay_time or self.delay_time
  114. BaseView.Open(self)
  115. end
  116. function ComSpecialTaskRewardView:OpenSuccess( )
  117. self:UpdateView()
  118. end
  119. function ComSpecialTaskRewardView:BtnCloseEvt()--关闭按钮回调
  120. self:Close()
  121. end
  122. function ComSpecialTaskRewardView:UpdateItemList( )
  123. for k,v in pairs(self.item_list) do
  124. v:SetVisible(false,nil,true)
  125. end
  126. self.col_num = 3
  127. local item_list = self.data.award
  128. if not item_list or TableSize(item_list) == 0 then return end
  129. local len = #item_list
  130. local parent_node = len > self.col_num and self.award_con or self.awardSmall_con
  131. self.awardScroll_obj:SetActive(len > self.col_num)
  132. local offer_x = 0
  133. local offer_y = 0
  134. local x = 0
  135. local y = 0
  136. for i, v in ipairs(item_list) do
  137. local item = self.item_list[i]
  138. if item == nil then
  139. item = ComSpecialTaskRewardItem.New(parent_node)
  140. self.item_list[i] = item
  141. end
  142. item:SetData(v)
  143. item:SetVisible(true)
  144. --local total_num = 108*6 + 5*10 -- 限定容器长度
  145. --local offset_x = (total_num - self.col_num * 118)/2 + 10 -- 根据尾部的剩余宽度,整体往右偏移一半
  146. --item:SetPosition((108+10)*((i - 1)%self.col_num) + offset_x,-(108+10)*math.floor((i-1)/self.col_num))
  147. --local goods_Id, lock = GoodsModel:getInstance():GetMappingTypeId(v[1], v[2])
  148. --local goodVo = GoodsModel:getInstance():GetGoodsBasicByTypeId(goods_Id)
  149. --local stren_data = nil
  150. -- if v[4] then
  151. -- stren_data = EquipModel:getInstance():GetBagEquipAwaraItemInfo(v[4])
  152. -- stren_data.equip_key = "EquipView"
  153. -- end
  154. -- if not v.is_mul then--副本多倍
  155. -- if v.is_rare == 2 then
  156. -- item:SetNumLimitVisible(true,12)
  157. -- elseif v.is_rare == 1 then
  158. -- item:SetNumLimitVisible(true,13)
  159. -- end
  160. -- else
  161. -- item:SetNumLimitVisible(v.is_mul ~= nil ,15)
  162. -- end
  163. -- if goodVo then
  164. -- item:SetData(goods_Id, v[3], goodVo.color, stren_data, lock,true,nil)
  165. -- else
  166. -- -- error("没有找到物品信息 "..v.typeId)
  167. -- end
  168. --item:SetVisible(false,nil,true)
  169. end
  170. --SetSizeDeltaY(parent_node,math.ceil(len/self.col_num)*(108+10) + 216)
  171. --self.awardSmall_con_obj:SetActive(len <= self.col_num)
  172. -- if not self.data.not_show_anim then
  173. -- self.scroll_mask_obj:SetActive(true)
  174. -- local index = 0
  175. -- local function countDown()
  176. -- index = index + 1
  177. -- if index >= 12 and (index - 1)/self.col_num == math.floor((index - 1)/self.col_num) then
  178. -- if self.pos_id then
  179. -- TweenLite.Stop(self.pos_id)
  180. -- self.pos_id = nil
  181. -- end
  182. -- local function callback( ... )
  183. -- SetAnchoredPositionY(parent_node,(108+10)*math.floor((index-1)/self.col_num)-118)
  184. -- end
  185. -- local pos_y = (108+10)*math.floor((index-1)/self.col_num)-118
  186. -- self.pos_id = TweenLite.to(self, parent_node, TweenLite.UiAnimationType.ANCHORED_POSY, pos_y, 0.2, callback)
  187. -- end
  188. -- if len >= index then
  189. -- if self.item_list[index] then
  190. -- self.item_list[index]:SetVisible(true,nil,true)
  191. -- end
  192. -- else
  193. -- self.scroll_mask_obj:SetActive(false)
  194. -- if self.award_timer_id then
  195. -- GlobalTimerQuest:CancelQuest(self.award_timer_id)
  196. -- self.award_timer_id = nil
  197. -- end
  198. -- end
  199. -- end
  200. -- if not self.award_timer_id then
  201. -- self.award_timer_id = GlobalTimerQuest:AddPeriodQuest(countDown,0.15)
  202. -- end
  203. -- else
  204. -- if self.award_timer_id then
  205. -- GlobalTimerQuest:CancelQuest(self.award_timer_id)
  206. -- self.award_timer_id = nil
  207. -- end
  208. -- for k,v in pairs(self.item_list) do
  209. -- v:SetVisible(true,nil,true)
  210. -- end
  211. -- end
  212. end
  213. function ComSpecialTaskRewardView:UpdateTime( )
  214. local time = self.delay_time
  215. local function countDown()
  216. if self._use_delete_method then return end
  217. --if not data then return end
  218. time = time - 1
  219. if time > 0 then
  220. self.time_text_tmp.text = "点击任意处继续"..HtmlColorTxt(""..time.."s)", ColorUtil.WHITE_DARK)
  221. else
  222. self:Close()
  223. end
  224. end
  225. countDown()
  226. if not self.timer_id then
  227. self.timer_id = GlobalTimerQuest:AddPeriodQuest(countDown,1)
  228. end
  229. end