sk-client/Assets/ManagedResources/~Lua/Modules/ActivityGift/ActivityGiftManager.lua

1652 lines
60 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

ActivityGiftManager = {};
local this = ActivityGiftManager
local ActivityRewardConfig = ConfigManager.GetConfig(ConfigName.ActivityRewardConfig)
local GlobalActivity = ConfigManager.GetConfig(ConfigName.GlobalActivity)
local nowStageTime = 0
local giftData = {}
local luckyCatConfig = ConfigManager.GetConfig(ConfigName.LuckyCatConfig)
local chargeConfig = ConfigManager.GetConfig(ConfigName.RechargeCommodityConfig)
local luxuryConfig = ConfigManager.GetConfig(ConfigName.LuxuryFundConfig)
this.mainLevelConfig = ConfigManager.GetConfig(ConfigName.MainLevelConfig)
local isFirstTime = true
this.isFirstForSupremeHero = false--剑影仙踪是否每日第一次登陆
function this.Initialize()
--UpdateBeat:Add(this.update, this)
this.sevenDayOpen = false
this.onlineOpen = false
this.chapterOpen = false
----新数据
--在线礼包数据
this.onlineData = {}
this.onlineDataTime = {}
this.onlineGetRewardState = {}
this.haveOnlineTime = 0
this.onlineTime = 0 --已经在线时长
this.currentTimeIndex = 0--当前可领取阶段
this.cuOnLineTimestamp = 0--当前在线奖励时间戳 从什么时候开始计时
--七日礼包数据
this.sevenDayData = {}
this.sevenDayGetRewardState = {}
this.sevenDayTime = 0
this.canRewardDay = 0
--章节礼包数据
this.chapterGiftData = {}
this.chapterGetRewardState = {}
this.isOpenWeekCard = false--今天是否打开过周卡
--扭蛋
this.boxPoolId = 0
this.boxPoolRewardList = {}--被抽过的奖
this.autoResetCount = 0--自动重置次数
this.manualResetCount = 0--手动重置次数
this.lotteryId = 0--卡池ID
this.boxPoolConfig = {}
--在线奖励
this.OnlineRewardCurTime = 0
this.onlineRewardTime = 0
this.phoneBuildingRewardIsGet = 0
this.shareIsGet = 0
Game.GlobalEvent:AddEvent(GameEvent.Player.OnLevelChange, function()
CheckRedPointStatus(RedPointType.Expert_UpLv)
end)
end
-- 开始在线计时
function this.StartOnlineUpdate()
-- 开始定时刷新
if not this._CountDownTimer then
this._CountDownTimer = Timer.New(this.TimeCountDown, 1, -1, true)
this._CountDownTimer:Start()
end
end
function this.TimeCountDown()
if not NetManager.IsConnect() then
return
end
this.haveOnlineTime = this.haveOnlineTime - 1
this.onlineTime = this.onlineTime+1
if this.haveOnlineTime <= 0 and this.currentTimeIndex < #this.onlineDataTime - 1 then
this.currentTimeIndex = this.currentTimeIndex + 1
Game.GlobalEvent:DispatchEvent(GameEvent.Activity.OnlineState, this.haveOnlineTime, this.onlineData,this.onlineTime)
this.haveOnlineTime = this.onlineDataTime[this.currentTimeIndex + 1].Values[1][1] * 60 - this.onlineDataTime[this.currentTimeIndex].Values[1][1] * 60
CheckRedPointStatus(RedPointType.CourtesyDress_Online)
--CheckRedPointStatus(RedPointType.SecretTer)
Game.GlobalEvent:DispatchEvent(GameEvent.Adventure.OnRefreshRedShow)
else
Game.GlobalEvent:DispatchEvent(GameEvent.Activity.OnlineState, this.haveOnlineTime, this.onlineData,this.onlineTime)
end
end
function this.InitActivityData()
for i, v in ConfigPairs(ActivityRewardConfig) do
--获取在线礼包数据
if v.ActivityId == ActivityTypeDef.OnlineGift then
table.insert(this.onlineData, v)
table.insert(this.onlineDataTime, v)
end
--获取七日礼包数据
if v.ActivityId == ActivityTypeDef.EightDayGift then
table.insert(this.sevenDayData, v)
end
--获取章节礼包数据
if v.ActivityId == ActivityTypeDef.ChapterAward then
table.insert(this.chapterGiftData, v)
end
end
end
function this.GetActivityRewardRequest(type, index)
--local rewardId = 0
--向服务器发送领取在线奖励请求
NetManager.GetActivityRewardRequest(index, type, function(_drop)
UIManager.OpenPanel(UIName.RewardItemPopup, _drop, 1)
if type == ActivityTypeDef.OnlineGift then
this.onlineGetRewardState[index] = 1
CheckRedPointStatus(RedPointType.CourtesyDress_Online)
table.sort(this.onlineData, function(a, b)
return a.Id < b.Id
end)
Game.GlobalEvent:DispatchEvent(GameEvent.Activity.GetRewardRefresh, this.onlineData)
elseif type == ActivityTypeDef.EightDayGift then
this.sevenDayGetRewardState[index] = 1
CheckRedPointStatus(RedPointType.CourtesyDress_SevenDay)
table.sort(this.sevenDayData, function(a, b)
if this.sevenDayGetRewardState[a.Id] == this.sevenDayGetRewardState[b.Id] then
return a.Id < b.Id
else
return this.sevenDayGetRewardState[a.Id] < this.sevenDayGetRewardState[b.Id]
end
end)
Game.GlobalEvent:DispatchEvent(GameEvent.Activity.GetRewardRefresh, this.sevenDayData)
elseif type == ActivityTypeDef.ChapterAward then
this.chapterGetRewardState[index] = 1
CheckRedPointStatus(RedPointType.CourtesyDress_Chapter)
table.sort(this.chapterGiftData, function(a, b)
if this.chapterGetRewardState[a.Id] == this.chapterGetRewardState[b.Id] then
return a.Id < b.Id
else
return this.chapterGetRewardState[a.Id] < this.chapterGetRewardState[b.Id]
end
end)
Game.GlobalEvent:DispatchEvent(GameEvent.Activity.GetRewardRefresh, this.chapterGiftData)
end
--CheckRedPointStatus(RedPointType.SecretTer)
Game.GlobalEvent:DispatchEvent(GameEvent.Adventure.OnRefreshRedShow)
end)
end
-- 获取服务器活动领取进度数据
function this.InitActivityServerData(msg, isUpdate)
--[[
msg.activityInfo = {
[1] = {
mission = {
missionId--任务ID
progress--任务进度
state--任务状态0未领奖1已领奖 -1领取花费奖励
}
activityId--活动id
value--活动记录值
startTime--任务开始时间
endTime--活动结束时间
reallyOpen--0:假开启 1真开启
}
}
]]
if not isUpdate then
this.mission = {}
end
for i, v in ipairs(msg.activityInfo) do
this.mission[v.activityId] = v
for n, m in ipairs(v.mission) do
if v.activityId == ActivityTypeDef.OnlineGift then
this.onlineOpen = true
this.onlineGetRewardState[m.missionId] = m.state
this.haveOnlineTime = m.progress
this.onlineTime = m.progress
this.cuOnLineTimestamp = GetTimeStamp() - m.progress
--this.StartOnlineUpdate()
-- LogError("更新在线奖励进度1:"..m.progress)
elseif v.activityId == ActivityTypeDef.EightDayGift then
this.sevenDayOpen = true
this.sevenDayGetRewardState[n] = m.state
this.canRewardDay = m.progress
elseif v.activityId == ActivityTypeDef.ChapterAward then
this.chapterOpen = true
this.chapterGetRewardState[m.missionId] = m.state
end
end
if v.activityId == ActivityTypeDef.EightDayGift then
this.sevenDayTime = v.endTime - GetTimeStamp()
this.dayTime = GetTimeStamp() - v.startTime
end
local activityId = ActivityGiftManager.GetActivityIdByType(ActivityTypeDef.OnlineReward)
if v.activityId == activityId then
-- LogError("1 "..v.value)
this.OnlineRewardCurTime = GetTimeStamp() - v.value
this.ActivityGiftManagerTimer()
end
for m, n in ConfigPairs(luckyCatConfig) do
if v.activityId == n.ActivityId then
LuckyCatManager.isOpenLuckyCat = true
LuckyCatManager.GetRewardProgress(v.mission, v.activityId, v.value)
end
end
this.CheckActiveIsOpen(v)
end
TreasureOfSomebodyManagerV2.SetTreasureLocalData()
this.OnlineStartCountDown()
FindFairyManager.SetActivityData()
RecruitManager.InitPreData()
end
--倒计时逻辑处理
function this.OnlineStartCountDown()
nowStageTime = 0
for i, v in ipairs(this.onlineData) do
if v.Values[1][1] >= this.haveOnlineTime / 60 then
nowStageTime = v.Values[1][1] * 60
break
end
if this.haveOnlineTime / 60 <= this.onlineData[1].Values[1][1] then
nowStageTime = this.onlineData[1].Values[1][1] * 60
end
end
for i, v in pairs(this.onlineData) do
if this.haveOnlineTime / 60 >= v.Values[1][1] then
this.currentTimeIndex = v.Sort
end
end
this.haveOnlineTime = nowStageTime - this.haveOnlineTime
end
--检测七日礼包红点
function this.CheckSevenDayRed()
local sevenDayRed = this.CheckRedFunc(RedPointType.CourtesyDress_SevenDay)
return sevenDayRed
end
--检测在线礼包红点
function this.CheckOnlineRed()
local onlineRed = this.CheckRedFunc(RedPointType.CourtesyDress_Online)
return onlineRed
end
--检测章节礼包红点
function this.CheckChapterRed()
local chapterRed = this.CheckRedFunc(RedPointType.CourtesyDress_Chapter)
return chapterRed
end
function this.CheckEightRedPoint()
local curDay = math.ceil((CalculateSecondsNowTo_N_OClock(24) + GetTimeStamp() - PlayerManager.userCreateTime)/86400)
if curDay > 8 then
curDay = 8
end
local isActivityOpen = ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.EightDayGift)
if isActivityOpen then
local activityInfo = ActivityGiftManager.GetActivityTypeInfo(ActivityTypeDef.EightDayGift)
for i = 1, #activityInfo.mission do
local isCanGet = activityInfo.mission[i].state--是否可领取
if isCanGet == 0 then
if curDay >= i then
return true
end
end
end
end
return false
end
function this.CheckEightRedPoint_2()
local isActivityOpen = ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.SignInDays)
if not isActivityOpen then
return false
end
local rewardData = ActivityGiftManager.GetActivityTypeInfo(ActivityTypeDef.SignInDays)
local curDay = math.ceil((CalculateSecondsNowTo_N_OClock(24) + GetTimeStamp() - rewardData.startTime)/86400)
if isActivityOpen then
local activityInfo = ActivityGiftManager.GetActivityTypeInfo(ActivityTypeDef.SignInDays)
for i = 1, #activityInfo.mission do
local isCanGet = activityInfo.mission[i].state--是否可领取
if isCanGet == 0 then
if curDay == i then
return true
end
end
end
end
return false
end
--- 记录神秘军火商按钮点击红点
function this.GetRedState()
return PlayerPrefs.GetInt(PlayerManager.uid .. "MunitionsMerchant") == 0
end
function this.SetRedState(value)
PlayerPrefs.SetInt(PlayerManager.uid .. "MunitionsMerchant", value)
end
--监测云梦祈福等活动是否开启 并请求数据
function this.CheckActiveIsOpen(data)
local globalActivityData = GlobalActivity[data.activityId]
if globalActivityData then
if globalActivityData.Type == ActivityTypeDef.Pray then
--云梦活动开启 请求数据
NetManager.InitPrayDataRequest()
end
end
end
--通过活动类型获取活动信息 返回的是一个列表 同一类型可能会有多个活动
function this.GetActivityTypeInfoList(type)
local globalActConfigs = ConfigManager.GetAllConfigsDataByKey(ConfigName.GlobalActivity, "Type", type)
local missionData = {}
table.walk(globalActConfigs, function(actConfigInfo)
if this.mission[actConfigInfo.Id] then
table.insert(missionData, this.mission[actConfigInfo.Id])
end
end)
return missionData
end
--通过活动类型获取活动信息
function this.GetActivityTypeInfo(type)
local globalActConfigs = ConfigManager.GetAllConfigsDataByKey(ConfigName.GlobalActivity, "Type", type)
local missionData = nil
table.walk(globalActConfigs, function(actConfigInfo)
if this.mission[actConfigInfo.Id] then
missionData = this.mission[actConfigInfo.Id]
end
end)
return missionData
end
function this.GetActivityTypeInfo2(type)
local globalActConfigs = ConfigManager.GetAllConfigsDataByKey(ConfigName.GlobalActivity, "Type", type)
local config = {}
table.walk(globalActConfigs, function(actConfigInfo)
if this.mission[actConfigInfo.Id] then
config = actConfigInfo
end
end)
return config
end
function this.GetActivityIdByType(type)
local globalActConfigs = ConfigManager.GetAllConfigsDataByKey(ConfigName.GlobalActivity, "Type", type)
local id = 0
local missionData = nil
table.walk(globalActConfigs, function(actConfigInfo)
if this.mission[actConfigInfo.Id] then
id = actConfigInfo.Id
end
end)
return id
end
function this.GetActivityIdByZq(type)
local missionDataZq = nil
if this.mission and this.mission[type] then
missionDataZq = this.mission[type]
end
return missionDataZq
end
function this.GetActivityValueInfo(type, Id)
if this.mission[type] then
return this.mission[type].value
end
end
function this.GetActivityInfo(type, Id)
if this.mission[type] then
for _, missInfo in pairs(this.mission[type].mission) do
if missInfo.missionId == Id then
return missInfo
end
end
else
return nil,0
end
end
function this.TryGetActivityInfoByType(type)
for id , v in pairs(this.mission) do
if id == type then
return v
end
end
return nil
end
function this.GetActivityInfoByType(type)
if this.mission[type] then
return this.mission[type]
end
end
function this.SetActivityInfo(type, Id, state)
for _, missInfo in pairs(this.mission[type].mission) do
if missInfo.missionId == Id then
missInfo.state = state
break
end
end
end
function this.GetActivityOpenStatus(type)
if this.mission[type] then
return this.mission[type].reallyOpen == 1
else
return false
end
end
function this.SetActivityOpenStatus(type)
if this.mission[type] then
this.mission[type].reallyOpen = 1
else
end
end
-- 红点检测监听方法
function this.CheckRedFunc(redType)
if redType == RedPointType.CourtesyDress_SevenDay then
if this.mission[ActivityTypeDef.EightDayGift] then
local number = 0
for i, v in pairs(this.sevenDayGetRewardState) do
if v == 1 then
number = number + 1
end
end
local curDay = math.ceil((CalculateSecondsNowTo_N_OClock(24) + GetTimeStamp() - PlayerManager.userCreateTime)/86400)
if number < curDay then
return true
else
return false
end
else
return false
end
elseif redType == RedPointType.CourtesyDress_Chapter then
local isShowRed = false
for i = 1, table.nums(this.chapterGetRewardState) do
for j, v in pairs(this.chapterGiftData) do
if i == v.Sort then
if FightPointPassManager.GetFightStateById(v.Values[1][1]) == FIGHT_POINT_STATE.PASS and this.chapterGetRewardState[v.Id] == 0 then
isShowRed = true
return isShowRed
end
end
end
end
return isShowRed
elseif redType == RedPointType.CourtesyDress_Online then
local number = 0
for i, v in pairs(this.onlineGetRewardState) do
if v == 1 then
number = number + 1
end
end
--当活动未开或奖励全部领取完毕
if ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.Online_Reward)==false then
return false
else--当活动开启或奖励未领取完毕
local timeNum = GetTimeStamp() - this.cuOnLineTimestamp
local currentTimeIndex = 0
for i = 1, #this.onlineData do
if this.onlineGetRewardState[this.onlineData[i].Id] == 0 then
if (math.floor(timeNum)) >= (this.onlineData[i].Values[1][1]*60) then
currentTimeIndex = this.onlineData[i].Sort
end
end
end
if number < currentTimeIndex then --当已领取数小于未领取数
return true
else
return false
end
end
end
end
function this.RefreshActivityData(respond)
if respond.closeActivityId then
for i = 1, #respond.closeActivityId do
if this.mission[respond.closeActivityId[i]] then
this.mission[respond.closeActivityId[i]] = nil
local activityType = this.GetActivityTypeFromId(respond.closeActivityId[i])
if activityType == ActivityTypeDef.SevenDayCarnival then
Game.GlobalEvent:DispatchEvent(GameEvent.Activity.OnCloseSevenDayGift)
SevenDayCarnivalManager.SetSevenDayScore(0)
TaskManager.ResetTaskData(TaskTypeDef.SevenDayCarnival)
elseif activityType == ActivityTypeDef.TreasureOfSomeBody then
TreasureOfSomebodyManagerV2.ResetActivityData()
TaskManager.ResetTaskData(TaskTypeDef.TreasureOfSomeBody)
elseif activityType == ActivityTypeDef.LuckyCat then
LuckyCatManager.isOpenLuckyCat = false
end
Game.GlobalEvent:DispatchEvent(GameEvent.Activity.OnActivityOpenOrClose, {
type = activityType,
status = 0 --关闭
})
if ActivityTypePanel[activityType] then
local openStatus = UIManager.IsOpen(ActivityTypePanel[activityType])
if openStatus then
UIManager.ClosePanel(ActivityTypePanel[activityType])
end
end
end
end
end
--newOpen
if respond.activityInfo then
for i = 1, #respond.activityInfo do
this.mission[respond.activityInfo[i].activityId] = respond.activityInfo[i]
local activityType = this.GetActivityTypeFromId(respond.activityInfo[i].activityId)
if activityType == ActivityTypeDef.LuckyCat then --招财猫
LuckyCatManager.isOpenLuckyCat = true
LuckyCatManager.GetRewardProgress(respond.activityInfo[i].mission, respond.activityInfo[i].activityId, respond.activityInfo[i].value)
elseif activityType == ActivityTypeDef.TreasureOfSomeBody then --孙龙的宝藏
TreasureOfSomebodyManagerV2.SetCurrentLevel(0)
TreasureOfSomebodyManagerV2.SetTreasureLocalData()
--CheckRedPointStatus(RedPointType.TreasureOfSl)
end
this.CheckActiveIsOpen(respond.activityInfo[i])
Game.GlobalEvent:DispatchEvent(GameEvent.Activity.OnActivityOpenOrClose, {
type = this.GetActivityTypeFromId(respond.activityInfo[i].activityId),
status = 1 --开启
})
end
end
this.InitActivityServerData(respond, true)
this.RefreshActivityRedPoint()
end
function this.GetActivityTypeFromId(activityId)
local globalActConfig = ConfigManager.GetConfigDataByKey(ConfigName.GlobalActivity, "Id", activityId)
return globalActConfig.Type
end
function this.IsActivityTypeOpen(type)
local globalActConfigs = ConfigManager.GetAllConfigsDataByKey(ConfigName.GlobalActivity, "Type", type)
local activityId = nil
table.walk(globalActConfigs, function(actConfigInfo)
if this.mission and this.mission[actConfigInfo.Id] then
activityId = actConfigInfo.Id
end
end)
return activityId
end
function this.IsActivityTypeOpenByFrontEnd(type)
local globalActConfig = ConfigManager.GetConfigDataByKey(ConfigName.GlobalActivity, "Type", type)
local activityId = nil
if globalActConfig then
activityId = globalActConfig.Id
end
return activityId
end
-------------------------------
--五点凌晨刷新
function this.FiveAMRefreshActivityProgress(msg)
for i = 1, #msg.activityInfo do
if not this.mission[msg.activityInfo[i].activityId] then
Game.GlobalEvent:DispatchEvent(GameEvent.Activity.OnActivityOpenOrClose, {
type = this.GetActivityTypeFromId(msg.activityInfo[i].activityId),
status = 1 --开启
})
end
this.mission[msg.activityInfo[i].activityId] = msg.activityInfo[i]
end
--重新赋值活动
for i, v in ipairs(msg.activityInfo) do
for n, m in ipairs(v.mission) do
if v.activityId == ActivityTypeDef.OnlineGift then
this.onlineOpen = true
this.onlineGetRewardState[m.missionId] = m.state
this.haveOnlineTime = m.progress
this.onlineTime = m.progress
this.cuOnLineTimestamp = GetTimeStamp() - m.progress
--this.StartOnlineUpdate()
-- LogError("更新在线奖励进度2:"..m.progress)
elseif v.activityId == ActivityTypeDef.EightDayGift then
this.sevenDayOpen = true
this.sevenDayGetRewardState[n] = m.state
this.canRewardDay = m.progress
elseif v.activityId == ActivityTypeDef.ChapterAward then
this.chapterOpen = true
this.chapterGetRewardState[m.missionId] = m.state
end
end
local activityId = ActivityGiftManager.GetActivityIdByType(ActivityTypeDef.OnlineReward)
if v.activityId == activityId then
-- LogError("2 "..v.value)
this.OnlineRewardCurTime = GetTimeStamp() - v.value
this.ActivityGiftManagerTimer()
Game.GlobalEvent:DispatchEvent(GameEvent.Activity.OnFuncStateChange)
end
end
Game.GlobalEvent:DispatchEvent(GameEvent.Activity.GetRewardRefresh)
this.RefreshActivityRedPoint()
end
--刷新某个活动的数据进度
function this.RefreshActivityProgressData(msg)
if this.mission and this.mission[msg.activityInfo.activityId] then
this.mission[msg.activityInfo.activityId].value = msg.activityInfo.value
for i = 1, #msg.activityInfo.mission do
for _, missionInfo in pairs(this.mission[msg.activityInfo.activityId].mission) do
if missionInfo.missionId == msg.activityInfo.mission[i].missionId then
missionInfo.state = msg.activityInfo.mission[i].state
missionInfo.progress = msg.activityInfo.mission[i].progress
end
end
end
this.RefreshActivityRedPoint()
Game.GlobalEvent:DispatchEvent(GameEvent.Activity.OnActivityProgressStateChange)
--断线重连时 在线奖励活动 数据刷新
this.CutUpLineUpdateOnLineData(msg)
end
end
function this.RefreshActivityRedPoint()
Game.GlobalEvent:DispatchEvent(GameEvent.MissionDaily.OnMissionDailyChanged)
CheckRedPointStatus(RedPointType.FirstRecharge)
CheckRedPointStatus(RedPointType.ContinuityRecharge)
CheckRedPointStatus(RedPointType.SevenDayCarnival)
CheckRedPointStatus(RedPointType.EightTheLogin)
CheckRedPointStatus(RedPointType.EightTheLogin_2)
--限时活动
CheckRedPointStatus(RedPointType.Expert_AdventureExper)
CheckRedPointStatus(RedPointType.Expert_AreaExper)
CheckRedPointStatus(RedPointType.Expert_UpStarExper)
CheckRedPointStatus(RedPointType.Expert_EquipExper)
CheckRedPointStatus(RedPointType.Expert_GoldExper)
CheckRedPointStatus(RedPointType.Expert_FightExper)
CheckRedPointStatus(RedPointType.Expert_EnergyExper)
CheckRedPointStatus(RedPointType.Expert_Talisman)
CheckRedPointStatus(RedPointType.Expert_SoulPrint)
CheckRedPointStatus(RedPointType.Expert_AccumulativeRecharge)
CheckRedPointStatus(RedPointType.CourtesyDress_SevenDay)
CheckRedPointStatus(RedPointType.LuckyCat_GetReward)
CheckRedPointStatus(RedPointType.Expert_LuckyTurn)
CheckRedPointStatus(RedPointType.Expert_FindTreasure)
CheckRedPointStatus(RedPointType.Expert_Recruit)
CheckRedPointStatus(RedPointType.Expert_SecretBox)
CheckRedPointStatus(RedPointType.Expert_Heresy)
--战力排行
CheckRedPointStatus(RedPointType.WarPowerSort_Sort)
--东海寻仙
CheckRedPointStatus(RedPointType.FindFairy_OneView)
CheckRedPointStatus(RedPointType.FindFairy_ThreeView)
CheckRedPointStatus(RedPointType.FindFairy_FourView)
end
function this.GetContinuityRechargeRedPoint()
local redPoint = false
if this.IsActivityTypeOpen(ActivityTypeDef.ContinuityRecharge) then
local continuityRechargeList = this.GetActivityTypeInfo(ActivityTypeDef.ContinuityRecharge)
for i = 1, #continuityRechargeList.mission do
local rechargeInfo = continuityRechargeList.mission[i]
redPoint = redPoint or (rechargeInfo.progress == 1 and rechargeInfo.state == 0)
end
end
return redPoint
end
function this.GetGrowthRechargeExist()
if this.IsGetAllGrowthReward() or this.IsActivityTypeOpen(ActivityTypeDef.GrowthReward) == nil then
return false
end
return true
end
function this.IsGetAllGrowthReward()
local isGetAll = true
if this.IsActivityTypeOpen(ActivityTypeDef.GrowthReward) then
local activityInfo = this.GetActivityTypeInfo(ActivityTypeDef.GrowthReward)
for i = 1, #activityInfo.mission do
isGetAll = isGetAll and activityInfo.mission[i].state == 1
end
end
return isGetAll
end
--检测限时活动红点
function this.ExpterActivityIsShowRedPoint(activeIndex)
local activeType = 0
--注意 红点枚举id %100 就是按钮顺序
activeType = NumExChange[math.floor(activeIndex % 100)]
local expertRewardTabs = this.GetActivityTypeInfo(activeType)
if expertRewardTabs then
for i = 1, #expertRewardTabs.mission do
while true
do
local conFigData = ConfigManager.TryGetConfigData(ConfigName.ActivityRewardConfig, expertRewardTabs.mission[i].missionId)
if not conFigData then --加老号活动红点保护 无数据的继续
break
end
local value = 0
--限时累计活动特殊数值读取处理
if activeType == ActivityTypeDef.AccumulativeRechargeExper then
value = conFigData.Values[1][2]
else
value = conFigData.Values[2][1]
end
if expertRewardTabs.mission[i].state == 0 then
if activeType == ActivityTypeDef.UpStarExper or activeType == ActivityTypeDef.Talisman
or activeType == ActivityTypeDef.SoulPrint or activeType == ActivityTypeDef.EquipExper
or activeType == ActivityTypeDef.FindTreasureExper then
--进阶因为每个都不一样 特殊判断
if expertRewardTabs.mission[i].progress >= value then
return true
end
elseif activeType == ActivityTypeDef.UpLvAct then
if expertRewardTabs.value >= value and expertRewardTabs.mission[i].progress >= 0 then
return true
end
elseif activeType == ActivityTypeDef.AccumulativeRechargeExper then
if expertRewardTabs.value/100 >= value then
return true
end
else
if expertRewardTabs.value >= value then
return true
end
end
end
break
end
end
end
return false
end
--检测升级限时礼包活动红点
function this.ExperyUpLvActivityIsShowRedPoint()
local activeData = ActivityGiftManager.GetActivityTypeInfo(ActivityTypeDef.UpLvAct)
if activeData and activeData.mission then
for i = 1, #activeData.mission do
local curConfigData = ConfigManager.TryGetConfigData(ConfigName.ActivityRewardConfig,activeData.mission[i].missionId)
if curConfigData and activeData.mission[i].state == 0 and activeData.value >= curConfigData.Values[2][1] then
return true
end
end
end
return false
end
--检测周卡活动红点
function this.WeedCardActivityIsShowRedPoint()
local weekCardData = OperatingManager.GetGiftGoodsInfo(GoodsTypeDef.WeekCard, 12)
if weekCardData then
if weekCardData.buyTimes <= 0 and PatFaceManager.isFirstLog == 0 and this.isOpenWeekCard == false then
return true
end
end
return false
end
--检测战力排行活动红点
function this.WarPowerSortActivityIsShowRedPoint()
local expertRewardTabs = this.GetActivityTypeInfo(ActivityTypeDef.WarPowerReach)
if expertRewardTabs then
for i = 1, #expertRewardTabs.mission do
local conFigData = ConfigManager.GetConfigData(ConfigName.ActivityRewardConfig, expertRewardTabs.mission[i].missionId)
local value = conFigData.Values[1][1]
if expertRewardTabs.mission[i].state == 0 then
if expertRewardTabs.value >= value then
return true
end
end
end
end
return false
end
--限时活动里是否有活动开启 > 0 说明有开启的活动
function this.GetExpertActiveisOpen()
--所有达人
for i, v in pairs(NumExChange) do
local curActiveData = ActivityGiftManager.GetActivityTypeInfo(v)
if curActiveData then
if curActiveData.endTime - GetTimeStamp() > 0 then
return i
end
end
end
local LimitExchange = this.GetActivityTypeInfo(ActivityTypeDef.LimitExchange)
if LimitExchange then
if LimitExchange.endTime - GetTimeStamp() > 0 then
return ActivityTypeDef.LimitExchange
end
end
local weekCardData = OperatingManager.GetGiftGoodsInfo(GoodsTypeDef.WeekCard, 12)
if weekCardData then
if weekCardData.endTime - GetTimeStamp() > 0 then
return ExperType.WeekCard
end
end
local patFaceAllData = nil--{ConfigManager.GetConfigData(ConfigName.LoginPosterConfig,1)}--PatFaceManager.GetPatFaceAllDataTabs()
if RecruitManager.isTenRecruit == 0 then
patFaceAllData = { ConfigManager.GetConfigData(ConfigName.LoginPosterConfig, 1) }
end
if patFaceAllData and #patFaceAllData > 0 then
return ExperType.PatFace
end
--异妖直购
for i, v in ConfigPairs(ConfigManager.GetConfig(ConfigName.LoginPosterConfig)) do
if v.Type == 2 then
--异妖直购特殊处理
if v.OpenRules[1] == 1 then
if PlayerManager.level >= v.OpenRules[2] and PlayerManager.level <= v.CloseRules[2] then
local conFigData = ConfigManager.GetConfigData(ConfigName.RechargeCommodityConfig, v.ShopId)
local shopItemData = OperatingManager.GetGiftGoodsInfo(conFigData.Type, v.ShopId)
if shopItemData then
return ExperType.DiffMonster
end
end
end
end
end
--幸运探宝
--local curActiveData = not not ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.LuckyTurnTable_One)
--if curActiveData then
-- return 6
--end
--福星高照
local curActiveData = not not ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.LuckyCat)
if curActiveData then
return ExperType.LuckyCat
end
-- 七日
local curActiveData = not not ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.EightDayGift)
if curActiveData then
return ExperType.SevenDay
end
--星级成长礼
if OperatingManager.IsHeroGiftActive() then
return ExperType.StarGrowGift
end
return 0
end
--判断七日,在线,章节是否全部领取完了
function this.ActivityIsHaveGetFinally(state)
local isGetAllReward = true
for i, v in pairs(state) do
if v == 0 then
isGetAllReward = false
end
end
return isGetAllReward
end
-- 获取所有开启的显示活动ID
function this.GetExpertActiveisAllOpenIds()
local activityIds = {}
for i, v in pairs(NumExChange) do
local curActiveData = ActivityGiftManager.GetActivityTypeInfo(v)
if curActiveData then
if curActiveData.endTime - GetTimeStamp() > 0 then
table.insert(activityIds,curActiveData.activityId)
end
end
end
local LimitExchange = this.GetActivityTypeInfo(ActivityTypeDef.LimitExchange)
if LimitExchange then
if LimitExchange.endTime - GetTimeStamp() > 0 then
table.insert(activityIds,LimitExchange.activityId)
end
end
local patFaceAllData = nil
if RecruitManager.isTenRecruit == 0 then
patFaceAllData = { ConfigManager.GetConfigData(ConfigName.LoginPosterConfig, 1) }
end
if patFaceAllData and #patFaceAllData > 0 then
table.insert(activityIds,ActivityTypeDef.PatFace)
end
--幸运探宝
local luckyTurnTable_One = 0
luckyTurnTable_One = ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.LuckyTurnTable_One)
local upper_Two = ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.LuckyTurnTable_Two)
if luckyTurnTable_One then
if luckyTurnTable_One > 0 then
table.insert(activityIds, luckyTurnTable_One)
end
end
if upper_Two then
if upper_Two > 0 then
table.insert(activityIds, upper_Two)
end
end
--福星高照
local luckyCat = 0
luckyCat = ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.LuckyCat)
if luckyCat then
if luckyCat > 0 then
table.insert(activityIds, luckyCat)
end
end
-- 七日
local sevenDay = 0
sevenDay = ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.EightDayGift)
if sevenDay then
if sevenDay > 0 then
table.insert(activityIds, sevenDay)
end
end
return activityIds
end
--断线重连时 在线奖励活动 数据刷新
function this.CutUpLineUpdateOnLineData(msg)
if msg.activityInfo.activityId == ActivityTypeDef.OnlineGift then
for i = 1, #msg.activityInfo.mission do
this.onlineOpen = true
this.onlineGetRewardState[ msg.activityInfo.mission[i].missionId] = msg.activityInfo.mission[i].state
this.haveOnlineTime = msg.activityInfo.mission[i].progress
this.onlineTime = msg.activityInfo.mission[i].progress
this.cuOnLineTimestamp = GetTimeStamp() - msg.activityInfo.mission[i].progress
-- LogError("断线重连时更新在线奖励进度2:"..msg.activityInfo.mission[i].progress)
end
end
-- local activityId = ActivityGiftManager.GetActivityIdByType(ActivityTypeDef.OnlineReward)
-- if msg.activityInfo.activityId == activityId then
-- this.OnlineRewardCurTime = GetTimeStamp() - msg.activityInfo.value
-- this.ActivityGiftManagerTimer()
-- Game.GlobalEvent:DispatchEvent(GameEvent.Activity.OnFuncStateChange)
-- end
end
---关卡通关豪礼相关---
--根据当前关数 获取最近下一关卡橙色角色
function this.GetNextHeroInfo()
local allData = {}
local heroData = {}
-- local startIndex=5001
-- local mainLevelEndId=ConfigManager.TryGetConfigDataByKey(ConfigName.MainLevelConfig,"NextLevel",-1).Id--最高关卡
-- local endIndex=this.GetConfigForValues(ConfigName.ActivityRewardConfig,mainLevelEndId).Id
--> 修改获取方式
local adapterData = ConfigManager.GetAllConfigsDataByKey(ConfigName.ActivityRewardConfig, "ActivityId", 3)
table.sort(adapterData, function(a, b)
return a.Id < b.Id
end)
local startIndex = adapterData[1].Id
local endIndex = adapterData[#adapterData].Id
--活动表处于开始结束索引之间的全部数据
for i = startIndex, endIndex do
local reward = ConfigManager.TryGetConfigData(ConfigName.ActivityRewardConfig,i)
if reward then
table.insert(allData, reward)
end
end
--输出ActivityRewardConfig里下一关的索引
local index
for i = 1, #allData do
if ConfigManager.GetConfigData(ConfigName.MainLevelConfig,FightPointPassManager.curOpenFight).SortId-1 < ConfigManager.GetConfigData(ConfigName.MainLevelConfig,allData[i].Values[1][1]).SortId then
index= this.GetConfigForValues(ConfigName.ActivityRewardConfig,allData[i].Values[1][1]).Id
break
end
end
--剩余数据
local residueData = {}
for i = index, endIndex do
local reward = ConfigManager.TryGetConfigData(ConfigName.ActivityRewardConfig,i)
if reward then
table.insert(residueData, reward)
end
end
--剩余数据中将立绘数据存入
for i = 1, #residueData do
local itemData = ConfigManager.GetConfigData(ConfigName.ItemConfig,residueData[i].Reward[1][1])
if itemData.ItemType == 1 and (itemData.Quantity == 5 or itemData.Quantity == 4)then --and allData[i].Reward[1][2]==1
table.insert(heroData,residueData[i])
end
end
if #heroData > 0 then --如果有数据
return heroData[1].Reward[1][1], heroData[1].Values[1][1] --返回目标立绘id 关卡id
else
return #heroData ,#heroData--如果没数据 返回0
end
end
--根据双重key的value锁定id value为2维数组目前没有这种接口
function this.GetConfigForValues(configName,pointId)
local data = {}
for _, configInfo in ConfigPairs(ConfigManager.GetConfig(configName)) do
if configInfo.ActivityId == 3 and configInfo.Values[1][1] == pointId then
data = configInfo
break
end
end
return data
end
---------------------
--- 根据活动ID获取表格中相同活动ID第一项的数据
function this.GetActivityDataById(id)
for k, v in ConfigPairs(ActivityRewardConfig) do
if v and v.ActivityId == id then
return v
end
end
end
---剑影仙踪相关---
--获取剑影仙踪任务数据
function this.GetTaskData()
local taskList = {}
local taskValue = 0
local data = this.GetActivityTypeInfo(ActivityTypeDef.SupremeHero)
if not data then
return 0, taskList
end
table.sort(data.mission,function(a,b)
return a.missionId < b.missionId
end)
for i = 1, #data.mission do
table.insert(taskList,i, data.mission[i].state)
if data.mission[i].state >= 1 then
taskValue = taskValue + 1
end
end
return taskValue,taskList
end
--剑影仙踪红点检测 差一个通关完毕 符合要求的红点检测 点击领取红点未检测
function this.CheckSupremeHeroRedPoint()
if not ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.SupremeHero) then
return
end
local isOpen
local num, list = this.GetTaskData()
local complete = 0 --任务是否完成
local receive = 0 --任务是否领取
for i = 1, #list do
if list[i] > 0 then
complete = complete + 1
end
if list[i] == 2 then
receive = receive + 1
end
end
if complete < 3 then--任务未完成
isOpen = PatFaceManager.isFirstLog == 0 and not this.isFirstForSupremeHero
else
isOpen = receive < 3
end
return isOpen
end
--获取活动结束时间
function this.GetTaskEndTime(activityType)
local activityInfo = ActivityGiftManager.GetActivityTypeInfo(activityType)
local endTime = 0
if activityInfo then
endTime = activityInfo.endTime
end
return endTime
end
--获取活动开始时间
function this.GetTaskStartTime(activityType)
local activityInfo = ActivityGiftManager.GetActivityTypeInfo(activityType)
local startTime = 0
if activityInfo then
startTime = activityInfo.startTime
end
return startTime
end
--获取活动剩余时间
function this.GetTaskRemainTime(activityType)
local remainTime = 0
remainTime = this.GetTaskEndTime(activityType)- this.GetTaskEndTime(activityType)
return remainTime
end
function this.GetRewardState()
local taskValue,missionData = this.GetTaskData()
local doneNum = 0
for i = 1, 3 do
if missionData[i] == 2 then
doneNum = doneNum + 1
end
end
local state = doneNum == 3 and 3 or 2
return state
end
----------------
-- 获取下一个每日奖励的时间
function this.GetNextOnlineRewardData()
for _, data in ipairs(this.onlineData) do
local state = this.onlineGetRewardState[data.Id]
if state ~= 1 then -- 如果不是已完成状态则返回数据
if state == 0 then
local curOnlineTime = GetTimeStamp() - ActivityGiftManager.cuOnLineTimestamp
local needTime = data.Values[1][1]*60
if curOnlineTime < needTime then
state = -1
end
end
return data, state
end
end
end
--达人获取id
function this.GetOpenExpertIdByActivityType(activityType)
local activityInfo = ActivityGiftManager.GetActivityTypeInfo(activityType)
if activityInfo then
return activityInfo.activityId
end
return 0
end
--------------------------------------------
--主动刷新 置本地数据
function this.RefreshAcitvityData(acitvityIds,fun)
NetManager.RefreshAcitvityData(acitvityIds,function (msg)
for i = 1, #msg.activityInfo do
if this.mission[msg.activityInfo[i].activityId] then
this.mission[msg.activityInfo[i].activityId].value = msg.activityInfo[i].value
for j = 1, #msg.activityInfo[i].mission do
for _, missionInfo in pairs(this.mission[msg.activityInfo[i].activityId].mission) do
if missionInfo.missionId == msg.activityInfo[i].mission[j].missionId then
missionInfo.state = msg.activityInfo[i].mission[j].state
missionInfo.progress = msg.activityInfo[i].mission[j].progress
end
end
end
end
end
if fun then fun() end
CheckRedPointStatus(RedPointType.Expert_UpLv)
end)
end
--获取活动已开启的时间
function this.GetCurrentDayNumber(type)
local DayActInfo = ActivityGiftManager.GetActivityTypeInfo(type)
local startTime = DayActInfo.startTime
local needDayNumber = math.ceil((GetTimeStamp() - startTime) / 86400)
return needDayNumber
end
--章节检测距离下次领奖还有几关
function this.GetRewardNeedLevel()
for i = 1, table.nums(this.chapterGetRewardState) do
for j, v in pairs(this.chapterGiftData) do
if i == v.Sort then
if FightPointPassManager.GetFightStateById(v.Values[1][1]) ~= FIGHT_POINT_STATE.PASS and this.chapterGetRewardState[v.Id] == 0 then
return this.mainLevelConfig[v.Values[1][1]].SortId - this.mainLevelConfig[FightPointPassManager.curOpenFight].SortId + 1
end
end
end
end
return 0
end
--开服福利排序
local OpenSeverWelfareSortTable = {
[0] = 1,
[1] = 0,
}
function this.OpenSeverWelfareRewardTabsSort(missions)
table.sort(missions,function(a,b)
if a.state == b.state then
return a.missionId < b.missionId
else
return OpenSeverWelfareSortTable[a.state] > OpenSeverWelfareSortTable[b.state]
end
end)
end
-- 玩家是否有资格开启
function this.IsQualifiled(type, id)
-- 相同类型活动解锁类型相同,所以只判断第一个
local data
if id then
data = ConfigManager.GetConfigDataByDoubleKey(ConfigName.GlobalActivity, "Type", type, "Id", id)
else
data = ConfigManager.GetConfigDataByKey(ConfigName.GlobalActivity, "Type", type)
end
if not data then return false end
-- 当前玩家等级
local qualifiled = false
local playerLv = PlayerManager.level
local openRule = data.OpenRules
if not openRule then
return false
end
if openRule[1] == 1 then -- 关卡开启
qualifiled = FightPointPassManager.IsFightPointPass(openRule[2])
elseif openRule[1] == 2 then-- 等级开启
if openRule[3] then
qualifiled = playerLv >= openRule[2] and playerLv < openRule[3]
else
qualifiled = playerLv >= openRule[2]
end
elseif openRule[1] == 3 then-- 工坊等级开启
qualifiled = WorkShopManager.WorkShopData.lv >= openRule[2]
elseif openRule[1] == 4 then--vip等级开启
qualifiled = VipManager.GetVipLevel() >= openRule[2]
end
return qualifiled
end
function this.IsQualifiledForId(id)
-- 相同类型活动解锁类型相同,所以只判断第一个
local data = GlobalActivity[id]
if not data then return false end
-- 当前玩家等级
local qualifiled = false
local playerLv = PlayerManager.level
local openRule = data.OpenRules
if openRule[1] == 1 then -- 关卡开启
qualifiled = FightPointPassManager.IsFightPointPass(openRule[2])
elseif openRule[1] == 2 then-- 等级开启
-- if openRule[3] then
qualifiled = playerLv >= openRule[2] and playerLv < openRule[3]
-- else
-- qualifiled = playerLv >= openRule[2]
-- end
elseif openRule[1] == 3 then-- 工坊等级开启
qualifiled = WorkShopManager.WorkShopData.lv >= openRule[2]
elseif openRule[1] == 4 then--vip等级开启
qualifiled = VipManager.GetVipLevel() >= openRule[2]
end
return qualifiled
end
function this.GetTimeStartToEnd(type)
local info = ActivityGiftManager.GetActivityTypeInfo(type)
local startTime = this.GetTimeShow(info.startTime)
local endtime = this.GetTimeShow(info.endTime)
return startTime.."~"..endtime
end
---时间格式化接口
function this.GetTimeShow(data)
local year = math.floor(os.date("%Y", data))
local month = math.floor(os.date("%m", data))
local day = math.floor(os.date("%d", data))
local time = year .. "-" .. month .. "-" .. day
return time
end
--扭蛋
function this.InitBoxPoolInfo(func)
NetManager.BoxPoolListRequest(function (msg)
local activityId = this.IsActivityTypeOpen(ActivityTypeDef.BoxPool)
for i, v in ipairs(msg.boxPoolInfos) do
local config = ConfigManager.GetConfigDataByKey(ConfigName.BoxPoolConfig, "Id", v.id)
if config.ActivityId == activityId then
this.boxPoolId = v.id
this.lotteryId = v.lotteryId
this.boxPoolRewardList = v.rewardList
this.autoResetCount = v.autoResetCount
this.manualResetCount = v.manualResetCount
-- this.boxPoolConfig = config
end
end
if func then
func()
end
end)
end
--抽卡/重置
function this.ResetBoxPoolInfo(isReset, func)
NetManager.BoxPoolOperateRequest(this.boxPoolId, isReset, function (msg)
this.boxPoolId = msg.info.id
this.lotteryId = msg.info.lotteryId
this.boxPoolRewardList = msg.info.rewardList
this.autoResetCount = msg.info.autoResetCount
this.manualResetCount = msg.info.manualResetCount
if func then
func(msg.drop)
end
end)
end
--扭蛋是否抽过
function this.BoxPoolIsDraw(id)
for i = 1, #this.boxPoolRewardList do
if id == this.boxPoolRewardList[i] then
return true
end
end
return false
end
--免费抽取
function this.BoxPoolFreeTime()
local lotterySetting = ConfigManager.GetConfig(ConfigName.LotterySetting)
local freeTimesId = lotterySetting[ActivityTypeDef.BoxPool].FreeTimes
local freeTime = 0
if freeTimesId > 0 then
freeTime = PrivilegeManager.GetPrivilegeRemainValue(freeTimesId)
RecruitManager.freeUseTimeList[freeTimesId] = freeTime
return freeTime and freeTime >= 1
end
return false
end
--扭蛋是否可以抽取
function this.BoxPoolCanDraw()
if not ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.BoxPool) then
return false
end
local LotterId = ActivityGiftManager.lotteryId
if LotterId == 0 then
return false
end
local costDraw = ConfigManager.GetConfigDataByDoubleKey(ConfigName.LotterySetting,"Id",LotterId).CostItem--扭蛋消耗
return BagManager.GetItemCountById(costDraw[1][1]) >= costDraw[1][2]
end
--终身会员红点
function this.LifeMemberRedPoint()
return this.RedPointForType(ActivityTypeDef.LifeMemebr, false)
end
--终身会员免费红点
function this.LifeMemberFreeRedPoint()
return this.RedPointForType(ActivityTypeDef.LifeMemebr, true)
end
--超级终身会员红点
function this.SuperLifeMemberRedPoint()
return this.RedPointForType(ActivityTypeDef.SuperLifeMemebr, false)
end
--超级终身会员免费红点
function this.SuperLifeMemberFreeRedPoint()
return this.RedPointForType(ActivityTypeDef.SuperLifeMemebr, true)
end
function this.RedPointForType(type, isfree)
local state = false
if ActivityGiftManager.IsQualifiled(type) then
local data = this.GetActivityTypeInfo(type)
if data and data.mission then
if isfree then
state = data.mission[2].state == 0
else
if data.value == 1 then
state = data.mission[1].state == 0
end
end
end
end
-- LogError(type..":"..tostring(state))
return state
end
--周末福利红点
function this.WeekendWelfareRedPoint()
if not ActivityGiftManager.IsQualifiled(ActivityTypeDef.WeekendWelfare) then
return false
end
local config = ConfigManager.GetConfig(ConfigName.ActivityRewardConfig)
local data = this.GetActivityTypeInfo(ActivityTypeDef.WeekendWelfare)
local curWeek = GetSeverWeek()
if data then
for i, v in ipairs(data.mission) do
if config[v.missionId].Values[2][1] == curWeek then
if v.state == 0 then
return true
end
end
end
end
return false
end
--周卡红点
function this.WeekCardRedPoint()
if not ActivityGiftManager.IsQualifiled(ActivityTypeDef.WeekCard) then
return false
end
if PlayerPrefs.GetInt(PlayerManager.uid .. "WeekCardFirstOpen") ~= 1 then
return true
end
local data = this.GetActivityTypeInfo(ActivityTypeDef.WeekCard)
if data then
local activityId = data.activityId
local rewardConfig = ConfigManager.GetAllConfigsDataByKey(ConfigName.ActivityRewardConfig, "ActivityId", activityId)
if data.value > 0 then
local time = math.floor((GetTimeStamp() - data.startTime) / (24 * 3600))
if time < 1 then time = 1 end
for i, v in ipairs(data.mission) do
for index = 1, #rewardConfig do
if rewardConfig[index].Id == v.missionId then
if v.state == 0 and rewardConfig[index].Values[2][1] <= time then
return true
end
end
end
end
end
end
return false
end
--周卡是否结束
function this.WeekIsEndTime()
local data = this.GetActivityTypeInfo(ActivityTypeDef.WeekCard)
if data then
if data.endTime - GetTimeStamp() < 0 then
return false
end
return true
end
return false
end
--判断成长基金活动是否开启或结束16是最后一档活动ActivityId
function this.GrowthGift()
local state = false
local GrowthRewardId = ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.GrowthReward)
local singleRewardData
if GrowthRewardId then--是否开启
state = true
end
if GrowthRewardId == 16 then--是否结束
singleRewardData = ActivityGiftManager.GetActivityInfo(GrowthRewardId, 5324)
if not singleRewardData then
state = false
else
if singleRewardData.state == 1 then
state = false
end
end
end
return state
end
--判断终身限购礼包是否购买完
function this.LifetimeIsBuyup()
local state = true
local canBuyRechargeId = ConfigManager.GetConfigDataByKey(ConfigName.GlobalActivity, "Type", ActivityTypeDef.LifeMemeber).CanBuyRechargeId
for i = 1, #canBuyRechargeId do
local config = ConfigManager.GetConfigData(ConfigName.RechargeCommodityConfig, canBuyRechargeId[i])
local boughtNum = OperatingManager.GetGoodsBuyTime(config.Type, config.Id) or 0
local isCanBuy = config.Limit - boughtNum > 0
if state == false then
state = isCanBuy
end
end
return state
end
--开服热卖红点
function this.OpenSeverShopRedpoint()
local curActId = ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.OpenServiceShop)
if not curActId then
return false
end
local data = GlobalActivity[curActId].CanBuyRechargeId
for i = 1, #data do
local data = ConfigManager.GetConfigDataByKey(ConfigName.RechargeCommodityConfig, "Id", data[i])
local boughtNum = OperatingManager.GetGoodsBuyTime(GoodsTypeDef.DirectPurchaseGift, data.Id) or 0
if data.Price == 0 and data.Limit - boughtNum > 0 then
return true
end
end
return false
end
function this.OnlineRewardRedpoint()
local activityId = ActivityGiftManager.GetActivityIdByType(ActivityTypeDef.OnlineReward)
local configData = ConfigManager.GetAllConfigsDataByKey(ConfigName.DailyOnlineTaskConfig, "ActivityId", activityId)
for i = 1, #configData do
local severData = ActivityGiftManager.GetActivityInfo(activityId, configData[i].Id)
if this.onlineRewardTime >= configData[i].TaskValue[2][1] and severData.state ~= -1 then
local privilegeState = true
for j = 1, #configData[i].AgainPrivilegeID do
if not PrivilegeManager.GetPrivilegeOpenStatusById(configData[i].AgainPrivilegeID[j]) then
privilegeState = false
end
end
if (privilegeState and severData.state == 1) or (not privilegeState and severData.state == 0)then
return true
end
end
end
return false
end
this.CanGetMissionIds = {}
function this.ActivityGiftManagerTimer()
if this.timer then
this.timer:Stop()
this.timer = nil
end
this.timer = Timer.New(function()
if NetManager.IsConnect() then
if ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.OnlineReward) then
local activityId = ActivityGiftManager.GetActivityIdByType(ActivityTypeDef.OnlineReward)
local configData = ConfigManager.GetAllConfigsDataByKey(ConfigName.DailyOnlineTaskConfig, "ActivityId", activityId)
local time = GetTimeStamp()-this.OnlineRewardCurTime
local hour, min = TimeToH_M_S(time)
for i = 1, #configData do
local severData = ActivityGiftManager.GetActivityInfo(activityId, configData[i].Id)
if hour*60+min >= configData[i].TaskValue[2][1] and severData.state ~= -1 then
local privilegeState = true
for j = 1, #configData[i].AgainPrivilegeID do
if not PrivilegeManager.GetPrivilegeOpenStatusById(configData[i].AgainPrivilegeID[j]) then
privilegeState = false
end
end
if (privilegeState and severData.state == 1) or (not privilegeState and severData.state == 0) or (privilegeState and severData.state == 0) then
if not this.CanGetMissionIds[configData[i].Id] then
this.CanGetMissionIds[configData[i].Id] = configData[i].Id
this.onlineRewardTime = hour*60+min
CheckRedPointStatus(RedPointType.OnlineReward)
Game.GlobalEvent:DispatchEvent(GameEvent.Activity.OnFuncStateChange)
end
end
end
end
end
end
end, 1, -1, true)
this.timer:Start()
end
--兑换活动红点
function this.ExchangeActionRedpoint()
local activityId = ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.Exchange)
if not activityId or activityId <= 0 then
return false
end
local allData = ConfigManager.GetAllConfigsDataByKey(ConfigName.WordExchangeConfig, "ActivityId", activityId)
for i = 1, #allData do
local state = true
for j = 1, #allData[i].DeductItem do
if not CompareBagNumAndNeedNum(allData[i].DeductItem[j][1], allData[i].DeductItem[j][2]) then
state = false
end
end
if state then
local serverData = ActivityGiftManager.GetActivityInfo(activityId, allData[i].Id)
if serverData then
if allData[i].LimitBuyNum-serverData.progress > 0 or allData.LimitBuyType == 0 then
return true
end
end
end
end
return false
end
--节日活动登录红点
function this.FestivalLoginRP()
local activityInfo = ActivityGiftManager.GetActivityTypeInfo(ActivityTypeDef.Festival_Login)
local activityId = ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.Festival_Login)
if not activityId or activityId <= 0 then
return false
end
local allData = ConfigManager.GetAllConfigsDataByKey(ConfigName.ActivityRewardConfig, "ActivityId", activityId)
for i = 1, #allData do
local serverData = ActivityGiftManager.GetActivityInfo(activityId, allData[i].Id)
local taskState = activityInfo.value >= allData[i].Values[1][1]
if serverData and serverData.state == 0 and taskState then
return true
end
end
return false
end
--节日活动累充红点
function this.FestivalRechargeRP()
local activityInfo = ActivityGiftManager.GetActivityTypeInfo(ActivityTypeDef.Festival_Recharge)
local activityId = ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.Festival_Recharge)
if not activityId or activityId <= 0 then
return false
end
local allData = ConfigManager.GetAllConfigsDataByKey(ConfigName.ActivityRewardConfig, "ActivityId", activityId)
for i = 1, #allData do
local serverData = ActivityGiftManager.GetActivityInfo(activityId, allData[i].Id)
local taskState = serverData.progress/100 >= allData[i].Values[1][2]
if serverData and serverData.state == 0 and taskState then
return true
end
end
return false
end
--节日活动任务红点
function this.FestivalTaskRP()
local activityId = ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.Festival_Task)
if not activityId or activityId <= 0 then
return false
end
local allData = ConfigManager.GetAllConfigsDataByKey(ConfigName.ThemeActivityTaskConfig, "ActivityId", activityId)
for i = 1, #allData do
local serverData = TaskManager.GetTypeTaskInfo(TaskTypeDef.Festival, allData[i].Id)
if serverData and serverData.state == 1 then
return true
end
end
return false
end
--手机绑定红点
function this.GetPhoneBuildingRedpoint()
if GetActivityState(4004) then
return this.phoneBuildingRewardIsGet ~= 2
end
return false
end
function this.GetFB1Redpoint()
if GetActivityState(4003) then
return PlayerPrefs.GetInt(PlayerManager.uid.."FB1") ~= 2
end
return false
end
function this.GetFB2Redpoint()
if GetActivityState(4003) then
return PlayerPrefs.GetInt(PlayerManager.uid.."FB2") ~= 2
end
return false
end
function this.GetShareRedpoint()
if GetActivityState(4003) then
return this.shareIsGet ~= 2
end
return false
end
return this