ActivitiesDataMgr.lua 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595
  1. local ActivitiesDataMgr = class("ActivitiesDataMgr",require("DataBase"))
  2. local ActivityTypeItem = require('Activities/ActivityTypeItem')
  3. local ActivityShopItem = require('Activities/ActivityShopItem')
  4. local ActivityFortnightLoginItem = require("Activities/ActivityFortnightLoginItem")
  5. local ActivityFortnightTaskItem = require("Activities/ActivityFortnightTaskItem")
  6. local ActivityHundredItem = require("Activities/ActivityHundredItem")
  7. local ActivityFirstRechargeItem = require("Activities/ActivityFirstRechargeItem")
  8. local ActivityDailyComulativeRechargeItem = require("Activities/ActivityDailyComulativeRechargeItem")
  9. local ActivityLimitRechargeItem = require("Activities/ActivityLimitRechargeItem")
  10. local ActivityChipRewardItem = require("Activities/ActivityChipRewardItem")
  11. local ActivityPetRewardItem = require("Activities/ActivityPetRewardItem")
  12. local ActivityGoddessItem = require("Activities/ActivityGoddessItem")
  13. local ActivitySpringItem = require("Activities/ActivitySpringItem")
  14. local ActivityKingTaskItem = require("Activities/ActivityKingTaskItem")
  15. local Activity61TrunWheelItem = require("Activities/Activity61TrunWheelItem")
  16. local ActivitySignItem = require("Activities/ActivitySignItem")
  17. local ActivityDailyComulativeRechargeBTItem = require("Activities/ActivityDailyComulativeRechargeBTItem")
  18. local ActivityDailyComulativeRechargeROBTItem = require("Activities/ActivityDailyComulativeRechargeROBTItem")
  19. local ActivityLuckyEggItem = require("Activities/ActivityLuckyEggItem")
  20. function ActivitiesDataMgr:ctor()
  21. self.bInited = false
  22. self.actItemList = nil
  23. self.curDayEndTime = nil
  24. self.firstRechargeItem = nil
  25. self.limitRechargeItem = nil
  26. self.hdDropMap = nil
  27. end
  28. function ActivitiesDataMgr:RegisterNetEvents()
  29. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_ACTIVITIES_OPEN_LIST_NTF,self.OnActivitiesOpenListNtf, self)
  30. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_ACTIVITIES_CHANGE_NTF,self.OnActivitiesChangeNtf, self)
  31. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_ACTIVITIES_REWARD_ACK,self.OnActivitiesRewardAck, self)
  32. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_ACTIVITIES_STARTUP_NTF,self.OnActivitiesStartUpNtf, self)
  33. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_ACTIVITIES_SCORE_REWARD_ACK,self.OnGetBoxRewardAck, self)
  34. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_ACTIVITIES_FIRST_CHARGE_CHANGE_NTF,self.OnActivitiesFirstRechargeNtf, self)
  35. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_ACTIVITIES_FIRST_CHARGE_REWARD_ACK,self.OnActivitiesFirstRechargeAck, self)
  36. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_ACTIVITIES_DISCOUNTS_NTF,self.OnActivitiesLimitRechargeNtf, self)
  37. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_ACTIVITIES_COLLECTION_SERVER_DATA_ACK,self.OnActivitiesCollecttionAck,self)
  38. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_ACTIVITIES_LIKABILITY_REWARD_ACK, self.OnActivitiesGoddessAck, self)
  39. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_ACTIVITIES_EXCHANGE_ACK,self.OnPetRewardBack,self)
  40. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_ACTIVITY_SIGN_IN_ACK,self.OnActivitySignACK,self)
  41. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_ACTIVITIES_WORD_NOTICE_SET_ACK,self.OnActivitiesWordNoticeSetACK,self)
  42. end
  43. function ActivitiesDataMgr:Clear()
  44. self.bInited = false
  45. self.actItemList = nil
  46. self.curDayEndTime = nil
  47. self.firstRechargeItem = nil
  48. self.limitRechargeItem = nil
  49. self.activityRP = nil
  50. self.hdDropMap = nil
  51. end
  52. function ActivitiesDataMgr:OnActivitiesFirstRechargeNtf(data)
  53. --LogError("=================OnActivitiesFirstRechargeNtf=================="..Inspect(data))
  54. if ManagerContainer.NetManager:IsErrorData(data) then
  55. return
  56. end
  57. self:RefreshFirstRechargeData(data, self.curDayEndTime)
  58. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Activity_FirstRecharge_Change)
  59. self:RefreshRedPointState()
  60. end
  61. function ActivitiesDataMgr:OnActivitiesWordNoticeSetACK(data)
  62. --LogError("=================OnActivitiesWordNoticeSetACK=================="..Inspect(data))
  63. if data.error == 0 then
  64. local actItem = self:GetActivityItemById(data.activity_id)
  65. if actItem then
  66. actItem:SetWordNotice(data.collect_id,data.no_notice)
  67. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.CHIPREWARD_ISNOTICE_CHANHE, data.collect_id)
  68. end
  69. end
  70. end
  71. function ActivitiesDataMgr:OnActivitiesLimitRechargeNtf(data)
  72. --LogError("=================OnActivitiesLimitRechargeNtf=================="..Inspect(data))
  73. if self.limitRechargeItem then
  74. self.limitRechargeItem:SyncSrvData(data.discount_data_list)
  75. end
  76. end
  77. function ActivitiesDataMgr:OnPetRewardBack(data)
  78. --LogError("=================OnPetRewardBack=================="..Inspect(data))
  79. if data.error == 0 then
  80. local cfgData = ManagerContainer.CfgMgr:GetActivitiesPetExchangeCfgById(data.reward_idx)
  81. local rewards = {}
  82. for k, v in pairs(cfgData.Reward) do
  83. table.insert(rewards,{cfgId = v[1], num = v[2]})
  84. end
  85. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIPOPGot,{rewards = rewards})
  86. end
  87. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EXCHANGEPET_NTF,data)
  88. end
  89. function ActivitiesDataMgr:OnActivitySignACK(data)
  90. --LogError("=================OnActivitySignACK=================="..Inspect(data))
  91. if data.error == 0 then
  92. local actItem = self:GetActivityItemById(data.activity_id)
  93. if not actItem then
  94. return
  95. end
  96. local signCfgData = ManagerContainer.CfgMgr:GetSignInCfg(data.sign_days)
  97. if not signCfgData then
  98. return
  99. end
  100. local rewardList = {}
  101. for _,v in pairs(data.reward_list) do
  102. rewardList[#rewardList + 1] = {key = v.key, value = v.value, vip = 0}
  103. end
  104. for _,v in pairs(data.ext_reward_list) do
  105. rewardList[#rewardList + 1] = {key = v.key, value = v.value, vip = signCfgData.VipLevel}
  106. end
  107. CommonUtil.ACKSpecialShowRewardList(rewardList)
  108. actItem:SyncSrvData({nil,nil,{next_sign_time = data.next_sign_time, sign_days = data.sign_days}})
  109. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.ACTIVITY_SIGN_SUCCESS,data) --通知界面刷新
  110. end
  111. end
  112. function ActivitiesDataMgr:OnActivitiesGoddessAck(data)
  113. --LogError("======OnActivitiesGoddessAck======="..Inspect(data));
  114. if ManagerContainer.NetManager:IsErrorData(data) then
  115. return
  116. end
  117. if data.reward_item_list ~= nil then
  118. local rewardList = {}
  119. for i = 1, #data.reward_item_list do
  120. local _itemData = data.reward_item_list[i]
  121. rewardList[#rewardList+1] = {cfgId = _itemData.key, num = _itemData.value}
  122. end
  123. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIPOPGot,{rewards = rewardList})
  124. end
  125. end
  126. function ActivitiesDataMgr:OnActivitiesCollecttionAck(data)
  127. --LogError("======OnActivitiesCollecttionAck======="..Inspect(data));
  128. local collectionItem = self:GetActivityItemById(data.activity_id)
  129. if collectionItem and data.error == Enum.NetErrorCode.ERROR_OK and data.activity_id == collectionItem.actId then
  130. collectionItem:RefreshCollectionGlobalData(data.data_list)
  131. end
  132. end
  133. function ActivitiesDataMgr:OnActivitiesFirstRechargeAck(data)
  134. --LogError("======OnActivitiesFirstRechargeAck======="..Inspect(data));
  135. if ManagerContainer.NetManager:IsErrorData(data) then
  136. return
  137. end
  138. local itemList = data.reward_item_list
  139. if itemList then
  140. local itemLength = #itemList
  141. if itemLength > 0 then
  142. local addItemMap = {}
  143. local cfgId, addNum, item
  144. for i = 1, itemLength do
  145. item = itemList[i]
  146. cfgId = item.key
  147. addNum = item.value
  148. if addItemMap[cfgId] then
  149. addItemMap[cfgId] = addItemMap[cfgId] + addNum
  150. else
  151. addItemMap[cfgId] = addNum
  152. end
  153. end
  154. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_EQUIP_AND_ITEM_ADD, addItemMap)
  155. end
  156. end
  157. end
  158. function ActivitiesDataMgr:OnActivitiesOpenListNtf(data)
  159. --LogError("======OnActivitiesOpenListNtf======="..Inspect(data));
  160. self:SetOpenActivityList(data.activity_list)
  161. end
  162. function ActivitiesDataMgr:OnActivitiesChangeNtf(data)
  163. -- LogError("=====OnActivitiesChangeNtf========"..Inspect(data));
  164. self:RefreshActivitiesData(data.activity_data_list,data.cur_day_end_time)
  165. self:RefreshDayEndTime(data.cur_day_end_time)
  166. self:RefreshRedPointState()
  167. end
  168. function ActivitiesDataMgr:SendGiveLikabilityReq(activityId, itemCfgId, lv)
  169. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_ACTIVITIES_LIKABILITY_REWARD_REQ, {activity_id = activityId, item_cfg_id = itemCfgId, likability_level = lv})
  170. end
  171. function ActivitiesDataMgr:SendGetFirstRechargeRewardReq()
  172. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_ACTIVITIES_FIRST_CHARGE_REWARD_REQ)
  173. end
  174. --param: 根据活动的类型传递不同的参数
  175. function ActivitiesDataMgr:SendGetActivityRewardReq(activityId,param, rewardNum)
  176. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_ACTIVITIES_REWARD_REQ, {activity_id = activityId,param = param, reward_num = rewardNum or 0})
  177. end
  178. --全局数据
  179. function ActivitiesDataMgr:SendGetGlobalCollectionServerData(activityId)
  180. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_ACTIVITIES_COLLECTION_SERVER_DATA_REQ, {activity_id = activityId})
  181. end
  182. function ActivitiesDataMgr:OnActivitiesRewardAck(data)
  183. --LogError("add by raul get reward "..Inspect(data))
  184. if data.error == 0 then
  185. if data.reward_item_list ~= nil then
  186. local rewardList = {};
  187. for i = 1, #data.reward_item_list do
  188. local _itemData = data.reward_item_list[i];
  189. rewardList[#rewardList+1] = {cfgId = _itemData.key, num = _itemData.value}
  190. end
  191. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIPOPGot,{rewards = rewardList})
  192. if data.activity_id == Enum.ActivityType.ACTIVITY_TYPE_DAILY_CUMULATIVE_RECHARGE then
  193. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Activity_Daily_Comulative_Refresh)
  194. --elseif data.activity_id == Enum.ActivityType.ACTIVITY_TYPE_FESTIVAL_REWARD then
  195. -- CommonUtil.ACKShowRewardList(data.reward_item_list)
  196. -- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.ACTIVITY_TYPE_FESTIVAL_REWARD)
  197. end
  198. end
  199. end
  200. end
  201. function ActivitiesDataMgr:SendGetBoxRewardReq(activityId,boxId)
  202. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_ACTIVITIES_SCORE_REWARD_REQ, {activity_id = activityId,box_idx = boxId})
  203. end
  204. function ActivitiesDataMgr:OnGetBoxRewardAck(data)
  205. if data.error == 0 then
  206. if data.reward_item_list ~= nil then
  207. local rewardList = {};
  208. for i = 1, #data.reward_item_list do
  209. local _itemData = data.reward_item_list[i];
  210. rewardList[#rewardList+1] = {cfgId = _itemData.key, num = _itemData.value}
  211. end
  212. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIPOPGot,{rewards = rewardList})
  213. end
  214. end
  215. end
  216. function ActivitiesDataMgr:OnActivitiesStartUpNtf(data)
  217. --LogError("OnActivitiesStartUpNtf============="..Inspect(data))
  218. self:InitData()
  219. self:SetOpenActivityList(data.open_activity_list)
  220. self:RefreshActivitiesData(data.activity_data_list,data.cur_day_end_time)
  221. self:RefreshFirstRechargeData(data, data.cur_day_end_time)
  222. self:RefreshDayEndTime(data.cur_day_end_time)
  223. self:RefreshRedPointState()
  224. self:RefreshLimitRechargeData(data.unlock_charge_list)
  225. end
  226. function ActivitiesDataMgr:SetOpenActivityList(activityList)
  227. if activityList == nil then
  228. return
  229. end
  230. --LogError("=================="..Inspect(activityList))
  231. local actIds = {}
  232. for i = 1, #activityList do
  233. local activityItem = self:GetActivityItemById(activityList[i].id)
  234. if activityItem ~= nil then
  235. if not activityItem:IsOpened() then
  236. actIds[#actIds+1] = activityList[i].id
  237. end
  238. activityItem:SetOpenState(true)
  239. activityItem:SetEndTime(activityList[i].end_time)
  240. activityItem:SetBg(activityList[i].bg)
  241. end
  242. end
  243. --LogError("add by raul SetOpenActivityList"..Inspect(activityList))
  244. if #actIds > 0 then
  245. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Open_Activity_Refresh, actIds)
  246. end
  247. end
  248. function ActivitiesDataMgr:RefreshActivitiesData(activityDataList,curDayEndTime)
  249. if activityDataList ~= nil then
  250. for i = 1, #activityDataList do
  251. local activityData = activityDataList[i]
  252. local actItem = self:GetActivityItemById(activityData.activities_id)
  253. if actItem ~= nil then
  254. --LogError("RefreshActivitiesData For ".." Id = "..actItem.actId.." ======= "..Inspect(activityData))
  255. if activityData.activities_type == Enum.ActivityType.ACTIVITY_TYPE_14_Days_LOGIN then
  256. actItem:SyncSrvData({activityData.cur_day,activityData.login_reward_list})
  257. elseif activityData.activities_type == Enum.ActivityType.ACTIVITY_TYPE_14_Days_Task then
  258. actItem:SyncSrvData({activityData.cur_day,curDayEndTime,activityData.fortnight_days})
  259. elseif activityData.activities_type == Enum.ActivityType.ACTIVITY_TYPE_DAILY_CUMULATIVE_RECHARGE then
  260. actItem:SyncSrvData({activityData.cur_day,curDayEndTime,activityData.reward_state})
  261. elseif activityData.activities_type == Enum.ActivityType.ACTIVITY_TYPE_FESTIVAL_REWARD then
  262. actItem:SyncSrvData({activityData.cur_day,curDayEndTime,activityData.collection_list})
  263. --add by raul collection_list--?
  264. elseif activityData.activities_type == Enum.ActivityType.ACTIVITY_TYPE_KING_TASK then
  265. actItem:SyncSrvData({activityData.cur_day,curDayEndTime,activityData.king_task,activityData.fighting_target})
  266. elseif activityData.activities_type == Enum.ActivityType.ACTIVITY_TYPE_PET_REWARD then
  267. actItem:SyncSrvData({activityData.cur_day,curDayEndTime,activityData.exchange_list})
  268. elseif activityData.activities_type == Enum.ActivityType.ACTIVITY_TYPE_61_Days then
  269. actItem:SyncSrvData({activityData.cur_day,curDayEndTime,activityData.wheel_data})
  270. elseif activityData.activities_type == Enum.ActivityType.ACTIVITY_TYPE_SIGN then
  271. actItem:SyncSrvData({activityData.cur_day,curDayEndTime,activityData.sign_data})
  272. else
  273. actItem:SyncSrvData(activityData, curDayEndTime)
  274. end
  275. end
  276. end
  277. for i = 1, #activityDataList do
  278. local activityData = activityDataList[i]
  279. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Activity_Data_Change,activityData.activities_id)
  280. end
  281. end
  282. end
  283. --- 有些活动对当前时间敏感,但是服务器的活动数据不会变化,则由客户端自己判定
  284. function ActivitiesDataMgr:RefreshDayEndTime(curDayEndTime)
  285. if self.curDayEndTime and self.curDayEndTime ~= curDayEndTime then
  286. for i = 1, #self.actItemList do
  287. local actItem = self.actItemList[i]
  288. if actItem then
  289. if actItem:SyncCurDayEndTime(curDayEndTime) then
  290. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Activity_Data_Change, actItem.actId)
  291. end
  292. end
  293. end
  294. if self.firstRechargeItem then
  295. if self.firstRechargeItem:SyncCurDayEndTime(curDayEndTime) then
  296. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Activity_FirstRecharge_Change)
  297. end
  298. end
  299. end
  300. self.curDayEndTime = curDayEndTime
  301. end
  302. function ActivitiesDataMgr:RefreshRedPointState(type)
  303. if not self.activityRP then
  304. self.activityRP = {}
  305. end
  306. for i = 1, #self.actItemList do
  307. if type and type == self.actItemList[i].type then
  308. local rpState = (not self.actItemList[i]:IsOutofDate()) and self.actItemList[i]:HasRedPoint()
  309. local oldId = self.activityRP[self.actItemList[i].redPointType]
  310. if rpState then
  311. self.activityRP[self.actItemList[i].redPointType] = self.actItemList[i].actId
  312. else
  313. self.activityRP[self.actItemList[i].redPointType] = oldId == self.actItemList[i].actId and 0 or oldId
  314. end
  315. return
  316. else
  317. local rpState = (not self.actItemList[i]:IsOutofDate()) and self.actItemList[i]:HasRedPoint()
  318. local oldId = self.activityRP[self.actItemList[i].redPointType]
  319. if rpState then
  320. self.activityRP[self.actItemList[i].redPointType] = self.actItemList[i].actId
  321. else
  322. self.activityRP[self.actItemList[i].redPointType] = oldId == self.actItemList[i].actId and 0 or oldId
  323. end
  324. end
  325. end
  326. if self.activityRP then
  327. for k,v in pairs(self.activityRP) do
  328. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, k, v > 0)
  329. end
  330. end
  331. if self.firstRechargeItem then
  332. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, self.firstRechargeItem.redPointType, self.firstRechargeItem:HasRedPoint())
  333. end
  334. end
  335. function ActivitiesDataMgr:RefreshLimitRechargeData(data)
  336. if self.limitRechargeItem == nil then
  337. self.limitRechargeItem = ActivityLimitRechargeItem:new()
  338. end
  339. self.limitRechargeItem:SyncSrvData(data, true)
  340. end
  341. function ActivitiesDataMgr:GetLimitRechargeItem()
  342. return self.limitRechargeItem
  343. end
  344. function ActivitiesDataMgr:RefreshFirstRechargeData(data, curDayEndTime)
  345. -- if not self.firstRechargeItem then
  346. -- self.firstRechargeItem = ActivityFirstRechargeItem:new()
  347. -- end
  348. -- self.firstRechargeItem:SyncSrvData(data, curDayEndTime)
  349. -- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Activity_FirstRecharge_Change)
  350. end
  351. function ActivitiesDataMgr:InitData()
  352. if self.bInited then
  353. return
  354. end
  355. self.actItemList = {}
  356. self.hdDropMap = {}
  357. local cfgList = ManagerContainer.CfgMgr:GetActivities()
  358. if cfgList ~= nil then
  359. for k,v in pairs(cfgList) do
  360. local actItem = self:CreateActItem(v)
  361. self.actItemList[#self.actItemList+1] = actItem
  362. if v.HdDrop then
  363. for _,v1 in pairs(v.HdDrop) do
  364. self.hdDropMap[v1] = v.Id
  365. end
  366. end
  367. end
  368. end
  369. --LogError("add by raul :ActivitiesDataMgr:InitData---cfgList"..Inspect(cfgList))
  370. self.bInited = true
  371. self:SortActItems()
  372. --LogError("add by raul:ActivitiesDataMgrInitData---sorted self.actItemList"..Inspect(self.actItemList))
  373. end
  374. function ActivitiesDataMgr:TestData()
  375. local loginActivity = self:GetActivityItemByType(Enum.ActivityType.ACTIVITY_TYPE_14_Days_LOGIN)
  376. if loginActivity ~= nil then
  377. loginActivity:SetOpenState(true)
  378. loginActivity:SyncSrvData({3,0})
  379. end
  380. local taskActivity = self:GetActivityItemByType(Enum.ActivityType.ACTIVITY_TYPE_14_Days_Task)
  381. if taskActivity ~= nil then
  382. taskActivity:SetOpenState(true)
  383. taskActivity:SyncSrvData({3,0,nil})
  384. end
  385. end
  386. function ActivitiesDataMgr:CreateActItem(cfg)
  387. local item = nil
  388. if cfg.Type == Enum.ActivityType.ACTIVITY_TYPE_14_Days_LOGIN then
  389. item = ActivityFortnightLoginItem:new(cfg.Id)
  390. elseif cfg.Type == Enum.ActivityType.ACTIVITY_TYPE_14_Days_Task then
  391. item = ActivityFortnightTaskItem:new()
  392. elseif cfg.Type == Enum.ActivityType.ACTIVITY_TYPE_HUNDRED_Task then
  393. item = ActivityHundredItem:new()
  394. elseif cfg.Type == Enum.ActivityType.ACTIVITY_TYPE_DAILY_CUMULATIVE_RECHARGE then
  395. item = ActivityDailyComulativeRechargeItem:new()
  396. elseif cfg.Type == Enum.ActivityType.ACTIVITY_TYPE_FESTIVAL_REWARD then
  397. item = ActivityChipRewardItem:new(cfg.Id)
  398. elseif cfg.Type == Enum.ActivityType.ACTIVITY_TYPE_PET_REWARD then
  399. item = ActivityPetRewardItem:new(cfg.Id)
  400. elseif cfg.Type == Enum.ActivityType.ACTIVITY_TYPE_SHOP then
  401. item = ActivityShopItem:new()
  402. elseif cfg.Type == Enum.ActivityType.ACTIVITY_TYPE_CASH_SHOP then
  403. item = ActivityShopItem:new(true)
  404. elseif cfg.Type == Enum.ActivityType.ACTIVITY_TYPE_GOD_DESS then
  405. item = ActivityGoddessItem:new()
  406. elseif cfg.Type == Enum.ActivityType.ACTIVITY_TYPE_SPRING_BATTLE then
  407. item = ActivitySpringItem:new()
  408. elseif cfg.Type == Enum.ActivityType.ACTIVITY_TYPE_KING_TASK then
  409. item = ActivityKingTaskItem:new()
  410. elseif cfg.Type == Enum.ActivityType.ACTIVITY_TYPE_61_Days then
  411. item = Activity61TrunWheelItem:new()
  412. elseif cfg.Type == Enum.ActivityType.ACTIVITY_TYPE_SIGN then
  413. item = ActivitySignItem:new()
  414. elseif cfg.Type == Enum.ActivityType.ACTIVITY_TYPE_ROCOIN_RECHARGE then
  415. item = ActivityDailyComulativeRechargeROBTItem:new()
  416. elseif cfg.Type == Enum.ActivityType.ACTIVITY_TYPE_ZHENJIA_RECHARGE then
  417. item = ActivityDailyComulativeRechargeBTItem:new()
  418. elseif cfg.Type == Enum.ActivityType.ACTIVITY_TYPE_LUCKYEGG_RECHARGE then
  419. item = ActivityLuckyEggItem:new()
  420. else
  421. item = ActivityTypeItem:new()
  422. end
  423. if item~= nil then
  424. item:Init(cfg)
  425. end
  426. return item
  427. end
  428. function ActivitiesDataMgr:SortActItems()
  429. if self.actItemList == nil or #self.actItemList < 2 then
  430. return
  431. end
  432. table.sort(
  433. self.actItemList,
  434. function(a, b)
  435. return a.order < b.order
  436. end
  437. )
  438. end
  439. function ActivitiesDataMgr:GetActivityItemsByPageId(pageId)
  440. if self.actItemList == nil then
  441. return nil
  442. end
  443. self:RefreshRedPointState()
  444. local items = {}
  445. for i = 1, #self.actItemList do
  446. local item = self.actItemList[i]
  447. if item:HasEntrance(pageId) and item:NeedShow() and item:IsUnlocked() and item:IsOpened() and not item:IsOutofDate() then
  448. if Constant.OpenPay then
  449. items[#items+1] = item
  450. else
  451. if not item:NoPay() then
  452. items[#items+1] = item
  453. end
  454. end
  455. end
  456. end
  457. return items
  458. end
  459. function ActivitiesDataMgr:GetActivityItemByType(type)
  460. if self.actItemList == nil then
  461. return nil
  462. end
  463. for i = 1, #self.actItemList do
  464. local item = self.actItemList[i]
  465. if item.type == type then
  466. return item
  467. end
  468. end
  469. return nil
  470. end
  471. function ActivitiesDataMgr:GetActivityItemById(id)
  472. if self.actItemList == nil then
  473. return nil
  474. end
  475. for i = 1, #self.actItemList do
  476. local item = self.actItemList[i]
  477. if item.actId == id then
  478. return item
  479. end
  480. end
  481. return nil
  482. end
  483. function ActivitiesDataMgr:GetActivityItemByIdAndType(id,type)
  484. if self.actItemList == nil then
  485. return nil
  486. end
  487. for i = 1, #self.actItemList do
  488. local item = self.actItemList[i]
  489. if item.actId == id and item.type == type then
  490. return item
  491. end
  492. end
  493. return nil
  494. end
  495. function ActivitiesDataMgr:GetFirstRechargeItem()
  496. return self.firstRechargeItem
  497. end
  498. function ActivitiesDataMgr:IsInActivityDrop(cfgId)
  499. local needActId = self.hdDropMap and self.hdDropMap[cfgId] or 0
  500. local actItem = self:GetActivityItemById(needActId)
  501. return actItem and not actItem:IsOutofDate() and actItem:IsOpened()
  502. end
  503. function ActivitiesDataMgr:IsActivityItemAndUnderway(cfgId)
  504. if self.hdDropMap then
  505. local needActId = self.hdDropMap[cfgId]
  506. if needActId then
  507. local actItem = self:GetActivityItemById(needActId)
  508. return true, actItem and not actItem:IsOutofDate() and actItem:IsOpened()
  509. end
  510. end
  511. return false, false
  512. end
  513. function ActivitiesDataMgr:UpdateActsEndTime()
  514. if not self.actItemList then
  515. return
  516. end
  517. for _,v in pairs(self.actItemList) do
  518. if v.updateTime then
  519. v:PerMinuteCheckEndTime()
  520. end
  521. end
  522. end
  523. return ActivitiesDataMgr