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

651 行
24 KiB

  1. DailyRechargePelletView = DailyRechargePelletView or BaseClass(BaseItem)
  2. local DailyRechargePelletView = DailyRechargePelletView
  3. local GetLocalPositionX = GetLocalPositionX
  4. local GetLocalPositionY = GetLocalPositionY
  5. -- DailyRechargePelletView.Width = 200
  6. -- DailyRechargePelletView.Height = 90
  7. function DailyRechargePelletView:__init(parent_wnd,prefab_asset,layer_name,sub_type)
  8. self.base_file = "dailyRecharge"
  9. self.layout_file = "DailyRechargePelletView"
  10. self.layer_name = layer_name
  11. self.sub_type = sub_type
  12. self.model = RechargeActivityModel:getInstance()
  13. self.list_item_left = {}
  14. self.probAwardItems = {}
  15. self.isStuckTimesNum = 0--检测球是否卡住
  16. self.fireBtnPosYMoveNum = -5 --按钮下压高度
  17. self.isPosCanFire = false
  18. self.eachPowerUpTime = 0.4-- 蓄力间隔
  19. self.ifCanKeyUp = false -- 按循序keydown-蓄力-发射才给发射,防止玩家一直按住蓄力等待下回合发射
  20. self.isTimeCanFire = true--可以玩球
  21. self.isGaming = false--游戏状态
  22. self.powerNum = 0
  23. self.cur_draw_skip_flag = false -- 防止等待协议的时候玩家点选了跳过动画状态,每次抽奖都要记录一次
  24. self.time_out_reset_flag = false -- 如果玩家按住抽奖按钮过久,在自动发送84协议之前超时收到84的话,凭此状态重置动画界面
  25. self.speed_common = 10
  26. self.speed_power = 2
  27. self.speed_moving = 1
  28. self.need_reupdate_view = false
  29. self.per_pos_list = {--进度条用到
  30. [0] = 0,
  31. [1] = 0.164, [2] = 0.375,
  32. [3] = 0.582, [4] = 0.797,
  33. [5] = 1,
  34. }
  35. -- 弹珠活动状态查询
  36. CustomActivityModel:getInstance():Fire(CustomActivityModel.PROTO_CCMD_EVENT, 33180)
  37. self:Load()
  38. end
  39. function DailyRechargePelletView:Load_callback()
  40. self.nodes = {
  41. "powerFireBtn_mask/powerFireBtn:obj", "powerFireBtn_mask:obj",
  42. "powerFireBtn_mask/powerFireBtnRedDot:obj",
  43. "spring:img", "ball","bg:raw", "lb_look:obj",
  44. "powerSigns/powerSign2:obj", "powerSigns/powerSign3:obj", "powerSigns/powerSign6:obj",
  45. "powerSigns/powerSign1:obj", "powerSigns/powerSign4:obj", "powerSigns/powerSign5:obj", "powerSigns/powerSign7:obj", "toggle_jump:tog",
  46. -------------------------
  47. "loadingReword/loading_txt5:tmp", "loadingReword/loading_txt4:tmp", "loadingReword/loading_txt2:tmp",
  48. "loadingReword/loading_txt3:tmp", "loadingReword/loading_txt1:tmp",
  49. -------------------------
  50. "loadingReword/loading/emT_loadSign4:img", "loadingReword/loading/emT_loadSign5:img", "loadingReword/loading/emT_loadSign1:img",
  51. "loadingReword/loading/emT_loadSign2:img", "loadingReword/loading/emT_loadSign3:img",
  52. -------------------------
  53. "loadingReword/redDot3:obj", "loadingReword/redDot1:obj", "loadingReword/redDot2:obj",
  54. "loadingReword/redDot4:obj", "loadingReword/redDot5:obj",
  55. -------------------------
  56. "loadingReword/gift_icon4", "loadingReword/gift_icon5", "loadingReword/gift_icon2",
  57. "loadingReword/gift_icon3", "loadingReword/gift_icon1",
  58. -------------------------
  59. "loadingReword/loading:img", "loadingReword/loading/cue_bg", "loadingReword/loading/cue_bg/loading_txt:tmp",
  60. -------------------------
  61. "showDifRewardCon/showDifRewardCon_bg/ScrollView_difReward/Viewport/Content_reward","showDifRewardCon:obj","showDifRewardCon/showDifRewardCon_bg:obj",
  62. }
  63. self:GetChildren(self.nodes)
  64. -------------------------
  65. self.box_clikc_obj = {}
  66. self.box_clikc_obj[1] = self:GetChild("getPositions/pos1/quality_img").gameObject
  67. self.box_clikc_obj[2] = self:GetChild("getPositions/pos2/quality_img").gameObject
  68. self.box_clikc_obj[3] = self:GetChild("getPositions/pos3/quality_img").gameObject
  69. self.box_clikc_obj[4] = self:GetChild("getPositions/pos4/quality_img").gameObject
  70. self.box_clikc_obj[5] = self:GetChild("getPositions/pos5/quality_img").gameObject
  71. -------------------------
  72. self:AddEvents()
  73. self.powerSign_objs = self.powerSign_objs or {}
  74. for i=1,7 do
  75. self.powerSign_objs[i] = self["powerSign" .. i .. "_obj"]
  76. end
  77. self.finalPos_tranfs ={}
  78. for i=1,5 do
  79. self.finalPos_tranfs[i] = self:GetChild("getPositions/pos"..i)
  80. end
  81. -------------------------
  82. self.springDeltaY = GetSizeDeltaY(self.spring)
  83. self.springStartDeltaY = GetSizeDeltaY(self.spring)
  84. self.springColiderPosX = GetLocalPositionX(self.spring)
  85. self.springColiderPosY = GetLocalPositionY(self.spring) + GetSizeDeltaY(self.spring)
  86. self.ball_Riridbody = self.ball:GetComponent("Rigidbody2D")
  87. self:SetPowerSignsActive(false)
  88. self:ResetGame()
  89. self.bg_res = self.bg_res == "dailyRecharge_bg_1" and "dailyRecharge_bg_2" or "dailyRecharge_bg_1"
  90. lua_resM:setOutsideRawImage(self,self.bg_raw,GameResPath.GetViewBigBg(self.bg_res),false)
  91. -- if self.need_refreshData then
  92. self:UpdateView()
  93. -- end
  94. self:StartBgAction()
  95. end
  96. function DailyRechargePelletView:StartBgAction( )
  97. self.change_need = self.speed_common
  98. self.change_index = 0
  99. local function clockFun()
  100. self.change_index = self.change_index + 1
  101. if self.change_index >= self.change_need then
  102. self.bg_res = self.bg_res == "dailyRecharge_bg_1" and "dailyRecharge_bg_2" or "dailyRecharge_bg_1"
  103. lua_resM:setOutsideRawImage(self,self.bg_raw,GameResPath.GetViewBigBg(self.bg_res),false)
  104. self.change_index = 0
  105. end
  106. end
  107. self.close_time_id = self.close_time_id GlobalTimerQuest:AddPeriodQuest(clockFun, 0.1, -1)
  108. end
  109. function DailyRechargePelletView:RefreshRed( )
  110. local basic = self.model:GetPelletBasicInfo()
  111. if basic and basic.award_status then
  112. for i=1,5 do
  113. if basic.award_status[i] then
  114. self["redDot" .. i.."_obj"]:SetActive(basic.award_status[i].status == 1)
  115. else
  116. self["redDot" .. i.."_obj"]:SetActive(false)
  117. end
  118. end
  119. end
  120. -------------------------
  121. local tickid = self.model:GetPelletTicketId( )
  122. local num = GoodsModel:getInstance():GetTypeGoodsNum( tickid )
  123. self.powerFireBtnRedDot_obj:SetActive(num > 0)
  124. end
  125. function DailyRechargePelletView:PlayStatus( )
  126. --(0未达成 1未领 2已领)
  127. local have_can_get = false--存在未领
  128. local have_cannot = false--存在未达成
  129. local basic = self.model:GetPelletBasicInfo()
  130. if basic and basic.award_status then
  131. for i=1,5 do
  132. if basic.award_status[i] then
  133. have_can_get = have_can_get or basic.award_status[i].status == 1
  134. have_cannot = have_cannot or basic.award_status[i].status == 0
  135. end
  136. end
  137. end
  138. if (have_cannot == false) and have_can_get then
  139. return "get"
  140. end
  141. -------------------------
  142. local cost_id = self.model:GetPelletTicketId( self.sub_type )
  143. local num = GoodsModel:getInstance():GetTypeGoodsNum( cost_id )
  144. if num == 0 then
  145. return "num"
  146. end
  147. -------------------------
  148. -- 追加返回一个状态,如果验证错误就不执行弹起操作
  149. -- local validation_data = CustomActivityModel:getInstance():GetPelletEventValidationData()
  150. -- if validation_data and validation_data.errcode ~= 1 then
  151. -- return "error"
  152. -- end
  153. end
  154. function DailyRechargePelletView:AddEvents( )
  155. local function clickFireHandlerDown(target)
  156. local status = self:PlayStatus()
  157. if self.isGaming then
  158. Message.show("正在抽奖中,请稍后重试...")
  159. return
  160. end
  161. if status == "get" then
  162. Message.show("请先领取次数宝箱~")
  163. return
  164. elseif status == "num" then
  165. local cost_id = self.model:GetPelletTicketId( self.sub_type )
  166. UIToolTipMgr:getInstance():AppendGoodsTips(cost_id,nil,nil,nil,nil,nil,nil,nil,true)
  167. return
  168. end
  169. -------------------------
  170. -- SetLocalPositionY(self.powerFireBtn.transform, self.fireBtnPosYMoveNum) --按钮下压
  171. if not self.isPosCanFire then return end
  172. -- if self.toggle_jump_tog.isOn then
  173. -- CustomActivityModel:getInstance():Fire(CustomActivityModel.PROTO_CCMD_EVENT, 33179, self.sub_type or 0)
  174. -- return
  175. -- end
  176. -- self:StartPowerUpTimer(self.eachPowerUpTime)
  177. -- 现在开始抽奖无论如何都要发送79协议进行验证
  178. CustomActivityModel:getInstance():Fire(CustomActivityModel.PROTO_CCMD_EVENT, 33179, self.sub_type or 0)
  179. self.cur_draw_skip_flag = self.toggle_jump_tog.isOn
  180. if not self.cur_draw_skip_flag then
  181. self:StartPowerUpTimer(self.eachPowerUpTime)
  182. end
  183. end
  184. local function clickFireHandlerUp(target)
  185. -- local status = self:PlayStatus()
  186. -- if status then
  187. -- return
  188. -- end
  189. -------------------------
  190. -- SetLocalPositionY(self.powerFireBtn.transform, 0) -- 按钮回升
  191. self:FireFun()
  192. end
  193. AddDownEvent(self.powerFireBtn_obj,clickFireHandlerDown,1)
  194. AddUpEvent(self.powerFireBtn_obj,clickFireHandlerUp,2)
  195. local function call_back( target )
  196. if target == self.lb_look_obj then
  197. self.model:Fire(RechargeActivityModel.OPEN_DAILY_PELLET_RECORD)
  198. elseif target == self.showDifRewardCon_obj then
  199. self.showDifRewardCon_obj:SetActive(false)
  200. elseif target == self.box_clikc_obj[1] then
  201. self:ShowBoxAward(1)
  202. elseif target == self.box_clikc_obj[2] then
  203. self:ShowBoxAward(2)
  204. elseif target == self.box_clikc_obj[3] then
  205. self:ShowBoxAward(3)
  206. elseif target == self.box_clikc_obj[4] then
  207. self:ShowBoxAward(4)
  208. elseif target == self.box_clikc_obj[5] then
  209. self:ShowBoxAward(5)
  210. end
  211. end
  212. AddClickEvent(self.lb_look_obj,call_back,false)
  213. AddClickEvent(self.showDifRewardCon_obj,call_back,false)
  214. AddClickEvent(self.box_clikc_obj[1],call_back,false)
  215. AddClickEvent(self.box_clikc_obj[2],call_back,false)
  216. AddClickEvent(self.box_clikc_obj[3],call_back,false)
  217. AddClickEvent(self.box_clikc_obj[4],call_back,false)
  218. AddClickEvent(self.box_clikc_obj[5],call_back,false)
  219. local function UPDATE_PELLET_INFO( )
  220. if not self.isGaming then -- 游戏进行期间不更新界面数据
  221. self.need_reupdate_view = false
  222. self:UpdateView()
  223. else
  224. self.need_reupdate_view = true
  225. end
  226. end
  227. self:BindEvent(self.model, RechargeActivityModel.UPDATE_PELLET_INFO, UPDATE_PELLET_INFO)
  228. local function onBagChange()
  229. self:RefreshRed()
  230. end
  231. self:BindEvent(GoodsModel:getInstance(), GoodsModel.CHANGE_BAGLIST, onBagChange)
  232. local function update_validation()
  233. local validation_data = CustomActivityModel:getInstance():GetPelletEventValidationData()
  234. if not validation_data or (validation_data and validation_data.errcode ~= 1) then -- 验证错误,立即重置动画
  235. self:ClearAllTimer()
  236. cc.ActionManager:getInstance():removeAllActionsFromTarget(self.spring)
  237. self:ResetGame()
  238. elseif validation_data and validation_data.errcode == 1 then
  239. if self.cur_draw_skip_flag then -- 当此抽奖是要跳过动画的,就发0
  240. CustomActivityModel:getInstance():Fire(CustomActivityModel.PROTO_CCMD_EVENT, 33184, 0, self.sub_type)
  241. else
  242. self.time_out_reset_flag = true
  243. local function time_out_reset_func()
  244. if self.isGaming and self.time_out_reset_flag then
  245. self:ClearAllTimer()
  246. cc.ActionManager:getInstance():removeAllActionsFromTarget(self.spring)
  247. self:ResetGame()
  248. self.ifCanKeyUp = false -- 这个可以屏蔽鼠标抬起的表现
  249. -- 重置弹簧
  250. self:ActionDeltaYBack(0, self.springStartDeltaY, self.spring)
  251. self.powerNum = 0
  252. self:SetPowerSignsActive(false)
  253. self.springDeltaY = self.springStartDeltaY
  254. self.time_out_reset_flag = false
  255. Message.show("由于您长时间未操作,已为您自动完成并重置")
  256. if self.need_reupdate_view then -- 重新刷新界面
  257. self.need_reupdate_view = false
  258. self:UpdateView()
  259. end
  260. end
  261. end
  262. self:CancelTimer(self.time_out_reset_func_id)
  263. -- 延迟20秒,超时了就强制重置动画
  264. self.time_out_reset_func_id = setTimeout(time_out_reset_func, 20)
  265. end
  266. end
  267. end
  268. self:BindEvent(self.model, RechargeActivityModel.UPDATE_PELLET_VALIDATION, update_validation)
  269. -- 如果玩家按住按钮太久导致验证超时,则需要直接中止动画
  270. local function cancel_time_out_reset_func()
  271. self:CancelTimer(self.time_out_reset_func_id)
  272. self.time_out_reset_flag = false
  273. if self.need_reupdate_view then -- 重新刷新界面
  274. self.need_reupdate_view = false
  275. self:UpdateView()
  276. end
  277. end
  278. self:BindEvent(self.model, RechargeActivityModel.PELLET_VALIDATION_SUCCEED, cancel_time_out_reset_func)
  279. end
  280. function DailyRechargePelletView:ShowBoxAward( index )
  281. local base_info = self.model:GetPelletBasicInfo()
  282. if not base_info then return end
  283. local award_cfg = self.model:GetPelletRewardCfg(true, true, base_info.round, true, index)
  284. if award_cfg then
  285. local data = {}
  286. data.award = award_cfg or {}
  287. data.base_type = CustomActivityModel.CustomActBaseType.DAILY_RECHARGE
  288. data.sub_type = CustomActivityModel:getInstance():getActMinSubType(data.base_type)
  289. data.des = HtmlColorTxt("宝箱品质越高,获得极品道具的概率越高", ColorUtil.PURPLE_DARK)
  290. data.des_off_x = -58
  291. GlobalEventSystem:Fire(CompetingListModel.OPEN_COMPETING_LIST_AWARD_SHOW_VIEW, data)--通用提示界面
  292. end
  293. -------------------------
  294. -- do return end
  295. -------------------------
  296. -- self.showDifRewardCon_obj:SetActive(true)
  297. -- local pos_list = {-199,-95,11,119,221}
  298. -- SetAnchoredPositionX( self.showDifRewardCon_bg.transform, pos_list[index] or pos_list[1] )
  299. -- -------------------------
  300. -- -- local str_reward = [[ [{200,{100,102603,1}},{300,{100,102603,2}},{250,{100,102603,1}},{100,{100,102501,2}},{200,{100,109032,1}}] ]]
  301. -- local rewardsList = stringtotable(str_reward)
  302. -- for k,v in pairs(rewardsList) do
  303. -- v.color = GoodsModel:getInstance():GetGoodsBasicByTypeId(v[2][2]).color --按品质排序
  304. -- end
  305. -- local sort_func = function ( a, b )
  306. -- return a.color > b.color
  307. -- end
  308. -- table.sort(rewardsList, sort_func)
  309. -- for k,v in pairs(rewardsList) do
  310. -- if self.probAwardItems[k] == nil then
  311. -- self.probAwardItems[k] = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem,self.Content_reward)
  312. -- self.probAwardItems[k]:SetItemSize(49, 49)
  313. -- end
  314. -- self.probAwardItems[k]:SetData(v[2][2],v[2][3])
  315. -- self.probAwardItems[k].transform.pivot = Vector2(0, 1)
  316. -- self.probAwardItems[k].gameObject:SetActive(true)
  317. -- end
  318. -- for i=#rewardsList,#self.probAwardItems do
  319. -- self.probAwardItems[i].gameObject:SetActive(false)
  320. -- end
  321. end
  322. function DailyRechargePelletView:FireFun( )
  323. if self.ifCanKeyUp == false then return end
  324. if not self.isPosCanFire or not self.isTimeCanFire then return end
  325. self.ifCanKeyUp = false
  326. self:CancelTimer(self.powerUp_timer_id)
  327. local num = 1 - (GetSizeDeltaY(self.spring)/self.springStartDeltaY) --系数
  328. self.change_need = self.speed_moving
  329. self.ball_Riridbody:AddForce(Vector2(0,600 + (820*num)))
  330. cc.ActionManager:getInstance():removeAllActionsFromTarget(self.spring)
  331. self:ActionDeltaYBack(0.1,self.springStartDeltaY,self.spring)
  332. self.startTime = tonumber(TimeUtil:getServerTime())
  333. local function delay( ) -- 弹簧不能瞬移恢复球还在移动
  334. self.powerNum = 0
  335. self:SetPowerSignsActive(false)
  336. self.springDeltaY = self.springStartDeltaY--self.spring_img:SetNativeSize()
  337. end
  338. self:CancelTimer(self.spring_delay_timer)
  339. self.spring_delay_timer = GlobalTimerQuest:AddDelayQuest(delay,0.1)
  340. self.isPosCanFire = false
  341. end
  342. function DailyRechargePelletView:StartPowerUpTimer(time)
  343. if not self.isPosCanFire or not self.isTimeCanFire then return end
  344. self.isGaming = true
  345. self.change_need = self.speed_power
  346. self.ifCanKeyUp = true
  347. -- Message.show("这里要控制不让关闭界面or重置,让它完整跑完")
  348. self.powerNum = 0
  349. local onUpdate = function ()
  350. self.powerNum = self.powerNum + 1
  351. self.springDeltaY = self.springDeltaY - 8
  352. self:ActionDeltaYBack(time,self.springDeltaY,self.spring)
  353. self:SetPowerSignsActive(true,self.powerNum)
  354. if self.powerNum >= 7 then
  355. self:CancelTimer(self.powerUp_timer_id)
  356. end
  357. end
  358. if not self.powerUp_timer_id then
  359. self.powerUp_timer_id = GlobalTimerQuest:AddPeriodQuest(onUpdate, time, -time)
  360. onUpdate()
  361. end
  362. end
  363. function DailyRechargePelletView:SetPowerSignsActive( bool,num )
  364. if bool then
  365. self.powerSign_objs[num]:SetActive(true)
  366. else
  367. for i = 1, #self.powerSign_objs do
  368. self.powerSign_objs[i]:SetActive(false)
  369. end
  370. end
  371. end
  372. function DailyRechargePelletView:ActionDeltaYBack( time ,deltaY,transf)
  373. local action_1 = cc.SizeTo.New( time, GetSizeDeltaX(transf), deltaY)
  374. local function action_call_back( )
  375. end
  376. local action_call = cc.CallFunc.New( action_call_back )
  377. local final_action = cc.Sequence.New( action_1,action_call )
  378. self:AddAction(final_action, transf)
  379. end
  380. function DailyRechargePelletView:ResetGame()
  381. if self.is_loaded then
  382. self.break_game_mask_req = false
  383. self.isGaming = false
  384. self.change_need = self.speed_common
  385. self.ball_Riridbody.velocity = Vector2(0, -1)
  386. SetLocalPosition(self.ball.transform, 330, -150, 0)
  387. self:StartPelletTimer(99999)
  388. end
  389. end
  390. function DailyRechargePelletView:CancelTimer( timer )
  391. if timer == self.start_timer_id then
  392. GlobalTimerQuest:CancelQuest(self.start_timer_id)
  393. self.start_timer_id = nil
  394. elseif timer == self.powerUp_timer_id then
  395. GlobalTimerQuest:CancelQuest(self.powerUp_timer_id)
  396. self.powerUp_timer_id = nil
  397. elseif timer == self.spring_delay_timer then
  398. GlobalTimerQuest:CancelQuest(self.spring_delay_timer)
  399. self.spring_delay_timer = nil
  400. elseif timer == self.resetGame_delay_timer then
  401. GlobalTimerQuest:CancelQuest(self.resetGame_delay_timer)
  402. self.resetGame_delay_timer = nil
  403. elseif timer == self.loadingTxt_delay_timer then
  404. GlobalTimerQuest:CancelQuest(self.loadingTxt_delay_timer)
  405. self.loadingTxt_delay_timer = nil
  406. elseif timer == self.time_out_reset_func_id then
  407. GlobalTimerQuest:CancelQuest(self.time_out_reset_func_id)
  408. self.time_out_reset_func_id = nil
  409. end
  410. end
  411. function DailyRechargePelletView:IsBallInStuckPos( )
  412. local ballPosX = GetLocalPositionX(self.ball.transform)
  413. local ballPosY = GetLocalPositionY(self.ball.transform)
  414. local bool1 = (ballPosY >=self.springColiderPosY -35) and (ballPosY <=self.springColiderPosY + 35)
  415. and (ballPosX >=self.springColiderPosX-35) and (ballPosX <=self.springColiderPosX + 35)
  416. local bool2 = GetLocalPositionY(self.ball.transform) < GetLocalPositionY(self.finalPos_tranfs[1])
  417. if not bool1 and not bool2 then
  418. return true
  419. else
  420. return false
  421. end
  422. end
  423. function DailyRechargePelletView:IsBallStuck( ) -- Updata中判断的
  424. local waitTime = 10
  425. if self:IsBallInStuckPos( ) or (self.isGaming and (self.change_need == self.speed_moving)) then
  426. self.isStuckTimesNum = self.isStuckTimesNum + 1
  427. if self.isStuckTimesNum == waitTime then
  428. Message.show("球好像卡住了,重新开始吧","fault")
  429. return true
  430. end
  431. else
  432. self.isStuckTimesNum = 0
  433. return false
  434. end
  435. end
  436. function DailyRechargePelletView:StartPelletTimer(stime)
  437. local time = stime
  438. local onUpdate = function ()
  439. if self:IsBallStuck( ) then
  440. Message.show("球好像卡住了,重新开始吧","fault")
  441. -- self.model:Fire(EmpowerConst.EMPOWER_REQ_EVENT, 41402,0,0,"0")
  442. self:CancelTimer(self.start_timer_id)
  443. self:ResetGame()
  444. return
  445. end
  446. local ballPosX = GetLocalPositionX(self.ball.transform)
  447. local ballPosY = GetLocalPositionY(self.ball.transform)
  448. time = time - 1
  449. if (ballPosY >=self.springColiderPosY -35) and (ballPosY <=self.springColiderPosY + 35)
  450. and (ballPosX >=self.springColiderPosX-35) and (ballPosX <=self.springColiderPosX + 35) then
  451. self.isPosCanFire = true
  452. else
  453. self.isPosCanFire = false
  454. end
  455. if GetLocalPositionY(self.ball.transform) < GetLocalPositionY(self.finalPos_tranfs[1]) then -- 不用触发器了-160
  456. for i = 1, 5 do
  457. local rangeNum = 51
  458. local pointPosX = GetLocalPositionX(self.finalPos_tranfs[i])
  459. if (ballPosX >= pointPosX - rangeNum) and (ballPosX <= pointPosX + rangeNum ) then
  460. -- CustomActivityModel:getInstance():Fire(CustomActivityModel.PROTO_CCMD_EVENT, 33179, self.sub_type or 0)
  461. local validation_data = CustomActivityModel:getInstance():GetPelletEventValidationData()
  462. if validation_data and validation_data.errcode == 1 then
  463. CustomActivityModel:getInstance():Fire(CustomActivityModel.PROTO_CCMD_EVENT, 33184, i, self.sub_type)
  464. end
  465. self.break_game_mask_req = true--加个标记,防止切界面的时候重复请求玩游戏
  466. self.time_out_reset_flag = false -- 自动请求了,下面也会重置动画,这个变量要取消
  467. self:CancelTimer(self.start_timer_id)
  468. self:CancelTimer(self.time_out_reset_func_id)
  469. local function delay( ) -- 让弹跳的球缓一下
  470. self:ResetGame()
  471. end
  472. self.resetGame_delay_timer = GlobalTimerQuest:AddDelayQuest(delay,2)
  473. end
  474. end
  475. end
  476. if time < 0 then
  477. -- Message.show("游戏结束,时间到","fault")
  478. self:CancelTimer(self.start_timer_id)
  479. self:CancelTimer(self.time_out_reset_func_id)
  480. end
  481. end
  482. if not self.start_timer_id then
  483. self.start_timer_id = GlobalTimerQuest:AddPeriodQuest(onUpdate, 1, -1)
  484. onUpdate()
  485. end
  486. end
  487. function DailyRechargePelletView:UpdateView( )
  488. self:RefreshLeft()
  489. self:RefreshRed()
  490. end
  491. function DailyRechargePelletView:ShowPer( cur )
  492. if cur < (self.per_num_list[5] or 0) then
  493. for i=1,5 do
  494. if cur >= self.per_num_list[i] then
  495. show_per = self.per_pos_list[i]
  496. else
  497. local temp_change_num = self.per_num_list[i] - self.per_num_list[i-1]
  498. local temp_num_have = cur - self.per_num_list[i-1]
  499. local temp_per = temp_num_have/temp_change_num
  500. show_per = self.per_pos_list[i-1] + (self.per_pos_list[i] - self.per_pos_list[i-1])*temp_per
  501. break
  502. end
  503. end
  504. else
  505. show_per = 1
  506. end
  507. self.loading_img.fillAmount = show_per
  508. SetAnchoredPositionY( self.cue_bg.transform, show_per*419 )
  509. self.loading_txt_tmp.text = cur
  510. for i=1,5 do
  511. if i ~= 5 and i ~= 3 then
  512. lua_resM:setImageSprite(self, self["emT_loadSign"..i.."_img"], "dailyRecharge_asset", cur >= (self.per_num_list[i] or 100) and "dailyRecharge_btn_6" or "dailyRecharge_btn_7",true)
  513. else
  514. lua_resM:setImageSprite(self, self["emT_loadSign"..i.."_img"], "dailyRecharge_asset", cur >= (self.per_num_list[i] or 100) and "dailyRecharge_btn_8" or "dailyRecharge_btn_9",true)
  515. end
  516. end
  517. end
  518. function DailyRechargePelletView:RefreshLeft( )
  519. local base_info = self.model:GetPelletBasicInfo()
  520. if not base_info then return end
  521. -------------------------
  522. self.per_num_list = {[0] = 0}
  523. for k,v in pairs(base_info.award_status) do
  524. self.per_num_list[#self.per_num_list+1] = v.count
  525. end
  526. self:ShowPer(base_info.curr_count)
  527. -------------------------
  528. local show_list = self.model:GetPelletCountRewardCfg( tonumber(base_info.round) )
  529. local function get_award_status( data,index )
  530. if data and data[index] then
  531. return data[index].status
  532. end
  533. return 0
  534. end
  535. for i=1,5 do
  536. if show_list and show_list[i] then
  537. self["loading_txt"..i.."_tmp"].text = self.per_num_list[i]
  538. self["redDot"..i.."_obj"]:SetActive(false)
  539. local reward = stringtotable(show_list[i].award)[1]
  540. local function click_call( )
  541. local new_base_info = self.model:GetPelletBasicInfo()
  542. if get_award_status(new_base_info.award_status,i) == 1 then
  543. --可领
  544. CustomActivityModel:getInstance():Fire(CustomActivityModel.PROTO_CCMD_EVENT, 33181,new_base_info.award_status[i].count)
  545. else
  546. UIToolTipMgr:getInstance():AppendGoodsTips(reward[2], nil, nil,nil,nil,nil,nil,true)
  547. end
  548. end
  549. if not self.list_item_left[i] then
  550. self.list_item_left[i] = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem,self["gift_icon"..i])
  551. self.list_item_left[i]:SetItemSize(59,59)
  552. self.list_item_left[i]:SetIsAct(true)
  553. end
  554. self.list_item_left[i]:SetDataWithMapId(reward[2], reward[3], reward[1])
  555. self.list_item_left[i]:SetCallBack(click_call)
  556. -------------------------
  557. if get_award_status(base_info.award_status,i) == 2 then
  558. --已领
  559. self.list_item_left[i]:SetGray(true)
  560. self.list_item_left[i]:SetNumLimitVisible(true,9)
  561. elseif get_award_status(base_info.award_status,i) == 0 then
  562. --未达成
  563. self.list_item_left[i]:SetGray(false)
  564. self.list_item_left[i]:SetNumLimitVisible(false,9)
  565. else
  566. self.list_item_left[i]:SetGray(false)
  567. self.list_item_left[i]:SetNumLimitVisible(false,9)
  568. end
  569. -------------------------
  570. end
  571. end
  572. end
  573. function DailyRechargePelletView:ClearAllTimer( )
  574. self:CancelTimer(self.start_timer_id)
  575. self:CancelTimer(self.powerUp_timer_id)
  576. self:CancelTimer(self.spring_delay_timer)
  577. self:CancelTimer(self.resetGame_delay_timer)
  578. self:CancelTimer(self.loadingTxt_delay_timer)
  579. self:CancelTimer(self.time_out_reset_func_id)
  580. end
  581. function DailyRechargePelletView:__delete( )
  582. self:ClearAllTimer()
  583. cc.ActionManager:getInstance():removeAllActionsFromTarget(self.spring)
  584. if self.close_time_id then
  585. GlobalTimerQuest:CancelQuest(self.close_time_id)
  586. self.close_time_id = nil
  587. end
  588. if self.list_item_left then
  589. for k,v in pairs(self.list_item_left) do
  590. UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, v)
  591. end
  592. self.list_item_left = {}
  593. end
  594. for i=1,#self.probAwardItems do
  595. if self.probAwardItems[i] then
  596. UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, self.probAwardItems[i])
  597. self.probAwardItems[i] = nil
  598. end
  599. end
  600. end