| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- local PetRankActivityData = class("PetRankActivityData")
- local ProtocalDataNormal = require("ProtocalDataNormal")
- local countlimit = 10
- function PetRankActivityData:ctor()
- self.rankData = nil
- self.type = Enum.RankActivitiesType.Pet
- end
- function PetRankActivityData:Clear()
- self.rankData = nil
- end
- function PetRankActivityData:RegisterNetEvents()
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_PET_ACTIVITY_ACK,self.OnPetActivityAck, self)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_PET_ACTIVITY_RANK_ACK,self.QueryPetRankDatasAck, self)
- end
- function PetRankActivityData:QueryRankActivityData(forceOpenUI)
- self.forceOpenUI = forceOpenUI
- ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_PET_ACTIVITY_REQ, {})
- end
- function PetRankActivityData:OnPetActivityAck(data)
- if data.error ~= Enum.NetErrorCode.ERROR_OK then return end
- -- LogHRWarning(Inspect(data))
- local oldData = clone(self.rankData)
- self.rankData = ProtocalDataNormal.ParsePetActivityData(data)
- if oldData then
- ManagerContainer.RedPointSimpleMgr:RPNotify(Enum.RPNotifyType.PetRankChanged, oldData.selfRank ~= self.rankData.selfRank)
- end
- self:RefreshRewardRPStatae()
- if self.forceOpenUI then
- --TODO 打开 冲榜界面
- if self.rankData.endTime > 0 then
- ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIActivityTower, Enum.RankActivitiesType.Pet)
- self.forceOpenUI = false
- else
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RANK_ACTIVITY_DISPLAY_NTF, Enum.RankActivitiesType.Pet, false)
- end
- end
- end
- function PetRankActivityData:RefreshRewardRPStatae()
- local type = Enum.RankActivitiesType.Pet
- local idx = ManagerContainer.DataMgr.RankActivitiesMgr:GetCurRankActivityIdx(type)
- local cfgDatas = ManagerContainer.CfgMgr:GetRushListCfgByTypeAndIdx(type, idx)
- if not cfgDatas then
- ManagerContainer.RedPointSimpleMgr:RPNotify(Enum.RPNotifyType.TowerRankCanReward, false)
- return
- end
- local cfgDatas = ManagerContainer.CfgMgr:GetRushListTargetCfgByTypeAndIdx(type,idx)
- countlimit = cfgDatas[1].Rank[1][1]
- local stage, endTime = ManagerContainer.DataMgr.RankActivitiesMgr:GetCurRankActivityStageEndTime(Enum.RankActivitiesType.Pet)
- local rankRewardState = stage == 2 and self.rankData.selfRank > 0 and not self.rankData.rankReward
- local challengeRewardState = self.rankData.selfScore >= countlimit and not self.rankData.challengReward
- ManagerContainer.RedPointSimpleMgr:RPNotify(Enum.RPNotifyType.PetRankCanReward, rankRewardState or challengeRewardState)
- end
- function PetRankActivityData:OnActivityRewardAck(data)
- if data.error ~= Enum.NetErrorCode.ERROR_OK then return end
- if data.reward_type == 1 then
- self.rankData.challengReward = true
- elseif data.reward_type == 2 then
- self.rankData.rankReward = true
- end
- self:RefreshRewardRPStatae()
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RANK_ACTIVITY_REWARD_SUCCESS_NTF, data.reward_type)
- CommonUtil.ACKShowRewardList(data.item_list)
- end
- function PetRankActivityData:GetCurRankActivityData()
- return self.rankData
- end
- function PetRankActivityData:SendRewardReq(type)
- ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_RUSH_ACTIVITY_REWARD_REQ, {reward_type = type, rush_type = self.type})
- end
- function PetRankActivityData:QueryPetRankDatas(page)
- ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_PET_ACTIVITY_RANK_REQ, {page = page})
- end
- function PetRankActivityData:QueryPetRankDatasAck(data)
- -- LogHRWarning(Inspect(data))
- if data.error ~= Enum.NetErrorCode.ERROR_OK then
- return
- end
- if not self.rankData then return end
- if data.top_data then
- for i = 1,#data.top_data do
- local data1 = {}
- data1.name = data.top_data[i].name
- data1.totalScore = data.top_data[i].total_score
- data1.info = ProtocalDataNormal.ParseRushPetInfoData(data.top_data[i].pet_info.info)
- data1.rank = data.top_data[i].rank
- self.rankData.topData[data1.rank] = data1
- end
- end
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.PET_RANK_QUERY_ACK_REFRESH)
- end
- function PetRankActivityData:Destroy()
- self:Clear()
- end
- return PetRankActivityData
|