|
DailyRechargePelletView = DailyRechargePelletView or BaseClass(BaseItem)
|
|
local DailyRechargePelletView = DailyRechargePelletView
|
|
local GetLocalPositionX = GetLocalPositionX
|
|
local GetLocalPositionY = GetLocalPositionY
|
|
-- DailyRechargePelletView.Width = 200
|
|
-- DailyRechargePelletView.Height = 90
|
|
|
|
function DailyRechargePelletView:__init(parent_wnd,prefab_asset,layer_name,sub_type)
|
|
self.base_file = "dailyRecharge"
|
|
self.layout_file = "DailyRechargePelletView"
|
|
self.layer_name = layer_name
|
|
self.sub_type = sub_type
|
|
self.model = RechargeActivityModel:getInstance()
|
|
|
|
self.list_item_left = {}
|
|
self.probAwardItems = {}
|
|
|
|
self.isStuckTimesNum = 0--检测球是否卡住
|
|
self.fireBtnPosYMoveNum = -5 --按钮下压高度
|
|
self.isPosCanFire = false
|
|
self.eachPowerUpTime = 0.4-- 蓄力间隔
|
|
self.ifCanKeyUp = false -- 按循序keydown-蓄力-发射才给发射,防止玩家一直按住蓄力等待下回合发射
|
|
self.isTimeCanFire = true--可以玩球
|
|
self.isGaming = false--游戏状态
|
|
self.powerNum = 0
|
|
self.cur_draw_skip_flag = false -- 防止等待协议的时候玩家点选了跳过动画状态,每次抽奖都要记录一次
|
|
self.time_out_reset_flag = false -- 如果玩家按住抽奖按钮过久,在自动发送84协议之前超时收到84的话,凭此状态重置动画界面
|
|
self.speed_common = 10
|
|
self.speed_power = 2
|
|
self.speed_moving = 1
|
|
self.need_reupdate_view = false
|
|
self.per_pos_list = {--进度条用到
|
|
[0] = 0,
|
|
[1] = 0.164, [2] = 0.375,
|
|
[3] = 0.582, [4] = 0.797,
|
|
[5] = 1,
|
|
}
|
|
-- 弹珠活动状态查询
|
|
CustomActivityModel:getInstance():Fire(CustomActivityModel.PROTO_CCMD_EVENT, 33180)
|
|
self:Load()
|
|
end
|
|
|
|
function DailyRechargePelletView:Load_callback()
|
|
self.nodes = {
|
|
"powerFireBtn_mask/powerFireBtn:obj", "powerFireBtn_mask:obj",
|
|
"powerFireBtn_mask/powerFireBtnRedDot:obj",
|
|
"spring:img", "ball","bg:raw", "lb_look:obj",
|
|
"powerSigns/powerSign2:obj", "powerSigns/powerSign3:obj", "powerSigns/powerSign6:obj",
|
|
"powerSigns/powerSign1:obj", "powerSigns/powerSign4:obj", "powerSigns/powerSign5:obj", "powerSigns/powerSign7:obj", "toggle_jump:tog",
|
|
|
|
-------------------------
|
|
"loadingReword/loading_txt5:tmp", "loadingReword/loading_txt4:tmp", "loadingReword/loading_txt2:tmp",
|
|
"loadingReword/loading_txt3:tmp", "loadingReword/loading_txt1:tmp",
|
|
-------------------------
|
|
"loadingReword/loading/emT_loadSign4:img", "loadingReword/loading/emT_loadSign5:img", "loadingReword/loading/emT_loadSign1:img",
|
|
"loadingReword/loading/emT_loadSign2:img", "loadingReword/loading/emT_loadSign3:img",
|
|
-------------------------
|
|
"loadingReword/redDot3:obj", "loadingReword/redDot1:obj", "loadingReword/redDot2:obj",
|
|
"loadingReword/redDot4:obj", "loadingReword/redDot5:obj",
|
|
-------------------------
|
|
"loadingReword/gift_icon4", "loadingReword/gift_icon5", "loadingReword/gift_icon2",
|
|
"loadingReword/gift_icon3", "loadingReword/gift_icon1",
|
|
-------------------------
|
|
"loadingReword/loading:img", "loadingReword/loading/cue_bg", "loadingReword/loading/cue_bg/loading_txt:tmp",
|
|
-------------------------
|
|
"showDifRewardCon/showDifRewardCon_bg/ScrollView_difReward/Viewport/Content_reward","showDifRewardCon:obj","showDifRewardCon/showDifRewardCon_bg:obj",
|
|
}
|
|
self:GetChildren(self.nodes)
|
|
-------------------------
|
|
self.box_clikc_obj = {}
|
|
self.box_clikc_obj[1] = self:GetChild("getPositions/pos1/quality_img").gameObject
|
|
self.box_clikc_obj[2] = self:GetChild("getPositions/pos2/quality_img").gameObject
|
|
self.box_clikc_obj[3] = self:GetChild("getPositions/pos3/quality_img").gameObject
|
|
self.box_clikc_obj[4] = self:GetChild("getPositions/pos4/quality_img").gameObject
|
|
self.box_clikc_obj[5] = self:GetChild("getPositions/pos5/quality_img").gameObject
|
|
-------------------------
|
|
self:AddEvents()
|
|
|
|
self.powerSign_objs = self.powerSign_objs or {}
|
|
for i=1,7 do
|
|
self.powerSign_objs[i] = self["powerSign" .. i .. "_obj"]
|
|
end
|
|
self.finalPos_tranfs ={}
|
|
for i=1,5 do
|
|
self.finalPos_tranfs[i] = self:GetChild("getPositions/pos"..i)
|
|
end
|
|
-------------------------
|
|
self.springDeltaY = GetSizeDeltaY(self.spring)
|
|
self.springStartDeltaY = GetSizeDeltaY(self.spring)
|
|
self.springColiderPosX = GetLocalPositionX(self.spring)
|
|
self.springColiderPosY = GetLocalPositionY(self.spring) + GetSizeDeltaY(self.spring)
|
|
|
|
self.ball_Riridbody = self.ball:GetComponent("Rigidbody2D")
|
|
|
|
self:SetPowerSignsActive(false)
|
|
self:ResetGame()
|
|
|
|
self.bg_res = self.bg_res == "dailyRecharge_bg_1" and "dailyRecharge_bg_2" or "dailyRecharge_bg_1"
|
|
lua_resM:setOutsideRawImage(self,self.bg_raw,GameResPath.GetViewBigBg(self.bg_res),false)
|
|
-- if self.need_refreshData then
|
|
self:UpdateView()
|
|
-- end
|
|
self:StartBgAction()
|
|
end
|
|
|
|
function DailyRechargePelletView:StartBgAction( )
|
|
self.change_need = self.speed_common
|
|
self.change_index = 0
|
|
local function clockFun()
|
|
self.change_index = self.change_index + 1
|
|
if self.change_index >= self.change_need then
|
|
self.bg_res = self.bg_res == "dailyRecharge_bg_1" and "dailyRecharge_bg_2" or "dailyRecharge_bg_1"
|
|
lua_resM:setOutsideRawImage(self,self.bg_raw,GameResPath.GetViewBigBg(self.bg_res),false)
|
|
self.change_index = 0
|
|
end
|
|
end
|
|
self.close_time_id = self.close_time_id GlobalTimerQuest:AddPeriodQuest(clockFun, 0.1, -1)
|
|
end
|
|
|
|
function DailyRechargePelletView:RefreshRed( )
|
|
local basic = self.model:GetPelletBasicInfo()
|
|
if basic and basic.award_status then
|
|
for i=1,5 do
|
|
if basic.award_status[i] then
|
|
self["redDot" .. i.."_obj"]:SetActive(basic.award_status[i].status == 1)
|
|
else
|
|
self["redDot" .. i.."_obj"]:SetActive(false)
|
|
end
|
|
end
|
|
end
|
|
-------------------------
|
|
local tickid = self.model:GetPelletTicketId( )
|
|
local num = GoodsModel:getInstance():GetTypeGoodsNum( tickid )
|
|
self.powerFireBtnRedDot_obj:SetActive(num > 0)
|
|
end
|
|
|
|
function DailyRechargePelletView:PlayStatus( )
|
|
--(0未达成 1未领 2已领)
|
|
local have_can_get = false--存在未领
|
|
local have_cannot = false--存在未达成
|
|
local basic = self.model:GetPelletBasicInfo()
|
|
if basic and basic.award_status then
|
|
for i=1,5 do
|
|
if basic.award_status[i] then
|
|
have_can_get = have_can_get or basic.award_status[i].status == 1
|
|
have_cannot = have_cannot or basic.award_status[i].status == 0
|
|
end
|
|
end
|
|
end
|
|
if (have_cannot == false) and have_can_get then
|
|
return "get"
|
|
end
|
|
-------------------------
|
|
local cost_id = self.model:GetPelletTicketId( self.sub_type )
|
|
local num = GoodsModel:getInstance():GetTypeGoodsNum( cost_id )
|
|
if num == 0 then
|
|
return "num"
|
|
end
|
|
-------------------------
|
|
-- 追加返回一个状态,如果验证错误就不执行弹起操作
|
|
-- local validation_data = CustomActivityModel:getInstance():GetPelletEventValidationData()
|
|
-- if validation_data and validation_data.errcode ~= 1 then
|
|
-- return "error"
|
|
-- end
|
|
end
|
|
|
|
function DailyRechargePelletView:AddEvents( )
|
|
local function clickFireHandlerDown(target)
|
|
local status = self:PlayStatus()
|
|
if self.isGaming then
|
|
Message.show("正在抽奖中,请稍后重试...")
|
|
return
|
|
end
|
|
if status == "get" then
|
|
Message.show("请先领取次数宝箱~")
|
|
return
|
|
elseif status == "num" then
|
|
local cost_id = self.model:GetPelletTicketId( self.sub_type )
|
|
UIToolTipMgr:getInstance():AppendGoodsTips(cost_id,nil,nil,nil,nil,nil,nil,nil,true)
|
|
return
|
|
end
|
|
-------------------------
|
|
-- SetLocalPositionY(self.powerFireBtn.transform, self.fireBtnPosYMoveNum) --按钮下压
|
|
if not self.isPosCanFire then return end
|
|
|
|
-- if self.toggle_jump_tog.isOn then
|
|
-- CustomActivityModel:getInstance():Fire(CustomActivityModel.PROTO_CCMD_EVENT, 33179, self.sub_type or 0)
|
|
-- return
|
|
-- end
|
|
|
|
-- self:StartPowerUpTimer(self.eachPowerUpTime)
|
|
|
|
-- 现在开始抽奖无论如何都要发送79协议进行验证
|
|
CustomActivityModel:getInstance():Fire(CustomActivityModel.PROTO_CCMD_EVENT, 33179, self.sub_type or 0)
|
|
self.cur_draw_skip_flag = self.toggle_jump_tog.isOn
|
|
if not self.cur_draw_skip_flag then
|
|
self:StartPowerUpTimer(self.eachPowerUpTime)
|
|
end
|
|
end
|
|
local function clickFireHandlerUp(target)
|
|
-- local status = self:PlayStatus()
|
|
-- if status then
|
|
-- return
|
|
-- end
|
|
-------------------------
|
|
-- SetLocalPositionY(self.powerFireBtn.transform, 0) -- 按钮回升
|
|
self:FireFun()
|
|
end
|
|
AddDownEvent(self.powerFireBtn_obj,clickFireHandlerDown,1)
|
|
AddUpEvent(self.powerFireBtn_obj,clickFireHandlerUp,2)
|
|
|
|
local function call_back( target )
|
|
if target == self.lb_look_obj then
|
|
self.model:Fire(RechargeActivityModel.OPEN_DAILY_PELLET_RECORD)
|
|
elseif target == self.showDifRewardCon_obj then
|
|
self.showDifRewardCon_obj:SetActive(false)
|
|
elseif target == self.box_clikc_obj[1] then
|
|
self:ShowBoxAward(1)
|
|
elseif target == self.box_clikc_obj[2] then
|
|
self:ShowBoxAward(2)
|
|
elseif target == self.box_clikc_obj[3] then
|
|
self:ShowBoxAward(3)
|
|
elseif target == self.box_clikc_obj[4] then
|
|
self:ShowBoxAward(4)
|
|
elseif target == self.box_clikc_obj[5] then
|
|
self:ShowBoxAward(5)
|
|
end
|
|
end
|
|
AddClickEvent(self.lb_look_obj,call_back,false)
|
|
AddClickEvent(self.showDifRewardCon_obj,call_back,false)
|
|
AddClickEvent(self.box_clikc_obj[1],call_back,false)
|
|
AddClickEvent(self.box_clikc_obj[2],call_back,false)
|
|
AddClickEvent(self.box_clikc_obj[3],call_back,false)
|
|
AddClickEvent(self.box_clikc_obj[4],call_back,false)
|
|
AddClickEvent(self.box_clikc_obj[5],call_back,false)
|
|
|
|
local function UPDATE_PELLET_INFO( )
|
|
if not self.isGaming then -- 游戏进行期间不更新界面数据
|
|
self.need_reupdate_view = false
|
|
self:UpdateView()
|
|
else
|
|
self.need_reupdate_view = true
|
|
end
|
|
end
|
|
self:BindEvent(self.model, RechargeActivityModel.UPDATE_PELLET_INFO, UPDATE_PELLET_INFO)
|
|
|
|
local function onBagChange()
|
|
self:RefreshRed()
|
|
end
|
|
self:BindEvent(GoodsModel:getInstance(), GoodsModel.CHANGE_BAGLIST, onBagChange)
|
|
|
|
local function update_validation()
|
|
local validation_data = CustomActivityModel:getInstance():GetPelletEventValidationData()
|
|
if not validation_data or (validation_data and validation_data.errcode ~= 1) then -- 验证错误,立即重置动画
|
|
self:ClearAllTimer()
|
|
cc.ActionManager:getInstance():removeAllActionsFromTarget(self.spring)
|
|
self:ResetGame()
|
|
elseif validation_data and validation_data.errcode == 1 then
|
|
if self.cur_draw_skip_flag then -- 当此抽奖是要跳过动画的,就发0
|
|
CustomActivityModel:getInstance():Fire(CustomActivityModel.PROTO_CCMD_EVENT, 33184, 0, self.sub_type)
|
|
else
|
|
self.time_out_reset_flag = true
|
|
local function time_out_reset_func()
|
|
if self.isGaming and self.time_out_reset_flag then
|
|
self:ClearAllTimer()
|
|
cc.ActionManager:getInstance():removeAllActionsFromTarget(self.spring)
|
|
self:ResetGame()
|
|
self.ifCanKeyUp = false -- 这个可以屏蔽鼠标抬起的表现
|
|
-- 重置弹簧
|
|
self:ActionDeltaYBack(0, self.springStartDeltaY, self.spring)
|
|
self.powerNum = 0
|
|
self:SetPowerSignsActive(false)
|
|
self.springDeltaY = self.springStartDeltaY
|
|
self.time_out_reset_flag = false
|
|
Message.show("由于您长时间未操作,已为您自动完成并重置")
|
|
if self.need_reupdate_view then -- 重新刷新界面
|
|
self.need_reupdate_view = false
|
|
self:UpdateView()
|
|
end
|
|
end
|
|
end
|
|
self:CancelTimer(self.time_out_reset_func_id)
|
|
-- 延迟20秒,超时了就强制重置动画
|
|
self.time_out_reset_func_id = setTimeout(time_out_reset_func, 20)
|
|
end
|
|
end
|
|
end
|
|
self:BindEvent(self.model, RechargeActivityModel.UPDATE_PELLET_VALIDATION, update_validation)
|
|
|
|
-- 如果玩家按住按钮太久导致验证超时,则需要直接中止动画
|
|
local function cancel_time_out_reset_func()
|
|
self:CancelTimer(self.time_out_reset_func_id)
|
|
self.time_out_reset_flag = false
|
|
if self.need_reupdate_view then -- 重新刷新界面
|
|
self.need_reupdate_view = false
|
|
self:UpdateView()
|
|
end
|
|
end
|
|
self:BindEvent(self.model, RechargeActivityModel.PELLET_VALIDATION_SUCCEED, cancel_time_out_reset_func)
|
|
end
|
|
|
|
function DailyRechargePelletView:ShowBoxAward( index )
|
|
local base_info = self.model:GetPelletBasicInfo()
|
|
if not base_info then return end
|
|
local award_cfg = self.model:GetPelletRewardCfg(true, true, base_info.round, true, index)
|
|
if award_cfg then
|
|
local data = {}
|
|
data.award = award_cfg or {}
|
|
data.base_type = CustomActivityModel.CustomActBaseType.DAILY_RECHARGE
|
|
data.sub_type = CustomActivityModel:getInstance():getActMinSubType(data.base_type)
|
|
data.des = HtmlColorTxt("宝箱品质越高,获得极品道具的概率越高", ColorUtil.PURPLE_DARK)
|
|
data.des_off_x = -58
|
|
GlobalEventSystem:Fire(CompetingListModel.OPEN_COMPETING_LIST_AWARD_SHOW_VIEW, data)--通用提示界面
|
|
end
|
|
-------------------------
|
|
-- do return end
|
|
-------------------------
|
|
-- self.showDifRewardCon_obj:SetActive(true)
|
|
-- local pos_list = {-199,-95,11,119,221}
|
|
-- SetAnchoredPositionX( self.showDifRewardCon_bg.transform, pos_list[index] or pos_list[1] )
|
|
-- -------------------------
|
|
-- -- local str_reward = [[ [{200,{100,102603,1}},{300,{100,102603,2}},{250,{100,102603,1}},{100,{100,102501,2}},{200,{100,109032,1}}] ]]
|
|
-- local rewardsList = stringtotable(str_reward)
|
|
-- for k,v in pairs(rewardsList) do
|
|
-- v.color = GoodsModel:getInstance():GetGoodsBasicByTypeId(v[2][2]).color --按品质排序
|
|
-- end
|
|
|
|
-- local sort_func = function ( a, b )
|
|
-- return a.color > b.color
|
|
-- end
|
|
-- table.sort(rewardsList, sort_func)
|
|
|
|
-- for k,v in pairs(rewardsList) do
|
|
-- if self.probAwardItems[k] == nil then
|
|
-- self.probAwardItems[k] = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem,self.Content_reward)
|
|
-- self.probAwardItems[k]:SetItemSize(49, 49)
|
|
-- end
|
|
-- self.probAwardItems[k]:SetData(v[2][2],v[2][3])
|
|
-- self.probAwardItems[k].transform.pivot = Vector2(0, 1)
|
|
-- self.probAwardItems[k].gameObject:SetActive(true)
|
|
-- end
|
|
|
|
-- for i=#rewardsList,#self.probAwardItems do
|
|
-- self.probAwardItems[i].gameObject:SetActive(false)
|
|
-- end
|
|
end
|
|
|
|
function DailyRechargePelletView:FireFun( )
|
|
if self.ifCanKeyUp == false then return end
|
|
|
|
if not self.isPosCanFire or not self.isTimeCanFire then return end
|
|
self.ifCanKeyUp = false
|
|
self:CancelTimer(self.powerUp_timer_id)
|
|
local num = 1 - (GetSizeDeltaY(self.spring)/self.springStartDeltaY) --系数
|
|
self.change_need = self.speed_moving
|
|
self.ball_Riridbody:AddForce(Vector2(0,600 + (820*num)))
|
|
cc.ActionManager:getInstance():removeAllActionsFromTarget(self.spring)
|
|
self:ActionDeltaYBack(0.1,self.springStartDeltaY,self.spring)
|
|
|
|
self.startTime = tonumber(TimeUtil:getServerTime())
|
|
|
|
local function delay( ) -- 弹簧不能瞬移恢复球还在移动
|
|
self.powerNum = 0
|
|
self:SetPowerSignsActive(false)
|
|
self.springDeltaY = self.springStartDeltaY--self.spring_img:SetNativeSize()
|
|
end
|
|
|
|
self:CancelTimer(self.spring_delay_timer)
|
|
self.spring_delay_timer = GlobalTimerQuest:AddDelayQuest(delay,0.1)
|
|
self.isPosCanFire = false
|
|
end
|
|
|
|
function DailyRechargePelletView:StartPowerUpTimer(time)
|
|
if not self.isPosCanFire or not self.isTimeCanFire then return end
|
|
self.isGaming = true
|
|
self.change_need = self.speed_power
|
|
self.ifCanKeyUp = true
|
|
-- Message.show("这里要控制不让关闭界面or重置,让它完整跑完")
|
|
self.powerNum = 0
|
|
local onUpdate = function ()
|
|
self.powerNum = self.powerNum + 1
|
|
self.springDeltaY = self.springDeltaY - 8
|
|
self:ActionDeltaYBack(time,self.springDeltaY,self.spring)
|
|
self:SetPowerSignsActive(true,self.powerNum)
|
|
if self.powerNum >= 7 then
|
|
self:CancelTimer(self.powerUp_timer_id)
|
|
end
|
|
end
|
|
if not self.powerUp_timer_id then
|
|
self.powerUp_timer_id = GlobalTimerQuest:AddPeriodQuest(onUpdate, time, -time)
|
|
onUpdate()
|
|
end
|
|
end
|
|
|
|
function DailyRechargePelletView:SetPowerSignsActive( bool,num )
|
|
if bool then
|
|
self.powerSign_objs[num]:SetActive(true)
|
|
else
|
|
for i = 1, #self.powerSign_objs do
|
|
self.powerSign_objs[i]:SetActive(false)
|
|
end
|
|
end
|
|
end
|
|
|
|
function DailyRechargePelletView:ActionDeltaYBack( time ,deltaY,transf)
|
|
local action_1 = cc.SizeTo.New( time, GetSizeDeltaX(transf), deltaY)
|
|
local function action_call_back( )
|
|
end
|
|
local action_call = cc.CallFunc.New( action_call_back )
|
|
local final_action = cc.Sequence.New( action_1,action_call )
|
|
self:AddAction(final_action, transf)
|
|
end
|
|
|
|
function DailyRechargePelletView:ResetGame()
|
|
if self.is_loaded then
|
|
self.break_game_mask_req = false
|
|
self.isGaming = false
|
|
self.change_need = self.speed_common
|
|
|
|
self.ball_Riridbody.velocity = Vector2(0, -1)
|
|
SetLocalPosition(self.ball.transform, 330, -150, 0)
|
|
|
|
self:StartPelletTimer(99999)
|
|
end
|
|
end
|
|
|
|
function DailyRechargePelletView:CancelTimer( timer )
|
|
if timer == self.start_timer_id then
|
|
GlobalTimerQuest:CancelQuest(self.start_timer_id)
|
|
self.start_timer_id = nil
|
|
elseif timer == self.powerUp_timer_id then
|
|
GlobalTimerQuest:CancelQuest(self.powerUp_timer_id)
|
|
self.powerUp_timer_id = nil
|
|
elseif timer == self.spring_delay_timer then
|
|
GlobalTimerQuest:CancelQuest(self.spring_delay_timer)
|
|
self.spring_delay_timer = nil
|
|
elseif timer == self.resetGame_delay_timer then
|
|
GlobalTimerQuest:CancelQuest(self.resetGame_delay_timer)
|
|
self.resetGame_delay_timer = nil
|
|
elseif timer == self.loadingTxt_delay_timer then
|
|
GlobalTimerQuest:CancelQuest(self.loadingTxt_delay_timer)
|
|
self.loadingTxt_delay_timer = nil
|
|
elseif timer == self.time_out_reset_func_id then
|
|
GlobalTimerQuest:CancelQuest(self.time_out_reset_func_id)
|
|
self.time_out_reset_func_id = nil
|
|
end
|
|
end
|
|
|
|
function DailyRechargePelletView:IsBallInStuckPos( )
|
|
local ballPosX = GetLocalPositionX(self.ball.transform)
|
|
local ballPosY = GetLocalPositionY(self.ball.transform)
|
|
local bool1 = (ballPosY >=self.springColiderPosY -35) and (ballPosY <=self.springColiderPosY + 35)
|
|
and (ballPosX >=self.springColiderPosX-35) and (ballPosX <=self.springColiderPosX + 35)
|
|
local bool2 = GetLocalPositionY(self.ball.transform) < GetLocalPositionY(self.finalPos_tranfs[1])
|
|
if not bool1 and not bool2 then
|
|
return true
|
|
else
|
|
return false
|
|
end
|
|
end
|
|
|
|
function DailyRechargePelletView:IsBallStuck( ) -- Updata中判断的
|
|
local waitTime = 10
|
|
if self:IsBallInStuckPos( ) or (self.isGaming and (self.change_need == self.speed_moving)) then
|
|
self.isStuckTimesNum = self.isStuckTimesNum + 1
|
|
if self.isStuckTimesNum == waitTime then
|
|
Message.show("球好像卡住了,重新开始吧","fault")
|
|
return true
|
|
end
|
|
else
|
|
self.isStuckTimesNum = 0
|
|
return false
|
|
end
|
|
end
|
|
|
|
function DailyRechargePelletView:StartPelletTimer(stime)
|
|
local time = stime
|
|
local onUpdate = function ()
|
|
|
|
if self:IsBallStuck( ) then
|
|
Message.show("球好像卡住了,重新开始吧","fault")
|
|
-- self.model:Fire(EmpowerConst.EMPOWER_REQ_EVENT, 41402,0,0,"0")
|
|
self:CancelTimer(self.start_timer_id)
|
|
self:ResetGame()
|
|
return
|
|
end
|
|
|
|
local ballPosX = GetLocalPositionX(self.ball.transform)
|
|
local ballPosY = GetLocalPositionY(self.ball.transform)
|
|
time = time - 1
|
|
if (ballPosY >=self.springColiderPosY -35) and (ballPosY <=self.springColiderPosY + 35)
|
|
and (ballPosX >=self.springColiderPosX-35) and (ballPosX <=self.springColiderPosX + 35) then
|
|
self.isPosCanFire = true
|
|
else
|
|
self.isPosCanFire = false
|
|
end
|
|
if GetLocalPositionY(self.ball.transform) < GetLocalPositionY(self.finalPos_tranfs[1]) then -- 不用触发器了-160
|
|
for i = 1, 5 do
|
|
local rangeNum = 51
|
|
local pointPosX = GetLocalPositionX(self.finalPos_tranfs[i])
|
|
if (ballPosX >= pointPosX - rangeNum) and (ballPosX <= pointPosX + rangeNum ) then
|
|
-- CustomActivityModel:getInstance():Fire(CustomActivityModel.PROTO_CCMD_EVENT, 33179, self.sub_type or 0)
|
|
local validation_data = CustomActivityModel:getInstance():GetPelletEventValidationData()
|
|
if validation_data and validation_data.errcode == 1 then
|
|
CustomActivityModel:getInstance():Fire(CustomActivityModel.PROTO_CCMD_EVENT, 33184, i, self.sub_type)
|
|
end
|
|
self.break_game_mask_req = true--加个标记,防止切界面的时候重复请求玩游戏
|
|
self.time_out_reset_flag = false -- 自动请求了,下面也会重置动画,这个变量要取消
|
|
self:CancelTimer(self.start_timer_id)
|
|
self:CancelTimer(self.time_out_reset_func_id)
|
|
local function delay( ) -- 让弹跳的球缓一下
|
|
self:ResetGame()
|
|
end
|
|
self.resetGame_delay_timer = GlobalTimerQuest:AddDelayQuest(delay,2)
|
|
end
|
|
end
|
|
end
|
|
if time < 0 then
|
|
-- Message.show("游戏结束,时间到","fault")
|
|
self:CancelTimer(self.start_timer_id)
|
|
self:CancelTimer(self.time_out_reset_func_id)
|
|
end
|
|
end
|
|
if not self.start_timer_id then
|
|
self.start_timer_id = GlobalTimerQuest:AddPeriodQuest(onUpdate, 1, -1)
|
|
onUpdate()
|
|
end
|
|
end
|
|
|
|
function DailyRechargePelletView:UpdateView( )
|
|
self:RefreshLeft()
|
|
self:RefreshRed()
|
|
end
|
|
|
|
function DailyRechargePelletView:ShowPer( cur )
|
|
if cur < (self.per_num_list[5] or 0) then
|
|
for i=1,5 do
|
|
if cur >= self.per_num_list[i] then
|
|
show_per = self.per_pos_list[i]
|
|
else
|
|
local temp_change_num = self.per_num_list[i] - self.per_num_list[i-1]
|
|
local temp_num_have = cur - self.per_num_list[i-1]
|
|
local temp_per = temp_num_have/temp_change_num
|
|
show_per = self.per_pos_list[i-1] + (self.per_pos_list[i] - self.per_pos_list[i-1])*temp_per
|
|
break
|
|
end
|
|
end
|
|
else
|
|
show_per = 1
|
|
end
|
|
self.loading_img.fillAmount = show_per
|
|
SetAnchoredPositionY( self.cue_bg.transform, show_per*419 )
|
|
self.loading_txt_tmp.text = cur
|
|
|
|
for i=1,5 do
|
|
if i ~= 5 and i ~= 3 then
|
|
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)
|
|
else
|
|
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)
|
|
end
|
|
end
|
|
end
|
|
|
|
function DailyRechargePelletView:RefreshLeft( )
|
|
local base_info = self.model:GetPelletBasicInfo()
|
|
if not base_info then return end
|
|
-------------------------
|
|
self.per_num_list = {[0] = 0}
|
|
for k,v in pairs(base_info.award_status) do
|
|
self.per_num_list[#self.per_num_list+1] = v.count
|
|
end
|
|
self:ShowPer(base_info.curr_count)
|
|
-------------------------
|
|
local show_list = self.model:GetPelletCountRewardCfg( tonumber(base_info.round) )
|
|
local function get_award_status( data,index )
|
|
if data and data[index] then
|
|
return data[index].status
|
|
end
|
|
return 0
|
|
end
|
|
for i=1,5 do
|
|
if show_list and show_list[i] then
|
|
self["loading_txt"..i.."_tmp"].text = self.per_num_list[i]
|
|
self["redDot"..i.."_obj"]:SetActive(false)
|
|
local reward = stringtotable(show_list[i].award)[1]
|
|
local function click_call( )
|
|
local new_base_info = self.model:GetPelletBasicInfo()
|
|
if get_award_status(new_base_info.award_status,i) == 1 then
|
|
--可领
|
|
CustomActivityModel:getInstance():Fire(CustomActivityModel.PROTO_CCMD_EVENT, 33181,new_base_info.award_status[i].count)
|
|
else
|
|
UIToolTipMgr:getInstance():AppendGoodsTips(reward[2], nil, nil,nil,nil,nil,nil,true)
|
|
end
|
|
end
|
|
if not self.list_item_left[i] then
|
|
self.list_item_left[i] = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem,self["gift_icon"..i])
|
|
self.list_item_left[i]:SetItemSize(59,59)
|
|
self.list_item_left[i]:SetIsAct(true)
|
|
end
|
|
self.list_item_left[i]:SetDataWithMapId(reward[2], reward[3], reward[1])
|
|
self.list_item_left[i]:SetCallBack(click_call)
|
|
-------------------------
|
|
if get_award_status(base_info.award_status,i) == 2 then
|
|
--已领
|
|
self.list_item_left[i]:SetGray(true)
|
|
self.list_item_left[i]:SetNumLimitVisible(true,9)
|
|
elseif get_award_status(base_info.award_status,i) == 0 then
|
|
--未达成
|
|
self.list_item_left[i]:SetGray(false)
|
|
self.list_item_left[i]:SetNumLimitVisible(false,9)
|
|
else
|
|
self.list_item_left[i]:SetGray(false)
|
|
self.list_item_left[i]:SetNumLimitVisible(false,9)
|
|
end
|
|
-------------------------
|
|
end
|
|
end
|
|
end
|
|
|
|
function DailyRechargePelletView:ClearAllTimer( )
|
|
self:CancelTimer(self.start_timer_id)
|
|
self:CancelTimer(self.powerUp_timer_id)
|
|
self:CancelTimer(self.spring_delay_timer)
|
|
self:CancelTimer(self.resetGame_delay_timer)
|
|
self:CancelTimer(self.loadingTxt_delay_timer)
|
|
self:CancelTimer(self.time_out_reset_func_id)
|
|
end
|
|
|
|
function DailyRechargePelletView:__delete( )
|
|
self:ClearAllTimer()
|
|
cc.ActionManager:getInstance():removeAllActionsFromTarget(self.spring)
|
|
|
|
if self.close_time_id then
|
|
GlobalTimerQuest:CancelQuest(self.close_time_id)
|
|
self.close_time_id = nil
|
|
end
|
|
|
|
if self.list_item_left then
|
|
for k,v in pairs(self.list_item_left) do
|
|
UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, v)
|
|
end
|
|
self.list_item_left = {}
|
|
end
|
|
|
|
for i=1,#self.probAwardItems do
|
|
if self.probAwardItems[i] then
|
|
UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, self.probAwardItems[i])
|
|
self.probAwardItems[i] = nil
|
|
end
|
|
end
|
|
end
|