| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227 |
- local BTRechargeRewardDataMgr = class('BTRechargeRewardDataMgr', require('DataBase'))
- function BTRechargeRewardDataMgr:ctor()
- self.firstRechargeRewardState = 0
- self.hundredRechargeUnlockState = false
- self.hundredRechargeRewardMaxDay = 0
- self.hundredRechargeRewardCurDay = 0
- self.btTotalRecharge = 0
- end
- function BTRechargeRewardDataMgr:Clear()
- self.firstRechargeRewardState = 0
- self.hundredRechargeUnlockState = false
- self.hundredRechargeRewardMaxDay = 0
- self.hundredRechargeRewardCurDay = 0
- self.btTotalRecharge = 0
- end
- function BTRechargeRewardDataMgr:Destroy()
- self.firstRechargeRewardState = nil
- self.hundredRechargeUnlockState = nil
- self.hundredRechargeRewardMaxDay = nil
- self.hundredRechargeRewardCurDay = nil
- self.btTotalRecharge = nil
- self:UnRegisterNetEvents()
- end
- function BTRechargeRewardDataMgr:RegisterNetEvents()
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_BT_FIRST_RECHARGE_NTF, self.OnBTFirstRechargeNtf, self)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_BT_FIRST_RECHARGE_REWARD_ACK, self.OnBTFirstRechargeRewardAck, self)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_BT_RECHARGE100_NTF, self.OnBTHundredRechargeNtf, self)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_BT_RECHARGE100_REWARD_ACK, self.OnBTHundredRechargeRewardAck, self)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_PAY_INFO_NTF, self.OnPayInfoNtf, self)
- end
- function BTRechargeRewardDataMgr:UnRegisterNetEvents()
- ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_BT_FIRST_RECHARGE_NTF)
- ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_BT_FIRST_RECHARGE_REWARD_ACK)
- ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_BT_RECHARGE100_NTF)
- ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_BT_RECHARGE100_REWARD_ACK)
- ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_BT_FIRST_RECHARGE_NTF)
- ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_PAY_INFO_NTF, self.OnPayInfoNtf, self)
- end
- function BTRechargeRewardDataMgr:OnBTFirstRechargeNtf(data)
- if not data.first_recharge_time or data.first_recharge_time <= 0 then
- return
- end
- local firstRechargeRewardState = self.firstRechargeRewardState
- self.firstRechargeRewardState = data.first_recharge_reward_state or 0
- if self.firstRechargeRewardState ~= firstRechargeRewardState then
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.BT_FIRST_RECHARGE_REWARD_CHANGED)
- self:CheckFirstRechargeRedPoint()
- end
- end
- function BTRechargeRewardDataMgr:OnBTFirstRechargeRewardAck(data)
- if ManagerContainer.NetManager:IsErrorData(data) then
- return
- end
- if data.reward_item_list then
- local rewardList = {}
- for i = 1, #data.reward_item_list do
- local _itemData = data.reward_item_list[i]
- rewardList[#rewardList+1] = {cfgId = _itemData.key, num = _itemData.value}
- end
- ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIPOPGot,{rewards = rewardList})
- end
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.BT_FIRST_RECHARGE_REWARD_CHANGED, data.reward_idx)
- end
- function BTRechargeRewardDataMgr:OnBTHundredRechargeNtf(data)
- LogWarning("=================OnBTHundredRechargeNtf========================="..Inspect(data))
- local hundredRechargeUnlockState = self.hundredRechargeUnlockState
- local hundredRechargeRewardMaxDay = self.hundredRechargeRewardMaxDay
- local hundredRechargeRewardCurDay = self.hundredRechargeRewardCurDay
- self.hundredRechargeUnlockState = data.recharge100_time and data.recharge100_time > 0 or false
- self.hundredRechargeRewardMaxDay = Mathf.Clamp(data.recharge100_reward_day or 0, 0, 3)
- self.hundredRechargeRewardCurDay = data.recharge100_reward_state or 0
- if self.hundredRechargeUnlockState ~= hundredRechargeUnlockState or
- self.hundredRechargeRewardMaxDay ~= hundredRechargeRewardMaxDay or
- self.hundredRechargeRewardCurDay ~= hundredRechargeRewardCurDay then
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.BT_HUNDRED_RECHARGE_REWARD_CHANGED)
- self:CheckHundredRechargeRedPoint()
- end
- end
- function BTRechargeRewardDataMgr:OnBTHundredRechargeRewardAck(data)
- if ManagerContainer.NetManager:IsErrorData(data) then
- return
- end
- if data.reward_item_list then
- local rewardList = {}
- for i = 1, #data.reward_item_list do
- local _itemData = data.reward_item_list[i]
- rewardList[#rewardList+1] = {cfgId = _itemData.key, num = _itemData.value}
- end
- ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIPOPGot,{rewards = rewardList})
- end
- end
- function BTRechargeRewardDataMgr:OnPayInfoNtf(data)
- --LogError('[wboy] SC_PAY_INFO_NTF ' .. Inspect(data))
- if ManagerContainer.NetManager:IsErrorData(data) then
- return
- end
- local lastBTTotalRecharge = self.btTotalRecharge
- local jiaTotalRecharge = data.bt_jia_total_recharge or 0
- local totalRecharge = data.total_recharge or 0
- self.btTotalRecharge = jiaTotalRecharge + totalRecharge
- if lastBTTotalRecharge == self.btTotalRecharge then
- return
- end
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.PAY_BT_TOTAL_RECHARGE_CHANGED)
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.BT_FIRST_RECHARGE_REWARD_CHANGED)
- self:CheckFirstRechargeRedPoint()
- end
- function BTRechargeRewardDataMgr:SendBTFirstRechargeRewardReq(idx)
- ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_BT_FIRST_RECHARGE_REWARD_REQ, {reward_idx = idx})
- end
- function BTRechargeRewardDataMgr:SendBTHundredRechargeRewardReq()
- ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_BT_RECHARGE100_REWARD_REQ)
- end
- function BTRechargeRewardDataMgr:InitBtTotalRecharge(data)
- if not data then return end
- self:OnPayInfoNtf(data)
- end
- function BTRechargeRewardDataMgr:InitData(data)
- if not data then return end
- LogWarning("=================InitData========================="..Inspect(data))
- local firstRechargeRewardState = self.firstRechargeRewardState
- local hundredRechargeUnlockState = self.hundredRechargeUnlockState
- local hundredRechargeRewardMaxDay = self.hundredRechargeRewardMaxDay
- local hundredRechargeRewardCurDay = self.hundredRechargeRewardCurDay
- self.firstRechargeRewardState = data.first_recharge_reward_state or 0
- self.hundredRechargeUnlockState = data.recharge100_time and data.recharge100_time > 0 or false
-
- self.hundredRechargeRewardMaxDay = Mathf.Clamp(data.recharge100_reward_day or 0, 0, 3)
- self.hundredRechargeRewardCurDay = data.recharge100_reward_state or 0
- if self.firstRechargeRewardState ~= firstRechargeRewardState then
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.BT_FIRST_RECHARGE_REWARD_CHANGED)
- self:CheckFirstRechargeRedPoint()
- end
- if self.hundredRechargeUnlockState ~= hundredRechargeUnlockState or
- self.hundredRechargeRewardMaxDay ~= hundredRechargeRewardMaxDay or
- self.hundredRechargeRewardCurDay ~= hundredRechargeRewardCurDay then
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.BT_HUNDRED_RECHARGE_REWARD_CHANGED)
- self:CheckHundredRechargeRedPoint()
- end
- end
- function BTRechargeRewardDataMgr:CheckFirstRechargeRedPoint()
- if self:IsShowHundred() or not self.btTotalRecharge or self.btTotalRecharge <= 0 then
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.FirstRecharge, false)
- return
- end
- local cfgData = ManagerContainer.CfgMgr:GetActivitiesBtFirstChargeCfgById(1)
- for i = 1, #cfgData.RechargeAmount do
- if not self:GetBTFirstRechargeRewardState(i) and self:IsReachFirstRechargeValue(cfgData.RechargeAmount[i]) then
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.FirstRecharge, true)
- return
- end
- end
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.FirstRecharge, false)
- end
- function BTRechargeRewardDataMgr:CheckHundredRechargeRedPoint()
- if not self.hundredRechargeUnlockState or
- self.hundredRechargeRewardMaxDay <= self.hundredRechargeRewardCurDay or
- not self:IsShowHundred() then
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.HundredRecharge, false)
- return
- end
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.HundredRecharge, true)
- end
- function BTRechargeRewardDataMgr:IsReachFirstRechargeValue(value)
- --LogError("=====self.btTotalRecharge==="..self.btTotalRecharge.."===========================value"..value);
- return self.btTotalRecharge >= value
- end
- function BTRechargeRewardDataMgr:GetBTFirstRechargeRewardState(idx)
- local value = Bit.lshift(1, idx)
- return (Bit.band(self.firstRechargeRewardState, value) == value)
- end
- function BTRechargeRewardDataMgr:IsShowHundred()
- local value = 14 -- 2 + 4 + 8
- if not (Bit.band(self.firstRechargeRewardState, value) == value) then
- return false
- end
- return true
- end
- function BTRechargeRewardDataMgr:IsGotHundredAllRewardCompleted()
- return self.hundredRechargeRewardCurDay >= 3
- end
- function BTRechargeRewardDataMgr:GetBTHundredRechargeUnlockState()
- return self.hundredRechargeUnlockState
- end
- function BTRechargeRewardDataMgr:GetBTHundredRechargeRewardMaxDay()
- return self.hundredRechargeRewardMaxDay
- end
- function BTRechargeRewardDataMgr:GetBThundredRechargeRewardState(idx)
- if self.hundredRechargeRewardMaxDay >= idx then
- if self.hundredRechargeRewardCurDay >= idx then
- return Enum.ActivityRewardState.GotAndHas
- else
- return Enum.ActivityRewardState.Got
- end
- end
- return Enum.ActivityRewardState.NotGot
- end
- return BTRechargeRewardDataMgr
|