源战役客户端
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.
 
 
 
 
 

945 lines
32 KiB

CapsuleEggView = CapsuleEggView or BaseClass(BaseView)
local CapsuleEggView = CapsuleEggView
function CapsuleEggView:__init()
self.base_file = "capsuleEgg"
self.layout_file = "CapsuleEggView"
self.layer_name = "UI"
self.destroy_imm = true
self.use_background = true
self.change_scene_close = true
self.hide_maincancas = true --是否隐藏主界面
self.append_to_ctl_queue = false --是否要添加进界面堆栈
self.need_show_money = true --是否要显示顶部的金钱栏
self.ten_buff_offer = 100--默认不打折
self.close_fog = true
self.is_set_zdepth = true
self.need_culling_mask_ground = true --打开界面是否需要摄像机剔除ground层
self.blur_activity_bg = true
self.use_show_anim = true
self.use_hide_anim = true
self:AddPreLoadList("capsuleEgg", {"CapsuleEggRecordItem"})
self.mainVo = RoleManager.Instance.mainRoleInfo
self.model = CapsuleEggModel:getInstance()
self.reward_item_list = {}
self.cache_record_list = {} -- 当前页签的节点数据比上个页签少的时候,把多余的节点存进来
self.show_item_list = {}
self.label_list = {}
self.current_pool_type = nil
self.last_draw_time_1 = 0
self.last_draw_time_10 = 0
self.last_draw_time_50 = 0
self.load_callback = function ()
self:LoadSuccess()
self:AddEvent()
end
self.open_callback = function ( )
self:OpenSuccess()
end
self.close_win_callback = function ( )
self:Close()
end
self.destroy_callback = function ( )
self:DestroySuccess()
end
end
function CapsuleEggView:Open(index)
self.current_pool_type = index or CapsuleEggConst.PoolType.Dragon
BaseView.Open(self)
end
function CapsuleEggView:LoadSuccess()
local nodes = {
"bg:raw","titleImg:img", "sloganImg:img",
"costIcon3:img", "costIcon1:img", "costIcon2:img", --花费货币图标
"costPrice1:tmp", "costPrice3:tmp", "costPrice2:tmp",
"closeBtn:obj",
--奖品栏
"awardCon/award7", "awardCon/award3", "awardCon/award5", "awardCon/award2", "awardCon/award8",
"awardCon/award1", "awardCon/award9", "awardCon/award4", "awardCon/award6", "awardCon/award10",
"drawBtn_1:obj", "drawBtn_10:obj", "drawBtn_50:obj", --抽奖按钮
"recordCon/recordScrollView/Viewport/Content", "recordCon/recordScrollView:obj",
"recordCon/recordBg:img",
"countDown:tmp",--免费倒计时
"drawBtn_1/drawBtnText:tmp",
"drawBtn_1/drawRed1:obj", "drawBtn_50/drawRed50:obj", "drawBtn_10/drawRed10:obj",
"helpBtn:obj", "probBtn:obj",
"rewardBtn:obj",
"rewardBtn/rewardRed:obj",
"recordCon",
"recordCon/recordTips:tmp",
"awardCon/award_scroll/Viewport/award_con",
"awardCon/award_scroll",
"rewardcountDown:tmp",
"con_money:obj",
--打折BUFF节点
"tenBuffText:tmp", "fiftyBuffText:tmp", "costPriceOfferLine3:obj", "costPriceOffer3:tmp", "costPriceOfferLine2:obj", "costPriceOffer2:tmp",
--龙神常驻BUFF节点
"buffBtn:obj:img", "buffTimeText:tmp", "buffTipImg:obj",
--不足十连提示气泡
"tenTips:obj", "tenTips/tenTipsGetBtn:obj", "tenTips/tenTipsLeftNum:tmp",
"rewardPreviewBtn:obj",
--幸运值
"luckyCon/luckyProgressLb:tmp", "luckyCon/luckyAdditionLb:tmp", "luckyCon/luckySlider:img",
}
self:GetChildren(nodes)
self.reward_con_list = {}
for i=1,10 do
self.reward_con_list[i] = self["award"..i]
end
lua_resM:setOutsideRawImage(self,self.bg_raw,GameResPath.GetViewBigBg("capsule_egg_bg_1280_720"))
-- lua_resM:setOutsideImageSprite(self, self.recordBg_img, GameResPath.GetCapsuleEggRes("capsule_egg_record_bg"))
SetSizeDelta(self.transform, ScreenWidth, ScreenHeight)
self:SetIpxMode()
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_raw)
end
if self.background_wnd then
bg_back_func()
else
self.bg_back_func = bg_back_func
end
if not self.money_view then
self.money_view = UIMoneyView.New(self.con_money)
self.money_view:SetPosition(0,0)
self.money_view:SetData()
self.money_view:ChangeShowFlag("capsuleegg", 102305)
end
end
function CapsuleEggView:AddEvent()
local on_click = function ( click_obj )
if self.closeBtn_obj == click_obj then--关闭界面
self:Close()
elseif self.rewardBtn_obj == click_obj then --奖励预览
self.model:Fire(CapsuleEggConst.OPEN_CAPSULE_EGG_REWARD_VIEW, current_pool_type)
elseif self.drawBtn_1_obj == click_obj then--单抽
CustomActivityModel:getInstance():SetGoodsCanFly(false)
if TimeUtil:getServerTimeMs()/1000 - self.last_draw_time_1 > 1 then
self.last_draw_time_1 = TimeUtil:getServerTimeMs()/1000
self:StartDraw(1)
end
elseif self.drawBtn_10_obj == click_obj then--十连
CustomActivityModel:getInstance():SetGoodsCanFly(false)
if TimeUtil:getServerTimeMs()/1000 - self.last_draw_time_10 > 1 then
self.last_draw_time_10 = TimeUtil:getServerTimeMs()/1000
self:StartDraw(10)
end
elseif self.drawBtn_50_obj == click_obj then--五十连
if TimeUtil:getServerTimeMs()/1000 - self.last_draw_time_50 > 1 then
self.last_draw_time_50 = TimeUtil:getServerTimeMs()/1000
self:StartDraw(50)
end
elseif self.helpBtn_obj == click_obj then
EventSystem.Fire(GlobalEventSystem,EventName.OPEN_INSTRUCTION_VIEW, 17000)
elseif self.probBtn_obj == click_obj then
Message.show("概率公式待完善")
elseif self.tenTipsGetBtn_obj == click_obj then
UIToolTipMgr:getInstance():AppendGoodsTips(102305, nil, nil,nil,nil,nil,nil,true,true)
elseif self.rewardPreviewBtn_obj == click_obj then
self.model:Fire(CapsuleEggConst.OPEN_CAPSULE_EGG_REWARD_PRE_VIEW,self.current_pool_type)
elseif self.buffBtn_obj == click_obj then--龙神常驻BUFF按钮
local buff_kind = OperateActivityModel.MaterialSubmitBuffKind.EGG_LUCKY_NUM --触发加成后,<color@1>龙神宝库</color>前2次10连抽享受八折优惠(十连券不计入)
local buff_cfg,buff_info,dot = OperateActivityModel:getInstance():GetMaterialBuffInfoByKind(buff_kind)
if buff_cfg and buff_info then
local abs_pos = click_obj.transform:TransformPoint(Vector3.zero)
local sub_type = CustomActivityModel:getInstance():getActMinSubType(CustomActivityModel.CustomActBaseType.MATERIAL_SUBMIT)
local act_list = CustomActivityModel:getInstance():getActList(CustomActivityModel.CustomActBaseType.MATERIAL_SUBMIT, sub_type)
if act_list then
local buff_data = nil
for k,v in pairs(act_list.condition_list) do--[{role_lv,80},{sub,1},{cost,30},{group,5}]
if v[1] == "suit" then--全服进度套件ID
buff_data = OperateActivityModel:getInstance():GetMaterialSubmitServerCfg(tonumber(v[2]),dot)
break
end
end
if buff_data then
local data = {
sub_type = sub_type,
buff_data = buff_data,
pos_x = abs_pos.x,
pos_y = abs_pos.y,
is_outside = true,
}
OperateActivityModel:getInstance():Fire(OperateActivityModel.OPEN_MATERIAL_SUBMIT_BUFF_VIEW,data)
end
end
end
end
end
AddClickEvent(self.closeBtn_obj, on_click)
AddClickEvent(self.drawBtn_1_obj, on_click)
AddClickEvent(self.drawBtn_10_obj, on_click)
AddClickEvent(self.drawBtn_50_obj, on_click)
AddClickEvent(self.helpBtn_obj, on_click)
AddClickEvent(self.probBtn_obj, on_click)
AddClickEvent(self.rewardBtn_obj, on_click)
AddClickEvent(self.tenTipsGetBtn_obj, on_click)
AddClickEvent(self.rewardPreviewBtn_obj, on_click)
AddClickEvent(self.buffBtn_obj, on_click)
--刷新倒计时
local function on_update_count_down(pool_type)
if pool_type == self.current_pool_type then
self:UpdataFreeTimeInfo()
end
end
self:BindEvent(self.model,CapsuleEggConst.UPDATE_CAPSULE_EGG_FREE_COUNT_DOWN,on_update_count_down)
--刷新全服记录
local function on_update_record(pool_type)
if pool_type == self.current_pool_type then
self:UpdateASRecord()
end
end
self:BindEvent(self.model,CapsuleEggConst.UPDATE_SERVER_RECORD,on_update_record)
local function on_ans_update_red_dot()
self:UpdateRed()
self:UpdateCost()
end
self:BindEvent(self.model, CapsuleEggConst.ANS_UPDATE_RED_DOT, on_ans_update_red_dot)
local function on_goods_num_update()
self:UpdateCost()
self:UpdateTenTipsShow()
end
self:BindEvent(self.model, CapsuleEggConst.UPDATE_CPASULE_EGG_GOODS_NUM, on_goods_num_update)
local function updata_buff_state(id)
if id == KfActivityModel.TabID.MaterialSubmit and self.is_loaded then
self:UpdateCost()
end
end
self:BindEvent(KfActivityModel:getInstance(), KfActivityModel.ANS_UPDATE_VIEW, updata_buff_state)
local function onOrientationChange()
self:SetIpxMode()
end
self:BindEvent(GlobalEventSystem, EventName.ORIENTATION_DID_CHANGE, onOrientationChange)
local function on_update_lucky_num()
if not self.is_loaded then return end
if self._use_delete_method then return end
self:UpdateLuckyCon()
end
self:BindEvent(self.model, CapsuleEggConst.UPDATE_CAPSULE_SERVER_LUCKY, on_update_lucky_num)
end
function CapsuleEggView:SetIpxMode( )
if ClientConfig.iphone_x_model then
self.closeBtn.anchoredPosition = Vector2(-8-ClientConfig.iphone_x_offset_right, 335)
self.titleImg.anchoredPosition = Vector2(-48+ClientConfig.iphone_x_offset_left, 306)
-- self.recordCon.anchoredPosition = Vector2(0+ClientConfig.iphone_x_offset_left, -278)
-- self.rewardBtn.anchoredPosition = Vector2(-101-ClientConfig.iphone_x_offset_right, -280)
-- self.rewardcountDown.anchoredPosition = Vector2(-85-ClientConfig.iphone_x_offset_right, -326)
end
end
function CapsuleEggView:SetJinValue()
if self.is_loaded then
self.num_1_tmp.text = WordManager:ConvertNum(self.mainVo.jin)
end
end
function CapsuleEggView:OpenSuccess()
self:UpdateRed()
self:SwitchTab(self.current_pool_type)
end
function CapsuleEggView:SwitchTab( index )
-- if index == self.current_pool_type then return end
self.current_pool_type = index
self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17000,self.current_pool_type)
self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17001,self.current_pool_type)
lua_resM:setOutsideImageSprite(self, self.titleImg_img, GameResPath.GetCapsuleEggRes("capsule_egg_draw_type_title_"..self.current_pool_type),true)
lua_resM:setOutsideImageSprite(self, self.sloganImg_img, GameResPath.GetCapsuleEggRes("capsule_egg_slogan_"..self.current_pool_type),true)
self:UpdateRewardCon()
self:UpdateASRecord()
self:UpdataFreeTimeInfo()
self:UpdateCost()
self:UpdateResetTime()
self:UpdateLuckyCon()
self:UpdateTenTipsShow()
end
--全服概率展示
function CapsuleEggView:UpdateLuckyCon( )
local server_lucky = self.model:GetServerlucky(self.current_pool_type)
if self.have_act_buff_lucky_num then
server_lucky = 999
end
local max_server = 999
self.luckyProgressLb_tmp.text = server_lucky.."/"..max_server
self.luckySlider_img.fillAmount = server_lucky/max_server
local cfg = self.model.capsule_egg_kv_cfg["server_lucky_value"]
if cfg then
local lucky_addition_list = stringtotable(cfg.value)
local lucky_addition = lucky_addition_list[1][2]
for i,v in ipairs(lucky_addition_list) do
if server_lucky >= v[1] then
lucky_addition = v[2]
end
end
self.luckyAdditionLb_tmp.text = "+"..lucky_addition.."%"
end
end
--显示奖品
function CapsuleEggView:UpdateRewardCon( )
local reward_cfg = self.model:GetRewardCfg(self.current_pool_type)
for k,v in pairs(self.reward_item_list) do
v:SetVisible(false)
end
for i=1,10 do
local item = self.reward_item_list[i]
if not item then
-- item = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.reward_con_list[i])
item = CapsuleEggShowAwardItem.New(self.reward_con_list[i])
self.reward_item_list[i] = item
end
local award_item_size = CapsuleEggConst.AwardItemSize[i]
-- item:SetItemSize(award_item_size, award_item_size)
item:SetVisible(true)
local goods_type_id = reward_cfg[i][2]
item:SetData(goods_type_id,i)
end
local sub_reward_cfg = {}
for i,v in ipairs(reward_cfg) do
if i > 10 then
table.insert(sub_reward_cfg, v)
end
end
-- for i,v in ipairs(self.show_item_list) do
-- v:SetVisible(false)
-- end
-- for i,v in ipairs(sub_reward_cfg) do
-- local item = self.show_item_list[i]
-- if not item then
-- item = CapsuleEggShowAwardItemTwo.New(self.award_con, nil, self.layer_name)
-- self.show_item_list[i] = item
-- item:SetAnchoredPosition((70 + 18) * (i - 1), 0 )
-- end
-- item:SetVisible(true)
-- item:SetData(v[2])
-- end
-- SetSizeDelta(self.award_con, #sub_reward_cfg * (70 + 18), 84)
end
--刷新全服记录
function CapsuleEggView:UpdateASRecord( )
local record_list = self.model:GetAllRecordList(self.current_pool_type)
local x1 = self.model:GetStickRecordList(self.current_pool_type)
local x2 = self.model:GetNormalRecordList(self.current_pool_type)
-- 创建的时候要暂停动画
self:StopTextAction()
local del_num = 0
for k = #self.cache_record_list, 1, -1 do
self.label_list[#self.label_list+1] = table.remove(self.cache_record_list, k)
end
for k,v in pairs(self.label_list) do
v:SetVisible(false)
end
if #record_list == 0 then
self.recordTips_tmp.text = "暂无全服记录"
self.recordScrollView_obj:SetActive(false)
else
self.recordTips_tmp.text = ""
self.recordScrollView_obj:SetActive(true)
end
local node_height = self.recordScrollView.sizeDelta.y
local height = 0
local item
self.record_count = 0
for k, v in ipairs(record_list) do
if k > self.model.max_record_count then
break
end
item = self.label_list[k]
if not item then
item = CapsuleEggRecordItem.New(self.Content)
self.label_list[k] = item
end
item:SetAnchoredPosition(5, -height)
item:SetVisible(true)
height = height + item:SetData(v)
self.record_count = self.record_count + 1
end
if self.record_count < #self.label_list then
for i = #self.label_list, self.record_count + 1, -1 do
self.cache_record_list[#self.cache_record_list+1] = table.remove(self.label_list, i)
end
end
SetSizeDeltaY(self.Content, height)
if height > node_height then
self:StartTextAction()
end
end
function CapsuleEggView:StartTextAction()--开始轮播动画
self:StopTextAction()
local time = 1
local function func()
self:UpdateTextPos()
self:Movetext()
end
self.time_id = GlobalTimerQuest:AddPeriodQuest(func,time,-1)
end
function CapsuleEggView:StopTextAction()
if self.time_id then
GlobalTimerQuest:CancelQuest(self.time_id)
self.time_id = nil
end
self:StopMove()
end
function CapsuleEggView:Movetext()
local text = self.label_list[1]
local move_height = text:GetAnchoredPosition().y
move_height = move_height > 0 and 0 or move_height
for k,text in pairs(self.label_list) do
text:StartAction(move_height)
end
end
function CapsuleEggView:StopMove()
for k,text in pairs(self.label_list) do
text:StopAction()
end
end
function CapsuleEggView:UpdateTextPos()
local delete_index={}
local height = 0
for i=1,self.record_count do
local text = self.label_list[i]
if text then
local vis = text:GetVisible()
local h = text:GetRecordHeight()
local y = text:GetAnchoredPosition().y
height = height + (vis and h or 0)
if y + h > 40 and vis then
table.insert(delete_index,i)
end
end
end
local del_num=0
local t = {}
for i,v in ipairs(delete_index) do
local index= v-del_num
local text = table.remove(self.label_list,index)
t[#t+1] = text
del_num=del_num+1
end
for i=1,#t do
local text = t[i]
text:SetAnchoredPosition(5,-height)
table.insert(self.label_list , text)
end
end
--刷新免费抽奖时间展示
function CapsuleEggView:UpdataFreeTimeInfo()
local next_free_draw = self.model:GetNextFreeDrawTimeByPoolType(self.current_pool_type)
if next_free_draw ~= 0 and self.model:GetFreeDrawTimesByPoolType(self.current_pool_type) == 0 then
local time = next_free_draw - TimeUtil:getServerTime()
self.drawRed1_obj:SetActive(time <= 0)
self:UpdateFreeOneLuck()
else
GlobalTimerQuest:CancelQuest(self.count_down_timer_id)
self.count_down_timer_id = nil
self.drawRed1_obj:SetActive(true)
self.drawBtnText_tmp.text = "本次免费"
self.countDown_tmp.text = ""
end
end
function CapsuleEggView:UpdateFreeOneLuck( )--更新免费次数剩余时间
local have_time = self.model:GetNextFreeDrawTimeByPoolType(self.current_pool_type)-TimeUtil:getServerTime()
self.countDown_tmp.text = ""
GlobalTimerQuest:CancelQuest(self.count_down_timer_id)
self.count_down_timer_id = nil
if have_time > 0 then
self.drawRed1_obj:SetActive(false)
local function onTimer()
have_time = have_time - 1
if have_time > 0 then
self.countDown_tmp.text = string.format("%s 后免费",TimeUtil:timeConvert13(have_time))
self.drawBtnText_tmp.text = "寻宝 1 次"
else
GlobalTimerQuest:CancelQuest(self.count_down_timer_id)
self.count_down_timer_id = nil
self.countDown_tmp.text = ""
self.drawRed1_obj:SetActive(true)
self.drawBtnText_tmp.text = "本次免费"
--请求协议刷新一次信息
self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17000,self.current_pool_type)
end
end
onTimer()
if not self.count_down_timer_id then
self.count_down_timer_id = GlobalTimerQuest:AddPeriodQuest(onTimer, 1, -1)
end
self.drawRed1_obj:SetActive(false)
self.drawBtnText_tmp.text = "寻宝 1 次"
else
self.drawRed1_obj:SetActive(true)
self.drawBtnText_tmp.text = "本次免费"
end
end
--开始扭蛋
function CapsuleEggView:StartDraw(times)
local ticket_num_list = self.model:GetCostTicketNumList()
local price_asset, price_icon = WordManager:GetCommonMoneyIcon(1)
local cost_price = 0
local tickets_goods_type_id = 102305
if self.current_pool_type == 1 then
tickets_goods_type_id = 102305
elseif self.current_pool_type == 2 then
tickets_goods_type_id = 102308
elseif self.current_pool_type == 3 then
tickets_goods_type_id = 102311
end
local tickets_price = Config.Goodsprice[tickets_goods_type_id].price
if times == 1 then
if self.model:CanFreeDraw(self.current_pool_type) then--免费抽
self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17003,self.current_pool_type,times,1)
return
else
if ticket_num_list[self.current_pool_type][1] >= 1 then--有单抽券直接抽
self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17003,self.current_pool_type,times,0)
return
else--补齐
cost_price = tickets_price
end
end
elseif times == 10 then
if ticket_num_list[self.current_pool_type][2] >= 1 then
self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17003,self.current_pool_type,times,0)
return
else
local ten_need_num = math.floor(self.ten_cost_num*self.ten_buff_offer/100 + 0.5)--折扣完后要四舍五入
if ticket_num_list[self.current_pool_type][1] >= ten_need_num then
self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17003,self.current_pool_type,times,0)
return
else
cost_price = (ten_need_num -ticket_num_list[self.current_pool_type][1])*tickets_price
end
end
elseif times == 50 then
if ticket_num_list[self.current_pool_type][3] >= 1 then
self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17003,self.current_pool_type,times,0)
return
else
local fifty_need_num = math.floor(self.fifty_cost_num*self.fifty_buff_offer/100 + 0.5)--折扣完后要四舍五入
if ticket_num_list[self.current_pool_type][1] >= fifty_need_num then
self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17003,self.current_pool_type,times,0)
return
else
cost_price = (fifty_need_num-ticket_num_list[self.current_pool_type][1])*tickets_price
end
end
end
local function ok_callback( ... )
self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17003,self.current_pool_type,times,0)
end
local function toggle_function( flag )
self.model._again_draw_no_double_check = flag
end
local function use_function( toggle_tip_data,call_fun_sum )
if not self.model._again_draw_no_double_check and cost_price ~= 0 then
GlobalEventSystem:Fire(EventName.OPEN_COM_TOGGLE_TIP_VIEW, toggle_tip_data)
else
call_fun_sum()
end
end
local buy_tip_data = {
gold_type = 1,--货币类型
cost_price = cost_price,--消耗金额
ok_callback = ok_callback,--成功
toggle_function = toggle_function,--多选
togglePriceStr = string.format("<color=#fdffc2>%s</color> 补齐所需的单抽券",cost_price),--提示语
use_function = use_function,--最终调用
}
CustomActivityModel:getInstance():BuyTips(buy_tip_data)
end
function CapsuleEggView:UpdateCost( )
local cost_ticket_num_list = self.model:GetCostTicketNumList()
lua_resM:setOutsideImageSprite(self, self.costIcon1_img, GameResPath.GetGoodsIcon(self.model:GetCostTicketGTypeId(self.current_pool_type,1)),true)
if cost_ticket_num_list[self.current_pool_type][1] == 0 then
self.costPrice1_tmp.text = string.format("<%s>%s</color>/1", ColorUtil.RED_DARK, cost_ticket_num_list[self.current_pool_type][1])
else
self.costPrice1_tmp.text = string.format("<%s>%s</color>/1", ColorUtil.GREEN_DARK, cost_ticket_num_list[self.current_pool_type][1])
end
local buff_kind = OperateActivityModel.MaterialSubmitBuffKind.LUCKY_OFFER --是否存在活动加成buff 挑战次数+1
local buff_cfg,buff_info = OperateActivityModel:getInstance():GetMaterialBuffInfoByKind(buff_kind)
-- buff_cfg = {discount = 80,data = 1}
-- buff_info = {etime = TimeUtil:getServerTime( )+300,used = {{kdata = 10,vdata=0}}}
self.ten_cost_num = 9
local have_time = buff_cfg and buff_cfg.data or 0
local show_offer_obj = false
self.ten_buff_offer = 100
local ten_buff_sum_time = 0
if cost_ticket_num_list[self.current_pool_type][2] > 0 then--有十连券
lua_resM:setOutsideImageSprite(self, self.costIcon2_img, GameResPath.GetGoodsIcon(self.model:GetCostTicketGTypeId(self.current_pool_type,10)),true)
self.ten_cost_num = 1
if cost_ticket_num_list[self.current_pool_type][2] < 1 then
self.costPrice2_tmp.text = string.format("<%s>%s</color>/1", ColorUtil.RED_DARK, cost_ticket_num_list[self.current_pool_type][2])
else
self.costPrice2_tmp.text = string.format("<%s>%s</color>/1", ColorUtil.GREEN_DARK, cost_ticket_num_list[self.current_pool_type][2])
end
else
if buff_cfg and buff_info then
local sec = buff_info.etime - TimeUtil:getServerTime( )
if sec > 0 then
self:ActBuffTimeLate(sec)
for k,v in pairs(buff_info.used) do
if v.kdata == 10 then--十连还有次数
have_time = have_time - v.vdata
break
end
end
if have_time > 0 then
show_offer_obj = true
self.ten_buff_offer = buff_cfg.discount
end
end
end
lua_resM:setOutsideImageSprite(self, self.costIcon2_img, GameResPath.GetGoodsIcon(self.model:GetCostTicketGTypeId(self.current_pool_type,1)),true)
local lucky_num = show_offer_obj and math.floor(self.ten_cost_num*self.ten_buff_offer/100 + 0.5) or 9
if cost_ticket_num_list[self.current_pool_type][1] < lucky_num then
self.costPrice2_tmp.text = string.format("<%s>%s</color>/%s", ColorUtil.RED_DARK, cost_ticket_num_list[self.current_pool_type][1], lucky_num)
else
self.costPrice2_tmp.text = string.format("<%s>%s</color>/%s", ColorUtil.GREEN_DARK, cost_ticket_num_list[self.current_pool_type][1], lucky_num)
end
end
self.costPriceOffer2_tmp.text = show_offer_obj and self.ten_cost_num or ""
self.costPriceOfferLine2_obj:SetActive(show_offer_obj)
self.tenBuffText_tmp.text = show_offer_obj and string.format("限时%s%%优惠:%s/%s",self.ten_buff_offer,have_time,buff_cfg.data) or ""
local btn2_red_condition_1 = self.model:GetDrawBtnRed(self.current_pool_type,2)--有十连券
local need_one_tickets_can_red = show_offer_obj and math.floor(self.ten_cost_num*self.ten_buff_offer/100 + 0.5) or 9
local btn2_red_condition_2 = cost_ticket_num_list[self.current_pool_type][1] >= need_one_tickets_can_red
local btn2_red = btn2_red_condition_1 or btn2_red_condition_2
self.drawRed10_obj:SetActive(btn2_red)
self.show_offer_obj = show_offer_obj
self.fifty_cost_num = 45
self.fifty_buff_offer = 100
if cost_ticket_num_list[self.current_pool_type][3] > 0 then--有五十连券
lua_resM:setOutsideImageSprite(self, self.costIcon3_img, GameResPath.GetGoodsIcon(self.model:GetCostTicketGTypeId(self.current_pool_type,50)),true)
if cost_ticket_num_list[self.current_pool_type][3] < 1 then
self.costPrice3_tmp.text = string.format("<%s>%s</color>/1", ColorUtil.RED_DARK, cost_ticket_num_list[self.current_pool_type][3])
else
self.costPrice3_tmp.text = string.format("<%s>%s</color>/1", ColorUtil.GREEN_DARK, cost_ticket_num_list[self.current_pool_type][3])
end
self.fifty_cost_num = 1
else
lua_resM:setOutsideImageSprite(self, self.costIcon3_img, GameResPath.GetGoodsIcon(self.model:GetCostTicketGTypeId(self.current_pool_type,1)),true)
if cost_ticket_num_list[self.current_pool_type][1] < 45 then
self.costPrice3_tmp.text = string.format("<%s>%s</color>/45", ColorUtil.RED_DARK, cost_ticket_num_list[self.current_pool_type][1])
else
self.costPrice3_tmp.text = string.format("<%s>%s</color>/45", ColorUtil.GREEN_DARK, cost_ticket_num_list[self.current_pool_type][1])
end
end
local buff_kind = OperateActivityModel.MaterialSubmitBuffKind.EGG_LUCKY_NUM --触发加成后,<color@1>龙神宝库</color>幸运值持续维持999,抽中不清空
local buff_cfg,buff_info = OperateActivityModel:getInstance():GetMaterialBuffInfoByKind(buff_kind)
-- buff_cfg = {discount = 80,data = 1}
-- buff_info = {etime = TimeUtil:getServerTime( )+300,used = {{kdata = 10,vdata=0}}}
self.have_act_buff_lucky_num = false
if buff_cfg and buff_info then
local sec = buff_info.etime - TimeUtil:getServerTime( )
if sec > 0 then
self:ActEggLuckyBuffTimeLate(sec)
self:UpdateLuckyCon()
self.buffBtn_obj:SetActive(true)
self.buffTipImg_obj:SetActive(true)
self.have_act_buff_lucky_num = true
lua_resM:setOutsideImageSprite(self, self.buffBtn_img, GameResPath.GetOperateActImage("ms_buff_btn_kind_6"), true)
else
self.buffBtn_obj:SetActive(false)
self.buffTipImg_obj:SetActive(false)
self.buffTimeText_tmp.text = ""
end
else
self.buffBtn_obj:SetActive(false)
self.buffTipImg_obj:SetActive(false)
self.buffTimeText_tmp.text = ""
end
end
--活动龙神常驻BUFF时间倒计时
function CapsuleEggView:ActEggLuckyBuffTimeLate( sec )
if self.is_loaded then
if self.act_egg_sec == sec then
return
else
self.act_egg_sec = sec
end
if self.act_egg_lucky_buff_timer_id then
GlobalTimerQuest:CancelQuest(self.act_egg_lucky_buff_timer_id)
self.act_egg_lucky_buff_timer_id = nil
end
local sec = sec or 0
if sec > 0 then
local function onTimer()
sec = sec - 1
if sec > 0 then
self.buffTimeText_tmp.text = TimeUtil:timeConvert33(sec)
else
if self.act_egg_lucky_buff_timer_id then
GlobalTimerQuest:CancelQuest(self.act_egg_lucky_buff_timer_id)
self.act_egg_lucky_buff_timer_id = nil
end
self:UpdateCost()
self:UpdateLuckyCon()
end
end
if not self.act_egg_lucky_buff_timer_id then
self.act_egg_lucky_buff_timer_id = GlobalTimerQuest:AddPeriodQuest(onTimer, 1, -1)
end
onTimer()
else
self:UpdateCost()
end
end
end
--活动BUFF时间倒计时
function CapsuleEggView:ActBuffTimeLate( sec )
if self.is_loaded then
if self.act_sec == sec then
return
else
self.act_sec = sec
end
if self.act_buff_timer_id then
GlobalTimerQuest:CancelQuest(self.act_buff_timer_id)
self.act_buff_timer_id = nil
end
local sec = sec or 0
if sec > 0 then
local function onTimer()
sec = sec - 1
if sec > 0 then
else
if self.act_buff_timer_id then
GlobalTimerQuest:CancelQuest(self.act_buff_timer_id)
self.act_buff_timer_id = nil
end
self:UpdateCost()
end
end
if not self.act_buff_timer_id then
self.act_buff_timer_id = GlobalTimerQuest:AddPeriodQuest(onTimer, 1, -1)
end
onTimer()
else
self:UpdateCost()
end
end
end
function CapsuleEggView:DestroySuccess( )
if self.act_egg_lucky_buff_timer_id then
GlobalTimerQuest:CancelQuest(self.act_egg_lucky_buff_timer_id)
self.act_egg_lucky_buff_timer_id = nil
end
if self.act_buff_timer_id then
GlobalTimerQuest:CancelQuest(self.act_buff_timer_id)
self.act_buff_timer_id = nil
end
for k,v in pairs(self.reward_item_list) do
v:DeleteMe()
end
self.reward_item_list = {}
if self.count_down_timer_id then
GlobalTimerQuest:CancelQuest(self.count_down_timer_id)
self.count_down_timer_id = nil
end
self:StopTextAction()
for k,v in pairs(self.label_list) do
v:DeleteMe()
end
self.label_list = {}
for k,v in pairs(self.cache_record_list) do
v:DeleteMe()
end
self.cache_record_list = {}
if self.timer then
GlobalTimerQuest:CancelQuest(self.timer)
self.timer = nil
end
for i,v in ipairs(self.show_item_list) do
v:DeleteMe()
end
if self.money_view then
self.money_view:DeleteMe()
self.money_view = nil
end
self.model:CheckHaveSeeRedDot()
self:StopTenTipsAnim()
end
function CapsuleEggView:UpdateRed( )
local btn1_red = self.model:GetFreeDrawTimesByPoolType(self.current_pool_type) > 0
-- local btn2_red = self.model:GetDrawBtnRed(self.current_pool_type,2)
-- local btn3_red = self.model:GetDrawBtnRed(self.current_pool_type,3)
self.drawRed1_obj:SetActive(btn1_red)
-- self.drawRed10_obj:SetActive(btn2_red)
-- self.drawRed50_obj:SetActive(btn3_red)
self.rewardRed_obj:SetActive(self.model:GetTimeRewardRedDot())
end
function CapsuleEggView:UpdateResetTime( )
self.reset_time = self.model:GetTimesRewarResetTime()
self.rewardcountDown_tmp.text = ""
local function timer_func()
local left_time = self.reset_time - TimeUtil:getServerTime()
if left_time and left_time > 0 then
local str = ""
if left_time > 3600 * 24 then
str = TimeUtil:qianggouTimeLeft3(left_time, true)
else
str = TimeUtil:timeConvert11(left_time, false)
end
self.rewardcountDown_tmp.text = string.format("%s 后重置", str)
else
self.rewardcountDown_tmp.text = ""
self.reset_time = self.model:GetTimesRewarResetTime()
end
end
if not self.timer then
self.timer = GlobalTimerQuest:AddPeriodQuest(timer_func, 1)
end
timer_func()
end
function CapsuleEggView:Close()
--完成引导
local helpVo = GuideModel:getInstance():GetHelpVo(HelpType.TYPE_CAPSULE_EGG,3)
if helpVo then
GlobalEventSystem:Fire(EventName.FINISH_CURRENT_HELP_STEP,helpVo)
GlobalEventSystem:Fire(EventName.FORCE_TO_DO_TASK, true, true)
end
BaseView.Close(self)
end
function CapsuleEggView:UpdateTenTipsShow( )
local cost_ticket_num_list = self.model:GetCostTicketNumList()[self.current_pool_type][1]
local ten_cost_ticket_num_list = self.model:GetCostTicketNumList()[self.current_pool_type][2]
local lucky_num = self.show_offer_obj and math.floor(self.ten_cost_num*self.ten_buff_offer/100 + 0.5) or 9
local min_num = lucky_num - 3
local max_num = lucky_num - 1
if RoleManager.Instance.mainRoleInfo.level < 9999 and cost_ticket_num_list>=min_num and cost_ticket_num_list<=max_num and ten_cost_ticket_num_list == 0 then
self.tenTips_obj:SetActive(true)
self.tenTipsLeftNum_tmp.text = string.format("十连抽还差%s张",lucky_num-cost_ticket_num_list)
self:TenTipsAnim(0)
else
self.tenTips_obj:SetActive(false)
self:StopTenTipsAnim()
SetAnchoredPosition(self.tenTips,342,-289)
end
end
function CapsuleEggView:TenTipsAnim(time)
self:StopTenTipsAnim()
local call_fun = function ()
local function onCompleted()
self:TenTipsAnim(time)
end
self.ten_tip_tween_id1 =TweenLite.to(self, self.tenTips,TweenLite.UiAnimationType.POSX,342,1,onCompleted)
end
local onDelay = function( )
self.ten_tip_tween_id2 =TweenLite.to(self, self.tenTips.transform,TweenLite.UiAnimationType.POSX,355,1,call_fun)
end
self.ten_tip_timer_id = setTimeout(onDelay, time)
end
function CapsuleEggView:StopTenTipsAnim( )
if self.ten_tip_tween_id1 then
TweenLite.Stop(self.ten_tip_tween_id1)
self.ten_tip_tween_id1 = nil
end
if self.ten_tip_tween_id2 then
TweenLite.Stop(self.ten_tip_tween_id2)
self.ten_tip_tween_id2 = nil
end
if self.ten_tip_timer_id then
GlobalTimerQuest:CancelQuest(self.ten_tip_timer_id)
self.ten_tip_timer_id = nil
end
end