| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- local BoliShopData = class("BoliShopData",require("DataBase"))
- local ShopData = require('Shop/ShopData')
- local SHOP_REQ_CD = 1000
- function BoliShopData:ctor()
- self.BoliData = nil
- self.BoliData ={}
- end
- function BoliShopData:RefreshBoliData(data)
- if data then
- if not self.BoliData then
- self.BoliData = {}
- end
- self.BoliData.lv = data.level
- self.BoliData.RewardList = self:RefreshRewardList(data.day_reward_list)
- self.BoliData.rewardTime = data.reward_time
- self.BoliData.showtime = data.show_time_stamp
- self:RefreshRedPointState()
- end
- end
- function BoliShopData:RefreshRewardList(list)
- local data = {}
- if list and #list > 0 then
- for i = 1, #list do
- data[list[i].key] = list[i].value
- end
- end
- return data
- end
- function BoliShopData:RefreshRedPointState()
- local lv = self:GetCurLv()
- for i = 1, lv do
- local data = self:GetRewardListById(i)
- if not data then
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.BoliShopLvChange, true)
- return
- end
- end
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.BoliShopLvChange, false)
- end
- function BoliShopData:GetCurLv()
- return self.BoliData and self.BoliData.lv or 0
- end
- function BoliShopData:GetShowTime()
- local time = self.BoliData and self.BoliData.showtime or 0
- return type(time) == "number" and time or #time
- end
- function BoliShopData:GetCurExp()
- return CommonUtil.GetOwnResCountByItemId(Enum.ItemType.BoliShopExp)
- end
- function BoliShopData:GetRewardListById(id)
- return self.BoliData and self.BoliData.RewardList and self.BoliData.RewardList[id]
- end
- function BoliShopData:RegisterNetEvents()
- --波利商城刷新
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_BOLI_DATA_CHANGE_NTF, self.OnBoliDataChange,self)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_BOLI_SHOP_LEVEL_UP_ACK, self.OnBoliDataLevelUpAck,self)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_BOLI_SHOP_REWARD_ACK, self.OnBoliDataRewardListAck,self)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_BOLI_SHOP_BUY_ACK, self.OnBoliDataBuyAck,self)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_BOLI_SHOP_INFO_ACK, self.OnBoliDataInfoAck,self)
- end
- function BoliShopData:OnBoliDataInfoAck(data)
- if data.error == 0 then
- --商城信息返回
- local shopDataMsg = data.shop_data
- if not shopDataMsg then return end
- if not self.shopData then
- self.shopData = ShopData:new()
- end
- self.shopData:SetData(shopDataMsg,true)
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.ON_BOLISHOP_INFO_REFRESH)
- end
- end
- function BoliShopData:GetBoliShopData()
- return self.shopData
- end
- function BoliShopData:OnBoliDataLevelUpAck(data)
- if data.error == 0 then
- ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("BoliLvUp")
- local shopDataMsg = data.shop_data
- if not shopDataMsg then return end
- if not self.shopData then
- self.shopData = ShopData:new()
- end
- self.shopData:SetData(shopDataMsg,true)
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.ON_BOLISHOP_INFO_REFRESH)
- end
- end
- function BoliShopData:OnBoliDataBuyAck(data)
- if data.error == 0 then
- local shopData = self:GetBoliShopData()
- if shopData then
- shopData:RefreshBuyInfoData(data)
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.ON_BOLISHOP_INFO_REFRESH)
- end
- local itemList = data.item_list
- if itemList then
- local itemLength = #itemList
- if itemLength > 0 then
- local addItemMap = {}
- local cfgId, addNum, item
- for i = 1, itemLength do
- item = itemList[i]
- cfgId = item.key
- addNum = item.value
- if addItemMap[cfgId] then
- addItemMap[cfgId] = addItemMap[cfgId] + addNum
- else
- addItemMap[cfgId] = addNum
- end
- end
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_EQUIP_AND_ITEM_ADD, addItemMap)
- end
- end
- end
- end
- function BoliShopData:OnBoliDataRewardListAck(data)
- if data.error == 0 then
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.ON_BOLISHOP_REWARD_TIPS, data.reward_list)
- end
- end
- function BoliShopData:SendBoliShopLevelUpReq(num)
- ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_BOLI_SHOP_LEVEL_UP_REQ,{num = num})
- end
- function BoliShopData:SendBoliShopRewardReq(lv,idx)
- ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_BOLI_SHOP_REWARD_REQ, {reward_level = lv,idx = idx})
- end
- function BoliShopData:SendBoliShopBuyReq(id, num)
- if self:IsCanSend() then
- ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_BOLI_SHOP_BUY_REQ,{goods_id = id, goods_num = num})
- return true
- end
- return false
- end
- function BoliShopData:IsCanSend(cdTime)
- local curTime = ManagerContainer.LuaTimerMgr:CurLuaServerTime()
- if not self.lastSendMsgTime then
- self.lastSendMsgTime = curTime
- return true
- end
- local lastTime = self.lastSendMsgTime
- if lastTime then
- local cd = cdTime or SHOP_REQ_CD
- if (curTime - lastTime) < cd then
- return false
- end
- end
- self.lastSendMsgTime = curTime
- return true
- end
- function BoliShopData:SendBoliShopInfoReq()
- ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_BOLI_SHOP_INFO_REQ)
- end
- function BoliShopData:OnBoliDataChange(data)
- self:RefreshBoliData(data.boli_data)
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.ON_BOLISHOP_DATA_CHANGE)
- end
- function BoliShopData:UnRegisterNetEvents()
- ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_BOLI_DATA_CHANGE_NTF)
- ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_BOLI_SHOP_LEVEL_UP_ACK)
- ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_BOLI_SHOP_REWARD_ACK)
- ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_BOLI_SHOP_BUY_ACK)
- ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_BOLI_SHOP_INFO_ACK)
- end
- function BoliShopData:Clear()
- self.BoliData = nil
- end
- function BoliShopData:Destroy()
- if self.Clear then
- self:Clear()
- end
- self:UnRegisterNetEvents()
- end
- return BoliShopData
|