|
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
|