1533 lines
53 KiB
Lua
1533 lines
53 KiB
Lua
--[[
|
||
* @ClassName OperatingManager
|
||
* @Description 运营活动管理
|
||
* @Date 2019/6/6 10:29
|
||
* @Author MagicianJoker, fengliudianshao@outlook.com
|
||
* @Copyright Copyright (c) 2019, MagicianJoker
|
||
--]]
|
||
|
||
OperatingManager = {}
|
||
local this = OperatingManager
|
||
|
||
local giftGoodsInfoList = {}
|
||
--- 新的数据列表,按照ID存取
|
||
local newGoodsList = {}
|
||
local hadBuyGoodsList = {}
|
||
local rechargeConfig = ConfigManager.GetConfig(ConfigName.RechargeCommodityConfig)
|
||
local luxuryConfig = ConfigManager.GetConfig(ConfigName.LuxuryFundConfig)
|
||
local MainLevelConfig = ConfigManager.GetConfig(ConfigName.MainLevelConfig)
|
||
local EncourageTaskConfig = ConfigManager.GetAllConfigsData(ConfigName.EncourageTaskConfig)
|
||
local EncouragePlanConfig = ConfigManager.GetConfig(ConfigName.EncouragePlanConfig)
|
||
local GlobalActivity = ConfigManager.GetConfig(ConfigName.GlobalActivity)
|
||
local giftGoodsInfo
|
||
local isFistShow = true
|
||
|
||
--初始化
|
||
function this.Initialize()
|
||
Game.GlobalEvent:AddEvent(GameEvent.Player.OnLevelChange, function()
|
||
CheckRedPointStatus(RedPointType.GrowthGift)
|
||
end)
|
||
|
||
Game.GlobalEvent:AddEvent(GameEvent.PatFace.PatFaceHaveGrowGift, this.NewHeroGift)
|
||
end
|
||
|
||
|
||
---------------------------局限性----------------------------
|
||
function this.SetBasicValues(giftGoodsList)
|
||
giftGoodsInfo = giftGoodsList
|
||
for _, v in pairs(GoodsTypeDef) do
|
||
giftGoodsInfoList[v] = {}
|
||
end
|
||
for _, giftGoodsInfo in ipairs(giftGoodsList) do
|
||
if rechargeConfig[giftGoodsInfo.goodsId] ~= nil then
|
||
local rechargeConfig = ConfigManager.GetConfigData(ConfigName.RechargeCommodityConfig, giftGoodsInfo.goodsId)
|
||
if giftGoodsInfoList[rechargeConfig.Type] then
|
||
table.insert(giftGoodsInfoList[rechargeConfig.Type], giftGoodsInfo)
|
||
end
|
||
end
|
||
end
|
||
Game.GlobalEvent:DispatchEvent(GameEvent.FindFairy.RefreshBuyOpenState)
|
||
end
|
||
|
||
--判断商品是否可购买(成长礼)
|
||
function this.IsGrowthGiftGoodsAvailable(goodsType)
|
||
for _, v in ipairs(giftGoodsInfo)do
|
||
local rechargeConfig = ConfigManager.GetConfigData(ConfigName.RechargeCommodityConfig, v.goodsId)
|
||
if rechargeConfig.Type == goodsType and v.dynamicBuyTimes == 1 and v.buyTimes ~= v.dynamicBuyTimes then
|
||
return v
|
||
end
|
||
end
|
||
return nil
|
||
end
|
||
|
||
-- 判断商品数据是否在可用时间范围内
|
||
local function _IsGiftGoodsAvailable(gift)
|
||
-- body
|
||
if not gift then return false end
|
||
if gift.startTime == 0 and gift.endTime == 0 then return true end
|
||
local curTime = GetTimeStamp()
|
||
local isAvailable = curTime > gift.startTime and curTime <= gift.endTime
|
||
return isAvailable
|
||
end
|
||
|
||
function this.RemoveGiftInfoList(goodsType)
|
||
giftGoodsInfoList[goodsType] = nil
|
||
end
|
||
|
||
--- 删除某一类型的某一条商品数据
|
||
function this.RemoveItemInfoByType(type, goodsId)
|
||
if not giftGoodsInfoList[type] then
|
||
return
|
||
end
|
||
|
||
for k,v in pairs(giftGoodsInfoList[type]) do
|
||
if v then
|
||
if v.goodsId == goodsId then
|
||
table.remove(giftGoodsInfoList[type], k)
|
||
end
|
||
end
|
||
end
|
||
Game.GlobalEvent:DispatchEvent(GameEvent.FindFairy.RefreshBuyOpenState)
|
||
end
|
||
|
||
function this.IsRechargeable(goodsType)
|
||
return giftGoodsInfoList[goodsType]
|
||
end
|
||
|
||
--- 获取激活后的商品数据
|
||
function this.GetGiftGoodsInfo(goodsType, Id)
|
||
-- if not giftGoodsInfoList[goodsType] then
|
||
-- return nil
|
||
-- end
|
||
|
||
-- for _, giftGoodsInfo in pairs(giftGoodsInfoList[goodsType]) do
|
||
-- if Id then
|
||
-- if giftGoodsInfo.goodsId == Id then
|
||
-- return giftGoodsInfo
|
||
-- end
|
||
-- else
|
||
-- -- 判断是否可用
|
||
-- if _IsGiftGoodsAvailable(giftGoodsInfo) then
|
||
-- return giftGoodsInfo
|
||
-- end
|
||
-- end
|
||
-- end
|
||
-- return nil
|
||
|
||
local data = this.GetGiftGoodsInfoList(goodsType)
|
||
if next(data) == nil then
|
||
return nil
|
||
end
|
||
|
||
for _, giftGoodsInfo in ipairs(data) do
|
||
if Id then
|
||
if giftGoodsInfo.goodsId == Id then
|
||
return giftGoodsInfo
|
||
end
|
||
else
|
||
-- 判断是否可用
|
||
if _IsGiftGoodsAvailable(giftGoodsInfo) then
|
||
return giftGoodsInfo
|
||
end
|
||
end
|
||
end
|
||
return nil
|
||
end
|
||
|
||
function this.GetGiftGoodsInfoList(type)
|
||
-- return giftGoodsInfoList[type] and giftGoodsInfoList[type] or {}
|
||
--> 加入LevelLinit 等级开启限制
|
||
if giftGoodsInfoList[type] then
|
||
local lv = PlayerManager.level
|
||
local ret = {}
|
||
for i = 1, #giftGoodsInfoList[type] do
|
||
local goodsId = giftGoodsInfoList[type][i].goodsId
|
||
local config = G_RechargeCommodityConfig[goodsId]
|
||
if config and lv >= config.LevelLinit[1] and lv <= config.LevelLinit[2] then
|
||
table.insert(ret, giftGoodsInfoList[type][i])
|
||
end
|
||
end
|
||
return ret
|
||
else
|
||
return {}
|
||
end
|
||
end
|
||
|
||
function this.RefreshGiftGoodsBuyTimes(goodsType, goodsId, buyTimes)
|
||
if not giftGoodsInfoList[goodsType] then
|
||
LogRed("打印:类型:"..goodsType.."商品ID:"..goodsId.."服务器未传过来数据")
|
||
return
|
||
end
|
||
for _, giftGoodsInfo in ipairs(giftGoodsInfoList[goodsType]) do
|
||
if giftGoodsInfo.goodsId == goodsId then
|
||
giftGoodsInfo.buyTimes = giftGoodsInfo.buyTimes --+ (buyTimes and buyTimes or 1)
|
||
end
|
||
end
|
||
end
|
||
|
||
function this.MyRefreshGiftGoodsBuyTimes(goodsType, goodsId, buyTimes)
|
||
if not giftGoodsInfoList[goodsType] then
|
||
return
|
||
end
|
||
for _, giftGoodsInfo in ipairs(giftGoodsInfoList[goodsType]) do
|
||
if giftGoodsInfo.goodsId == goodsId then
|
||
giftGoodsInfo.buyTimes = buyTimes
|
||
end
|
||
end
|
||
end
|
||
|
||
--- 获取商品的剩余购买次数
|
||
--- 0 不可买 1: 剩余1次,-1不限次数
|
||
function this.GetLeftBuyTime(type, goodsId)
|
||
if not giftGoodsInfoList[type] then
|
||
LogRed("打印:类型:"..type.."商品ID:"..goodsId.."服务器未传过来数据")
|
||
return
|
||
end
|
||
|
||
--- 此类商品的购买次数限制
|
||
local limitTime = rechargeConfig[goodsId].Limit
|
||
if limitTime == 0 then --- 不限购
|
||
return -1
|
||
else
|
||
local boughtTime = this.GetGoodsBuyTime(type, goodsId)
|
||
return limitTime - boughtTime
|
||
end
|
||
end
|
||
|
||
|
||
--- 获取商品已经购买次数
|
||
function this.GetGoodsBuyTime(type, goodsId)
|
||
if not giftGoodsInfoList[type] then
|
||
LogRed("打印:类型:"..type.."商品ID:"..goodsId.."服务器未传过来数据")
|
||
return
|
||
end
|
||
for k,v in pairs(giftGoodsInfoList[type]) do
|
||
if v.goodsId == goodsId then
|
||
return v.buyTimes
|
||
end
|
||
end
|
||
LogRed("打印:类型:"..type.."商品ID:"..goodsId.."服务器未传过来数据")
|
||
end
|
||
|
||
--------------------------------------------------------------
|
||
function this.SetHadBuyGoodsId(BuyGoodsList)
|
||
for i = 1, #BuyGoodsList do
|
||
table.insert(hadBuyGoodsList, BuyGoodsList[i])
|
||
end
|
||
end
|
||
|
||
function this.GetHadBuyGoodsTypeId(type)
|
||
local Id
|
||
for _, goodsId in ipairs(hadBuyGoodsList) do
|
||
if rechargeConfig[goodsId].Type == type then
|
||
Id = goodsId
|
||
end
|
||
end
|
||
return Id
|
||
end
|
||
|
||
--成长礼金红点
|
||
function this.GetGrowthRedPointState()
|
||
local redPoint = false
|
||
|
||
if not ActivityGiftManager.IsQualifiled(ActivityTypeDef.GrowthReward) then
|
||
return redPoint
|
||
end
|
||
|
||
--每日免费礼包
|
||
local freeData = ShopManager.GetShopDataByType(SHOP_TYPE.GROWTHFREE_GIFT)
|
||
if freeData then
|
||
local boughtNum = ShopManager.GetShopItemHadBuyTimes(SHOP_TYPE.GROWTHFREE_GIFT, freeData.storeItem[1].id)
|
||
local limitNum = ShopManager.GetShopItemLimitBuyCount(freeData.storeItem[1].id)
|
||
local isCanBuy = limitNum - boughtNum >= 1
|
||
if redPoint == false then
|
||
redPoint = isCanBuy
|
||
end
|
||
end
|
||
|
||
local giftGoodsInfo = OperatingManager.IsGrowthGiftGoodsAvailable(GoodsTypeDef.GrowthReward)
|
||
if giftGoodsInfo then return redPoint end
|
||
local openId = ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.GrowthReward)
|
||
if openId then
|
||
local actRewardConfig = ConfigManager.GetConfig(ConfigName.ActivityRewardConfig)
|
||
for _, configInfo in ConfigPairs(actRewardConfig) do
|
||
if configInfo.ActivityId == openId then
|
||
local activityInfo = ActivityGiftManager.GetActivityInfo(openId, configInfo.Id)
|
||
if activityInfo and activityInfo.state == 0 then
|
||
if configInfo.Values[1][2] == ConditionType.Level then
|
||
if PlayerManager.level >= configInfo.Values[1][2] then
|
||
redPoint = true
|
||
end
|
||
elseif configInfo.Values[1][2] == ConditionType.CarBon then
|
||
local curLevel = tonumber(MainLevelConfig[FightPointPassManager.curOpenFight].Name - 1)
|
||
local target = tonumber(MainLevelConfig[configInfo.Values[1][3]].Name)
|
||
if curLevel >= target then
|
||
redPoint = true
|
||
end
|
||
end
|
||
end
|
||
end
|
||
end
|
||
end
|
||
return redPoint
|
||
end
|
||
|
||
|
||
-- 商品时间数据
|
||
local _GoodsDurationData = {}
|
||
function this.SetGoodsDurationData(dataList)
|
||
if not dataList then
|
||
return
|
||
end
|
||
for _, data in ipairs(dataList) do
|
||
-- 这里协议字段为goodsType其实数据为ID
|
||
_GoodsDurationData[data.goodsType] = data.endTime
|
||
end
|
||
end
|
||
-- 根据类型判断相应的物品是否开启并返回相应的ID
|
||
function this.GetActiveGoodsIDByType(goodsType)
|
||
for goodsId, endTime in pairs(_GoodsDurationData) do
|
||
if rechargeConfig[goodsId].Type == goodsType and endTime > GetTimeStamp() then
|
||
return goodsId, endTime
|
||
end
|
||
end
|
||
end
|
||
function this.GetGoodsEndTime(goodsType)
|
||
local goodsId, endTime = this.GetActiveGoodsIDByType(goodsType)
|
||
return endTime
|
||
end
|
||
function this.RemoveEndTime(goodsId)
|
||
_GoodsDurationData[goodsId] = nil
|
||
end
|
||
function this.SetGoodsEndTime(goodsId, endTime)
|
||
_GoodsDurationData[goodsId] = endTime
|
||
end
|
||
|
||
-- 直购活动是否还在
|
||
function this.IsGoodsExit(type, id)
|
||
local isOpen = false
|
||
local data = this.GetGiftGoodsInfo(type, id)
|
||
if data then
|
||
-- 有数据,但是活动结束
|
||
local time = data.endTime - PlayerManager.serverTime
|
||
isOpen = time > 0
|
||
else
|
||
isOpen = false
|
||
end
|
||
|
||
return isOpen
|
||
end
|
||
|
||
|
||
-- 五星成长礼红点
|
||
function this.GetRedState()
|
||
local isRed = false
|
||
local redValue = PlayerPrefs.GetInt(PlayerManager.uid .. "BlaBlaBla")
|
||
local openState = this.IsGoodsExit(GoodsTypeDef.DirectPurchaseGift, 21)
|
||
if openState and redValue == 0 then
|
||
isRed = true
|
||
else
|
||
isRed = false
|
||
end
|
||
|
||
return isRed
|
||
end
|
||
|
||
|
||
---------------------------------------累计签到--------------------------------
|
||
local _SignInData
|
||
function this.SetSignInData(signIn)
|
||
_SignInData = signIn
|
||
CheckRedPointStatus(RedPointType.CumulativeSignIn)
|
||
end
|
||
|
||
function this.GetSignInData()
|
||
return _SignInData
|
||
end
|
||
|
||
--红点检测方法
|
||
function this.GetSignInRedPointStatus()
|
||
if not _SignInData then
|
||
return false
|
||
end
|
||
local receiveNum = PrivilegeManager.GetPrivilegeRemainValue(PRIVILEGE_TYPE.DAY_SIGN_IN)--本地标记可领取次数
|
||
local rechargeNum = PrivilegeManager.GetPrivilegeNumber(PRIVILEGE_TYPE.DAY_SIGN_IN)--充值标记 1未充值 2已充值
|
||
return _SignInData.state == 0 or receiveNum > 0--(_SignInData.state==1 and ((receiveNum==0 and rechargeNum==1) or (receiveNum==1 and rechargeNum==2)))
|
||
end
|
||
|
||
---------------------------------- 成长礼包------------------------------------------
|
||
--- 新增一个礼包
|
||
function this.NewHeroGift()
|
||
this.SetHeroRedState(1)
|
||
CheckRedPointStatus(RedPointType.HERO_STAR_GIFT)
|
||
end
|
||
|
||
|
||
--- 获取那个的显示数据
|
||
function this.GetStarGiftData()
|
||
local data = {}
|
||
for k, v in ConfigPairs(rechargeConfig) do
|
||
if v.ShowType == 8 then
|
||
local t = {}
|
||
t.data = v -- 数据结构
|
||
t.Id = v.Id -- 商品ID
|
||
data[#data + 1] = t
|
||
end
|
||
end
|
||
return data
|
||
end
|
||
|
||
function this.IsHeroGiftActive()
|
||
-- 关闭星级成长礼显示
|
||
if not giftGoodsInfoList[GoodsTypeDef.DirectPurchaseGift] then
|
||
return false
|
||
end
|
||
-- local activeNum = 0
|
||
-- if not giftGoodsInfoList[GoodsTypeDef.DirectPurchaseGift] then
|
||
-- return false
|
||
-- else
|
||
-- for i = 1, #giftGoodsInfoList[GoodsTypeDef.DirectPurchaseGift] do
|
||
-- local data =giftGoodsInfoList[GoodsTypeDef.DirectPurchaseGift][i]
|
||
-- if data then
|
||
-- local id = data.goodsId
|
||
-- if rechargeConfig[id].ShowType == 8 then --- 只有前端显示的商品类型
|
||
-- activeNum = activeNum + 1
|
||
-- end
|
||
-- end
|
||
-- end
|
||
-- end
|
||
|
||
-- return activeNum > 0
|
||
end
|
||
|
||
--- 获取礼包的显示数据
|
||
function this.GetGiftShowData()
|
||
local staticData = this.GetStarGiftData()
|
||
local newData = {}
|
||
for i = 1, #staticData do
|
||
local goodsId = staticData[i].Id
|
||
local data = {}
|
||
data.rewardData = staticData[i].data.RewardShow
|
||
data.price = staticData[i].data.Price
|
||
data.id = goodsId
|
||
data.name = staticData[i].data.Name
|
||
local serData = this.GetGiftGoodsInfo(GoodsTypeDef.DirectPurchaseGift, goodsId)
|
||
if serData and serData.endTime > 0 then --- 商品激活可购买
|
||
data.endTime = serData.endTime
|
||
data.startTime = serData.startTime
|
||
data.leftBuyTime = serData.dynamicBuyTimes
|
||
data.isActive = 1
|
||
else --- 未激活只是显示而已
|
||
data.endTime = 0
|
||
data.startTime = 0
|
||
data.leftBuyTime = 0
|
||
data.isActive = 0
|
||
end
|
||
newData[#newData + 1] = data
|
||
end
|
||
|
||
---排序
|
||
if #newData > 1 then
|
||
table.sort(newData, function(a, b)
|
||
if a.isActive == b.isActive then
|
||
return a.id > b.id
|
||
else
|
||
return a.isActive > b.isActive
|
||
end
|
||
end)
|
||
end
|
||
|
||
return newData
|
||
end
|
||
|
||
--- 礼包红点
|
||
function this.IsHeroStarGiftActive()
|
||
local clickedState = this.GetHeroRedState()
|
||
local isActive = this.IsHeroGiftActive()
|
||
local hasRed = clickedState == 1 and isActive
|
||
return hasRed
|
||
end
|
||
|
||
function this.SetHeroRedState(value)
|
||
PlayerPrefs.SetInt(PlayerManager.uid .. "hero_star_gift", value)
|
||
end
|
||
|
||
function this.GetHeroRedState()
|
||
return PlayerPrefs.GetInt(PlayerManager.uid .. "hero_star_gift")
|
||
end
|
||
----------------------------------------------------------------------------------------------
|
||
|
||
--- 获取镇魔计划面版的显示信息
|
||
--- 传进来的参数值是 33或者是34基金类型
|
||
function this.GetPanelShowReward(type, isAll, isOverlay)
|
||
local data = {}
|
||
for k, v in ConfigPairs(luxuryConfig) do
|
||
if not isAll then
|
||
if v.Type == type and v.ShowReward == 1 then
|
||
data[#data + 1] = v
|
||
end
|
||
else
|
||
if v.Type == type then
|
||
data[#data + 1] = v
|
||
end
|
||
end
|
||
end
|
||
if isOverlay then
|
||
local endData = {}
|
||
for i = 1, #data do
|
||
if endData[data[i].reward[1][1]] then
|
||
endData[data[i].reward[1][1]] = endData[data[i].reward[1][1]] + data[i].reward[1][2]
|
||
else
|
||
endData[data[i].reward[1][1]] = data[i].reward[1][2]
|
||
end
|
||
end
|
||
local endData2 = {}
|
||
for i, v in pairs(endData) do
|
||
table.insert(endData2,{i,v})
|
||
end
|
||
return endData2
|
||
else
|
||
return data
|
||
end
|
||
end
|
||
|
||
--修改为显示表里的ShowReward == 1的数据 不叠加
|
||
function this.GetPanelShowReward2(type)
|
||
local data = {}
|
||
for i, v in ConfigPairs(luxuryConfig) do
|
||
if v.Type == type and v.ShowReward == 1 then
|
||
data[#data + 1] = v
|
||
end
|
||
end
|
||
return data
|
||
end
|
||
|
||
--- 某一个基金活动是否开启
|
||
function this.IsBaseOpen(type, id)
|
||
local isOpen = false
|
||
local data = this.GetGiftGoodsInfo(type, id)
|
||
if data then
|
||
--- 常驻
|
||
if tonumber(data.endTime) == 0 then
|
||
isOpen = true
|
||
else
|
||
local time = data.endTime - PlayerManager.serverTime
|
||
local isBuy = this.IsBaseBuy(type)
|
||
|
||
isOpen = time > 0
|
||
|
||
-- 如果购买了结束也没有用
|
||
if isBuy then
|
||
isOpen = true
|
||
end
|
||
end
|
||
else
|
||
isOpen = false
|
||
-- 如果购买了结束也没有用
|
||
if this.IsBaseBuy(type) then
|
||
isOpen = true
|
||
end
|
||
end
|
||
|
||
return isOpen
|
||
end
|
||
|
||
--- 判断某一个基金是否购买
|
||
function this.IsBaseBuy(type)
|
||
local leftTime = this.GetGoodsEndTime(type)
|
||
local isBuy = false
|
||
if not leftTime then
|
||
isBuy = false
|
||
else
|
||
if leftTime <= 0 then
|
||
isBuy = false
|
||
else
|
||
isBuy = true
|
||
end
|
||
end
|
||
return isBuy
|
||
end
|
||
|
||
---- 界面打开时设置一下服务器数据
|
||
function this.SetSerData(goodsType)
|
||
local endTime = this.GetGoodsEndTime(goodsType)
|
||
if not endTime then return end
|
||
|
||
local startTime = endTime - 24 * 30 * 60 * 60
|
||
local passSecond = GetTimeStamp() - startTime
|
||
|
||
this.SetSignRewarDay(goodsType, passSecond)
|
||
end
|
||
|
||
local getDay = {}
|
||
local oneDaySeconds = 24 * 60 * 60
|
||
|
||
-- 累计领取天数
|
||
function this.GetRewardDay(goodType)
|
||
-- 未激活时没有天数
|
||
if not this.IsBaseBuy(goodType) then return 0 end
|
||
return getDay[goodType]
|
||
end
|
||
|
||
--- 设置累计天数
|
||
function this.SetSignRewarDay(goodType, second)
|
||
if not getDay[goodType] then getDay[goodType] = {} end
|
||
-- 小于24小时按一天
|
||
if second <= oneDaySeconds * 1 then
|
||
getDay[goodType] = 1
|
||
elseif second >= oneDaySeconds * 30 then
|
||
getDay[goodType] = 30
|
||
else
|
||
local hour = math.ceil(math.ceil(second / 60) / 60)
|
||
getDay[goodType] = math.ceil(hour / 24)
|
||
|
||
getDay[goodType] = getDay[goodType] >= 30 and 30 or getDay[goodType]
|
||
end
|
||
end
|
||
|
||
-- 显示数据
|
||
function this.GetShowTime(endTime)
|
||
local duration = 30 * 24 * 60 * 60
|
||
local endStr = os.date(GetLanguageStrById(11484), endTime)
|
||
local startStr = os.date(GetLanguageStrById(11484), endTime - duration + 1)
|
||
return startStr, endStr
|
||
end
|
||
|
||
--------------------月卡--------------------
|
||
local monthSaveAmt = 0--月卡累计总额
|
||
local smonthSaveAmt = 0--豪华月卡累计总额
|
||
local monthCardData = {}
|
||
--初始化月卡数据
|
||
function this.InitMonthCardData(data)
|
||
monthCardData = {}
|
||
|
||
for i = 1, #data do
|
||
local singleMonthCard = {}
|
||
singleMonthCard.id = data[i].id
|
||
singleMonthCard.endingTime = data[i].endingTime
|
||
singleMonthCard.state = data[i].state
|
||
if i == MONTH_CARD_TYPE.MONTHCARD then
|
||
monthSaveAmt = data[i].totleAmt
|
||
elseif i == MONTH_CARD_TYPE.LUXURYMONTHCARD then
|
||
smonthSaveAmt = data[i].totleAmt
|
||
end
|
||
table.insert(monthCardData,singleMonthCard)
|
||
end
|
||
CheckRedPointStatus(RedPointType.NobilityMonthCard)
|
||
CheckRedPointStatus(RedPointType.KingMonthCard)
|
||
end
|
||
--推送更新月卡数据
|
||
function this.UpdateMonthCardData(msg)
|
||
--当我数据没有 后端推过来的有数据 此时需要弹窗
|
||
local showStr = ""
|
||
for i = 1, #msg.monthinfos do
|
||
if monthCardData[i].endingTime <= 0 then
|
||
showStr = GetLanguageStrById(11485)
|
||
end
|
||
end
|
||
monthCardData = {}
|
||
for i = 1, #msg.monthinfos do
|
||
local singleMonthCard = {}
|
||
singleMonthCard.id = msg.monthinfos[i].id
|
||
singleMonthCard.endingTime = msg.monthinfos[i].endingTime
|
||
singleMonthCard.state = msg.monthinfos[i].state--0 未领取 1 已领取
|
||
if i == MONTH_CARD_TYPE.MONTHCARD then
|
||
monthSaveAmt = msg.monthinfos[i].totleAmt
|
||
elseif i == MONTH_CARD_TYPE.LUXURYMONTHCARD then
|
||
smonthSaveAmt = msg.monthinfos[i].totleAmt
|
||
end
|
||
table.insert(monthCardData,singleMonthCard)
|
||
end
|
||
CheckRedPointStatus(RedPointType.NobilityMonthCard)
|
||
CheckRedPointStatus(RedPointType.KingMonthCard)
|
||
if showStr ~= "" then
|
||
if ActTimeCtrlManager.SingleFuncState(JumpType.Welfare) then
|
||
MsgPanel.ShowTwo(showStr, function()
|
||
if UIManager.IsOpen(UIName.RewardItemPopup) then
|
||
UIManager.ClosePanel(UIName.RewardItemPopup)
|
||
end
|
||
JumpManager.GoJump(36004)
|
||
end,
|
||
function()
|
||
UIManager.ClosePanel()
|
||
end,GetLanguageStrById(10549),GetLanguageStrById(11486))
|
||
end
|
||
end
|
||
end
|
||
function this.RefreshMonthCardChargeMoney(msg)
|
||
monthSaveAmt = msg.monthSaveAmt
|
||
smonthSaveAmt = msg.smonthSaveAmt
|
||
end
|
||
-- 月卡累计总额
|
||
function this.GetmonthSaveAmt()
|
||
return monthSaveAmt
|
||
end
|
||
-- 豪华月卡累计总额
|
||
function this.GetsmonthSaveAmt()
|
||
return smonthSaveAmt
|
||
end
|
||
--前端设置月卡领取状态数据
|
||
function this.SetMonthCardGetStateData(type,state)
|
||
if monthCardData[type] then
|
||
monthCardData[type].state = state--0 未领取 1 已领取
|
||
end
|
||
CheckRedPointStatus(RedPointType.NobilityMonthCard)
|
||
CheckRedPointStatus(RedPointType.KingMonthCard)
|
||
end
|
||
|
||
--后端设置月卡领取状态数据 datas已领取的月卡id 五点刷新
|
||
function this.BackSetMonthCardGetStateData(datas)
|
||
for i = 1, #monthCardData do
|
||
if monthCardData[i] then--0 未领取 1 已领取
|
||
if datas[i] then
|
||
monthCardData[i].state = 1
|
||
else
|
||
monthCardData[i].state = 0
|
||
end
|
||
end
|
||
end
|
||
--事件
|
||
CheckRedPointStatus(RedPointType.NobilityMonthCard)
|
||
CheckRedPointStatus(RedPointType.KingMonthCard)
|
||
Game.GlobalEvent:DispatchEvent(GameEvent.MonthCard.OnMonthCardUpdate)
|
||
end
|
||
--获取月卡数据
|
||
function this.GetMonthCardData()
|
||
if monthCardData then
|
||
return monthCardData
|
||
else
|
||
return nil
|
||
end
|
||
end
|
||
function this.IsMonthCardActive()
|
||
local curAllMonthCardData = this.GetMonthCardData()
|
||
local curMonthCardOpenState = curAllMonthCardData[MONTH_CARD_TYPE.MONTHCARD] and curAllMonthCardData[MONTH_CARD_TYPE.MONTHCARD].endingTime ~= 0
|
||
local curLuxuryMonthCardOpenState = curAllMonthCardData[MONTH_CARD_TYPE.LUXURYMONTHCARD] and curAllMonthCardData[MONTH_CARD_TYPE.LUXURYMONTHCARD].endingTime ~= 0
|
||
local isMonthCardActive = curLuxuryMonthCardOpenState
|
||
return isMonthCardActive
|
||
end
|
||
--月卡到期
|
||
local addTimeNum = 30 * 24 * 60 * 60
|
||
function this.RefreshMonthCardEnd()
|
||
for i = 1, #monthCardData do
|
||
if monthCardData[i] and monthCardData[i].endingTime > 0 then--0 未领取 1 已领取
|
||
local dayLuxuryNum = this.EndTimejudgment(i) - GetTimeStamp()
|
||
if dayLuxuryNum < 0 then
|
||
monthCardData[i].endingTime = 0
|
||
monthCardData[i].state = 0--0 未领取 1 已领取
|
||
if i == MONTH_CARD_TYPE.MONTHCARD then
|
||
monthSaveAmt = 0--月卡累计总额
|
||
else
|
||
smonthSaveAmt = 0--豪华月卡累计总额
|
||
end
|
||
end
|
||
end
|
||
end
|
||
CheckRedPointStatus(RedPointType.NobilityMonthCard)
|
||
CheckRedPointStatus(RedPointType.KingMonthCard)
|
||
end
|
||
|
||
--月卡结束时间判断
|
||
function this.EndTimejudgment(type)
|
||
local curAllMonthCardData = this.GetMonthCardData()
|
||
if curAllMonthCardData==nil or curAllMonthCardData[type].endingTime==0 then
|
||
return -1
|
||
end
|
||
local allTotalTime=curAllMonthCardData[type].endingTime+(addTimeNum)
|
||
local Totaltime = os.date("%H.%M.%S",allTotalTime)
|
||
local TotalsplitTime=string.split(Totaltime,".")
|
||
|
||
local hour=tonumber(TotalsplitTime[1])*60*60
|
||
local Points=tonumber(TotalsplitTime[2])*60
|
||
local second=tonumber(TotalsplitTime[3])
|
||
local hsecond=hour+Points+second
|
||
local MonthCardEndTime=allTotalTime-hsecond
|
||
|
||
return MonthCardEndTime
|
||
end
|
||
|
||
|
||
|
||
|
||
|
||
--单种月卡红点检测
|
||
function this.RefreshMonthCardRedPoint(type)
|
||
if monthCardData[type] then
|
||
if monthCardData[type].endingTime ~= 0 and monthCardData[type].state == 0 then
|
||
return true
|
||
end
|
||
end
|
||
return false
|
||
end
|
||
function this.RefreshMONTHCARDMonthCardRedPoint()
|
||
return this.RefreshMonthCardRedPoint(MONTH_CARD_TYPE.MONTHCARD)
|
||
end
|
||
function this.RefreshLUXURYMONTHCARDMonthCardRedPoint()
|
||
return this.RefreshMonthCardRedPoint(MONTH_CARD_TYPE.LUXURYMONTHCARD)
|
||
end
|
||
--所有月卡红点检测
|
||
function this.AllRefreshMonthCardRedPoint()
|
||
for i = 1, #monthCardData do
|
||
if monthCardData[i].endingTime ~= 0 and monthCardData[i].state == 0 then
|
||
return true
|
||
end
|
||
end
|
||
return false
|
||
end
|
||
--所有月卡激活状态
|
||
function this.GetMonthCardIsOpen(type)
|
||
if monthCardData[type] then
|
||
if monthCardData[type].endingTime ~= 0 then
|
||
return true
|
||
end
|
||
end
|
||
return false
|
||
end
|
||
|
||
--礼包抢购是否开启
|
||
function this.IsGiftBuyActive()
|
||
local config = ConfigManager.GetConfigDataByKey(ConfigName.GlobalActivity, "Id", 10007)
|
||
if PlayerManager.level < config.OpenRules[2] then
|
||
return false
|
||
end
|
||
|
||
local activeNum = 0
|
||
local GiftBuyData = ConfigManager.GetAllConfigsDataByDoubleKey(ConfigName.RechargeCommodityConfig, "ShowType", 20, "Type", GoodsTypeDef.DirectPurchaseGift)
|
||
if GiftBuyData then
|
||
for i = 1, #GiftBuyData do
|
||
local curgoodData = OperatingManager.GetGiftGoodsInfo(GoodsTypeDef.DirectPurchaseGift, GiftBuyData[i].Id)
|
||
if curgoodData then
|
||
if curgoodData.endTime - GetTimeStamp() > 0 then
|
||
activeNum = activeNum + 1
|
||
end
|
||
end
|
||
end
|
||
end
|
||
return activeNum > 0
|
||
end
|
||
|
||
--是否有免费的每周礼包
|
||
function this.EveryWeekPreferenceRedPoint()
|
||
local shopDatas = OperatingManager.GetGiftGoodsInfoList(GoodsTypeDef.DirectPurchaseGift)
|
||
local rechargeCommodityConfig = ConfigManager.GetConfig(ConfigName.RechargeCommodityConfig)
|
||
local boughtNum = 0
|
||
local limitNum = 0
|
||
for i = 1, #shopDatas do
|
||
if rechargeCommodityConfig[shopDatas[i].goodsId].ShowType == DirectBuyType.WEEK_GIFT then
|
||
if rechargeCommodityConfig[shopDatas[i].goodsId].Price == 0 then
|
||
boughtNum = OperatingManager.GetGoodsBuyTime(GoodsTypeDef.DirectPurchaseGift, shopDatas[i].goodsId)
|
||
limitNum = rechargeCommodityConfig[ shopDatas[i].goodsId].Limit
|
||
if limitNum - boughtNum > 0 then
|
||
if ActivityGiftManager.IsQualifiled(ActivityTypeDef.WeekGift) then
|
||
return true
|
||
else
|
||
return false
|
||
end
|
||
else
|
||
return false
|
||
end
|
||
end
|
||
end
|
||
end
|
||
return false
|
||
end
|
||
|
||
--是否有免费的每月礼包
|
||
function this.EveryMonthPreferenceRedPoint()
|
||
local shopDatas = OperatingManager.GetGiftGoodsInfoList(GoodsTypeDef.DirectPurchaseGift)
|
||
local rechargeCommodityConfig = ConfigManager.GetConfig(ConfigName.RechargeCommodityConfig)
|
||
local boughtNum = 0
|
||
local limitNum = 0
|
||
for i = 1, #shopDatas do
|
||
if rechargeCommodityConfig[shopDatas[i].goodsId].ShowType == DirectBuyType.MONTH_GIFT then
|
||
if rechargeCommodityConfig[shopDatas[i].goodsId].Price == 0 then
|
||
boughtNum = OperatingManager.GetGoodsBuyTime(GoodsTypeDef.DirectPurchaseGift, shopDatas[i].goodsId)
|
||
limitNum = rechargeCommodityConfig[ shopDatas[i].goodsId].Limit
|
||
if limitNum - boughtNum > 0 then
|
||
if ActivityGiftManager.IsQualifiled(ActivityTypeDef.WeekGift) then
|
||
return true
|
||
else
|
||
return false
|
||
end
|
||
else
|
||
return false
|
||
end
|
||
end
|
||
end
|
||
end
|
||
return false
|
||
end
|
||
|
||
function this.GetTimeLimitRedPointStatus()
|
||
local activiytId = ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.FindFairy)
|
||
if not activiytId or activiytId <= 0 then
|
||
return false
|
||
end
|
||
|
||
local lotterySetting = ConfigManager.GetConfig(ConfigName.LotterySetting)
|
||
local freeTimesId = lotterySetting[RecruitType.TimeLimitSingle].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.GetQiankunBoxRedPointStatus()
|
||
local activiytId = ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.QianKunBox)
|
||
if not activiytId or activiytId <= 0 then
|
||
return false
|
||
end
|
||
|
||
local lotterySetting = ConfigManager.GetConfig(ConfigName.LotterySetting)
|
||
local freeTimesId =lotterySetting[RecruitType.QianKunBoxSingle].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
|
||
|
||
this.TimeLimitedTimes = 0
|
||
this.allData = {}
|
||
function this.InitDynamicActData()
|
||
local id = ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.DynamicAct)
|
||
if not id or id < 1 then
|
||
return nil
|
||
end
|
||
this.allData = {}
|
||
local allListData = ConfigManager.GetAllConfigsDataByKey(ConfigName.ThemeActivityTaskConfig, "ActivityId", id)
|
||
local allMissionData = TaskManager.GetTypeTaskList(TaskTypeDef.DynamicActTask)
|
||
for i = 1,#allListData do
|
||
for j = 1,#allMissionData do
|
||
if allListData[i].Id == allMissionData[j].missionId then
|
||
local data = {}
|
||
data.id = allMissionData[j].missionId
|
||
data.progress = allMissionData[j].progress
|
||
local strs = string.split(GetLanguageStrById(allListData[i].Show),"#")
|
||
data.title = strs[1]
|
||
data.content = strs[2]
|
||
data.value = allListData[i].TaskValue[2][1]
|
||
data.state = allMissionData[j].state
|
||
data.type = allListData[i].Type
|
||
data.reward = {}
|
||
for _, v in ipairs(allListData[i].Integral) do
|
||
data.reward[_] = {v[1], v[2]}
|
||
end
|
||
if allMissionData[j].state == 2 then
|
||
data.progress = allListData[i].TaskValue[2][1]
|
||
end
|
||
data.jump = allListData[i].Jump[1]
|
||
table.insert(this.allData,data)
|
||
end
|
||
end
|
||
end
|
||
return this.allData
|
||
end
|
||
function this.CheckDynamicActTaskRed()
|
||
this.InitDynamicActData()
|
||
if not this.allData then
|
||
return false
|
||
end
|
||
for i = 1,#this.allData do
|
||
if this.allData[i].state == 1 then
|
||
return true
|
||
end
|
||
end
|
||
return false
|
||
end
|
||
function this.InitLeiJiChongZhiData(_type)
|
||
local id = 0
|
||
local type = _type
|
||
if type then
|
||
id = ActivityGiftManager.IsActivityTypeOpen(type)
|
||
if (not id) or id == 0 then
|
||
return nil
|
||
end
|
||
else
|
||
id = ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.AccumulativeRechargeExper)
|
||
if (not id) or id == 0 then
|
||
id = ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.DynamicAct_recharge)
|
||
if (not id) or id == 0 then
|
||
return nil
|
||
else
|
||
type = ActivityTypeDef.DynamicAct_recharge
|
||
end
|
||
else
|
||
type = ActivityTypeDef.AccumulativeRechargeExper
|
||
local tempConfig = ConfigManager.GetConfigData(ConfigName.GlobalActivity,id)
|
||
if tempConfig and tempConfig.ShowArt == 1 then
|
||
return nil
|
||
end
|
||
end
|
||
end
|
||
|
||
this.LeiJiChongZhiData = {}
|
||
local allListData = ConfigManager.GetAllConfigsDataByKey(ConfigName.ActivityRewardConfig, "ActivityId", id)
|
||
local allMissionData = ActivityGiftManager.GetActivityTypeInfo(type)
|
||
for i = 1,#allListData do
|
||
for j = 1,#allMissionData.mission do
|
||
if allListData[i].Id == allMissionData.mission[j].missionId then
|
||
local data = {}
|
||
data.id = allMissionData.mission[j].missionId
|
||
data.progress = allMissionData.value/100
|
||
data.value = allListData[i].Values[1][2]
|
||
data.state = allMissionData.mission[j].state == 1 and allMissionData.mission[j].state or (data.progress>= data.value and 2 or 0) -- 0 前往 1已领奖 2领奖
|
||
data.reward = allListData[i].Reward
|
||
if allListData[i].Jump then
|
||
data.jump = allListData[i].Jump[1]
|
||
end
|
||
table.insert(this.LeiJiChongZhiData,data)
|
||
end
|
||
end
|
||
end
|
||
return this.LeiJiChongZhiData
|
||
end
|
||
function this.GetWanYuanLiBao(_type)
|
||
local id = 0
|
||
local type = _type
|
||
if type then
|
||
id = ActivityGiftManager.IsActivityTypeOpen(type)
|
||
if (not id) or id == 0 then
|
||
return nil
|
||
end
|
||
else
|
||
return nil
|
||
end
|
||
|
||
this.WanYuanLiBao = {}
|
||
local allListData = ConfigManager.GetAllConfigsDataByKey(ConfigName.ActivityRewardConfig, "ActivityId", id)
|
||
local allMissionData = ActivityGiftManager.GetActivityTypeInfo(type)
|
||
for i = 1,#allListData do
|
||
for j = 1,#allMissionData.mission do
|
||
if allListData[i].Id == allMissionData.mission[j].missionId then
|
||
local data = {}
|
||
data.id = allMissionData.mission[j].missionId
|
||
data.progress = allMissionData.value
|
||
data.value = allListData[i].Values[1][1]
|
||
data.state = allMissionData.mission[j].state == 1 and allMissionData.mission[j].state or (data.progress>= data.value and 2 or 0) -- 0 前往 1已领奖 2领奖
|
||
data.reward = allListData[i].Reward
|
||
data.money = allListData[i].ExtraParm
|
||
if allListData[i].Jump then
|
||
data.jump = allListData[i].Jump[1]
|
||
end
|
||
table.insert(this.WanYuanLiBao,data)
|
||
end
|
||
end
|
||
end
|
||
return this.WanYuanLiBao
|
||
end
|
||
|
||
function this.CheckLeiJiChongZhiRedData()
|
||
local mission = this.InitLeiJiChongZhiData(ActivityTypeDef.DynamicAct_recharge)
|
||
if not mission or #mission < 1 then
|
||
return false
|
||
end
|
||
for j = 1,#mission do
|
||
if mission[j].state == 2 then
|
||
return true
|
||
end
|
||
end
|
||
return false
|
||
end
|
||
function this.CheckWeekGiftPageRedPoint()
|
||
local boughtNum = 0
|
||
local limitNum = 0
|
||
local shopData = OperatingManager.GetGiftGoodsInfoList(GoodsTypeDef.DirectPurchaseGift)
|
||
for i = 1, #shopData do
|
||
if rechargeConfig[shopData[i].goodsId].ShowType == DirectBuyType.WEEK_GIFT then
|
||
boughtNum = OperatingManager.GetGoodsBuyTime(GoodsTypeDef.DirectPurchaseGift, shopData[i].goodsId)
|
||
limitNum = rechargeConfig[shopData[i].goodsId].Limit
|
||
local isCanBuy = limitNum - boughtNum > 0
|
||
if isCanBuy and rechargeConfig[shopData[i].goodsId].Price <= 0 then
|
||
return true
|
||
end
|
||
end
|
||
end
|
||
return false
|
||
end
|
||
function this.CheckMonthGiftPageRedPoint()
|
||
local boughtNum = 0
|
||
local limitNum = 0
|
||
local shopData = OperatingManager.GetGiftGoodsInfoList(GoodsTypeDef.DirectPurchaseGift)
|
||
for i = 1, #shopData do
|
||
if rechargeConfig[shopData[i].goodsId].ShowType == DirectBuyType.MONTH_GIFT then
|
||
boughtNum = OperatingManager.GetGoodsBuyTime(GoodsTypeDef.DirectPurchaseGift, shopData[i].goodsId)
|
||
limitNum = rechargeConfig[shopData[i].goodsId].Limit
|
||
local isCanBuy = limitNum - boughtNum > 0
|
||
if isCanBuy and rechargeConfig[shopData[i].goodsId].Price <= 0 then
|
||
return true
|
||
end
|
||
end
|
||
end
|
||
return false
|
||
end
|
||
--超值基金红点检测
|
||
local firstOpen = true
|
||
function this.CheckSpecialFundsRedPoint()
|
||
local isAllBuy = OperatingManager.IsBaseBuy(GoodsTypeDef.MONTHCARD_128) and OperatingManager.IsBaseBuy(GoodsTypeDef.MONTHCARD_328)
|
||
if isAllBuy then
|
||
return false
|
||
else
|
||
if firstOpen then
|
||
return true
|
||
end
|
||
end
|
||
return false
|
||
end
|
||
|
||
function this.SetSpecialFundsFistOpen()
|
||
firstOpen = false
|
||
end
|
||
|
||
--为限时神装写的(只有一个)
|
||
function this.GetTimeLimitSkinInfoList()
|
||
local giftList = {}
|
||
local infoList = OperatingManager.GetGiftGoodsInfoList(GoodsTypeDef.DirectPurchaseGift)--拿取所有类型5礼包信息(包含需要的礼包)
|
||
local infoList2 = ConfigManager.GetConfigDataByKey(ConfigName.RechargeCommodityConfig,"ShowType",29)
|
||
for index, value in pairs(infoList) do
|
||
if infoList2.Id == value.goodsId and value.dynamicBuyTimes > 0 then
|
||
return value
|
||
end
|
||
end
|
||
return nil
|
||
end
|
||
--为限时折扣写的(含有多个)
|
||
function this.GetInfoList()
|
||
local giftList = {}
|
||
local infoList = OperatingManager.GetGiftGoodsInfoList(GoodsTypeDef.DirectPurchaseGift)--拿取所有类型5礼包信息(包含需要的礼包)
|
||
local infoList2 = ConfigManager.GetAllConfigsDataByKey(ConfigName.RechargeCommodityConfig,"ShowType",21)
|
||
for index, value in pairs(infoList) do
|
||
for i = 1, #infoList2 do
|
||
if infoList2[i].Id == value.goodsId and value.dynamicBuyTimes > 0 then
|
||
table.insert(giftList,value)
|
||
end
|
||
end
|
||
end
|
||
local infoList3 = ConfigManager.GetAllConfigsDataByKey(ConfigName.RechargeCommodityConfig,"ShowType",8)
|
||
for index, value in pairs(infoList) do
|
||
for i = 1, #infoList3 do
|
||
if infoList3[i].Id == value.goodsId and value.dynamicBuyTimes > 0 then
|
||
table.insert(giftList,value)
|
||
end
|
||
end
|
||
end
|
||
local infoList4 = ConfigManager.GetAllConfigsDataByKey(ConfigName.RechargeCommodityConfig,"ShowType",25)
|
||
for index, value in pairs(infoList) do
|
||
for i = 1, #infoList4 do
|
||
if infoList4[i].Id == value.goodsId and value.dynamicBuyTimes > 0 then
|
||
table.insert(giftList,value)
|
||
end
|
||
end
|
||
end
|
||
local infoList5 = ConfigManager.GetAllConfigsDataByKey(ConfigName.RechargeCommodityConfig,"ShowType",26)
|
||
for index, value in pairs(infoList) do
|
||
for i = 1, #infoList5 do
|
||
if infoList5[i].Id == value.goodsId and value.dynamicBuyTimes > 0 then
|
||
table.insert(giftList,value)
|
||
end
|
||
end
|
||
end
|
||
return giftList
|
||
end
|
||
|
||
--刷新拍脸红点
|
||
function this.RefreshPatFaceRedpoint()
|
||
if isFistShow then
|
||
isFistShow = false
|
||
return not isFistShow
|
||
end
|
||
return isFistShow
|
||
end
|
||
|
||
--刷新开服双倍红点
|
||
function this.RefreshOpenServiceRedpoint()
|
||
if not ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.OpenService) then
|
||
return false
|
||
end
|
||
local canBuyRechargeId = ConfigManager.GetConfigDataByKey(ConfigName.GlobalActivity, "Type", 10020).CanBuyRechargeId
|
||
for i = 1, #canBuyRechargeId do
|
||
local config = ConfigManager.GetConfigData(ConfigName.RechargeCommodityConfig, canBuyRechargeId[i])
|
||
local boughtNum = OperatingManager.GetGoodsBuyTime(config.Type, config.Id) or 0
|
||
if config.Price == 0 then
|
||
local isCanBuy = config.Limit - boughtNum > 0
|
||
return isCanBuy
|
||
end
|
||
end
|
||
return false
|
||
end
|
||
|
||
--获取战令是否开启
|
||
function this.GetWarOrderIsOpen()
|
||
local state = false
|
||
for key, value in pairs(WarOrderType) do
|
||
if not not ActivityGiftManager.IsActivityTypeOpen(value) then
|
||
state = true
|
||
end
|
||
end
|
||
return state
|
||
end
|
||
|
||
--战令列表
|
||
function this.GetAllWarOrderData(func)
|
||
--[[
|
||
encouragePlanClassifies = {
|
||
[1] = {
|
||
globalSystemId = GlobalSystemConfig表ID,
|
||
encouragePlanInfos = {
|
||
[1] = {
|
||
encouragePlanId = EncouragePlanConfig表ID,
|
||
encouragePlanTaskInfos = {
|
||
[1] = {
|
||
taskConfigId = 任务ID,
|
||
freeObtained = 免费奖励领取状态 bool,
|
||
privilegeObtained = 特权奖励领取状态 bool,
|
||
isCompeted = 任务完成状态 bool,
|
||
}
|
||
unlockPrivilege = 是否解锁战令特权 bool
|
||
progress = 进度
|
||
cycleEndingTime = 结束时间
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
--]]
|
||
this.AllWarOrderData = {}
|
||
NetManager.GetAllEncouragePlanInfoRequest(function (msg)
|
||
this.AllWarOrderData = msg.encouragePlanClassifies
|
||
if func then
|
||
func()
|
||
end
|
||
end)
|
||
end
|
||
|
||
--根据传进来的GlobalSystemId获取战令
|
||
function this.GetWarOrderForGlobalSystemId(globalSystemId)
|
||
if this.AllWarOrderData then
|
||
for i = 1, #this.AllWarOrderData do
|
||
if this.AllWarOrderData[i].globalSystemId == globalSystemId then
|
||
for j = 1, #this.AllWarOrderData[i].encouragePlanInfos do
|
||
if #this.AllWarOrderData[i].encouragePlanInfos[j].encouragePlanTaskInfos > 0 then
|
||
return this.AllWarOrderData[i]
|
||
end
|
||
end
|
||
end
|
||
end
|
||
end
|
||
return nil
|
||
end
|
||
|
||
--根据传进来的GlobalSystemId和EncouragePlanConfigId获取具体战令
|
||
function this.GetWarOrderForGlobalSystemIdAndId(globalSystemId, id)
|
||
local warOrder = this.GetWarOrderForGlobalSystemId(globalSystemId)
|
||
if warOrder then
|
||
for i = 1, #warOrder.encouragePlanInfos do
|
||
if warOrder.encouragePlanInfos[i].encouragePlanId == id then
|
||
return warOrder.encouragePlanInfos[i]
|
||
end
|
||
end
|
||
end
|
||
return nil
|
||
end
|
||
|
||
--获取战令任务状态
|
||
function this.GetWarOrderTaskState(globalSystemId, Id, taskId)
|
||
local warOrder = this.GetWarOrderForGlobalSystemIdAndId(globalSystemId, Id)
|
||
if warOrder then
|
||
for i = 1, #warOrder.encouragePlanTaskInfos do
|
||
if warOrder.encouragePlanTaskInfos[i].taskConfigId == taskId then
|
||
return warOrder.encouragePlanTaskInfos[i]
|
||
end
|
||
end
|
||
end
|
||
return nil
|
||
end
|
||
|
||
--解锁特权前端手动改变状态
|
||
function this.ManualChangeWarOrderState(EncouragePlanID)
|
||
for i = 1, #this.AllWarOrderData do
|
||
for j = 1, #this.AllWarOrderData[i].encouragePlanInfos do
|
||
if this.AllWarOrderData[i].encouragePlanInfos[j].encouragePlanId == EncouragePlanID then
|
||
this.AllWarOrderData[i].encouragePlanInfos[j].unlockPrivilege = true
|
||
Game.GlobalEvent:DispatchEvent(GameEvent.WarOrder.UnLock)
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
--领取完前端手动改变状态
|
||
function this.ManualChangeTaskState(taskCfgId)
|
||
local EncouragePlan
|
||
for key, value in ipairs(EncourageTaskConfig) do
|
||
if value.Id == taskCfgId then
|
||
EncouragePlan = value.EncouragePlan
|
||
end
|
||
end
|
||
local GlobalSystemId = EncouragePlanConfig[EncouragePlan].GlobalSystemId
|
||
local infos = this.GetWarOrderTaskState(GlobalSystemId, EncouragePlan, taskCfgId)
|
||
local all = this.GetWarOrderForGlobalSystemIdAndId(GlobalSystemId, EncouragePlan)
|
||
if infos.isCompeted then
|
||
if all.unlockPrivilege then
|
||
infos.freeObtained = true
|
||
infos.privilegeObtained = true
|
||
else
|
||
infos.freeObtained = true
|
||
end
|
||
end
|
||
end
|
||
|
||
--领取战令奖励 --任务ID 0:领取免费 1:领取特权 2:领取全部
|
||
function this.GetWarOrderReward(taskCfgId, obtainPos, func)
|
||
NetManager.ObtainEncouragePlanRewardRequest(taskCfgId, obtainPos, function (msg)
|
||
UIManager.OpenPanel(UIName.RewardItemPopup, msg.drop, 1, function()
|
||
this.ManualChangeTaskState(taskCfgId)
|
||
CheckRedPointStatus(RedPointType.WarOrder_Tower)
|
||
CheckRedPointStatus(RedPointType.WarOrder_MagicTower)
|
||
CheckRedPointStatus(RedPointType.WarOrder_Heresy)
|
||
CheckRedPointStatus(RedPointType.WarOrder_DenseFog)
|
||
CheckRedPointStatus(RedPointType.WarOrder_Abyss)
|
||
CheckRedPointStatus(RedPointType.WarOrder_Base)
|
||
if func then
|
||
func()
|
||
end
|
||
end)
|
||
end)
|
||
end
|
||
|
||
--推送战令改变任务状态
|
||
function this.ChangeTaskState(msg)
|
||
-- LogError("推送战令改变任务状态")
|
||
local task = this.GetWarOrderForGlobalSystemIdAndId(msg.globalSystemId, msg.planId)
|
||
for i = 1, #task.encouragePlanTaskInfos do
|
||
if task.encouragePlanTaskInfos[i].taskConfigId == msg.taskInfo.taskConfigId then
|
||
task.encouragePlanTaskInfos[i].freeObtained = msg.taskInfo.freeObtained
|
||
task.encouragePlanTaskInfos[i].privilegeObtained = msg.taskInfo.privilegeObtained
|
||
task.encouragePlanTaskInfos[i].isCompeted = msg.taskInfo.isCompeted
|
||
-- task.encouragePlanTaskInfos[i].cycleEndingTime = msg.taskInfo.cycleEndingTime
|
||
end
|
||
end
|
||
CheckRedPointStatus(RedPointType.WarOrder_Tower)
|
||
CheckRedPointStatus(RedPointType.WarOrder_MagicTower)
|
||
CheckRedPointStatus(RedPointType.WarOrder_Heresy)
|
||
CheckRedPointStatus(RedPointType.WarOrder_DenseFog)
|
||
CheckRedPointStatus(RedPointType.WarOrder_Abyss)
|
||
CheckRedPointStatus(RedPointType.WarOrder_Base)
|
||
Game.GlobalEvent:DispatchEvent(GameEvent.Activity.OnActivityOpenOrClose)
|
||
end
|
||
|
||
--推送战令解锁
|
||
function this.ChangeWarOrderState(msg)
|
||
-- LogError("推送战令解锁")
|
||
if not this.AllWarOrderData then
|
||
this.AllWarOrderData = {}
|
||
end
|
||
local data = this.GetWarOrderForGlobalSystemId(msg.globalSystemId)
|
||
if not data then
|
||
table.insert(this.AllWarOrderData, {
|
||
globalSystemId = msg.globalSystemId,
|
||
encouragePlanInfos = {
|
||
[1] = {
|
||
encouragePlanId = msg.planId,
|
||
encouragePlanTaskInfos = msg.encouragePlanTaskInfos,
|
||
unlockPrivilege = msg.unlockPrivilege,
|
||
progress = msg.progress,
|
||
cycleEndingTime = msg.cycleEndingTime
|
||
}
|
||
}
|
||
})
|
||
else
|
||
local state = true
|
||
for i = 1, #data.encouragePlanInfos do
|
||
if data.encouragePlanInfos[i].encouragePlanId == msg.planId then
|
||
state = false
|
||
data.encouragePlanInfos[i].encouragePlanTaskInfos = msg.encouragePlanTaskInfos
|
||
data.encouragePlanInfos[i].unlockPrivilege = msg.unlockPrivilege
|
||
data.encouragePlanInfos[i].progress = msg.progress
|
||
data.encouragePlanInfos[i].cycleEndingTime = msg.cycleEndingTime
|
||
end
|
||
end
|
||
if state then
|
||
table.insert(data.encouragePlanInfos, {
|
||
encouragePlanId = msg.planId,
|
||
encouragePlanTaskInfos = msg.encouragePlanTaskInfos,
|
||
unlockPrivilege = msg.unlockPrivilege,
|
||
progress = msg.progress,
|
||
cycleEndingTime = msg.cycleEndingTime
|
||
})
|
||
end
|
||
end
|
||
CheckRedPointStatus(RedPointType.WarOrder_Tower)
|
||
CheckRedPointStatus(RedPointType.WarOrder_MagicTower)
|
||
CheckRedPointStatus(RedPointType.WarOrder_Heresy)
|
||
CheckRedPointStatus(RedPointType.WarOrder_DenseFog)
|
||
CheckRedPointStatus(RedPointType.WarOrder_Abyss)
|
||
CheckRedPointStatus(RedPointType.WarOrder_Base)
|
||
-- LogError(#data.encouragePlanInfos)
|
||
Game.GlobalEvent:DispatchEvent(GameEvent.Activity.OnActivityOpenOrClose)
|
||
end
|
||
|
||
--推送战令进度
|
||
function this.PushWarOrderPropress(msg)
|
||
-- LogError("推送战令进度")
|
||
if not this.AllWarOrderData then
|
||
this.AllWarOrderData = {}
|
||
end
|
||
local data = this.GetWarOrderForGlobalSystemId(msg.globalSystemId)
|
||
if data then
|
||
for i = 1, #data.encouragePlanInfos do
|
||
data.encouragePlanInfos[i].progress = msg.progress
|
||
end
|
||
end
|
||
CheckRedPointStatus(RedPointType.WarOrder_Tower)
|
||
CheckRedPointStatus(RedPointType.WarOrder_MagicTower)
|
||
CheckRedPointStatus(RedPointType.WarOrder_Heresy)
|
||
CheckRedPointStatus(RedPointType.WarOrder_DenseFog)
|
||
CheckRedPointStatus(RedPointType.WarOrder_Abyss)
|
||
CheckRedPointStatus(RedPointType.WarOrder_Base)
|
||
end
|
||
|
||
--推送战令重置
|
||
function this.PushWarOrderResetting(msg)
|
||
-- LogError("推送战令重置")
|
||
local warOrder = this.GetWarOrderForGlobalSystemId(msg.globalSystemId)
|
||
local data = this.GetWarOrderForGlobalSystemIdAndId(msg.globalSystemId, msg.planId)
|
||
if not warOrder then
|
||
if not this.AllWarOrderData then
|
||
this.AllWarOrderData = {}
|
||
end
|
||
table.insert(this.AllWarOrderData, {
|
||
globalSystemId = msg.globalSystemId,
|
||
encouragePlanInfos = {
|
||
[1] = {
|
||
encouragePlanId = msg.planId,
|
||
encouragePlanTaskInfos = msg.encouragePlanTaskInfos,
|
||
unlockPrivilege = msg.unlockPrivilege,
|
||
progress = msg.progress,
|
||
cycleEndingTime = msg.cycleEndingTime,
|
||
}
|
||
}
|
||
}
|
||
)
|
||
else
|
||
if not data then
|
||
table.insert(this.AllWarOrderData.encouragePlanInfos, {
|
||
encouragePlanId = msg.planId,
|
||
encouragePlanTaskInfos = msg.encouragePlanTaskInfos,
|
||
unlockPrivilege = msg.unlockPrivilege,
|
||
progress = msg.progress,
|
||
cycleEndingTime = msg.cycleEndingTime,
|
||
})
|
||
else
|
||
for i = 1, #msg.encouragePlanTaskInfos do
|
||
data.encouragePlanTaskInfos[i].taskConfigId = msg.encouragePlanTaskInfos[i].taskConfigId
|
||
data.encouragePlanTaskInfos[i].freeObtained = msg.encouragePlanTaskInfos[i].freeObtained
|
||
data.encouragePlanTaskInfos[i].privilegeObtained = msg.encouragePlanTaskInfos[i].privilegeObtained
|
||
data.encouragePlanTaskInfos[i].isCompeted = msg.encouragePlanTaskInfos[i].isCompeted
|
||
end
|
||
data.progress = msg.progress
|
||
data.unlockPrivilege = msg.unlockPrivilege
|
||
data.cycleEndingTime = msg.cycleEndingTime
|
||
end
|
||
end
|
||
|
||
if msg.drop then
|
||
UIManager.OpenPanel(UIName.RewardItemPopup, msg.drop, 1, function()
|
||
end)
|
||
end
|
||
CardActivityManager.StopTimeDown()
|
||
CheckRedPointStatus(RedPointType.WarOrder_Tower)
|
||
CheckRedPointStatus(RedPointType.WarOrder_MagicTower)
|
||
CheckRedPointStatus(RedPointType.WarOrder_Heresy)
|
||
CheckRedPointStatus(RedPointType.WarOrder_DenseFog)
|
||
CheckRedPointStatus(RedPointType.WarOrder_Abyss)
|
||
CheckRedPointStatus(RedPointType.WarOrder_Base)
|
||
Game.GlobalEvent:DispatchEvent(GameEvent.Activity.OnActivityOpenOrClose)
|
||
end
|
||
|
||
--战令红点
|
||
function this.WarOrderRedPoint(type)
|
||
local allWarOrder = this.GetWarOrderForGlobalSystemId(WarOrderType[type])
|
||
if allWarOrder then
|
||
for i = 1, #allWarOrder.encouragePlanInfos do
|
||
local data = allWarOrder.encouragePlanInfos[i]
|
||
for j = 1, #data.encouragePlanTaskInfos do
|
||
if data.encouragePlanTaskInfos[j].isCompeted then
|
||
if not data.encouragePlanTaskInfos[j].freeObtained then
|
||
return true
|
||
elseif not data.encouragePlanTaskInfos[j].privilegeObtained and data.unlockPrivilege then
|
||
return true
|
||
end
|
||
end
|
||
end
|
||
end
|
||
end
|
||
return false
|
||
end
|
||
|
||
function this.WarOrderRedPointForTower()
|
||
return this.WarOrderRedPoint(15)
|
||
end
|
||
function this.WarOrderRedPointForMagicTower()
|
||
return this.WarOrderRedPoint(16)
|
||
end
|
||
function this.WarOrderRedPointForHeresy()
|
||
return this.WarOrderRedPoint(17)
|
||
end
|
||
function this.WarOrderRedPointForDenseFog()
|
||
return this.WarOrderRedPoint(18)
|
||
end
|
||
function this.WarOrderRedPointForAbyss()
|
||
return this.WarOrderRedPoint(19)
|
||
end
|
||
function this.WarOrderRedPointForBase()
|
||
return this.WarOrderRedPoint(20)
|
||
end
|
||
|
||
function this.WarOrderRedPointForId(type, id)
|
||
local allWarOrder = this.GetWarOrderForGlobalSystemId(WarOrderType[type])
|
||
if allWarOrder then
|
||
for i = 1, #allWarOrder.encouragePlanInfos do
|
||
local data = allWarOrder.encouragePlanInfos[i]
|
||
if allWarOrder.encouragePlanInfos[i].encouragePlanId == id then
|
||
for j = 1, #data.encouragePlanTaskInfos do
|
||
if data.encouragePlanTaskInfos[j].isCompeted then
|
||
if not data.encouragePlanTaskInfos[j].freeObtained then
|
||
return true
|
||
elseif not data.encouragePlanTaskInfos[j].privilegeObtained and data.unlockPrivilege then
|
||
return true
|
||
end
|
||
end
|
||
end
|
||
end
|
||
end
|
||
end
|
||
return false
|
||
end
|
||
|
||
--获取新手特惠是否买完
|
||
function this.GetNewcomerDiscountsIsSellout()
|
||
local allData = {}
|
||
local curActId = ActivityGiftManager.IsActivityTypeOpen(6004)
|
||
if curActId then
|
||
for i = 1, #GlobalActivity[curActId].CanBuyRechargeId do
|
||
local data = ConfigManager.GetConfigDataByKey(ConfigName.RechargeCommodityConfig, "Id", GlobalActivity[curActId].CanBuyRechargeId[i])
|
||
table.insert(allData, data)
|
||
end
|
||
for i = 1, #allData do
|
||
local boughtNum = OperatingManager.GetGoodsBuyTime(GoodsTypeDef.DirectPurchaseGift, allData[i].Id) or 0
|
||
local canBuy = allData[i].Limit - boughtNum > 0
|
||
if canBuy then
|
||
return true
|
||
end
|
||
end
|
||
end
|
||
|
||
return false
|
||
end
|
||
|
||
return this |