源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

558 lines
21 KiB

--[[@------------------------------------------------------------------
@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<TaskModel.AutoOpViewStopTask then
local task_data = TaskModel:getInstance():GetMainTask()
if self.need_close_task and task_data and task_data.id > 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<TaskModel.AutoOpViewStopTask then
self.is_auto_task = TaskModel:getInstance():GetTaskAutoFlag()
GlobalEventSystem:Fire(EventName.STOP_AUTO_DO_TASK) --停止自动任务
GlobalEventSystem:Fire(EventName.CANCEL_TO_COLLECT) --停止采集任务
if self.is_auto_task then
self.need_close_task = true
end
end
BaseView.Open(self)
end
function FirstRechargeViewNew:OpenSuccess( )
self:UpdateView()
if not RechargeActivityModel:getInstance():IsRecharge() then
self.sound_id = lua_soundM:PlayEffect(self, "guide_10", false, LuaSoundManager.SOUND_TYPE.GUIDE)
end
end
function FirstRechargeViewNew:LoadSuccess()
local nodes = {
"bg:raw","bg2:raw", "rechargeBtn:obj:img", "rechargeBtn/rechargeBtnText:img","rechargeBtn/redDot:obj", "closeBtn:obj",
"fightImg:img", "showImg1:img", "showImg0:img", "showImg2:img", "showImg3:img",
"roleCon2:obj", "roleCon","descText:tmp", "goodsNameText4:tmp", "goodsNameText3:tmp", "goodsNameText2:tmp", "pupleImg:obj:img",
--特效情况
"effectRight", "effectLeft", "effectHuohua", "effectAward", "effectHuohua1",
}
self:GetChildren(nodes)
self:ClearUIEffect(self.effectHuohua)
self:AddUIEffect("ui_effect_shouchong03", self.effectHuohua, self.layer_name, nil, 2, false,nil,nil,nil,nil,nil,nil)
self:AddUIEffect("ui_effect_shouchong03", self.effectHuohua1, self.layer_name, nil, 2, false,nil,nil,nil,nil,nil,nil)
self:AddUIEffect("ui_fazhenguangtiao", self.effectRight, self.layer_name, nil, 1, false,nil,nil,nil,nil,nil,nil)
self:AddUIEffect("ui_fazhenguangtiao", self.effectLeft, self.layer_name, nil, 1, false,nil,nil,nil,nil,nil,nil)
lua_resM:setOutsideRawImage(self, self.bg_raw, GameResPath.GetViewBigBg("first_recharge_bg1"))
lua_resM:setOutsideRawImage(self, self.bg2_raw, GameResPath.GetViewBigBg("first_recharge_bg"))
self.descText_tmp.text = HtmlColorTxt( "<color=#ffffff>首充后,奖励可连续领取3天!</color>越早首充,前期优势越大!", 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