miduo_client/Assets/ManagedResources/~Lua/Modules/DynamicActivity/DynamicActivityManager.lua

451 lines
17 KiB
Lua
Raw Normal View History

DynamicActivityManager = {}
2020-10-24 18:49:32 +08:00
local this = DynamicActivityManager
local SpiritAnimalSummonConfig = ConfigManager.GetConfig(ConfigName.SpiritAnimalSummon)
this.curLevel = 0--社稷大典的等级
2020-10-24 16:18:57 +08:00
2020-10-24 18:49:32 +08:00
function this.Initialize()
end
function this.SheJiGetRankData(type,activityId,fun)
local allRankData,myRankData
RankingManager.InitData(type,function ()
allRankData,myRankData = RankingManager.GetRankingInfo()
if fun then
fun(allRankData,myRankData)
end
end,activityId)
end
function this.SetCurLevel(level)--社稷大典的等级
2020-10-24 16:18:57 +08:00
this.curLevel = level
end
function this.SheJiCheckRedPoint()
local ActInfo = ActivityGiftManager.GetActivityTypeInfo(ActivityTypeDef.Celebration)--活动数据
local canGetRewardList={}
2020-10-29 09:50:47 +08:00
if ActInfo then
local curScore = ActInfo.mission[1].progress
local actReward = ConfigManager.GetAllConfigsDataByKey(ConfigName.ActivityRewardConfig,"ActivityId",ActInfo.activityId)
local setting = ConfigManager.GetConfigDataByKey(ConfigName.GodSacrificeSetting,"ActivityId",ActInfo.activityId)
--检测宝箱是否有可领取
for i = 1, #ActInfo.mission do
local curLevel = curScore/actReward[1].Values[2][1]
if ActInfo.mission[i].state == 0 and curLevel >= i then
table.insert(canGetRewardList,ActInfo.mission[i])
end
end
local canGet = false
--检测中央大锅是否可领取
if GetTimeStamp() > ActInfo.value and GetTimeStamp() < (ActInfo.value + setting.LastTime * 60) then
--领过--进入倒计时
canGet = false
elseif GetTimeStamp() > ActInfo.value and GetTimeStamp() > (ActInfo.value + setting.LastTime * 60) then
--没到时间--进入倒计时
canGet = false
else
--可领取
canGet = true
end
if #canGetRewardList > 0 or canGet then
return true
else
return false
2020-10-24 16:18:57 +08:00
end
end
end
function this.GetBaoKuData()
local actData={}--全部数据
local initCardDatas = {}--35个矿坑的初始数据
local finalCardDatas = {}--35个矿坑抽取后的数据
local allData = {}--总奖励数据
local curBasicPool = 0
local curFinalPool = 0
2020-11-03 19:01:47 +08:00
local ActInfo = ActivityGiftManager.GetActivityTypeInfo(ActivityTypeDef.YiJingBaoKu)--活动数据
2020-11-04 10:53:02 +08:00
local BlessingConfigNew = ConfigManager.GetConfigDataByKey(ConfigName.BlessingConfigNew,"ActivityId",ActInfo.activityId)
local RewardAllConfig = ConfigManager.GetConfig(ConfigName.BlessingRewardPoolNew)
--领取过的35条数据
for i = 1, 99 do
if ActInfo.mission[i] then
local v = ActInfo.mission[i]
if v.missionId < 100 then
local data = {}
2020-11-05 19:10:20 +08:00
data.Id = v.missionId
data.rewardId = v.progress
data.reward = {}
if v.progress ~= 0 then
data.reward = RewardAllConfig[v.progress].Reward
2020-11-05 19:10:20 +08:00
data.configId = RewardAllConfig[v.progress].Id
end
-- LogGreen("Id:"..v.missionId.." rewardId:"..v.progress.." ")
table.insert(finalCardDatas,data)
end
end
end
2020-11-03 19:01:47 +08:00
--大奖和当前层数数据
for i = 1, 1100 do
if ActInfo.mission[i] then
local v = ActInfo.mission[i]
if v.missionId == 100 then
-- LogYellow("层数:"..v.progress)
actData.curLevel = v.progress
curBasicPool = BlessingConfigNew.BasicPoolId[v.progress]
curFinalPool = BlessingConfigNew.FinalPoolId
elseif v.missionId > 1000 then
local data = {}
data.rewardId = v.missionId-1000
data.progress = v.progress
-- LogYellow("rewardId:"..data.rewardId.." data.progress:"..data.progress)
2020-11-05 19:10:20 +08:00
data.configId = RewardAllConfig[data.rewardId].Id
table.insert(allData,data)
end
end
end
--初始的坑的35条数据
local RewardConfig = ConfigManager.GetAllConfigsDataByKey(ConfigName.BlessingRewardPoolNew,"PoolId",curBasicPool)
local index = 1
for i = 1, #RewardConfig do
local j = 1
while(j <= RewardConfig[i].InitializeNum) do
local data = {}
if index ~= 18 then
data.rewardId = RewardConfig[i].Id
data.reward = {}
data.reward = RewardConfig[i].Reward
j = j + 1
else
data.rewardId = 0
data.reward = nil
end
table.insert(initCardDatas,data)
index = index + 1
end
end
actData.activityId = ActInfo.activityId
actData.curBasicPool = curBasicPool
actData.curFinalPool = curFinalPool
actData.selectId = ActInfo.value
actData.endTime = ActInfo.endTime
-- LogPink("大奖Id:"..ActInfo.value)
actData.initCardDatas = initCardDatas
actData.finalCardDatas = finalCardDatas
actData.allData = allData
2020-11-03 19:01:47 +08:00
return actData
end
--宝库奖励的剩余数据
function this.GetLeftRewardData()
local actData = this.GetBaoKuData()
local finalCardDatas = actData.finalCardDatas
local RewardConfig = ConfigManager.GetAllConfigsDataByKey(ConfigName.BlessingRewardPoolNew,"PoolId",actData.curLevel)--初始所有奖励数据
local data={}
for i = 1, #RewardConfig do
data[RewardConfig[i].Id] = {}
data[RewardConfig[i].Id].id = RewardConfig[i].Id
data[RewardConfig[i].Id].reward = RewardConfig[i].Reward
data[RewardConfig[i].Id].progress = RewardConfig[i].InitializeNum
data[RewardConfig[i].Id].limit = RewardConfig[i].InitializeNum
end
-- LogYellow("#finalCardDatas:"..#finalCardDatas.." actData.selectId:"..actData.selectId)
for i = 1, #finalCardDatas do
if finalCardDatas[i].rewardId and finalCardDatas[i].rewardId ~= 0 and finalCardDatas[i].rewardId ~= actData.selectId then
-- LogYellow("i:"..i.." rewardId:"..tostring(finalCardDatas[i].rewardId) .." progress"..tonumber(data[finalCardDatas[i].rewardId].progress))
data[finalCardDatas[i].rewardId].progress = data[finalCardDatas[i].rewardId].progress - 1
end
end
return data
end
2020-11-05 19:10:20 +08:00
function this.LingShouBuildData()
local rewardData={}
local showData={}
local ActData = ActivityGiftManager.GetActivityTypeInfo(ActivityTypeDef.LingShouBaoGe)
local activityId = ActData.activityId
local LSrewardData = ConfigManager.GetAllConfigsDataByKey(ConfigName.ActivityRewardConfig,"ActivityId",activityId)
local array = ConfigManager.GetAllConfigsDataByKey(ConfigName.LotterySetting,"ActivityId",activityId)
local singleRecruit = array[1]
local tenRecruit = array[2]
local curScore = 0
--第一条为选择抽取的灵兽信息
for index, value in ipairs(ActData.mission) do
local v = ActData.mission[index]
if v.missionId == 0 then
if v.progress == 0 then
local mergePool = singleRecruit.MergePool
local poolId = ConfigManager.GetConfigDataByKey(ConfigName.LotterySpecialConfig,"Type",mergePool).pool_id
local tempData = ConfigManager.GetConfigDataByKey(ConfigName.LotteryRewardConfig,"Pool",poolId)
showData.sasId = 0
showData.monsterId = tempData.Reward[1]
showData.iconId = LSrewardData[1].Reward[1][1]
else
local tempData = SpiritAnimalSummonConfig[v.progress]
showData.sasId = tempData.Id
showData.monsterId = tempData.FocusID
showData.iconId = tempData.TargetItemList[2]
end
end
end
--剩下的是奖励信息
for i = 1, #LSrewardData do
local v = LSrewardData[i]
for index, value in ipairs(ActData.mission) do
if v.Id == value.missionId then
local data = {}
data.missionId = value.missionId
data.reward = {}
data.iconId = showData.iconId
data.num = v.Reward[1][2]
data.value = v.Values[1][1]
curScore = ActData.mission[index].progress
if curScore >= data.value then
if value.state == 0 then
data.state = 1--可领的
else
data.state = 2--领完的
end
else
data.state = 0--不可领的
end
table.insert(rewardData,data)
end
end
end
return rewardData,showData,curScore
end
2020-12-01 15:52:34 +08:00
--灵兽宝阁红点检测
function this.LingShouUpCheckRed()
local freeTime = 0
local lotterySetting=ConfigManager.GetConfig(ConfigName.LotterySetting)
local ActData = ActivityGiftManager.GetActivityTypeInfo(ActivityTypeDef.LingShouBaoGe)
2020-11-13 15:47:04 +08:00
if not ActData then
return false
end
local array = ConfigManager.GetAllConfigsDataByKey(ConfigName.LotterySetting,"ActivityId",ActData.activityId)
local freeTimesId=lotterySetting[array[1].Id].FreeTimes
if freeTimesId > 0 then
freeTime = PrivilegeManager.GetPrivilegeRemainValue(freeTimesId)
end
local rewardData,showData,curScore = DynamicActivityManager.LingShouBuildData()
for i = 1, #rewardData do
if rewardData[i].state == 1 or freeTime >=1 then
return true
end
end
return false
end
2020-12-01 15:52:34 +08:00
--新将来袭获取数据
function this.XinJiangBuildData()
local data={}
local ActData = ActivityGiftManager.GetActivityTypeInfo(ActivityTypeDef.XinJiangLaiXi)
local newHeroData = ConfigManager.GetConfigData(ConfigName.NewHeroConfig,ActData.activityId)
data.endTime = ActData.endTime
data.fightTime = PrivilegeManager.GetPrivilegeRemainValue(2012)
data.buyTime = PrivilegeManager.GetPrivilegeRemainValue(2013)
data.money = BagManager.GetTotalItemNum(UpViewRechargeType.XinJiangCoin)
2020-12-01 15:52:34 +08:00
local rewardGroupId = newHeroData.DropList[#newHeroData.DropList][2]
2020-12-02 09:51:17 +08:00
data.reward = ConfigManager.GetConfigData(ConfigName.RewardGroup,rewardGroupId).ShowItem
2020-12-01 15:52:34 +08:00
data.activityId = ActData.activityId
return data
end
2020-12-23 10:34:47 +08:00
function this.XiangYaoBuildData()
local rewardData={}
local showData={}
local ActData = ActivityGiftManager.GetActivityTypeInfo(ActivityTypeDef.XiangYaoDuoBao)
local activityId = ActData.activityId
local LSrewardData = ConfigManager.GetAllConfigsDataByKey(ConfigName.ActivityRewardConfig,"ActivityId",activityId)
local array = ConfigManager.GetAllConfigsDataByKey(ConfigName.LotterySetting,"ActivityId",activityId)
local singleRecruit = array[1]
local tenRecruit = array[2]
local curScore = 0
--第一条为选择抽取的英雄信息
2020-12-23 10:34:47 +08:00
for index, value in ipairs(ActData.mission) do
local v = ActData.mission[index]
if v.missionId == 0 then
if v.progress == 0 then
local mergePool = singleRecruit.MergePool
local poolId = ConfigManager.GetConfigDataByKey(ConfigName.LotterySpecialConfig,"Type",mergePool).pool_id
local tempData = ConfigManager.GetConfigDataByKey(ConfigName.LotteryRewardConfig,"Pool",poolId)
showData.sasId = 0
showData.monsterId = tempData.Reward[1]
showData.iconId = LSrewardData[1].Reward[1][1]
else
local tempData = SpiritAnimalSummonConfig[v.progress]
showData.sasId = tempData.Id
showData.monsterId = tempData.FocusID
showData.iconId = tempData.TargetItemList[2]
end
end
end
--剩下的是奖励信息
for i = 1, #LSrewardData do
local v = LSrewardData[i]
for index, value in ipairs(ActData.mission) do
if v.Id == value.missionId then
local data = {}
data.missionId = value.missionId
data.reward = v.Reward
data.iconId = v.Reward[1][1]
data.num = v.Reward[1][2]
data.value = v.Values[1][1]
curScore = ActData.mission[index].progress
if curScore >= data.value then
if value.state == 0 then
data.state = 1--可领的
else
data.state = 2--领完的
end
else
data.state = 0--不可领的
end
table.insert(rewardData,data)
end
end
end
return rewardData,showData,curScore
end
2020-12-21 15:41:31 +08:00
--升星有礼拿数据
function this.ShengXingYouLiGetData()
local data={}
local actData = ActivityGiftManager.GetActivityTypeInfo(ActivityTypeDef.ShengXingYouLi)
data.activityId = actData.activityId
data.endTime = actData.endTime
data.mission = {}
local rewardData = ConfigManager.GetAllConfigsDataByKey(ConfigName.ActivityRewardConfig,"ActivityId",data.activityId)
for i = 1, #actData.mission do
local d={}
d.missionId = actData.mission[i].missionId
d.state = actData.mission[i].state
d.progress = actData.mission[i].progress
-- LogYellow("state:"..d.state.." progress:"..d.progress)
d.need = rewardData[i].Values[2][1]
d.reward = rewardData[i].Reward
2021-01-26 17:08:39 +08:00
d.word = GetLanguageStrById(rewardData[i].ContentsShow)
2020-12-21 15:41:31 +08:00
d.jump = rewardData[i].Jump[1]
table.insert(data.mission,d)
end
return data
end
--检测升星有礼的红点
function this.CheckShengXingYouLiRedPoint()
local activeData = ActivityGiftManager.GetActivityTypeInfo(ActivityTypeDef.ShengXingYouLi)
if activeData then
for i = 1, #activeData.mission do
local sConFigData = ConfigManager.GetConfigData(ConfigName.ActivityRewardConfig, activeData.mission[i].missionId)
if sConFigData then
local value = sConFigData.Values[2][1]
if activeData.mission[i].state == 0 and activeData.mission[i].progress >= value then
return true
end
end
end
end
return false
end
--新将来袭红点
function this.CheckXinJiangLaiXiRedPoint()
local fightTime = PrivilegeManager.GetPrivilegeRemainValue(2012)
local ActData = ActivityGiftManager.GetActivityTypeInfo(ActivityTypeDef.XinJiangLaiXi)
if not ActData then
return false
end
if fightTime > 0 then
return true
else
return false
end
end
--降妖夺宝红点
function this.CheckXiangYaoDuoBaoRedPoint()
local freeTime = 0
local lotterySetting=ConfigManager.GetConfig(ConfigName.LotterySetting)
local ActData = ActivityGiftManager.GetActivityTypeInfo(ActivityTypeDef.XiangYaoDuoBao)
if not ActData then
return false
end
local array = ConfigManager.GetAllConfigsDataByKey(ConfigName.LotterySetting,"ActivityId",ActData.activityId)
local freeTimesId=lotterySetting[array[1].Id].FreeTimes
if freeTimesId > 0 then
freeTime = PrivilegeManager.GetPrivilegeRemainValue(freeTimesId)
end
local rewardData,showData,curScore = DynamicActivityManager.XiangYaoBuildData()
for i = 1, #rewardData do
if rewardData[i].state == 1 or freeTime >=1 then
return true
end
end
return false
end
2021-03-17 10:38:07 +08:00
function this.GetActivityTableDataByPageInde(pageIndex)
local activityDic = {}
local functionDic = {}
local activityGroupsData = {}
local activityDatas = {}
local configs = ConfigManager.GetAllConfigsDataByKey(ConfigName.ActivityGroups,"PageType",pageIndex)
for i = 1 , #configs do
if configs[i].ActiveType > 0 then
if not activityDic[configs[i].ActiveType] then
activityDic[configs[i].ActiveType] = configs[i]
table.insert(activityGroupsData,configs[i])
end
elseif configs[i].FunType > 0 then
if not activityDic[configs[i].FunType] then
functionDic[configs[i].FunType] = configs[i]
table.insert(activityGroupsData,configs[i])
end
elseif configs[i].ActiveType == 0 and configs[i].FunType == 0 then
table.insert(activityGroupsData,configs[i])
end
end
table.sort(activityGroupsData,function(a,b)
if a.Sort == b.Sort then
return a.ActId > b.ActId
else
return a.Sort < b.Sort
end
end)
return activityGroupsData
end
2021-03-23 20:28:31 +08:00
-- 玩家是否有资格开启
function this.IsQualifiled(id)
-- 相同类型活动解锁类型相同,所以只判断第一个
local data = ConfigManager.GetConfigData(ConfigName.ActivityGroups,id)
if not data then return true end
-- 当前玩家等级
local qualifiled = false
local playerLv = PlayerManager.level
local openRule = data.OpenRules
if not openRule or #openRule < 1 then
return true
end
if openRule[1] == 1 then -- 关卡开启
qualifiled = FightPointPassManager.IsFightPointPass(openRule[2])
elseif openRule[1] == 2 then -- 等级开启
qualifiled = playerLv >= openRule[2]
elseif openRule[1] == 3 then -- 工坊等级开启
qualifiled = WorkShopManager.WorkShopData.lv >= openRule[2]
end
return qualifiled
end
2020-10-24 18:49:32 +08:00
return this