| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- local PetCollectBookData = class("PetCollectBookData")
- local BitUtil = require("BitUtil")
- function PetCollectBookData:ctor()
- self.data = {}
- self.totalCount = 0
- self.normalCount = 0
- self.miniCount = 0
- self.mvpCount = 0
- self.data.petManualMap = {}
- end
- function PetCollectBookData:InitData(pet_manual_list)
- if not pet_manual_list then return end
- for k,v in pairs(pet_manual_list) do
- local data = {}
- data.cfgId = v.pet_cfg_id
- data.advLevel = v.adv_level
- data.rewardState = v.reward_state
- if not self.data.petManualMap[data.cfgId] then
- self.totalCount = self.totalCount + 1
- local cfgId = 800 + data.cfgId
- local petCfgData = ManagerContainer.CfgMgr:GetPetDataById(cfgId)
- if petCfgData then
- if petCfgData.Quality == 1 then
- self.normalCount = self.normalCount + 1
- elseif petCfgData.Quality == 2 then
- self.miniCount = self.miniCount + 1
- elseif petCfgData.Quality == 3 then
- self.mvpCount = self.mvpCount + 1
- end
- end
- end
- self.data.petManualMap[data.cfgId] = data
- end
- self:RefreshRedPoint()
- end
- function PetCollectBookData:RefreshRedPoint()
- for k, v in pairs(self.data.petManualMap) do
- local cfgId = v.cfgId + 800
- local state = v.rewardState
- local curAdvLv = v.advLevel
- local cfgData = ManagerContainer.CfgMgr:GetPetDataById(cfgId)
- if cfgData and cfgData.PetReward then
- for i = 1, #cfgData.PetReward do
- local adv = cfgData.PetReward[i][1]
- if curAdvLv >= adv then
- local rewarded = BitUtil.RshiftNumBandOne(state, adv) == 1
- if not rewarded then
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.PetCollection, true)
- return
- end
- end
- end
- end
- end
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.PetCollection, false)
- end
- function PetCollectBookData:GetActivedPetCount(type)
- if type == Enum.CollectQualityType.ALL then
- return self.totalCount
- elseif type == Enum.CollectQualityType.NORMAL then
- return self.normalCount
- elseif type == Enum.CollectQualityType.MINIBOSS then
- return self.miniCount
- elseif type == Enum.CollectQualityType.MVP then
- return self.mvpCount
- end
- return 0
- end
- function PetCollectBookData:GetPetCollectBoolState(cfgId)
- local idx = cfgId - 800
- return self.data.petManualMap[idx] ~= nil
- end
- function PetCollectBookData:GetPetCollectRewardState(cfgId)
- local idx = cfgId - 800
- local state = self.data.petManualMap[idx] and self.data.petManualMap[idx].rewardState or 0
- local curAdvLv = self.data.petManualMap[idx] and self.data.petManualMap[idx].advLevel or 0
- return state, curAdvLv, self.data.petManualMap[idx] ~= nil
- end
- function PetCollectBookData:SendPetReward(cfgId, advLv, petId)
- ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_PET_MANUAL_REWARD_REQ, {pet_cfg_id = cfgId, pet_adv_level = advLv, pet_id = petId})
- end
- function PetCollectBookData:QueryFirstRank(cfgId)
- ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_PET_ADV_ACHIEVEMENT_REQ, {pet_cfg_id = cfgId})
- end
- function PetCollectBookData:RegisterNetEvents()
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_PET_MANUAL_REWARD_ACK, function(data)
- if data.error == Enum.NetErrorCode.ERROR_OK then
- CommonUtil.ACKShowRewardList(data.reward_list)
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.PET_HANDBOOK_REWARD_REFRESH, data.pet_cfg_id)
- end
- end)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_PET_ADV_ACHIEVEMENT_ACK, function(data)
- if data.error == Enum.NetErrorCode.ERROR_OK then
- if data.brief then
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.CARD_HANDBOOK_RANK_REFRESH, data.brief, data.achievement_time)
- end
- end
- end)
- end
- function PetCollectBookData:Clear()
- self.data = {}
- self.totalCount = 0
- self.normalCount = 0
- self.miniCount = 0
- self.mvpCount = 0
- self.data.petManualMap = {}
- end
- function PetCollectBookData:Destroy()
- self.data = {}
- self:UnRegisterNetEvents()
- end
- function PetCollectBookData:UnRegisterNetEvents()
- ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_PET_MANUAL_REWARD_ACK)
- ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_PET_ADV_ACHIEVEMENT_ACK)
- end
- return PetCollectBookData
|