miduo_client/Assets/ManagedResources/~Lua/Modules/NewActivity/CommonActPageManager.lua

502 lines
24 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.

CommonActPageManager = {}
local this = CommonActPageManager
local dataList = {}
this.TaSuiLingXiaoMsg = nil
this.TaSuiLingXiaoHistoryDmg = 0
this.DynamicActType = 0
function this.Initialize()
end
--初始化活动的特殊数据
local TypeUpdateFunc = {
[ActivityTypeDef.YunYouShangRen] = function ()
local curData = dataList[ActivityTypeDef.YunYouShangRen]
local configData = ConfigManager.GetAllConfigsDataByKey(ConfigName.ComposeActivity,"ActivityId",curData.activityId)
for i = 1, #curData.rewards do
for j = 1, #configData do
if curData.rewards[i].missionId == configData[j].Id then
curData.rewards[i].otherData.needItems = configData[j].NeedItems
curData.rewards[i].otherData.count = configData[j].Count
curData.rewards[i].otherData.composeType = configData[j].ComposeType
curData.rewards[i].otherData.selectId = 0
end
end
end
table.sort(dataList[ActivityTypeDef.YunYouShangRen].rewards,function (a,b)
if a.progress == 0 and b.progress > 0 then
return false
end
if a.progress > 0 and b.progress == 0 then
return true
end
return a.missionId < b.missionId
-- if a.progress == b.progress then
-- else
-- return a.progress > b.progress
-- end
end)
end,
[ActivityTypeDef.ContinuityRecharge] = function ()
this.GetExpertData(3,ActivityTypeDef.ContinuityRecharge)
end,
[ActivityTypeDef.UpStarExper] = function ()--进阶达人
this.GetExpertData(1,ActivityTypeDef.UpStarExper)
end,
[ActivityTypeDef.Talisman] = function ()--法宝达人
this.GetExpertData(1,ActivityTypeDef.Talisman)
end,
[ActivityTypeDef.SoulPrint] = function ()--魂印达人
this.GetExpertData(1,ActivityTypeDef.SoulPrint)
end,
[ActivityTypeDef.EquipExper] = function ()--装备达人
this.GetExpertData(1,ActivityTypeDef.EquipExper)
end,
[ActivityTypeDef.EnergyExper] = function ()--体力达人
this.GetExpertData(2,ActivityTypeDef.EnergyExper)
end,
[ActivityTypeDef.FindTreasureExper] = function ()--寻宝达人
this.GetExpertData(1,ActivityTypeDef.FindTreasureExper)
end,
[ActivityTypeDef.ExpeditionExper] = function ()--天宫达人
this.GetExpertData(1,ActivityTypeDef.ExpeditionExper)
end,
[ActivityTypeDef.FastExplore] = function ()--极速达人
this.GetExpertData(2,ActivityTypeDef.FastExplore)
end,
[ActivityTypeDef.GoldExper] = function ()--点金达人
this.GetExpertData(2,ActivityTypeDef.GoldExper)
end,
[ActivityTypeDef.FightExper] = function ()--副本达人
this.GetExpertData(2,ActivityTypeDef.FightExper)
end,
[ActivityTypeDef.AreaExper] = function ()
this.GetExpertData(2,ActivityTypeDef.AreaExper)
end,
[ActivityTypeDef.slhjExper] = function ()--森罗幻境达人
this.GetExpertData(2,ActivityTypeDef.slhjExper)
end,
[ActivityTypeDef.LuckyTurnExper] = function ()--探宝达人
this.GetExpertData(2,ActivityTypeDef.LuckyTurnExper)
end,
[ActivityTypeDef.RecruitExper] = function ()--征募达人
this.GetExpertData(2,ActivityTypeDef.RecruitExper)
end,
[ActivityTypeDef.SecretBoxExper] = function ()--秘宝达人
this.GetExpertData(2,ActivityTypeDef.SecretBoxExper)
end,
[ActivityTypeDef.AccumulativeRechargeExper] = function ()---日累计充值
local curData = dataList[ActivityTypeDef.AccumulativeRechargeExper]
local configData = ConfigManager.GetConfigData(ConfigName.GlobalActivity,curData.activityId)
if configData.ShowArt == FUNCTION_OPEN_TYPE.EXPERT then
this.GetExpertData(2,ActivityTypeDef.AccumulativeRechargeExper)
else
this.GetMissionData(1,ActivityTypeDef.AccumulativeRechargeExper)
end
end,
[ActivityTypeDef.UpLvAct] = function ()---升级限时
this.GetExpertData(4,ActivityTypeDef.UpLvAct)
end,
[ActivityTypeDef.DynamicAct_recharge] = function ()---周累计充值
this.GetMissionData(1,ActivityTypeDef.DynamicAct_recharge)
end,
[ActivityTypeDef.TaSuiLingXiao] = function ()--踏碎凌霄
local curData = dataList[ActivityTypeDef.TaSuiLingXiao]
local configData = ConfigManager.GetAllConfigsDataByKey(ConfigName.ActivityRewardConfig,"ActivityId",curData.activityId)
for i = 1, #curData.rewards do
for j = 1, #configData do
if curData.rewards[i].missionId == configData[j].Id then
curData.rewards[i].otherData.Values = configData[j].Values
curData.rewards[i].otherData.Reward = configData[j].Reward
curData.rewards[i].otherData.Sort = configData[j].Sort
end
end
end
table.sort(curData.rewards,function (a,b)
if a.state == b.state then
return a.missionId < b.missionId
else
return a.state < b.state
end
end)
end,
[ActivityTypeDef.DynamicAct] = function ()--主题活动任务
local curData = dataList[ActivityTypeDef.DynamicAct]
this.InitTaskData(curData,TaskTypeDef.DynamicActTask,ConfigName.ThemeActivityTaskConfig)
end,
[ActivityTypeDef.ChaoFanRuSheng] = function ()--超凡入圣
local curData = dataList[ActivityTypeDef.ChaoFanRuSheng]
this.InitMissionDdataUpStar(curData)
end,
[ActivityTypeDef.SurpriseBox] = function ()--惊喜礼盒
local curData = dataList[ActivityTypeDef.SurpriseBox]
local configData = ConfigManager.GetAllConfigsDataByKey(ConfigName.SurpriseBoxConfig,"ActivityId",curData.activityId)
local rechargeConfig = ConfigManager.GetConfig(ConfigName.RechargeCommodityConfig)
for i = 1, #curData.rewards do
for j = 1, #configData do
if curData.rewards[i].missionId == configData[j].Id then
curData.rewards[i].otherData.PackId = configData[j].PackId
curData.rewards[i].otherData.BuyDay = configData[j].BuyDay
curData.rewards[i].otherData.Name = rechargeConfig[configData[j].PackId].Name
curData.rewards[i].otherData.Reward = rechargeConfig[configData[j].PackId].RewardShow
curData.rewards[i].otherData.Price = rechargeConfig[configData[j].PackId].Price
curData.rewards[i].otherData.Warning = configData[j].Warning
curData.rewards[i].otherData.Rule = configData[j].Rule
end
end
end
for i = #curData.rewards, 1,-1 do
if curData.rewards[i].progress == 5 then
table.remove(curData.rewards,i)
end
end
table.sort(curData.rewards,function (a,b)
return a.otherData.PackId < b.otherData.PackId
end)
end,
[ActivityTypeDef.TeHuiShenZhuang] = function ()--特惠神装
local curData = dataList[ActivityTypeDef.TeHuiShenZhuang]
local configData = ConfigManager.GetAllConfigsDataByKey(ConfigName.SurpriseBoxConfig,"ActivityId",curData.activityId)
local rechargeConfig = ConfigManager.GetConfig(ConfigName.RechargeCommodityConfig)
for i = 1, #curData.rewards do
for j = 1, #configData do
if curData.rewards[i].missionId == configData[j].Id then
curData.rewards[i].otherData.PackId = configData[j].PackId
curData.rewards[i].otherData.Name = rechargeConfig[configData[j].PackId].Name
curData.rewards[i].otherData.Reward = rechargeConfig[configData[j].PackId].RewardShow
curData.rewards[i].otherData.Price = rechargeConfig[configData[j].PackId].Price
curData.rewards[i].otherData.skinArtId = tonumber(configData[1].Warning)
curData.rewards[i].otherData.canBuyDay = configData[j].BuyDay - curData.value
end
end
end
table.sort(curData.rewards,function (a,b)
return a.missionId < b.missionId
end)
end,
--山河试炼
[ActivityTypeDef.ShanHeShiLian] = function ()--山河试炼
local curData = dataList[ActivityTypeDef.ShanHeShiLian]
local configData = ConfigManager.GetAllConfigsDataByKey(ConfigName.ActivityRewardConfig,"ActivityId",curData.activityId)
for i = 1, #curData.rewards do
for j = 1, #configData do
if curData.rewards[i].missionId == configData[j].Id then
curData.rewards[i].otherData.Values = configData[j].Values
curData.rewards[i].otherData.Reward = configData[j].Reward
curData.rewards[i].otherData.Sort = configData[j].Sort
end
end
end
table.sort(curData.rewards,function (a,b)
if a.state == b.state then
return a.otherData.Sort < b.otherData.Sort
else
return a.state < b.state
end
end)
end,
[ActivityTypeDef.XunBaoMiZong] = function () --寻宝迷踪
local curData = dataList[ActivityTypeDef.XunBaoMiZong]
local DiamondBoxContain = ConfigManager.GetConfigDataByKey(ConfigName.LotterySetting,"ActivityId",curData.activityId).DiamondBoxContain[1][1]
local rewards = ConfigManager.GetAllConfigsDataByKey(ConfigName.LotteryRewardConfig,"Pool",DiamondBoxContain)
local weightAll = 0
for i = 1, #rewards do
weightAll = weightAll + rewards[i].WeightShow
end
for i = 1, #rewards do
local data = {}
data.Id = rewards[i].Id
data.Reward = rewards[i].Reward
data.ItemName = rewards[i].ItemName
data.WeightShow = string.format("%.2f",rewards[i].WeightShow/weightAll*100).."%" --rewards[i].WeightShow/weightAll*100.."%"
table.insert(curData.FreelyData,data)
end
table.sort(curData.FreelyData,function (a,b)
return a.Id < b.Id
end)
end
}
function this.InitMissionDdataUpStar(curData)
local actRewardConfigs = ConfigManager.GetAllConfigsDataByKey(ConfigName.ActivityRewardConfig,"ActivityId", curData.activityId)
for i = 1, #curData.rewards do
for j = 1, #actRewardConfigs do
if curData.rewards[i].missionId == actRewardConfigs[j].Id then
curData.rewards[i].state = curData.rewards[i].state
curData.rewards[i].targetId = actRewardConfigs[j].Values[1][1]
curData.rewards[i].targetStar = actRewardConfigs[j].Values[1][2]
curData.rewards[i].targetNum = actRewardConfigs[j].Values[2][1]
curData.rewards[i].heroShows = {[1] = {curData.rewards[i].targetId,0,nil,curData.rewards[i].targetStar}}
curData.rewards[i].giftId = actRewardConfigs[j].Values[3][1]
curData.rewards[i].giftConfig = ConfigManager.GetConfigData(ConfigName.RechargeCommodityConfig,curData.rewards[i].giftId)
curData.rewards[i].giftShows = curData.rewards[i].giftConfig.RewardShow
curData.rewards[i].giftData = OperatingManager.GetGiftGoodsInfo(curData.rewards[i].giftConfig.Type,curData.rewards[i].giftId)
curData.rewards[i].freeShows = actRewardConfigs[j].Reward
break
end
end
end
end
function this.InitTaskData(curData,taskType,configName)
local allListData = ConfigManager.GetAllConfigsDataByKey(configName, "ActivityId", curData.activityId)
local allMissionData = TaskManager.GetTypeTaskList(taskType)
Log("this.DynamicActType:"..this.DynamicActType)
for i=1,#allListData do
for j=1,#allMissionData do
-- LogGreen("this.DynamicActType:"..this.DynamicActType)
if allListData[i].Id == allMissionData[j].missionId and (this.DynamicActType == 0 or allListData[i].Type == this.DynamicActType) then
local data = {}
data.missionId = allMissionData[j].missionId
data.taskType = taskType
local strs = string.split(GetLanguageStrById(allListData[i].Show),"#")
data.progress = allMissionData[j].progress
data.value = allListData[i].TaskValue[2][1]
data.state = allMissionData[j].state
if data.state == 2 or data.state == 1 then
data.itemName = string.format("%s(%s/%s)",strs[1],data.value,data.value)
else
data.itemName = string.format("%s(%s/%s)",strs[1],(data.progress > data.value and data.value or data.progress),data.value)
end
data.content = strs[2]
data.shows = {
[1] = {
allListData[i].Integral[1][1],
allListData[i].Integral[1][2]
},
}
data.type = allListData[i].Type
data.jump = allListData[i].Jump[1]
-- LogGreen("missionId:"..tostring(data.missionId).." taskType:"..tostring(data.taskType).." itemName:"..tostring(data.itemName))
table.insert(curData.rewards,data)
end
end
end
local typeIndex = {
[0] = 1,
[1] = 0,
[2] = 2,
}
table.sort(curData.rewards, function(a,b)
if typeIndex[a.state] == typeIndex[b.state] then
if a.type == b.type then
return a.missionId < b.missionId
else
return a.type < b.type
end
else
return typeIndex[a.state] < typeIndex[b.state]
end
end)
end
function this.GetMissionData(indexType,actType)
local curData = dataList[actType]
local actId = ActivityGiftManager.GetActivityIdByType(actType)
local actRewardConfigs = ConfigManager.GetAllConfigsDataByKey(ConfigName.ActivityRewardConfig,"ActivityId", actId)
for i = 1, #curData.rewards do
for j = 1, #actRewardConfigs do
if curData.rewards[i].missionId == actRewardConfigs[j].Id then
if indexType == 2 then
curData.rewards[i].progress = curData.rewards[i].progress
else
curData.rewards[i].progress = curData.value
end
if actType == ActivityTypeDef.DynamicAct_recharge or actType == ActivityTypeDef.AccumulativeRechargeExper then
curData.rewards[i].value = actRewardConfigs[j].Values[1][1]
else
curData.rewards[i].value = actRewardConfigs[j].Values[2][1]
end
if curData.rewards[i].state == 1 then
curData.rewards[i].state = 2
else
if curData.rewards[i].progress < curData.rewards[i].value then
curData.rewards[i].state = 0
else
curData.rewards[i].state = 1
end
end
curData.rewards[i].title = string.format("累计充值金额:%s元",curData.rewards[i].value)
curData.rewards[i].buyInfo = string.format("(%s/%s)",curData.rewards[i].progress,curData.rewards[i].value)
curData.rewards[i].shows = actRewardConfigs[j].Reward
curData.rewards[i].jump = actRewardConfigs[j].Jump[1]
end
end
end
local typeIndex = {
[0] = 1,
[1] = 0,
[2] = 2,
}
table.sort(dataList[actType].rewards,function (a,b)
if typeIndex[a.state] == typeIndex[b.state] then
return a.missionId < b.missionId
else
return typeIndex[a.state] < typeIndex[b.state]
end
end)
end
function this.GetExpertData(indexType,actType)
local curData = dataList[actType]
local actId = ActivityGiftManager.GetActivityIdByType(actType)
local actRewardConfigs = ConfigManager.GetAllConfigsDataByKey(ConfigName.ActivityRewardConfig,"ActivityId", actId)
for i = 1, #curData.rewards do
for j = 1, #actRewardConfigs do
if curData.rewards[i].missionId == actRewardConfigs[j].Id then
if indexType == 3 then -- 3 积天豪礼
curData.rewards[i].otherData.Values = actRewardConfigs[j].Values[1][2]
curData.rewards[i].otherData.info = ""
if curData.rewards[i].state == 1 then
curData.rewards[i].otherData.state = 2
elseif curData.rewards[i].progress == 1 then
curData.rewards[i].otherData.state = 0
else
curData.rewards[i].otherData.state = 1
end
elseif indexType == 4 then --升级限量豪礼
curData.rewards[i].otherData.Values = actRewardConfigs[j].Values[2][1]
curData.rewards[i].otherData.info = ""
if curData.rewards[i].state == 1 then
curData.rewards[i].otherData.state = 2
else
if curData.rewards[i].progress > 0 then
if PlayerManager.level >= curData.rewards[i].otherData.Values then
curData.rewards[i].otherData.state = 0
else
curData.rewards[i].otherData.state = 1
end
else
curData.rewards[i].otherData.state = 3
end
if PlayerManager.level >= curData.rewards[i].otherData.Values then
curData.rewards[i].otherData.info = string.format("%s/%s",curData.rewards[i].otherData.Values,curData.rewards[i].otherData.Values)
else
curData.rewards[i].otherData.info = string.format("%s/%s",PlayerManager.level,curData.rewards[i].otherData.Values)
end
end
if PlayerManager.level >= curData.rewards[i].otherData.Values then
curData.rewards[i].otherData.info = string.format("%s/%s",curData.rewards[i].otherData.Values,curData.rewards[i].otherData.Values)
else
curData.rewards[i].otherData.info = string.format("%s/%s",PlayerManager.level,curData.rewards[i].otherData.Values)
end
else --日累计充值 达人
if actType == ActivityTypeDef.AccumulativeRechargeExper or actType == ActivityTypeDef.DynamicAct_recharge then
curData.rewards[i].otherData.Values = actRewardConfigs[j].Values[1][1]
else
curData.rewards[i].otherData.Values = actRewardConfigs[j].Values[2][1]
end
if curData.rewards[i].state == 1 then
curData.rewards[i].otherData.state = 2
curData.rewards[i].otherData.info = string.format("%s/%s",curData.rewards[i].otherData.Values,curData.rewards[i].otherData.Values)
else
if indexType == 1 then
if curData.rewards[i].progress < curData.rewards[i].otherData.Values then
curData.rewards[i].otherData.state = 1
else
curData.rewards[i].otherData.state = 0
end
curData.rewards[i].otherData.info = string.format("%s/%s",curData.rewards[i].progress,curData.rewards[i].otherData.Values)
if curData.rewards[i].progress > curData.rewards[i].otherData.Values then
curData.rewards[i].otherData.info = string.format("%s/%s",curData.rewards[i].otherData.Values,curData.rewards[i].otherData.Values)
end
elseif indexType == 2 then
-- LogPink("curData.value:"..tostring(curData.value).." "..tostring(curData.rewards[i].otherData.Values))
if curData.value < curData.rewards[i].otherData.Values then
curData.rewards[i].otherData.state = 1
else
curData.rewards[i].otherData.state = 0
end
curData.rewards[i].otherData.info = string.format("%s/%s",curData.value,curData.rewards[i].otherData.Values)
if curData.value > curData.rewards[i].otherData.Values then
curData.rewards[i].otherData.info = string.format("%s/%s",curData.rewards[i].otherData.Values,curData.rewards[i].otherData.Values)
end
end
end
end
curData.rewards[i].otherData.Reward = actRewardConfigs[j].Reward
curData.rewards[i].otherData.ContentsShow = actRewardConfigs[j].ContentsShow
curData.rewards[i].otherData.Sort = actRewardConfigs[j].Sort
if actRewardConfigs[j].Jump then
curData.rewards[i].otherData.Jump = actRewardConfigs[j].Jump[1]
end
end
end
end
table.sort(dataList[actType].rewards,function (a,b)
if a.state == b.state then
return a.missionId < b.missionId
else
return a.state < b.state
end
end)
end
function this.GetData(actType)
if dataList[actType] then
dataList[actType] = nil
end
dataList[actType] = this.InitSingleTypeData(actType)
if TypeUpdateFunc[actType] and dataList[actType] then
TypeUpdateFunc[actType]()
end
return dataList[actType]
end
function this.InitSingleTypeData(actType)
local singleTypeData = nil
local data = ActivityGiftManager.GetActivityTypeInfo(actType)
if data then
singleTypeData = {}
Log("初始化数据activityId:"..tostring(data.activityId).." value:"..tostring(data.value).." startTime:"..tostring(data.startTime).." endTime:"..tostring(data.endTime).." mission:"..tostring(#data.mission))
singleTypeData.activityId = data.activityId --活动ID
singleTypeData.value = data.value --value值
singleTypeData.startTime = data.startTime --开始时间
singleTypeData.endTime = data.endTime --结束时间
singleTypeData.rewards = {} --奖励数据
if data.mission and #data.mission > 0 then
for i = 1, #data.mission do
local reward = {}
reward.missionId = data.mission[i].missionId or 0 --任务Id
reward.progress = data.mission[i].progress or 0 --进度
reward.state = data.mission[i].state or 0 --状态
reward.otherData = {} --其他数据(单条奖励信息或显示文字)
table.insert(singleTypeData.rewards,reward)
end
end
singleTypeData.FreelyData = {} --其他信息(整个活动的一些信息)
end
return singleTypeData
end
function this.CheckSingleRed(data)
local NeedCost = ConfigManager.GetConfigData(ConfigName.ComposeBook,data.otherData.needItems[1]).NeedCost
if data.progress > 0 then
if BagManager.GetTotalItemNum(NeedCost[1][1]) >= NeedCost[1][2] then
local list = BagManager.GetBagItemDataByItemType(ItemBaseType.Equip)
local EquipedEquipList = HeroManager.GetEquipedEquipList()
for i = 1, #data.otherData.needItems do
for j = 1, #list do
if data.otherData.needItems[i] == list[j].itemConfig.Id then
return true
end
end
end
for i = 1, #data.otherData.needItems do
for j = 1, #EquipedEquipList do
if data.otherData.needItems[i] == EquipedEquipList[j] then
return true
end
end
end
end
end
return false
end
return CommonActPageManager