EmpowerTreasureView = EmpowerTreasureView or BaseClass(BaseView) local EmpowerTreasureView = EmpowerTreasureView function EmpowerTreasureView:__init() self.base_file = "empower" self.layout_file = "EmpowerTreasureView" self.layer_name = "UI" self.use_background = G_USING_BG self.hide_maincancas = true --self.close_mode = CloseMode.CloseDestroy --self.destroy_imm = true --self.change_scene_close = true --是否切换场景时关闭(弹出界面使用) self.is_set_zdepth = true self.append_to_ctl_queue = true --是否要添加进界面堆栈 self.model = EmpowerModel:GetInstance() self.goods_model = GoodsModel:getInstance() self.mainVo = RoleManager.Instance.mainRoleInfo self.powerSign_objs ={} self.finalPos_tranfs ={} self.img_qualitys_img = {} self.img_qualitys_btn = {} self.awardItems = {} self.probAwardItems = {} -- 展示可能活动性 self.emT_loadSign_objs = {} self.gift_icon_objs = {} self.gift_icon_img = {} self.gift_red_dot_objs = {} self.loading_txts = {} self.isStuckTimesNum = 0 self.powerNum = 0 self.eachPowerUpTime = 0.4 self.isPosCanFire = false self.isTimeCanFire = false self.isGaming = false self.ifCanKeyUp = false -- 按循序keydown-蓄力-发射才给发射,防止玩家一直按住蓄力等待下回合发射 self.config_free_count = self.model:GetConfigMarbleKvVal("free_count") self.load_callback = function () self:LoadSuccess() self:AddEvent() end self.open_callback = function ( ) self:OpenSuccess() end self.destroy_callback = function ( ) self:DestroySuccess() end end function EmpowerTreasureView:Open( ) BaseView.Open(self) end function EmpowerTreasureView:LoadSuccess() self.nodes = { "downInfo/rightDown/juan_icon:img", } self:GetChildren(self.nodes) self.coupon_id = self.model:GetCouponId() or 270012--代金券ID self.coupon_exchange_num = self.model:GetCouponExchangeNum()--代金券兑换数量 lua_resM:setOutsideImageSprite(self,self.juan_icon_img,GameResPath.GetGoodsIcon(self.coupon_id)) self.closeBtn_obj = self:GetChild("closeBtn").gameObject self.closeBtn_img = self:GetChild("closeBtn"):GetComponent("Image") self.bg_img = self:GetChild("bg/bg"):GetComponent("Image") self.powerFireBtn_obj = self:GetChild("powerFireBtn_mask/powerFireBtn").gameObject self.powerFireBtn_img = self:GetChild("powerFireBtn_mask/powerFireBtn"):GetComponent("Image") self.powerFireBtn_redDot = self:GetChild("powerFireBtn_mask/powerFireBtnRedDot").gameObject self.resetBtn_obj = self:GetChild("resetBtn_mask/resetBtn").gameObject self.resetBtn_img = self:GetChild("resetBtn_mask/resetBtn"):GetComponent("Image") self.powerFireBtn_transf = self:GetChild("powerFireBtn_mask/powerFireBtn") self.powerFireBtnDark_obj = self:GetChild("powerFireBtn_mask/powerFireBtn_dark").gameObject self.powerFireBtnDark_obj:GetComponent("Image").gray = true self.spring = self:GetChild("spring") self.spring_img = self:GetChild("spring"):GetComponent("Image") self.ball_tranf = self:GetChild("ball") self.ball_Riridbody = self:GetChild("ball"):GetComponent("Rigidbody2D") self.shopIcon_obj = self:GetChild("shopIcon").gameObject self.shopRedDot_obj = self:GetChild("shopIcon/redDot").gameObject self.loading = self:GetChild("loadingReword/loading") self.loading_obj = self:GetChild("loadingReword/loading").gameObject self.cue_bg_obj = self:GetChild("loadingReword/loading/cue_bg").gameObject self.cue_loading_txt = self:GetChild("loadingReword/loading/cue_bg/loading_txt"):GetComponent("Text") self.rewardItemCon = self:GetChild("loadingReword/rewardItemCon/item_show") self.moneyShow_txt = self:GetChild("downInfo/moneyShow/text"):GetComponent("Text") self.cueTimeTxt_txt = self:GetChild("downInfo/cueTimeTxt"):GetComponent("Text") self.btnReset_txt = self:GetChild("downInfo/moneyShowReset/text"):GetComponent("Text") self.cardNum_txt = self:GetChild("downInfo/rightDown/num_txt"):GetComponent("Text") self.useCard_toggle = self:GetChild("downInfo/rightDown/toggle"):GetComponent("Toggle") self.Content_item = self:GetChild("bg/ScrollView_item/Viewport/Content_item") self.Content_reward = self:GetChild("showDifRewardCon/bg/ScrollView_difReward/Viewport/Content_reward") self.showDifRewardCon_obj = self:GetChild("showDifRewardCon").gameObject self.showDifRewardCon_bg = self:GetChild("showDifRewardCon/bg") self.resetBtn_redDot_obj = self:GetChild("resetBtn_mask/resetBtn_redDot").gameObject self.light_img = self:GetChild("bg/lights/light_img"):GetComponent("Image") self.light_img_big = self:GetChild("bg/lights/light_img_big"):GetComponent("Image") for i = 1, 7 do self.powerSign_objs[i] = self:GetChild("powerSigns/powerSign"..i).gameObject end --self.awardItemCon = self:GetChild("awardItemCon") for i = 1, 5 do self.finalPos_tranfs[i] = self:GetChild("getPositions/pos"..i) self.img_qualitys_img[i] = self:GetChild("getPositions/pos"..i.."/quality_img"):GetComponent("Image") self.img_qualitys_btn[i] = self.img_qualitys_img[i].gameObject end for i = 1, 4 do self.loading_txts[i] = self:GetChild("loadingReword/loadingTxts/loading_txt"..i):GetComponent("Text") self.emT_loadSign_objs[i] = self:GetChild("loadingReword/emT_loadSigns/emT_loadSign"..i).gameObject self.gift_icon_objs[i] = self:GetChild("loadingReword/rewardItemCon/gift_icon"..i).gameObject self.gift_icon_img[i] = self.gift_icon_objs[i]:GetComponent("ImageExtend") self.gift_red_dot_objs[i] = self:GetChild("loadingReword/rewardItemCon/redDot"..i).gameObject self.loading_txts[i].text = self.model.Config_Marble_Count_Reward[i].count end self.topRwardItem = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem,self.rewardItemCon) self.topRwardItem:SetItemSize(48, 48) SetLocalPosition(self.topRwardItem.transform,GetLocalPositionX(self.topRwardItem.transform)-40, GetLocalPositionY(self.topRwardItem.transform)+40 , 0) self.topRwardItem:SetVisible(false) --self.topRwardItem:SetData(270012) local showAwardList = stringtotable(self.model:GetConfigMarbleKvVal("AwardShow")) if showAwardList then --目前为空,未知 for k,v in pairs(showAwardList) do self.awardItems[k] = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem,self.Content_item) self.awardItems[k]:SetItemSize(50, 50) print("============>>> YiRan:EmpowerTreasureView [start:120] #self.awardItems :",#self.awardItems) self.awardItems[k]:SetData(v[2],v[3]) end end self.springDeltaY = GetSizeDeltaY(self.spring) self.springStartDeltaY = GetSizeDeltaY(self.spring) self.fireBtnPosYMoveNum = -5 --按钮下压高度 --self.fireBtnDeltaY = GetSizeDeltaY(self.powerFireBtn_transf) --self.fireBtnStartDeltaY = GetSizeDeltaY(self.powerFireBtn_transf) self.springColiderPosX = GetLocalPositionX(self.spring) self.springColiderPosY = GetLocalPositionY(self.spring) + GetSizeDeltaY(self:GetChild("spring")) self.loadingMaxY = 359.69--GetSizeDeltaY(self.loading) lua_resM:setOutsideImageSprite(self,self.bg_img,GameResPath.GetViewBigBg("empower_treasure_bg"),false) self:SetPowerSignsActive(false) self:ResetGame() self:ResetQualitys( ) -- 之后拿的可能不是在这了,如需什么时候刷新记得改这个 self:ShineLight(EmpowerConst.EmpowerShineTimeSpan_s_normal) self:ShineLight2(EmpowerConst.EmpowerShineTimeSpan_l_normal) end function EmpowerTreasureView:AddEvent() local function clickHandler(target) if target == self.closeBtn_obj then self:Close() elseif target == self.resetBtn_obj then --self:ResetGame() local reset_count = self.model:GetVo41400().reset_count--重置次数 local reset_limit,reset_next_vip,reset_next_limit = self.model:GetResetLimitNum()--重置上限 if reset_count == reset_limit then if not reset_next_vip then Message.show("重置次数已达上限!","fault") else local function ok() OpenFun.Open(450,1) end local str = HtmlColorTxt("VIP"..reset_next_vip, ColorUtil.RED_DARK) local add_reset_num = HtmlColorTxt(reset_next_limit - reset_limit, ColorUtil.GREEN_DARK) --增加的充值次数 Alert.show("重置次数不足,需提升至"..str.."增加"..add_reset_num.."次重置\n是否前往充值?",Alert.Type.Two,ok) end return end local reset_cost = self.model:GetConfigMarbleKvVal("reset_cost") local list = stringtotable(reset_cost) local txt = "是否自动补齐?" local use_list = {} local reset_count = self.model:GetVo41400().reset_count + 1 if reset_count > #list then use_list = list[#list][2] else use_list = list[reset_count][2] end if use_list[1] == "1" then -- 钻石 今天第"..reset_count.."次, txt = "需要"..use_list[3].."彩钻重置,是否重置?" elseif use_list[1] == "100" then -- 道具 txt = "需要"..use_list[3].."个"..GoodsModel:getInstance():getGoodsName(use_list[2], false).."道具重置,是否自动补齐?" end if self.model.isAutoReset41404 then self.model:Fire(EmpowerConst.EMPOWER_REQ_EVENT, 41404) -- 重置升品寻宝 else function ok_function( flag ) self.model:Fire(EmpowerConst.EMPOWER_REQ_EVENT, 41404) -- 重置升品寻宝 end function toggle_function( flag ) self.model.isAutoReset41404 = flag end --需要显示购买提示界面 if not self.model.not_tip_quick_circle_refresh then -- local gold_ab_res,res_name = WordManager:GetCommonMoneyIcon(tonumber(self.cost_data[1])) local data = { titleText = "温馨提示", nameText = "", price = use_list[3], okText = "确定", -- gold_ab_res = gold_ab_res, -- gold_res = res_name, hide_money_icon = false, priceText = HtmlColorTxt(use_list[3], ColorUtil.YELLOW_DARK) .. " 重置刷新", --.. HtmlColorTxt("1彩钻", "#d322ff"), ok_callback = ok_function, toggle_function = toggle_function, nameText = "是否使用", insufficientText = "",-- .. HtmlColorTxt(use_list[3]..WordManager:GetCommonMoneyStr(use_list[1]), "#d322ff") .. "弹射一次 } GlobalEventSystem:Fire(EventName.OPEN_COM_TOGGLE_TIP_VIEW, data) else ok_function() end end elseif target == self.shopIcon_obj then self.model:Fire(EmpowerConst.OPEN_SHOP_BASE_VIEW,true,1) elseif target == self.powerFireBtnDark_obj then Message.show("请先投币重置","fault") elseif target == self.showDifRewardCon_obj then self.showDifRewardCon_obj:SetActive(false) end for i=1,#self.gift_icon_objs do if target == self.gift_icon_objs[i] then --self.model:Fire(EmpowerConst.EMPOWER_REQ_EVENT, 41403,self.model.Config_Marble_Count_Reward[i].index) end end for i=1,#self.img_qualitys_btn do if target == self.img_qualitys_btn[i] then SetLocalPositionX(self.showDifRewardCon_bg, GetLocalPositionX(self.finalPos_tranfs[i]) + 39) SetLocalPositionX(self.Content_reward,0) local quailtyNum = tonumber(self.qualitysList[i]) self.showDifRewardCon_obj:SetActive(true) local rewardsList = stringtotable(DeepCopy(Config.Marblequalreward)[quailtyNum].rewards) local config_good = DeepCopy(Config.Goods) for k,v in pairs(rewardsList) do v.color = self.goods_model: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)--AwardItem.New(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 end end AddClickEvent(self.closeBtn_obj, clickHandler) AddClickEvent(self.resetBtn_obj, clickHandler) AddClickEvent(self.shopIcon_obj, clickHandler) AddClickEvent(self.showDifRewardCon_obj, clickHandler) AddClickEvent(self.powerFireBtnDark_obj, clickHandler) for i=1,#self.img_qualitys_btn do AddClickEvent(self.img_qualitys_btn[i], clickHandler, 1) end for i=1,#self.gift_icon_objs do AddClickEvent(self.gift_icon_objs[i], clickHandler, 1) end local function clickFireHandlerDown(target) SetLocalPositionY(self.powerFireBtn_transf, self.fireBtnPosYMoveNum) --按钮下压 if not self.isPosCanFire then return end self.isUsingCard = self.useCard_toggle.isOn local count = self.model:GetVo41400().count + 1 -- 告知下一次,当前次数得加1 if count and count > self.config_free_count then --Message.show("今日免费次数已用尽") local marble_cost = self.model:GetConfigMarbleKvVal("marble_cost") local coupon_cost = stringtotable(self.model:GetConfigMarbleKvVal("coupon_cost")) local good_value = coupon_cost[1][3]/coupon_cost[1][1] local list = stringtotable(marble_cost) local txt = "是否自动补齐?" local use_list = {} local good_type = list[1][2][2] local need_goods_num = list[1][2][3] local need_money = list[2][2][3] local money_num = self.mainVo.jin local good_num = GoodsModel:getInstance():GetTypeGoodsNum(good_type) local lack_money = (need_goods_num-good_num)*good_value print("============>>> YiRan:EmpowerTreasureView [start:180] money_num :",money_num) print("============>>> YiRan:EmpowerTreasureView [start:181] need_goods_num:",need_goods_num) print("============>>> YiRan:EmpowerTreasureView [start:182] good_num :",good_num) print("============>>> YiRan:EmpowerTreasureView [start:183] good_value :",good_value) local function ShowTipsViewAutoBuy( ) if (self.model.isOnceBuy41401 == true and self.model.isAutoBuy41401 == false) or self.model.isAutoBuy41401 == true then --自动勾选时通道 self.isTimeCanFire = true else --物品或金钱足够且没勾选时 function ok_function( flag ) --print("============>>> YiRan:EmpowerTreasureView [start:307] flag :",flag) --print("============>>> YiRan:EmpowerTreasureView [start:308] self.temp_isAutoBuy41401 :",self.temp_isAutoBuy41401) if self.temp_isAutoBuy41401 then self.model.isAutoBuy41401 = true else self.model.isAutoBuy41401 = false self.model.isOnceBuy41401 = true end end function toggle_function( flag ) self.temp_isAutoBuy41401 = flag --if flag then -- self.model.isAutoBuy41401 = true --else -- self.model.isAutoBuy41401 = false -- self.model.isOnceBuy41401 = true --end end local coupon_num = GoodsModel:getInstance():GetTypeGoodsNum(self.coupon_id) local cost_money = (need_goods_num*good_value - coupon_num * self.coupon_exchange_num) > 0 and (need_goods_num*good_value - coupon_num * self.coupon_exchange_num) or 0 if not self.useCard_toggle.isOn then--不勾选 cost_money = need_goods_num*good_value end --需要显示购买提示界面 if not self.model.not_tip_quick_circle_refresh then -- local gold_ab_res,res_name = WordManager:GetCommonMoneyIcon(tonumber(self.cost_data[1])) local data = { titleText = "温馨提示", nameText = "", price = cost_money, okText = "确定", -- gold_ab_res = gold_ab_res, -- gold_res = res_name, hide_money_icon = false, priceText = HtmlColorTxt(cost_money, ColorUtil.YELLOW_DARK) .. " 弹射一次?", --.. HtmlColorTxt("1彩钻", "#d322ff"), ok_callback = ok_function, toggle_function = toggle_function, nameText = "是否使用", insufficientText = "",-- .. HtmlColorTxt(use_list[3]..WordManager:GetCommonMoneyStr(use_list[1]), "#d322ff") .. "弹射一次 } GlobalEventSystem:Fire(EventName.OPEN_COM_TOGGLE_TIP_VIEW, data) else ok_function() end self.isTimeCanFire = false end end if money_num < (need_goods_num-good_num)*good_value then --金钱加卷不足以抵扣时 local lack_good_num = need_goods_num-good_num --if self.isUsingCard then -- Message.show("缺少"..lack_good_num.."个"..GoodsModel:getInstance():getGoodsName(good_type, false).."开启") --else --Message.show("缺少"..need_money-money_num.."彩钻开启") Message.show("彩钻不足") --end self.isTimeCanFire = false elseif good_num >= need_goods_num then --物品足够时 if self.isUsingCard then self.isTimeCanFire = true else if money_num < need_goods_num*good_value then --Message.show("缺少"..need_goods_num*good_value-money_num.."彩钻开启") Message.show("彩钻不足","fault") self.isTimeCanFire = false else ShowTipsViewAutoBuy() end end elseif self.isUsingCard == false then --金钱加卷足以抵扣但没选用代金券 且物品不足 -- money_num >= (need_goods_num-good_num)*good_value and if money_num < need_goods_num*good_value then --Message.show("缺少"..need_money-money_num.."彩钻开启") Message.show("彩钻不足","fault") self.isTimeCanFire = false else ShowTipsViewAutoBuy() end else ShowTipsViewAutoBuy() end else self.isTimeCanFire = true end self:StartPowerUpTimer(self.eachPowerUpTime) end local function clickFireHandlerUp(target) -- Message.show("clickFireHandlerUp") SetLocalPositionY(self.powerFireBtn_transf, 0) -- 按钮回升 self:FireFun() end AddDownEvent(self.powerFireBtn_obj,clickFireHandlerDown,1) AddUpEvent(self.powerFireBtn_obj,clickFireHandlerUp,2) local function UPDATA_EMTREASURE_VIEW_INFO_fun(vo)--vo = self.model:GetVo41400() 目前寻宝红点直接在刷界面的时候一起刷了 self:SetLoadingReward(vo.progress,true) self:UpdateGiftCon(vo.reward) self:SetDownInfoValue() self:UpdateFireBtnTxtAndRedDot() end self.updata_emtreasure_view_info = self.model:Bind(EmpowerConst.UPDATA_EMTREASURE_VIEW_INFO, UPDATA_EMTREASURE_VIEW_INFO_fun) local function UPDATA_EMTREASURE_QUALITYS_INFO_fun(vo) self:ResetQualitys() end self.updata_emtreasure_qualitys_info = self.model:Bind(EmpowerConst.UPDATA_EMTREASURE_QUALITYS_INFO, UPDATA_EMTREASURE_QUALITYS_INFO_fun) --41404成功后返回 local function on_ans_update_red_dot( ) self:UpdateEmpowerShopRedDot() end self.on_ans_update_red_dot_id = self.model:Bind(EmpowerConst.EMPOWER_SHOP_RED_DOT, on_ans_update_red_dot) local function onOrientationChange() self.transform.anchoredPosition = Vector2(ClientConfig.iphone_x_offset_left, 0) end self.orientation_change_id = GlobalEventSystem:Bind(EventName.ORIENTATION_DID_CHANGE, onOrientationChange) --local function onChangeJinHandler() --self:SetDownInfoValue() -- end -- self.change_jin_id = self.mainVo:BindOne("jin",onChangeJinHandler) end function EmpowerTreasureView:OpenSuccess() local select_callback = function(index) end self:UpdateView() end function EmpowerTreasureView:UpdateView() self:SetLoadingReward(self.model:GetVo41400().progress,true) self:SetDownInfoValue() self:UpdateGiftCon(self.model:GetVo41400().reward) self:UpdateFireBtnTxtAndRedDot() --for i = 1, 3 do -- 怕影响美观加载出来后再显示,最后一个不加载 -- self.gift_icon_objs[i]:SetActive(true) --end self:UpdateEmpowerShopRedDot() end function EmpowerTreasureView:UpdateGiftCon(vo_reward) local config_Marble_Count_Reward = self.model.Config_Marble_Count_Reward for k1,v1 in pairs(config_Marble_Count_Reward) do for k,v in pairs(vo_reward) do if v1.index == v.id then if v.state == 2 then --self.gift_red_dot_objs[k1]:SetActive(true) --self.gift_icon_img[k1].gray = true lua_resM:setImageSprite(self, self.gift_icon_objs[k1]:GetComponent("Image"), "empower_asset","emT_rewordGift2",true) else --self.gift_red_dot_objs[k1]:SetActive(false) --self.gift_icon_img[k1].gray = false lua_resM:setImageSprite(self, self.gift_icon_objs[k1]:GetComponent("Image"), "empower_asset","emT_rewordGift",true) end end end end end function EmpowerTreasureView:SetDownInfoValue() local good_num = GoodsModel:getInstance():GetTypeGoodsNum(self.coupon_id) local marble_cost = stringtotable(self.model:GetConfigMarbleKvVal("marble_cost")) local list = marble_cost local need_money = list[2][2][3] local need_goods_num = list[1][2][3] self.moneyShow_txt.fontSize = 24 local cost_money = (need_money - good_num * self.coupon_exchange_num) > 0 and (need_money - good_num * self.coupon_exchange_num) or 0 if not self.useCard_toggle.isOn then--不勾选 cost_money = need_money end self.moneyShow_txt.text = HtmlColorTxt(cost_money, ColorUtil.WHITE_DARK) local good_type = list[1][2][2] local good_num = GoodsModel:getInstance():GetTypeGoodsNum(good_type) if good_num >= need_goods_num then self.cardNum_txt.text = string.format("%s/%s",ColorUtil.GREEN_DARK,good_num,need_goods_num) else self.cardNum_txt.text = string.format("%s/%s",ColorUtil.RED_DARK,good_num,need_goods_num) end local reset_cost = stringtotable(self.model:GetConfigMarbleKvVal("reset_cost")) local reset_count = self.model:GetVo41400().reset_count + 1 if reset_count > #reset_cost then use_list = reset_cost[#reset_cost][2] else use_list = reset_cost[reset_count][2] end self.btnReset_txt.text = use_list[3] end function EmpowerTreasureView:UpdateEmpowerShopRedDot( ) local bool = self.model:GetEmpowerRedDotList()[EmpowerConst.EmpowerViewType.EmpowerShop] self.shopRedDot_obj:SetActive(bool) end function EmpowerTreasureView:UpdateFireBtnTxtAndRedDot( ) local num = self.config_free_count - self.model:GetVo41400().count if num >= 1 then self.cueTimeTxt_txt.text = "当日前免费次数剩余:"..num self.powerFireBtn_redDot:SetActive(true) self.moneyShow_txt.text = "免费"..HtmlColorTxt(num, ColorUtil.GREEN_DARK).."/"..self.config_free_count self.moneyShow_txt.fontSize = 20 else self.cueTimeTxt_txt.text = "当日前免费次数已用光" self.powerFireBtn_redDot:SetActive(false) end end function EmpowerTreasureView:ResetGame() self.isGaming = false self.closeBtn_img.raycastTarget = true self.resetBtn_img.raycastTarget = true self.ball_Riridbody.velocity = Vector2(0, 0) SetLocalPosition(self.ball_tranf, 329, -185, 0) self:StartTreasureTimer(9999) self:ShineLight(EmpowerConst.EmpowerShineTimeSpan_s_normal) self:ShineLight2(EmpowerConst.EmpowerShineTimeSpan_l_normal) end function EmpowerTreasureView:ResetQualitys( ) local box_index = self.model:GetVo41400().box_index --self.qualitysList = box_index --or self.model:GetFreshTreasureQualitys() -- 拿不到就拿前端自己生成的 self.qualitysList = {} -- 修改成原来格式 for i=1,#box_index do for _i,v in ipairs(box_index) do if v.index == i then self.qualitysList[i] = v.qua end end end for k,v in pairs(self.qualitysList) do lua_resM:setImageSprite(self, self.img_qualitys_img[k], "empower_asset","empower_show_quality_"..v,true) end end function EmpowerTreasureView:IsBallInStuckPos( ) local ballPosX = GetLocalPositionX(self.ball_tranf) local ballPosY = GetLocalPositionY(self.ball_tranf) local bool1 = (ballPosY >=self.springColiderPosY -40) and (ballPosY <=self.springColiderPosY + 40) and (ballPosX >=self.springColiderPosX-40) and (ballPosX <=self.springColiderPosX + 40) local bool2 = GetLocalPositionY(self.ball_tranf) < GetLocalPositionY(self.finalPos_tranfs[1]) if not bool1 and not bool2 then return true else return false end end function EmpowerTreasureView:IsBallStuck( ) -- Updata中判断的 local waitTime = 8 if self:IsBallInStuckPos( ) 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 EmpowerTreasureView:StartTreasureTimer(stime) local time = stime local onUpdate = function () if self:IsBallStuck( ) then 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_tranf) local ballPosY = GetLocalPositionY(self.ball_tranf) time = time - 1 if (ballPosY >=self.springColiderPosY -40) and (ballPosY <=self.springColiderPosY + 40) and (ballPosX >=self.springColiderPosX-40) and (ballPosX <=self.springColiderPosX + 40) then self.isPosCanFire = true else self.isPosCanFire = false end if GetLocalPositionY(self.ball_tranf) < GetLocalPositionY(self.finalPos_tranfs[1]) then -- 不用触发器了-160 for i = 1, 5 do local rangeNum = 60 local pointPosX = GetLocalPositionX(self.finalPos_tranfs[i]) if (ballPosX >= pointPosX - rangeNum) and (ballPosX <= pointPosX + rangeNum ) then self.model:Fire(EmpowerConst.EMPOWER_REQ_EVENT, 41402,1,self.qualitysList[i],self:GetTokens( )) --Message.show("游戏结束,此时落在框",i,"品质为:",self.qualitysList[i]) self:CancelTimer(self.start_timer_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) end end if not self.start_timer_id then self.start_timer_id = GlobalTimerQuest:AddPeriodQuest(onUpdate, 1, -1) onUpdate() end end function EmpowerTreasureView:StartPowerUpTimer(time) if not self.isPosCanFire or not self.isTimeCanFire then return end self.isGaming = true self.ifCanKeyUp = true self.closeBtn_img.raycastTarget = false self.resetBtn_img.raycastTarget = false self.powerNum = 0 local onUpdate = function () self.powerNum = self.powerNum + 1 self.springDeltaY = self.springDeltaY - 8 --self.fireBtnDeltaY = self.fireBtnDeltaY - 1 self:ActionDeltaYBack(time,self.springDeltaY,self.spring) --self:ActionDeltaYBack(time,self.fireBtnDeltaY,self.powerFireBtn_transf) 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 EmpowerTreasureView: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) --Message.show(" GetSizeDeltaY(self.spring):", GetSizeDeltaY(self.spring)/self.springStartDeltaY) print("============>>> YiRan:EmpowerTreasureView [start:497] self.springDeltaY :",self.springDeltaY) local num = 1 - (GetSizeDeltaY(self.spring)/self.springStartDeltaY) --系数 self.ball_Riridbody:AddForce(Vector2(0,520 + (820*num))) cc.ActionManager:getInstance():removeAllActionsFromTarget(self.spring) self:ActionDeltaYBack(0.1,self.springStartDeltaY,self.spring) self.startTime = tonumber(TimeUtil:getServerTime()) local cost_opt = 2 -- 目前写死,1 是用代金券 2 是用钻石 if self.isUsingCard then cost_opt = 1 end if (self.model.isOnceBuy41401 == true and self.model.isAutoBuy41401 == false) or self.model.isAutoBuy41401 == true then self.model:Fire(EmpowerConst.EMPOWER_REQ_EVENT, 41401,1,cost_opt,self.startTime) -- 开始 self.model.isOnceBuy41401 = false else self.model:Fire(EmpowerConst.EMPOWER_REQ_EVENT, 41401,0,cost_opt,self.startTime) -- 开始 end local function delay( ) -- 弹簧不能瞬移恢复球还在移动 self.powerNum = 0 self:SetPowerSignsActive(false) self.springDeltaY = self.springStartDeltaY--self.spring_img:SetNativeSize() end self:ShineLight(EmpowerConst.EmpowerShineTimeSpan_s_rush) self:ShineLight2(EmpowerConst.EmpowerShineTimeSpan_l_rush) self.spring_delay_timer = GlobalTimerQuest:AddDelayQuest(delay,0.1) self.isPosCanFire = false end function EmpowerTreasureView: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 EmpowerTreasureView:LoadindActionDeltaY(time ,deltaY,transf) cc.ActionManager:getInstance():removeAllActionsFromTarget(self.loading) local action_1 = cc.SizeTo.New( time, GetSizeDeltaX(transf), deltaY) local function action_call_back( ) --local function delay( ) -- cue_bg_obj延迟隐藏 -- self.cue_bg_obj:SetActive(false) --end --self.loadingTxt_delay_timer = GlobalTimerQuest:AddDelayQuest(delay,0.4) 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 EmpowerTreasureView: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 EmpowerTreasureView:SetLoadingReward( countNum,isShowLoading ) local max = 0 for k,v in pairs(self.model.Config_Marble_Count_Reward) do if max < v.count then max = v.count end if countNum >= v.count then -- 这一行够格 self.emT_loadSign_objs[k]:SetActive(true) else self.emT_loadSign_objs[k]:SetActive(false) end end local percentNum = countNum/max if percentNum >= 1 then percentNum = 1 end local reset_count = self.model:GetVo41400().reset_count local reset_limit = self.model:GetResetLimitNum() ------重置红点 self.resetBtn_redDot_obj:SetActive(percentNum >= 1 and reset_count < reset_limit) ------按键置灰 self.powerFireBtnDark_obj:SetActive(percentNum >= 1) --是否置灰处理 self.powerFireBtn_img.raycastTarget = not (percentNum >= 1) self.loading_obj:SetActive(true) if isShowLoading then --self.cue_bg_obj:SetActive(true) self:LoadindActionDeltaY(1,percentNum * self.loadingMaxY,self.loading) self.cue_loading_txt.text = countNum else SetSizeDeltaY(self.loading, percentNum * self.loadingMaxY) end local goodId = 0 local num = 0 for k,v in pairs(self.model:GetVo41400().reward) do if v.fixed_reward and v.fixed_reward[1]then for k,v in pairs(v.fixed_reward) do if v.goodsid then goodId = v.goodsid num = v.num --print("============>>> YiRan:EmpowerTreasureView [start:319] goodsid:",goodsid,"num:",num) end end end end if goodId == 0 then self.topRwardItem:SetVisible(false) else self.topRwardItem:SetVisible(true) self.topRwardItem:SetData(goodId,num) end end function EmpowerTreasureView: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.powerUp_timer_id = 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 end end function EmpowerTreasureView:GetTokens( ) local pid = tonumber(self.mainVo.role_id) or 1 local time_stamp = self.startTime or TimeUtil:getServerTime()--os.time() local account = self.model:GetVo41400().count + 1 local subfix = Trim(self.model:GetConfigMarbleKvVal("rand_string")) print("============>>> YiRan:EmpowerTreasureView [start:442] pid:",pid) print("============>>> YiRan:EmpowerTreasureView [start:442] time_stamp:",time_stamp) print("============>>> YiRan:EmpowerTreasureView [start:442] account:",account) print("============>>> YiRan:EmpowerTreasureView [start:442] subfix:",subfix) local ticket = pid .. time_stamp .. account .. subfix ticket = string.gsub(ticket, '"', '') print("============>>> YiRan:EmpowerTreasureView [start:447] ticket :",ticket) ticket = string.lower(Util.md5(ticket)) print("============>>> YiRan:EmpowerTreasureView [start:447] ticket.md5:",ticket) return ticket -- self:SendFmtToGame(10000, "iiss", pid, time_stamp, account_id,ticket) end function EmpowerTreasureView:ShineLight(setTimeSpace) self:ClearHideTimer() self.light_img_num = 0 local function hide_timer() if self.light_img_num >= 3 then self.light_img_num = 1 else self.light_img_num = self.light_img_num + 1 end lua_resM:setImageSprite(self, self.light_img, "empower_asset","ept_light"..self.light_img_num,false) end hide_timer() self.hide_timer_id = GlobalTimerQuest:AddPeriodQuest(hide_timer, setTimeSpace, -1) end function EmpowerTreasureView:ShineLight2(setTimeSpace) self:ClearHideTimer2() self.light_img_num2 = 0 local function hide_timer() if self.light_img_num2 >= 3 then self.light_img_num2 = 1 else self.light_img_num2 = self.light_img_num2 + 1 end lua_resM:setOutsideImageSprite(self, self.light_img_big, GameResPath.GetEmpowerIcon("ept_light_big_"..self.light_img_num2), false) end hide_timer() self.hide_timer_id2 = GlobalTimerQuest:AddPeriodQuest(hide_timer, setTimeSpace, -1) end function EmpowerTreasureView:ClearHideTimer() if self.hide_timer_id then GlobalTimerQuest:CancelQuest(self.hide_timer_id) self.hide_timer_id = nil end end function EmpowerTreasureView:ClearHideTimer2() if self.hide_timer_id2 then GlobalTimerQuest:CancelQuest(self.hide_timer_id2) self.hide_timer_id2 = nil end end function EmpowerTreasureView:DestroySuccess( ) self:ClearHideTimer() self:ClearHideTimer2() if self.on_ans_update_red_dot_id then self.model:UnBind(self.on_ans_update_red_dot_id) self.on_ans_update_red_dot_id = nil end if self.updata_emtreasure_view_info then self.model:UnBind(self.updata_emtreasure_view_info) self.updata_emtreasure_view_info = nil end if self.updata_emtreasure_qualitys_info then self.model:UnBind(self.updata_emtreasure_qualitys_info) self.updata_emtreasure_qualitys_info = nil end 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) cc.ActionManager:getInstance():removeAllActionsFromTarget(self.spring) --cc.ActionManager:getInstance():removeAllActionsFromTarget(self.powerFireBtn_transf) cc.ActionManager:getInstance():removeAllActionsFromTarget(self.loading) for i=1,#self.awardItems do if self.awardItems[i] then UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, self.awardItems[i]) self.awardItems[i] = nil end 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 if self.topRwardItem then UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, self.topRwardItem) self.topRwardItem = nil end --if self.change_jin_id then -- self.mainVo:UnBind(self.change_jin_id) -- self.change_jin_id = nil -- end if self.isGaming == true then -- Message.show("中途强制退出") self.closeBtn_img.raycastTarget = true self.resetBtn_img.raycastTarget = false self.model:Fire(EmpowerConst.EMPOWER_REQ_EVENT, 41402,0,0,"0") -- 告诉后端玩家取消发射了 end if self.orientation_change_id then GlobalEventSystem:UnBind(self.orientation_change_id) self.orientation_change_id = nil end end