--[[@------------------------------------------------------------------ @description:首充 @author:huangcong ----------------------------------------------------------------------]] FirstRechargeViewNew = FirstRechargeViewNew or BaseClass(BaseView) local FirstRechargeViewNew = FirstRechargeViewNew function FirstRechargeViewNew:__init() self.base_file = "rechargeActivity" self.layout_file = "FirstRechargeViewNew" self.layer_name = "UI" self.destroy_imm = true self.need_show_money = false --是否要显示顶部的金钱栏 self.use_background = true self.hide_maincancas = false --全屏界面需要放开隐藏主UI self.append_to_ctl_queue = false --添加进入控制队列 self.blur_activity_bg = true self.close_fog = true self.item_list = {} self.model = RechargeActivityModel:getInstance() self.mainVo = RoleManager.Instance.mainRoleInfo self.choose_index = 1 self.fire_change_visible_event = true self.open_guide_close = true self.showImg0_o_pos = {x = 0,y = 200} self.showImg1_o_pos = {x = -346,y = -228} self.showImg2_o_pos = {x = 0,y = 133} self.fightImg_o_pos = {x = 358,y = -228} 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 FirstRechargeViewNew:DestroySuccess( ) EquipModel:getInstance().need_equip_duibi = false self:StopAnim() if self.delay_id then TimerQuest.CancelQuest(GlobalTimerQuest, self.delay_id) self.delay_id = nil end cc.ActionManager:getInstance():removeAllActionsFromTarget(self.showImg1) self:ClearUIEffect(self.effectLeft) self:ClearUIEffect(self.effectRight) self:ClearUIEffect(self.effectHuohua) self:ClearUIEffect(self.effectHuohua1) self:ClearUIEffect(self.effectAward) if self.sound_id then lua_soundM:StopEffect(self, LuaSoundManager.SOUND_TYPE.GUIDE, self.sound_id) self.sound_id = nil end if RoleManager.Instance.mainRoleInfo.level 0 then GlobalEventSystem:Fire(EventName.START_AUTO_DO_TASK) --启动自动任务 end end for k,v in pairs(self.item_list) do UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, v) end self.item_list = {} end function FirstRechargeViewNew:Open() if RoleManager.Instance.mainRoleInfo.level首充后,奖励可连续领取3天!越早首充,前期优势越大!", ColorUtil.GOLD_DARK) self.goods_img_list = {} for i=1,4 do self.goods_img_list[i] = {} self.goods_img_list[i].transform = self:GetChild("goodsImg"..i) end local function bg_back_func( ... ) if self.background_wnd and self.background_wnd:GetComponent("RawImageExtend") then self:MoveUIToBack(self.background_wnd:GetComponent("RawImageExtend")) end self:MoveUIToBack(self.bg) self:MoveUIToBack(self.bg2) end if self.background_wnd then bg_back_func() else self.bg_back_func = bg_back_func end self.ori_dsg_pos = self.pupleImg.anchoredPosition.y + 60 SetAnchoredPositionY(self.pupleImg, self.ori_dsg_pos) self.up_dsg_pos = self.ori_dsg_pos + 15 self.down_dsg_pos = self.ori_dsg_pos - 15 self.tab_list = {} for i=1,3 do self.tab_list[i] = {} self.tab_list[i].bg_obj = self:GetChild("tabName"..i).gameObject self.tab_list[i].name_img = self:GetChild("tabName"..i):GetComponent("Image") self.tab_list[i].name_choose_obj = self:GetChild("tabNameChoose"..i).gameObject self.tab_list[i].name_choose_tmp = self:GetChild("tabName"..i.."/tabNameChooseText"..i):GetComponent(typeof(TMPro.TextMeshProUGUI)) self.tab_list[i].name_normal_tmp = self:GetChild("tabName"..i.."/tabNameNormalText"..i):GetComponent(typeof(TMPro.TextMeshProUGUI)) self.tab_list[i].redDot_obj = self:GetChild("redDot"..i).gameObject local function clickHandler(target) if target == self.tab_list[i].bg_obj then self:ChooseIndex(i) self:PlaySwithTabAnim() end end AddClickEvent(self.tab_list[i].bg_obj, clickHandler,2) end self:ArrowAnimation(0) -- 隐藏并调整目标节点 -- self.showImg0_img.color = Color(1,1,1,0)--右 self.showImg1_img.color = Color(1,1,1,0)--右 self.showImg2_img.color = Color(1,1,1,0)--左 self.fightImg_img.color = Color(1,1,1,0)--左 -- SetAnchoredPositionX(self.showImg0, self.showImg0_o_pos.x - RechargeActivityConst.FisrtRechargeNameMoveX) SetAnchoredPositionX(self.showImg1, self.showImg1_o_pos.x - RechargeActivityConst.FisrtRechargeNameMoveX) SetAnchoredPositionX(self.showImg2, self.showImg2_o_pos.x + RechargeActivityConst.FisrtRechargeNameMoveX) SetAnchoredPositionX(self.fightImg, self.fightImg_o_pos.x + RechargeActivityConst.FisrtRechargeNameMoveX) if self.need_load_again then self:UpdateView() end end function FirstRechargeViewNew:AddEvent() local on_click = function ( click_obj ) if self.closeBtn_obj == click_obj then--关闭按钮 self:Close() elseif self.rechargeBtn_obj == click_obj then--充值按钮 if self.rechargeBtn_img.gray then Message.show("您已经领取过奖励啦~!","fault") return end if self.server_info then if self.server_info.open == 0 then--充值 self:Close() self.model.need_open_first_recharge_for_vip = true OpenFun.Open(450,1) else if self.choose_data.state == 0 then local str = string.format("首充登录第%s天可领取",self.choose_data.index) Message.show(str) elseif self.choose_data.state == 1 then self.model:Fire(RechargeActivityModel.REQUEST_CCMD_EVENT, 15906, self.choose_data.index, self.choose_data.product_id) end end end end end AddClickEvent(self.rechargeBtn_obj, on_click) AddClickEvent(self.closeBtn_obj, on_click) local updateFunc = function () self:UpdateView() end self:BindEvent(self.model, RechargeActivityModel.UPDATE_FIRST_RECHARGE_VIEW, updateFunc) end function FirstRechargeViewNew:UpdateView() if not self.is_loaded then self.need_load_again = true return end self.server_info = self.model:GetFirstRechargeInfo() if not self.server_info or not self.server_info.product_list then return end local index = nil for i,v in ipairs(self.server_info.product_list) do if v.state == 1 and not index then index = i end self.tab_list[i].redDot_obj:SetActive(v.state == 1) end if not index then for i,v in ipairs(self.server_info.product_list) do if not index then index = 1 end if v.state == 2 then if index + 1 <= 3 then index = i + 1 end end end end if index then self.choose_index = index end self:ChooseIndex(self.choose_index) if not self.is_start_ainm then self.is_start_ainm = true local function func( ... ) self:PlaySwithTabAnim() end self.delay_id = setTimeout(func,0.5) end end --选中哪个页签 function FirstRechargeViewNew:ChooseIndex( index ) self.choose_index = index or self.choose_index self.choose_data = self.server_info.product_list[self.choose_index] self.rechargeBtn_img.gray = self.choose_data.state == 2 self.redDot_obj:SetActive(self.choose_data.state == 1) local btn_effect = self.choose_data.state ~= 2 if btn_effect and btn_effect ~= self.btn_effect then elseif not btn_effect then end self.btn_effect = btn_effect local btn_res = "recharge_btn_t_1"--领取 if self.server_info.open == 1 then--已充值 if self.choose_data.state == 1 then btn_res = "recharge_btn_t_1"--"立即领取" elseif self.choose_data.state == 2 then btn_res = "recharge_btn_t_2"--已领取" elseif self.choose_data.state == 0 and self.choose_data.index == 2 then btn_res = "recharge_btn_t_3"--明日可领" elseif self.choose_data.state == 0 and self.choose_data.index == 3 then if self.server_info.product_list[2].state == 2 or self.server_info.product_list[2].state == 1 then btn_res = "recharge_btn_t_3"--明日可领" elseif self.server_info.product_list[2].state == 0 then btn_res = "recharge_btn_t_4"--第三日可领" end end end lua_resM:setImageSprite(self, self.rechargeBtnText_img, "rechargeActivity_asset", btn_res,true) lua_resM:setImageSprite(self, self.showImg3_img, "rechargeActivity_asset", "recharge_award_name_img"..index,true) lua_resM:setOutsideImageSprite(self, self.showImg1_img, GameResPath.GetRechargeActivityImage("first_recharge_show_bg1_"..index), true) lua_resM:setOutsideImageSprite(self, self.showImg2_img, GameResPath.GetRechargeActivityImage("first_recharge_show_bg2_"..index), true) lua_resM:setOutsideImageSprite(self, self.showImg0_img, GameResPath.GetRechargeActivityImage("first_recharge_show_bg"..index), true) lua_resM:setOutsideImageSprite(self, self.fightImg_img, GameResPath.GetRechargeActivityImage("recharge_fight_num"..index), true) for i=1,3 do if i == index then self.tab_list[i].name_choose_tmp.text = string.format("第%s天",ChineseNumber(i)) self.tab_list[i].name_normal_tmp.text = "" self.tab_list[i].name_choose_obj:SetActive(true) else self.tab_list[i].name_choose_tmp.text = "" self.tab_list[i].name_normal_tmp.text = string.format("第%s天",ChineseNumber(i)) self.tab_list[i].name_choose_obj:SetActive(false) end end local show_str = self.choose_data.product_id .. "@" .. RoleManager.Instance.mainRoleInfo.career .. "@" .. self.choose_data.index local show_cfg = DeepCopy(Config.Rechargefirst[show_str]) local function end_call_func( ... ) if show_cfg then self:UpdateAwardList(show_cfg.reward) self:UpdateModelCon(self.roleCon,show_cfg.left_res,nil,true) self.pupleImg_obj:SetActive(self.choose_data.index == 3) self.roleCon2_obj:SetActive(self.choose_data.index ~= 3) if self.choose_data.index == 3 then SetSizeDelta(self.pupleImg, 250, 70) local data = { parent = self, dress_id = 425014, bubbleCon = self.pupleImg, } FuncOpenModel:getInstance():ShowBubble(data) else self:UpdateModelCon(self.roleCon2,show_cfg.right_res,nil,false) end end end end_call_func() end --更新奖励 function FirstRechargeViewNew:UpdateAwardList( reward ) local item_list = stringtotable(reward) if not item_list or TableSize(item_list) == 0 then return end self.award_item_list = item_list for i, v in ipairs(item_list) do local item = self.item_list[i] if not item then item = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.goods_img_list[i].transform) self.item_list[i] = item item:SetIsFixSize(false) item:SetIsAct(true) item:SetItemSize(78, 78) item:SetVisible(not RechargeActivityConst.PlayAwardAction) end local typeId, lock = GoodsModel:getInstance():GetMappingTypeId(v[1], v[2]) local goods_Id, lock = GoodsModel:getInstance():GetMappingTypeId(v[1], v[2]) local goodVo = GoodsModel:getInstance():GetGoodsBasicByTypeId(goods_Id) if goodVo then item:SetData(goods_Id, v[3], nil, nil, lock) local equip_cfg = EquipModel:getInstance():GetEquipmentCfg(goods_Id) if equip_cfg then EquipModel:getInstance().need_equip_duibi = true item:ChangeEquipState(self.choose_data.state ~= 2 and 1 or nil) else item:ChangeEquipState(nil) end -- lua_resM:setOutsideImageSprite(self, self.goods_img_list[i].img, GameResPath.GetGoodsIcon(goodVo.goods_icon), true) end end for i=1,3 do if RechargeActivityConst.RechargeAwardNameList[self.choose_data.index] then self["goodsNameText"..(i+1).."_tmp"].text = RechargeActivityConst.RechargeAwardNameList[self.choose_data.index][i] end end end --更新模型 function FirstRechargeViewNew:UpdateModelCon( transform,model_data,is_force,is_left ) local index = is_left and self.left_old_choose_index or self.right_old_choose_index if self.choose_data.index ~= self.old_choose_index or is_force then if is_left then self.left_old_choose_index = self.choose_data.index else self.right_old_choose_index = self.choose_data.index end else return end local model_data = stringtotable(model_data) local figure_data = nil if model_data then figure_data = model_data[1] end if figure_data then local model_cfg = CustomActivityModel:getInstance():GetActModelConShowCfg(self.base_type,tonumber(figure_data[3]),tonumber(figure_data[4])) local scale = model_cfg and model_cfg.scale or 255 local position = model_cfg and model_cfg.position or Vector3(0,400,-300) local fashion_type = tonumber(figure_data[3]) local career = RoleManager.Instance.mainRoleInfo.career if fashion_type == FuncOpenModel.TypeId.FWing then--背饰放大 scale = 350 position = Vector3(-35,400,-300) elseif fashion_type < 1000 then scale = 220 elseif fashion_type == FuncOpenModel.TypeId.FWeapon then--武器位置调高一点 if career == 3 or career == 4 then scale = 440 position = Vector3(55,300,-300) elseif career == 1 then scale = 260 position = Vector3(40,480,-300) elseif career == 2 then scale = 300 position = Vector3(20,440,-300) end elseif fashion_type == FuncOpenModel.TypeId.Light then--幻光大小需要调整 scale = 1.9 position = Vector3(25,135,-300) end if figure_data[1] == "show" then local res_data = { father_node = self, transform = transform, fashion_type = tonumber(figure_data[3]), raycast_size = Vector2(400,1200), scale = scale, figure_id = figure_data[4], position = position, layer_name = "UI", ui_model_type = UIModelCommon.ModelType.BackModel, show_shadow = false, use_bloom = false, can_rotate = true, light_id = nil, } -- print("huangcong:FirstRechargeViewNew [start:361] :", model_data) -- PrintTable(model_data) -- print("huangcong:FirstRechargeViewNew [end]") if TableSize(model_data) > 1 then local career = self.mainVo.career for i,v in ipairs(model_data) do local fashion_type = tonumber(v[3]) local figure_id = tonumber(v[4]) if figure_id then if type_pos ~= FashionPartPos.wing and type_pos ~= FashionPartPos.Hat and type_pos ~= FashionPartPos.light then if career then if figure_id < 1000 then figure_id = figure_id + career * 1000 end end else figure_id = figure_id end end if fashion_type == FuncOpenModel.TypeId.Clothes then --衣服 res_data.fashion_model_id = figure_id elseif fashion_type == FuncOpenModel.TypeId.Weapon then --武器 res_data.weapon_res_id = figure_id elseif fashion_type == FuncOpenModel.TypeId.Head then --头饰 res_data.head_wear_id = figure_id elseif fashion_type == FuncOpenModel.TypeId.Footprint then --足迹 type_pos = FashionPartPos.Footmark elseif fashion_type == FuncOpenModel.TypeId.wing then --背部 res_data.wing_id = figure_id elseif fashion_type == FuncOpenModel.TypeId.Hat then--头套 res_data.hat_wear_id = figure_id elseif fashion_type == FuncOpenModel.TypeId.RoleLight then--人物幻光 res_data.light_id = figure_id end end end FuncOpenModel:getInstance():SetModelRes(res_data) else end end end --图片上下移动 function FirstRechargeViewNew:ArrowAnimation(time) self:StopAnim() local call_fun = function () local function onCompleted() self:ArrowAnimation(time) end self.dsgcon_move_up_id = TweenLite.to(self, self.pupleImg, TweenLite.UiAnimationType.POSY, self.up_dsg_pos, 1.2, onCompleted) end local onDelay = function( ) self.dsg_con_move_down_id = TweenLite.to(self, self.pupleImg, TweenLite.UiAnimationType.POSY, self.down_dsg_pos, 1.2, call_fun) end self.dsg_move_delay_id = setTimeout(onDelay, time) end function FirstRechargeViewNew:StopAnim() if self.dsg_con_move_down_id then TweenLite.Stop(self.dsg_con_move_down_id) self.dsg_con_move_down_id = nil end if self.dsgcon_move_up_id then TweenLite.Stop(self.dsgcon_move_up_id) self.dsgcon_move_up_id = nil end if self.dsg_move_delay_id then GlobalTimerQuest:CancelQuest(self.dsg_move_delay_id) self.dsg_move_delay_id = nil end end function FirstRechargeViewNew:CancelHide( ) BaseView.CancelHide(self) if self.is_loaded then Scene.Instance:ChangeFogEnable(false) if self.choose_data then local show_str = self.choose_data.product_id .. "@" .. RoleManager.Instance.mainRoleInfo.career .. "@" .. self.choose_data.index local show_cfg = DeepCopy(Config.Rechargefirst[show_str]) if show_cfg then self:UpdateAwardList(show_cfg.reward) self:UpdateModelCon(self.roleCon,show_cfg.left_res,true,true) self:UpdateModelCon(self.roleCon2,show_cfg.right_res,true,false) end end end end function FirstRechargeViewNew:Hide( ) BaseView.Hide(self) EquipModel:getInstance().need_equip_duibi = false end -- 播放切换页签动画 function FirstRechargeViewNew:PlaySwithTabAnim( ) cc.ActionManager:getInstance():removeAllActionsFromTarget(self.showImg1) -- 隐藏并调整目标节点 -- self.showImg0_img.color = Color(1,1,1,0)--右 self.showImg1_img.color = Color(1,1,1,0)--右 self.showImg2_img.color = Color(1,1,1,0)--左 self.fightImg_img.color = Color(1,1,1,0)--左 -- SetAnchoredPositionX(self.showImg0, self.showImg0_o_pos.x - RechargeActivityConst.FisrtRechargeNameMoveX) SetAnchoredPositionX(self.showImg1, self.showImg1_o_pos.x - RechargeActivityConst.FisrtRechargeNameMoveX) SetAnchoredPositionX(self.showImg2, self.showImg2_o_pos.x + RechargeActivityConst.FisrtRechargeNameMoveX) SetAnchoredPositionX(self.fightImg, self.fightImg_o_pos.x + RechargeActivityConst.FisrtRechargeNameMoveX) -- 进度百分比回调 local function cg_callback(percent) self.showImg1_img.color = Color(1,1,1,percent) self.showImg2_img.color = Color(1,1,1,percent) -- self.showImg0_img.color = Color(1,1,1,percent) self.fightImg_img.color = Color(1,1,1,percent) -- SetAnchoredPositionX(self.showImg0, self.showImg0_o_pos.x + RechargeActivityConst.FisrtRechargeNameMoveX * (percent - 1)) SetAnchoredPositionX(self.showImg1, self.showImg1_o_pos.x + RechargeActivityConst.FisrtRechargeNameMoveX * (percent - 1)) SetAnchoredPositionX(self.showImg2, self.showImg2_o_pos.x - RechargeActivityConst.FisrtRechargeNameMoveX * (percent - 1)) SetAnchoredPositionX(self.fightImg, self.fightImg_o_pos.x - RechargeActivityConst.FisrtRechargeNameMoveX * (percent - 1)) if not self.showing_effect then self.showing_effect = true local function call_back( ) -- self.showing_effect = false end self:ClearUIEffect(self.rightEffect2) self:AddUIEffect("ui_effect_shouchong04", self.effectAward, self.layer_name, nil, 1, false,nil,nil,call_back,nil,1.25,nil) end end local pec_action = cc.CustomUpdate.New(RechargeActivityConst.FisrtRechargeActionTime, cg_callback) local function call_func() if not self.title_is_action then self.title_is_action = true end end local callfun1 = cc.CallFunc.New(call_func) pec_action = cc.Sequence.New(pec_action, callfun1) cc.ActionManager:getInstance():addAction(pec_action, self.showImg1) end