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

516 rivejä
22 KiB

1 kuukausi sitten
  1. -- <*
  2. -- @Author: Saber
  3. -- @Description: 经验快车挂机奖励领取界面
  4. -- *>
  5. ExpHangUpReceiveView = ExpHangUpReceiveView or BaseClass(BaseView)
  6. local ExpHangUpReceiveView = ExpHangUpReceiveView
  7. local Config_Exp = Config.Exp
  8. function ExpHangUpReceiveView:__init()
  9. self.base_file = "expDun"
  10. self.layout_file = "ExpHangUpReceiveView"
  11. self.layer_name = "Top"
  12. self.destroy_imm = true
  13. self.use_background = true
  14. self.change_scene_close = true
  15. self.is_set_zdepth = true
  16. self.open_guide_close = true
  17. self.last_time = nil -- 上次领取放置挂机的时间(只拿一次)
  18. self.main_role = RoleManager.Instance.mainRoleInfo
  19. self.can_click_receive_btn = true
  20. -- 只拿打开界面时的经验值
  21. self.cur_lv = self.main_role.level
  22. self.cur_exp = self.main_role.exp
  23. self.total_lv = TableSize(Config_Exp)
  24. self.model = ExpDunModel:getInstance()
  25. self.dun_model = BaseDungeonModel:getInstance()
  26. -- 查询放置挂机奖励内容
  27. -- self.dun_model:Fire(BaseDungeonModel.REQUEST_CCMD_EVENT, 61050, 0, 0)
  28. self.load_callback = function ()
  29. self:LoadSuccess()
  30. self:AddEvent()
  31. end
  32. self.open_callback = function ( )
  33. self:OpenSuccess()
  34. end
  35. self.destroy_callback = function ( )
  36. self:DestroySuccess()
  37. end
  38. end
  39. function ExpHangUpReceiveView:Open(reward_list)
  40. self.reward_list = reward_list
  41. BaseView.Open(self)
  42. end
  43. function ExpHangUpReceiveView:LoadSuccess()
  44. local nodes = {
  45. "window:raw", "close_btn:obj",
  46. -- 领取按钮
  47. "receive_btn:obj:img", "receive_btn/receive_btn_red:obj",
  48. -- 奖励滚动容器
  49. "reward_scroll", "reward_scroll/Viewport/reward_con",
  50. -- 奖励预览滚动容器
  51. "pre_reward_scroll", "pre_reward_scroll/Viewport/pre_reward_con",
  52. -- 挂机相关数值ui
  53. "hang_time:tmp", "dun_lv:tmp", "cur_efficient:tmp",
  54. -- 经远表现相关节点
  55. "expect_con",
  56. "expect_con/expect_icon:img",
  57. "expect_con/expect_lb1:tmp",
  58. "expect_con/expect_lb2:tmp",
  59. "expect_con/expect_lb3:tmp",
  60. "fill_basic:obj:img",
  61. "fill_basic/fill_add:img",
  62. "fill_basic/fill_basic_end:obj",
  63. -- 离线卡相关
  64. "extra_time_btn:obj", "extra_time_btn/extra_time_btn_red:obj",
  65. "extra_time:tmp",
  66. "extra_time_con:obj", -- 离线道具使用界面
  67. "extra_time_con/extra_mask:obj",
  68. "extra_time_con/extra_itemcon",
  69. "extra_time_con/extra_item_useBtn:obj:img", "extra_time_con/extra_item_useBtn/extra_item_useBtn_red:obj",
  70. "extra_time_con/extra_item_getwayBtn:obj:img",
  71. "extra_time_con/extra_item_num:tmp",
  72. "extra_time_con/extra_item_name:tmp",
  73. "received_tips:tmp",
  74. }
  75. self:GetChildren(nodes)
  76. self.extra_item_useBtn_lb_tmp = self:GetChild("extra_time_con/extra_item_useBtn/Text"):GetComponent(typeof(TMPro.TextMeshProUGUI))
  77. self.receive_btn_lb = self:GetChild("receive_btn/Text"):GetComponent(typeof(TMPro.TextMeshProUGUI))
  78. -- 离线挂机加成卡相关
  79. self.extra_awardItem = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.extra_itemcon)
  80. self.extra_awardItem:SetAnchoredPosition(0, 0)
  81. self.extra_awardItem:SetItemSize(62, 62)
  82. self.extra_awardItem:SetVisible(true)
  83. self.extra_awardItem:SetData(ExpDunModel.OfflineGoodsId)
  84. self.extra_item_name_tmp.text = GoodsModel:getInstance():getGoodsName(ExpDunModel.OfflineGoodsId, true)
  85. self.received_tips_tmp.color = ColorUtil:ConvertHexToRGBColor("a9c1e1")
  86. self.received_tips_tmp.fontSize = 18
  87. lua_resM:setOutsideRawImage(self, self.window_raw, GameResPath.GetViewBigBg("exp_hangup_receive_bg"))
  88. end
  89. function ExpHangUpReceiveView:AddEvent()
  90. local function click_event(target, x, y)
  91. if target == self.close_btn_obj then
  92. self:Close()
  93. elseif target == self.extra_mask_obj then -- 关闭离线时间效率提升道具使用界面
  94. self.extra_time_con_obj:SetActive(false)
  95. elseif target == self.extra_time_btn_obj then -- 弹出离线时间效率提升道具使用界面
  96. local activeSelf = self.extra_time_con_obj.activeSelf
  97. self.extra_time_con_obj:SetActive(not activeSelf)
  98. elseif target == self.extra_item_useBtn_obj then -- 使用离线时间卡道具
  99. self:OnExtraItemUseBtnClicked(x, y)
  100. elseif target == self.extra_item_getwayBtn_obj then -- 使用离线时间效率提升道具
  101. -- 弹出获取途径
  102. UIToolTipMgr:getInstance():AppendGoodsTips(ExpDunModel.OfflineGoodsId, x, y, nil, nil, nil, false, true)
  103. elseif target == self.receive_btn_obj then
  104. if self.can_click_receive_btn then
  105. -- 领取奖励
  106. self.dun_model:Fire(BaseDungeonModel.REQUEST_CCMD_EVENT, 61050, 1, 0)
  107. self:Close()
  108. end
  109. end
  110. end
  111. AddClickEvent(self.close_btn_obj, click_event, LuaSoundManager.SOUND_UI.NONE)
  112. AddClickEvent(self.extra_mask_obj, click_event)
  113. AddClickEvent(self.extra_time_btn_obj, click_event)
  114. AddClickEvent(self.extra_item_useBtn_obj, click_event)
  115. AddClickEvent(self.extra_item_getwayBtn_obj, click_event)
  116. AddClickEvent(self.receive_btn_obj, click_event, LuaSoundManager.SOUND_UI.NONE)
  117. -- 当挂机效率更新时刷新一次
  118. local function on_update_hangup_ratio()
  119. self:UpdateHangUpData()
  120. end
  121. self:BindEvent(self.model, ExpDunModel.UPDATE_HANGUP_RATIO, on_update_hangup_ratio)
  122. local function on_update_hangup_data()
  123. self:UpdateHangUpData(true)
  124. end
  125. self:BindEvent(self.model, ExpDunModel.UPDATE_HANGUP_RECEIVE_TIME, on_update_hangup_data)
  126. -- 领取成功后,播放经验值动画
  127. local function play_exp_action()
  128. -- 改为直接关闭界面,不需要动画了
  129. -- self:UpdateExpAction(true)
  130. -- self:UpdateReward(false)
  131. end
  132. self:BindEvent(self.model, ExpDunModel.SHOW_HANGUP_ACTION, play_exp_action)
  133. local function updata_buff_state(id)
  134. if id == KfActivityModel.TabID.MaterialSubmit and self.is_loaded then
  135. self:UpdateHangUpData()
  136. end
  137. end
  138. self:BindEvent(KfActivityModel:getInstance(), KfActivityModel.ANS_UPDATE_VIEW, updata_buff_state)
  139. local function update_offline_red(red_type)
  140. if not red_type or red_type == ExpDunModel.Red_Type.Offline then
  141. self:UpdateOfflineTimeData()
  142. end
  143. end
  144. self:BindEvent(self.model, ExpDunModel.UPDATE_EXP_RED_BY_REDTYPE, update_offline_red)
  145. end
  146. function ExpHangUpReceiveView:OpenSuccess()
  147. self:UpdatePerRewardData()
  148. self:UpdateHangUpData()
  149. self:UpdateExpAction(false)
  150. self:UpdateExpWithoutRewardList()
  151. self:UpdateReward(true)
  152. self:UpdateOfflineTimeData()
  153. -- 加载完之后,尝试更新协议过来的缓存
  154. -- self.model:UpdateHangUpCache()
  155. end
  156. -- 加载预览的奖励内容
  157. function ExpHangUpReceiveView:UpdatePerRewardData( )
  158. local data = stringtotable(self.model:GetExpDunConfig("show_rewards").value)
  159. self.pre_reward_item_creator = self.pre_reward_item_creator or self:AddUIComponent(UI.ItemListCreator)
  160. local info = {
  161. data_list = data,
  162. item_con = self.pre_reward_con,
  163. scroll_view = self.pre_reward_scroll,
  164. obj_pool_type = UIObjPool.UIType.AwardItem,
  165. item_width = 62,
  166. start_x = 3.5,
  167. start_y = -3,
  168. space_x = 8,
  169. create_frequency = 0.01,
  170. alignment = UnityEngine.TextAnchor.UpperLeft,
  171. on_update_item = function(item, i, v)
  172. local goods_Id, lock = GoodsModel:getInstance():GetMappingTypeId(v[1], v[2])
  173. item:SetData(goods_Id, v[3] , nil, nil, lock)
  174. item:SetItemSize(62, 62)
  175. end,
  176. }
  177. self.pre_reward_item_creator:UpdateItems(info)
  178. end
  179. function ExpHangUpReceiveView:UpdateHangUpData(refresh)
  180. -- 创建挂机时间计时器
  181. if refresh then
  182. self.last_time = self.model:GetHangUpReceiveTime()
  183. else
  184. self.last_time = self.last_time or self.model:GetHangUpReceiveTime()
  185. end
  186. local time_max = self.model:GetHangupResourceLimitTime()
  187. local contain_time = self.model:GetHangUpContainTimeData()
  188. -- local pass_time = TimeUtil:getServerTime() - self.last_time
  189. local time_str = ""
  190. if self.last_time > 0 then
  191. time_str = string.format("挂机时间:<color=#2cf86f>%s</color>",
  192. contain_time < time_max * 3600 and TimeUtil:convertTime(contain_time) or ("已满".. time_max .. "小时"))
  193. else
  194. time_str = "挂机时间:<color=#2cf86f>00:00:00</color>"
  195. end
  196. self.hang_time_tmp.text = time_str
  197. -- 设置关卡信息
  198. local wave = self.model:GetCurrentWave()
  199. self.dun_lv_tmp.text = string.format("关卡:<color=#2cf86f>%s</color>", self.model:GetWaveStr(wave))
  200. -- 设置经验值
  201. if self.reward_list then
  202. -- 通过最终奖励中的内容筛选出经验值数据
  203. local normal_exp = 0 -- 挂机经验 离线挂机经验
  204. for k, v in ipairs(self.reward_list) do
  205. -- if v.sp_type == 1 then -- 挂机经验
  206. if v.goods_id == 100007 or v.goods_type == 5 then
  207. normal_exp = normal_exp + v.num
  208. end
  209. end
  210. -- 设置挂机效率信息 万分数,需除以100转化为百分数
  211. local ratio = self.model:GetExpHangUpRatio()
  212. local buff_kind = OperateActivityModel.MaterialSubmitBuffKind.ADVENTURE_EXP_UP--触发加成后,玩家每分钟放置冒险经验收益提升100%(增对初始数值计算)
  213. local buff_cfg,buff_info = OperateActivityModel:getInstance():GetMaterialBuffInfoByKind(buff_kind)
  214. local buff_str = ""
  215. -- buff_info = {etime = TimeUtil:getServerTime( )+300}
  216. -- buff_cfg = {data = 100}
  217. if buff_cfg and buff_info then
  218. local sec = buff_info.etime - TimeUtil:getServerTime( )
  219. if sec > 0 then
  220. self:ActBuffTimeLate(sec)
  221. buff_str = "+"..buff_cfg.data.."%活动"
  222. end
  223. end
  224. local has_ratio_str = ratio == 10000 and "" or string.format("(+%s%s)", (ratio / 100) .. "%",buff_str)
  225. self.cur_efficient_tmp.text = string.format("经验收益:<color=#2cf86f>%s%s</color>",
  226. WordManager:ConvertNum1(normal_exp, true),
  227. has_ratio_str)
  228. else
  229. self.cur_efficient_tmp.text = "经验收益:<color=#2cf86f>未满1小时</color>"
  230. end
  231. end
  232. --活动BUFF时间倒计时
  233. function ExpHangUpReceiveView:ActBuffTimeLate( sec )
  234. if self.is_loaded then
  235. if self.act_sec == sec then
  236. return
  237. else
  238. self.act_sec = sec
  239. end
  240. if self.act_buff_timer_id then
  241. GlobalTimerQuest:CancelQuest(self.act_buff_timer_id)
  242. self.act_buff_timer_id = nil
  243. end
  244. local sec = sec or 0
  245. if sec > 0 then
  246. local function onTimer()
  247. sec = sec - 1
  248. if sec > 0 then
  249. else
  250. if self.act_buff_timer_id then
  251. GlobalTimerQuest:CancelQuest(self.act_buff_timer_id)
  252. self.act_buff_timer_id = nil
  253. end
  254. self:UpdateHangUpData()
  255. end
  256. end
  257. if not self.act_buff_timer_id then
  258. self.act_buff_timer_id = GlobalTimerQuest:AddPeriodQuest(onTimer, 1, -1)
  259. end
  260. onTimer()
  261. else
  262. self:UpdateHangUpData()
  263. end
  264. end
  265. end
  266. function ExpHangUpReceiveView:UpdateExpAction(show_anim)
  267. if not self.reward_list then return end
  268. local cur_lv = self.cur_lv
  269. local cur_exp = self.cur_exp
  270. local cur_percentage = cur_exp / Config_Exp[cur_lv].exp
  271. local target_percentage = 0
  272. -- self.expect_lb2_tmp.text = string.format("%s(%.2f%%)", cur_lv, cur_percentage * 100)
  273. self.expect_lb1_tmp.text = show_anim and "等级提升了:" or "预计等级提升:"
  274. self.expect_lb2_tmp.text = show_anim and "" or string.format("%s", cur_lv)
  275. -- 计算本次领取能拿到多少经验
  276. local add_exp = 0
  277. for k, v in ipairs(self.reward_list) do
  278. if v.goods_id == 100007 or v.goods_type == 5 then -- 经验值
  279. add_exp = add_exp + v.num
  280. end
  281. end
  282. -- 递归计算能升多少级
  283. local add_lv = 0
  284. local function cul_addlv_and_percentage()
  285. local added_exp = cur_exp + add_exp
  286. if Config_Exp[cur_lv + add_lv] and added_exp > Config_Exp[cur_lv + add_lv].exp then
  287. target_percentage = target_percentage + 1
  288. add_exp = added_exp - Config_Exp[cur_lv + add_lv].exp
  289. add_lv = add_lv + 1
  290. cur_exp = 0
  291. cul_addlv_and_percentage()
  292. else
  293. cur_exp = added_exp
  294. -- 等级容错
  295. local _lv = cur_lv + add_lv <= self.total_lv and cur_lv + add_lv or self.total_lv
  296. local last_percentage = cur_exp / Config_Exp[_lv].exp
  297. target_percentage = target_percentage + last_percentage
  298. end
  299. end
  300. cul_addlv_and_percentage()
  301. -- self.expect_lb3_tmp.text = string.format("%s(%.2f%%)",
  302. -- cur_lv + add_lv,
  303. -- cur_exp / Config_Exp[cur_lv + add_lv].exp * 100)
  304. self.expect_lb3_tmp.text = string.format("%s", cur_lv + add_lv)
  305. -- 先对齐文本节点
  306. self.expect_icon_img.enabled = not show_anim
  307. local len1 = self.expect_lb1_tmp.preferredWidth
  308. local len2 = self.expect_lb2_tmp.preferredWidth + 20
  309. local len3 = show_anim and 0 or (self.expect_icon.sizeDelta.x + 20)
  310. local len4 = self.expect_lb3_tmp.preferredWidth
  311. local offset_x = (self.expect_con.sizeDelta.x - len1 - len2 - len3 - len4 ) / 2
  312. SetAnchoredPositionX(self.expect_lb1, offset_x)
  313. SetAnchoredPositionX(self.expect_lb2, self.expect_lb1.anchoredPosition.x + len1)
  314. SetAnchoredPositionX(self.expect_icon, self.expect_lb2.anchoredPosition.x + len2)
  315. SetAnchoredPositionX(self.expect_lb3, self.expect_icon.anchoredPosition.x + len3)
  316. -- 初始节点填充
  317. local max_len = self.fill_basic.sizeDelta.x
  318. self.fill_basic_img.fillAmount = cur_percentage
  319. self.fill_basic_end_obj:SetActive(true)
  320. SetAnchoredPositionX(self.fill_basic_end, max_len * cur_percentage - self.fill_basic_end.sizeDelta.x)
  321. SetAnchoredPositionX(self.fill_add, max_len * cur_percentage)
  322. -- 创建动画
  323. local add_percentage = target_percentage - cur_percentage
  324. if show_anim then -- 播放经验值条的动画
  325. SetSizeDeltaX(self.fill_add, 0)
  326. if add_percentage > 0 then
  327. cc.ActionManager:getInstance():removeAllActionsFromTarget(self.fill_add)
  328. local function action_percentage_func(percent)
  329. percent = percent - 1.0
  330. local real_pec = percent * percent * percent * percent * percent + 1
  331. local final_percentage = cur_percentage + add_percentage * real_pec
  332. if final_percentage < 1 then
  333. SetSizeDeltaX(self.fill_add, (final_percentage - cur_percentage) * max_len)
  334. else
  335. -- 如果进度条大于0了,则去掉整数部分,将原来的进度条进度置0
  336. local _, minus_part = math.modf(final_percentage);
  337. self.fill_basic_img.fillAmount = 0
  338. SetAnchoredPositionX(self.fill_add, 0)
  339. SetSizeDeltaX(self.fill_add, minus_part * max_len)
  340. if self.fill_basic_end_obj.activeSelf then
  341. self.fill_basic_end_obj:SetActive(false)
  342. end
  343. end
  344. end
  345. local action_percentage = cc.CustomUpdate.New(2, action_percentage_func)
  346. cc.ActionManager:getInstance():addAction(action_percentage, self.fill_add)
  347. end
  348. else -- 根据实际经验塞满进度条,满了不溢出
  349. local final_percentage = cur_percentage + add_percentage
  350. final_percentage = final_percentage > 1 and 1 or final_percentage
  351. SetSizeDeltaX(self.fill_add, (final_percentage - cur_percentage) * max_len)
  352. end
  353. -- 如果是主动领取播放动画,则需要强行把按钮置灰
  354. if show_anim then
  355. SetButtonGray(self.receive_btn_img, nil, true)
  356. SetTMPSharedMaterial(self.receive_btn_lb, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn)
  357. self.can_click_receive_btn = false
  358. self.receive_btn_red_obj:SetActive(false)
  359. end
  360. end
  361. function ExpHangUpReceiveView:UpdateExpWithoutRewardList( )
  362. if self.reward_list then return end
  363. local cur_lv = self.cur_lv
  364. local cur_exp = self.cur_exp
  365. local cur_percentage = cur_exp / Config_Exp[cur_lv].exp
  366. local target_percentage = 0
  367. -- self.expect_lb2_tmp.text = string.format("%s(%.2f%%)", cur_lv, cur_percentage * 100)
  368. self.expect_lb1_tmp.text = "当前等级:"
  369. self.expect_lb2_tmp.text = string.format("%s", cur_lv)
  370. self.expect_lb3_tmp.text =
  371. -- 先对齐文本节点
  372. self.expect_icon_img.enabled = false
  373. local len1 = self.expect_lb1_tmp.preferredWidth
  374. local len2 = self.expect_lb2_tmp.preferredWidth + 20
  375. local len3 = 0
  376. local len4 = self.expect_lb3_tmp.preferredWidth
  377. local offset_x = (self.expect_con.sizeDelta.x - len1 - len2 - len3 - len4 ) / 2
  378. SetAnchoredPositionX(self.expect_lb1, offset_x)
  379. SetAnchoredPositionX(self.expect_lb2, self.expect_lb1.anchoredPosition.x + len1)
  380. SetAnchoredPositionX(self.expect_icon, self.expect_lb2.anchoredPosition.x + len2)
  381. SetAnchoredPositionX(self.expect_lb3, self.expect_icon.anchoredPosition.x + len3)
  382. -- 初始节点填充
  383. self.fill_basic_img.fillAmount = cur_percentage
  384. self.fill_basic_end_obj:SetActive(false)
  385. SetAnchoredPositionX(self.fill_add, 0)
  386. SetSizeDeltaX(self.fill_add, 0)
  387. -- 置灰领取按钮
  388. SetButtonGray(self.receive_btn_img, nil, true)
  389. SetTMPSharedMaterial(self.receive_btn_lb, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn)
  390. self.can_click_receive_btn = false
  391. self.receive_btn_red_obj:SetActive(false)
  392. end
  393. function ExpHangUpReceiveView:UpdateReward(show_rewards)
  394. if self.reward_list then
  395. self.reward_item_creator = self.reward_item_creator or self:AddUIComponent(UI.ItemListCreator)
  396. local info = {
  397. data_list = show_rewards and self.reward_list or {},
  398. item_con = self.reward_con,
  399. scroll_view = self.reward_scroll,
  400. item_class = ExpHangupAwardItem,
  401. item_width = 78,
  402. item_height = 78,
  403. start_x = 5,
  404. start_y = -4,
  405. space_x = 30,
  406. space_y = 8,
  407. create_frequency = 0.01,
  408. alignment = UnityEngine.TextAnchor.UpperLeft,
  409. on_update_item = function(item, i, v)
  410. item:SetData(v)
  411. end,
  412. }
  413. self.reward_item_creator:UpdateItems(info)
  414. self.received_tips_tmp.text = show_rewards and "" or "奖励已领,待会再来吧~"
  415. else
  416. self.received_tips_tmp.text = "累计时间满1小时后即可领取奖励"
  417. end
  418. end
  419. -- 更新离线时间加成的相关信息
  420. function ExpHangUpReceiveView:UpdateOfflineTimeData( )
  421. local offline_exp, rest_offline_time = self.model:GetHangUpOfflineData()
  422. local time_limit = self.model:GetExpDunConfig("time_limit").value
  423. self.extra_time_tmp.text = string.format("剩余离线挂机时间:<color=%s>%s小时</color>/<color=#fdffc2>%s小时</color>",
  424. rest_offline_time > 0 and ColorUtil.GREEN_DARK or ColorUtil.RED_DARK, math.ceil(rest_offline_time / 3600),
  425. math.ceil(time_limit / 3600))
  426. SetAnchoredPositionX(self.extra_time_btn, -74.5 + self.extra_time_tmp.preferredWidth + 30)
  427. local goods_num = GoodsModel:getInstance():GetTypeGoodsNum(ExpDunModel.OfflineGoodsId)
  428. self.extra_item_num_tmp.text = string.format("当前拥有:<color=%s>%s</color>",
  429. goods_num > 0 and ColorUtil.GREEN_DARK or ColorUtil.RED_DARK, goods_num)
  430. -- 顺带更新红点表现
  431. local offline_red = self.model:GetExpRedByRedType(ExpDunModel.Red_Type.Offline)
  432. self.extra_time_btn_red_obj:SetActive(offline_red)
  433. self.extra_item_useBtn_red_obj:SetActive(offline_red)
  434. -- 根据剩余时间和道具数量更新使用道具按钮显示和灰化情况
  435. self.extra_item_getwayBtn_obj:SetActive(goods_num <= 0) -- 获取途径按钮
  436. self.extra_item_useBtn_obj:SetActive(goods_num > 0) -- 使用按钮
  437. if goods_num > 0 then
  438. local btn_gray = time_limit - rest_offline_time < 3600
  439. SetImageGray(self.extra_item_useBtn_img, btn_gray)
  440. SetTMPSharedMaterial(self.extra_item_useBtn_lb_tmp, btn_gray
  441. and ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn
  442. or ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkOrangeBtn)
  443. end
  444. -- 需要默认打开离线挂机节点
  445. if self.need_show_offline_con then
  446. self.extra_time_con_obj:SetActive(true)
  447. self.need_show_offline_con = false
  448. end
  449. end
  450. -- 点击离线加成道具使用按钮回调
  451. function ExpHangUpReceiveView:OnExtraItemUseBtnClicked(x, y)
  452. local goods_id = ExpDunModel.OfflineGoodsId
  453. local goods_num = GoodsModel:getInstance():GetTypeGoodsNum(goods_id)
  454. if goods_num > 0 then
  455. local offline_exp, rest_offline_time = self.model:GetHangUpOfflineData()
  456. local callback = function()
  457. local goods_list = GoodsModel:getInstance():GetTypeGoods(goods_id)
  458. if TableSize(goods_list) > 0 then
  459. GoodsModel:getInstance():Fire(GoodsModel.REQUEST_CCMD_EVENT, 15050, goods_list[1].goods_id, goods_list[1].type_id, 1)
  460. end
  461. end
  462. local time_limit = self.model:GetExpDunConfig("time_limit").value
  463. if time_limit - rest_offline_time < 3600 then -- 时间基本满了,不给充能
  464. Message.show("时间已满,无需使用", "fault")
  465. elseif time_limit - rest_offline_time >= 3600 and time_limit - rest_offline_time < 7200 then -- 充一次会溢出,二次确认
  466. local ask_str = "使用后,部分时间将溢出。\n是否使用?"
  467. Alert.show(ask_str, Alert.Type.Two, callback, nil, "确定", "取消")
  468. else
  469. callback()
  470. end
  471. else
  472. -- 弹出获取途径
  473. UIToolTipMgr:getInstance():AppendGoodsTips(goods_id, x, y, nil, nil, nil, false, true)
  474. end
  475. end
  476. function ExpHangUpReceiveView:DestroySuccess( )
  477. cc.ActionManager:getInstance():removeAllActionsFromTarget(self.fill_add)
  478. self.model:ClearHangupLoginCallbackId()
  479. if self.act_buff_timer_id then
  480. GlobalTimerQuest:CancelQuest(self.act_buff_timer_id)
  481. self.act_buff_timer_id = nil
  482. end
  483. if self.extra_awardItem then
  484. UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, self.extra_awardItem)
  485. self.extra_awardItem = nil
  486. end
  487. end