| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240 |
- local RankActivitiesMgr = class("RankActivitiesMgr",require("DataBase"))
- local TowerRankActivityData = require("RankActivities/TowerRankActivityData")
- local ArenaRankActivityData = require("RankActivities/ArenaRankActivityData")
- local MapProgressActivityData = require("RankActivities/MapProgressActivityData")
- local PetRankActivityData = require("RankActivities/PetRankActivityData")
- local SkillRankActivityData = require("RankActivities/SkillRankActivityData")
- local ProtocalDataNormal = require("ProtocalDataNormal")
- function RankActivitiesMgr:ctor()
- self.curRnakDatas = {}
- self.forceCheck = false
- self.curCount = 0
- self.countLimit = 3
- self.rankDatas = {}
- self.rankRewardType = {}
- end
- function RankActivitiesMgr:Clear()
- self.curRnakDatas = {}
- self.forceCheck = false
- for _,v in pairs(self.rankDatas) do
- v:Clear()
- end
- self.rankDatas = {}
- end
- function RankActivitiesMgr:RegisterNetEvents()
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_ONLINE_RUSH_INFO_ACK,self.OnOnlineRushInfoAck, self)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_RUSH_ACTIVITY_REWARD_ACK,self.OnActivityRewardAck, self)
- for _,v in pairs(self.rankDatas) do
- v:RegisterNetEvents()
- end
- end
- function RankActivitiesMgr:QueryRankActivitiesData(init)
- self.isInitQuery = init
- ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_ONLINE_RUSH_INFO_REQ, {})
- end
- function RankActivitiesMgr:OnOnlineRushInfoAck(data)
- --data = {}
- --data.rush_data = {}
- --local data1 = {}
- --data1.rush_type = 3
- --data1.in_rush = true
- --data1.next_rush = 0
- --data1.stage = 1
- --data1.stage_end = int64.new("1605247823000")
- --data1.rush_count = 1
- --data.rush_data[1] = data1
- -- LogHRWarning(Inspect(data))
- for i = 1, #data.rush_data do
- local data1 = ProtocalDataNormal.RushActivityData(data.rush_data[i])
- self.curRnakDatas[data1.rushType] = data1
- if data1.inRush then
- self:InitRankData(data1)
- end
- end
- if self.forceCheck then
- self:CheckRancActivityOpenTime()
- end
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RANK_ACTIVITY_REWARD_SUCCESS_NTF)
- if self.isInitQuery then
- self.isInitQuery = false
- ManagerContainer.DataMgr.RankActivitiesMgr:QueryCurRankActivityData(Enum.RankActivitiesType.ClimbingTower)
- ManagerContainer.DataMgr.RankActivitiesMgr:QueryCurRankActivityData(Enum.RankActivitiesType.Dojo)
- ManagerContainer.DataMgr.RankActivitiesMgr:QueryCurRankActivityData(Enum.RankActivitiesType.MapProgress)
- ManagerContainer.DataMgr.RankActivitiesMgr:QueryCurRankActivityData(Enum.RankActivitiesType.Pet)
- ManagerContainer.DataMgr.RankActivitiesMgr:QueryCurRankActivityData(Enum.RankActivitiesType.Skill)
- end
- end
- function RankActivitiesMgr:OnActivityRewardAck(data)
- if data.error ~= Enum.NetErrorCode.ERROR_OK then return end
- if not self.curRnakDatas[data.rush_type] then return end
- if self.rankDatas[data.rush_type] then
- return self.rankDatas[data.rush_type]:OnActivityRewardAck(data)
- end
- end
- function RankActivitiesMgr:InitRankData(data)
- if not self.rankDatas[data.rushType] then
- local rankData = nil
- if data.rushType == Enum.RankActivitiesType.ClimbingTower then
- rankData = TowerRankActivityData:new()
- self.rankDatas[data.rushType] = rankData
- self.rankRewardType[data.rushType] = Enum.RPNotifyType.TowerRankCanReward
- elseif data.rushType == Enum.RankActivitiesType.Dojo then
- rankData = ArenaRankActivityData:new()
- self.rankDatas[data.rushType] = rankData
- self.rankRewardType[data.rushType] = Enum.RPNotifyType.ArenaRankCanReward
- elseif data.rushType == Enum.RankActivitiesType.MapProgress then
- rankData = MapProgressActivityData:new()
- self.rankDatas[data.rushType] = rankData
- self.rankRewardType[data.rushType] = Enum.RPNotifyType.MapRankCanReward
- elseif data.rushType == Enum.RankActivitiesType.Pet then
- rankData = PetRankActivityData:new()
- self.rankDatas[data.rushType] = rankData
- self.rankRewardType[data.rushType] = Enum.RPNotifyType.PetRankCanReward
- elseif data.rushType == Enum.RankActivitiesType.Skill then
- rankData = SkillRankActivityData:new()
- self.rankDatas[data.rushType] = rankData
- self.rankRewardType[data.rushType] = Enum.RPNotifyType.SkillRankCanReward
- end
- if rankData then
- rankData:RegisterNetEvents()
- end
- end
- end
- function RankActivitiesMgr:GetCurRankActivityIdx(type)
- if not self.curRnakDatas[type] then
- return
- end
- return self.curRnakDatas[type].rushCount
- end
- function RankActivitiesMgr:GetCurRankActivityStageEndTime(type)
- if not self.curRnakDatas[type] then
- return
- end
- return self.curRnakDatas[type].stage, self.curRnakDatas[type].stageEnd, self.curRnakDatas[type].inRush
- end
- function RankActivitiesMgr:GetCurRankActivityData(type)
- if not self.curRnakDatas[type] then return end
- if self.rankDatas[type] then
- return self.rankDatas[type]:GetCurRankActivityData()
- end
- return
- end
- function RankActivitiesMgr:QueryCurRankActivityData(type, forceOpenUI)
- if not self.curRnakDatas[type] then return end
- if self.rankDatas[type] and self.curRnakDatas[type].inRush then
- self.rankDatas[type]:QueryRankActivityData(forceOpenUI)
- end
- end
- function RankActivitiesMgr:SendRewardReq(type, rewardType)
- if not self.curRnakDatas[type] then return end
- if self.rankDatas[type] then
- self.rankDatas[type]:SendRewardReq(rewardType)
- end
- end
- function RankActivitiesMgr:QueryPetRankDatas(page)
- if self.rankDatas[Enum.RankActivitiesType.Pet] then
- self.rankDatas[Enum.RankActivitiesType.Pet]:QueryPetRankDatas(page)
- end
- end
- function RankActivitiesMgr:QueryRankActivityData(type, page)
- if type == Enum.RankActivitiesType.Pet then
- self:QueryPetRankDatas(page)
- else
- if self.rankDatas[type] then
- self.rankDatas[type]:QueryRankDatas(page)
- end
- end
- end
- function RankActivitiesMgr:CheckRancActivityOpenTime()
- if not self.curRnakDatas then return end
- self.forceCheck = false
- local needQuery = false
- if not next(self.curRnakDatas) then
- for _,v in pairs(Enum.RankActivitiesType) do
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RANK_ACTIVITY_DISPLAY_NTF, v, false)
- end
- return
- end
- for _,v in pairs(Enum.RankActivitiesType) do
- local type = v
- local rankData = self.curRnakDatas[type]
- if rankData then
- local curTime = ManagerContainer.LuaTimerMgr:CurLuaServerTime()
- if rankData.inRush then
- local stage, endTime = self:GetCurRankActivityStageEndTime(type)
- if (stage == 1 and curTime >= endTime) or (stage == 2 and curTime >= endTime) then
- if not needQuery then
- needQuery = true
- end
- else
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RANK_ACTIVITY_DISPLAY_NTF, rankData.rushType, true)
- end
- else
- if curTime > rankData.nextRush and rankData.nextRush > 0 then
- if not needQuery then
- needQuery = true
- end
- else
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RANK_ACTIVITY_DISPLAY_NTF, rankData.rushType, false)
- end
- end
- else
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RANK_ACTIVITY_DISPLAY_NTF, type, false)
- end
- end
- if needQuery then
- self.forceCheck = true
- self.curCount = self.curCount + 1
- if self.curCount >= self.countLimit then
- self.curCount = 0
- return
- end
- for k, v in pairs(self.rankDatas) do
- if v.rankData ~= nil and k ~= Enum.RankActivitiesType.MapProgress then
- local rankRewardState =v.rankData.selfRank > 0 and not v.rankData.rankReward
- ManagerContainer.RedPointSimpleMgr:RPNotify(self.rankRewardType[k], rankRewardState)
- end
- end
- self:QueryRankActivitiesData()
- end
- end
- function RankActivitiesMgr:Destroy()
- for _,v in pairs(self.rankDatas) do
- v:Destroy()
- end
- self.rankDatas = nil
- self.curRnakData = nil
- end
- return RankActivitiesMgr
|