源战役客户端
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

727 lines
22 KiB

  1. CapsuleEggModel = CapsuleEggModel or BaseClass(BaseVo, true)
  2. local CapsuleEggModel = CapsuleEggModel
  3. function CapsuleEggModel:__init()
  4. CapsuleEggModel.Instance = self
  5. self:Reset()
  6. end
  7. function CapsuleEggModel:Reset()
  8. self.stick_record_max_count = 0--1类记录最大条数(1、2档)
  9. self.normal_record_max_count = 0--2类记录最大条数(3档)
  10. self.max_record_count = 0--全服记录最大条数
  11. self.score_gtype_id = 100012--积分物品id
  12. self.ten_ticket_type_id = 102306
  13. self.is_show_warehouse_view = false --是否在临时仓库界面
  14. self.can_take_out_flag = false--物品tips是否展示取出按钮
  15. self.capsule_egg_kv_cfg = {}--扭蛋常量配置
  16. self.capsule_egg_reward_cfg = {}--扭蛋物品配置
  17. self.capsule_egg_score_shop_cfg = {}--扭蛋积分商城配置
  18. self.capsule_egg_time_reward_cfg = {}--扭蛋次数奖励配置
  19. self.capsule_egg_free_data = {}--免费抽奖信息
  20. self.capsule_egg_time_reward_data = false--次数抽奖信息
  21. self.normal_record_list = {}--普通记录
  22. self.stick_record_list = {}--置顶的两条极品记录
  23. self.all_record_list = {}--记录总表
  24. self.server_lucky = {}--全服幸运值列表
  25. self.score = 0--积分
  26. self.score_shop_data = {}--商城商品购买数据
  27. self.warehouse_data = {}--仓库物品数据
  28. self.now_reward_list = {}--当前抽奖的奖励列表
  29. self.now_choose_goods_id = nil--当前选中的仓库物品唯一id
  30. self.capsule_egg_red_dot_info = {}
  31. self.capsule_egg_timereward_red_dot_info = {}
  32. self.draw_btn_red_list = {}--pool_type|
  33. self.have_see_red_dot = false --单抽券的红点,只显示一次
  34. self:InitCapsuleEggCfg()
  35. end
  36. function CapsuleEggModel:getInstance()
  37. if CapsuleEggModel.Instance == nil then
  38. CapsuleEggModel.Instance = CapsuleEggModel.New()
  39. end
  40. return CapsuleEggModel.Instance
  41. end
  42. -------配置相关--------------------S
  43. --初始化配置信息
  44. function CapsuleEggModel:InitCapsuleEggCfg( )
  45. --常量配置
  46. for k,v in pairs(Config.Capsuleeggkv) do
  47. self.capsule_egg_kv_cfg[Trim(v.key)] = v
  48. end
  49. --奖品配置 奖池类型|奖品位置
  50. local t = {}
  51. for k,v in pairs(Config.Capsuleeggreward) do
  52. t[v.pool_type] = t[v.pool_type] or {}
  53. if v.client_pos ~= 0 then
  54. t[v.pool_type][v.client_pos] = v
  55. end
  56. end
  57. for i,v in ipairs(t) do
  58. self.capsule_egg_reward_cfg[i] = self.capsule_egg_reward_cfg[i] or {}
  59. for ii,vv in ipairs(v) do
  60. local reward_list = stringtotable(vv.reward)
  61. for iii,vvv in ipairs(reward_list) do
  62. table.insert(self.capsule_egg_reward_cfg[i], vvv)
  63. end
  64. end
  65. end
  66. --附属奖励配置特殊处理
  67. if self.capsule_egg_reward_cfg[1] then
  68. local cfg = self.capsule_egg_kv_cfg["giving_reward"]
  69. if cfg then
  70. local reward = stringtotable(Trim(cfg.value))
  71. table.insert(self.capsule_egg_reward_cfg[1], 2, reward[1])
  72. end
  73. end
  74. --积分商城配置
  75. for k,v in pairs(Config.Capsuleeggexchange) do
  76. self.capsule_egg_score_shop_cfg[v.id] = v
  77. end
  78. --次数奖励配置
  79. for k,v in pairs(Config.Capsuleeggtimesreward) do
  80. self.capsule_egg_time_reward_cfg[v.pool_type] = self.capsule_egg_time_reward_cfg[v.pool_type] or {}
  81. table.insert(self.capsule_egg_time_reward_cfg[v.pool_type], v)
  82. end
  83. for i,v in ipairs(self.capsule_egg_time_reward_cfg) do
  84. table.sort( v, function( a, b)
  85. return a.draw_times < b.draw_times
  86. end )
  87. end
  88. self.stick_record_max_count = self.capsule_egg_kv_cfg["show_num_one"].value
  89. self.normal_record_max_count = self.capsule_egg_kv_cfg["show_num_two"].value
  90. self.max_record_count = self.stick_record_max_count + self.normal_record_max_count
  91. end
  92. --根据池子类型和抽的次数获取代币券id
  93. function CapsuleEggModel:GetCostTicketGTypeId(pool_type,nums)
  94. local id = 0
  95. if nums == 1 then
  96. id = self:GetOneCostData(pool_type)
  97. elseif nums == 10 then
  98. id = self:GetTenCostData(pool_type)
  99. elseif nums == 50 then
  100. id = self:GetFiftyCostData(pool_type)
  101. end
  102. return id
  103. end
  104. --获取代币券数量列表
  105. function CapsuleEggModel:GetCostTicketNumList( )
  106. local ticket_num_list = {}
  107. for i=1,3 do
  108. ticket_num_list[i] = ticket_num_list[i] or {}
  109. ticket_num_list[i][1] = GoodsModel:getInstance():GetGoodsNumFromType(0,self:GetCostTicketGTypeId(i,1))
  110. ticket_num_list[i][2] = GoodsModel:getInstance():GetGoodsNumFromType(0,self:GetCostTicketGTypeId(i,10))
  111. ticket_num_list[i][3] = GoodsModel:getInstance():GetGoodsNumFromType(0,self:GetCostTicketGTypeId(i,50))
  112. end
  113. return ticket_num_list
  114. end
  115. --获取单抽的消耗
  116. function CapsuleEggModel:GetOneCostData(pool_type)
  117. if pool_type == 1 then
  118. return stringtotable(self.capsule_egg_kv_cfg["long_one_cost_ticket"].value)[1][2]
  119. elseif pool_type == 2 then
  120. return stringtotable(self.capsule_egg_kv_cfg["xuan_one_cost_ticket"].value)[1][2]
  121. elseif pool_type == 3 then
  122. return stringtotable(self.capsule_egg_kv_cfg["hua_one_cost_ticket"].value)[1][2]
  123. end
  124. end
  125. --获取十连的消耗
  126. function CapsuleEggModel:GetTenCostData(pool_type)
  127. if pool_type == 1 then
  128. return stringtotable(self.capsule_egg_kv_cfg["long_ten_cost_ticket"].value)[1][2]
  129. elseif pool_type == 2 then
  130. return stringtotable(self.capsule_egg_kv_cfg["xuan_ten_cost_ticket"].value)[1][2]
  131. elseif pool_type == 3 then
  132. return stringtotable(self.capsule_egg_kv_cfg["hua_ten_cost_ticket"].value)[1][2]
  133. end
  134. end
  135. --获取五十连的消耗
  136. function CapsuleEggModel:GetFiftyCostData(pool_type)
  137. if pool_type == 1 then
  138. return stringtotable(self.capsule_egg_kv_cfg["long_fifty_cost_ticket"].value)[1][2]
  139. elseif pool_type == 2 then
  140. return stringtotable(self.capsule_egg_kv_cfg["xuan_fifty_cost_ticket"].value)[1][2]
  141. elseif pool_type == 3 then
  142. return stringtotable(self.capsule_egg_kv_cfg["hua_fifty_cost_ticket"].value)[1][2]
  143. end
  144. end
  145. --根据奖品配置id获取其配置
  146. function CapsuleEggModel:GetCfgByRewardCfgId(reward_cfg_id)
  147. if Config.Capsuleeggreward[reward_cfg_id] then
  148. return Config.Capsuleeggreward[reward_cfg_id]
  149. else
  150. return nil
  151. end
  152. end
  153. --获取pooltype类型奖池的奖品配置
  154. function CapsuleEggModel:GetRewardCfg(pool_type)
  155. if self.capsule_egg_reward_cfg[pool_type] then
  156. return self.capsule_egg_reward_cfg[pool_type]
  157. else
  158. return nil
  159. end
  160. end
  161. --获取pooltype类型奖池的次数奖励配置
  162. function CapsuleEggModel:GetTimeRewardCfg(pool_type)
  163. if self.capsule_egg_time_reward_cfg[pool_type] then
  164. return self.capsule_egg_time_reward_cfg[pool_type]
  165. else
  166. return nil
  167. end
  168. end
  169. --获取pooltype类型奖池的次数奖励展示配置
  170. function CapsuleEggModel:GetShowTimeRewardCfg()
  171. local cfg = self.capsule_egg_kv_cfg["show_reward"]
  172. local reward_list = {}
  173. if cfg then
  174. reward_list = stringtotable(Trim(cfg.value))
  175. end
  176. return reward_list
  177. end
  178. --获取pooltype类型奖池的pos位置的奖品配置
  179. function CapsuleEggModel:GetRewardCfgByPos(pool_type,pos)
  180. if self.capsule_egg_reward_cfg[pool_type] and self.capsule_egg_reward_cfg[pool_type][pos] then
  181. return self.capsule_egg_reward_cfg[pool_type][pos]
  182. else
  183. return nil
  184. end
  185. end
  186. --获取积分商城配置
  187. function CapsuleEggModel:GetScoreShopCfg( )
  188. return self.capsule_egg_score_shop_cfg
  189. end
  190. -------配置相关--------------------E
  191. --设置扭蛋免费信息 17000\17003
  192. function CapsuleEggModel:SetCapsuleEggFreeDrawData(vo)
  193. -- print('Cat:CapsuleEggModel.lua[217] SetCapsuleEggFreeDrawData')
  194. -- PrintTable(vo)
  195. self.capsule_egg_free_data[vo.pool_type] = {}
  196. self.capsule_egg_free_data[vo.pool_type].pool_type = vo.pool_type
  197. self.capsule_egg_free_data[vo.pool_type].free_times = vo.free_times
  198. self.capsule_egg_free_data[vo.pool_type].next_free_draw = vo.next_free_draw
  199. self.capsule_egg_free_data[vo.pool_type].sum_draw_times = vo.sum_draw_times
  200. self:CountDownFreeTime(vo.pool_type)
  201. self:UpdateTimeRewardRedDot(vo.pool_type)
  202. self:Fire(CapsuleEggConst.UPDATE_CAPSULE_EGG_FREE_COUNT_DOWN,vo.pool_type)
  203. self:Fire(CapsuleEggConst.UPDATE_RED_DOT, vo.pool_type)
  204. end
  205. --获取免费抽奖次数
  206. function CapsuleEggModel:GetFreeDrawTimesByPoolType(pool_type)
  207. if self.capsule_egg_free_data[pool_type] then
  208. return self.capsule_egg_free_data[pool_type].free_times
  209. else
  210. return 0
  211. end
  212. end
  213. --获取下一次抽奖的时间戳
  214. function CapsuleEggModel:GetNextFreeDrawTimeByPoolType(pool_type)
  215. if self.capsule_egg_free_data[pool_type] then
  216. return self.capsule_egg_free_data[pool_type].next_free_draw
  217. else
  218. return 0
  219. end
  220. end
  221. --获取抽奖次数
  222. function CapsuleEggModel:GetSumDrawTimesByPoolType(pool_type)
  223. if self.capsule_egg_free_data[pool_type] then
  224. return self.capsule_egg_free_data[pool_type].sum_draw_times
  225. else
  226. return 0
  227. end
  228. end
  229. --判断该记录是否是需要置顶的|2档以上
  230. function CapsuleEggModel:IsRecordNeedStick(reward_cfg_id)
  231. return self:GetCfgByRewardCfgId(reward_cfg_id).color <= 2
  232. end
  233. --判断该记录是否需要筛选掉 4档的记录前端不需要,但是需要通过17002协议来刷新全服幸运值
  234. function CapsuleEggModel:IsRecordNeedIgnore(reward_cfg_id)
  235. return self:GetCfgByRewardCfgId(reward_cfg_id).color >= 4
  236. end
  237. --设置全服记录 17001
  238. function CapsuleEggModel:SetRecord(vo)--1|龙神扭蛋 2|炫武扭蛋 3|华裳扭蛋
  239. --记录全服幸运值
  240. self:SetServerlucky(vo.pool_type,vo.server_lucky)
  241. self.normal_record_list[vo.pool_type] = {}
  242. self.stick_record_list[vo.pool_type] = {}
  243. self.all_record_list[vo.pool_type] = {}
  244. --分类记录
  245. for k,v in pairs(vo.draw_log) do
  246. v.pool_type = vo.pool_type
  247. if v.is_stick == 1 then
  248. table.insert(self.stick_record_list[vo.pool_type],v)
  249. else
  250. table.insert(self.normal_record_list[vo.pool_type],v)
  251. end
  252. table.insert(self.all_record_list[vo.pool_type],v)
  253. end
  254. --排序记录
  255. local function sort(a, b)
  256. return a.record_time < b.record_time
  257. end
  258. table.sort(self.stick_record_list[vo.pool_type], sort)
  259. table.sort(self.normal_record_list[vo.pool_type], sort)
  260. table.sort(self.all_record_list[vo.pool_type], sort)
  261. end
  262. --添加全服记录 17002
  263. function CapsuleEggModel:AddRecord(vo)
  264. --记录全服幸运值
  265. self:SetServerlucky(vo.pool_type,vo.server_lucky)
  266. self.normal_record_list[vo.pool_type] = self.normal_record_list[vo.pool_type] or {}
  267. self.stick_record_list[vo.pool_type] = self.stick_record_list[vo.pool_type] or {}
  268. if vo.is_stick == 1 then
  269. table.insert(self.stick_record_list[vo.pool_type], vo)
  270. if #self.stick_record_list[vo.pool_type] > self.stick_record_max_count then
  271. table.remove(self.stick_record_list[vo.pool_type], 1)
  272. end
  273. else
  274. table.insert(self.normal_record_list[vo.pool_type], vo)
  275. if #self.normal_record_list[vo.pool_type] > self.normal_record_max_count then
  276. table.remove(self.normal_record_list[vo.pool_type], 1)
  277. end
  278. end
  279. self.all_record_list[vo.pool_type] = {}
  280. for i,v in ipairs(self.stick_record_list[vo.pool_type]) do
  281. self.all_record_list[vo.pool_type][#self.all_record_list[vo.pool_type]+1] = v
  282. end
  283. for i,v in ipairs(self.normal_record_list[vo.pool_type]) do
  284. self.all_record_list[vo.pool_type][#self.all_record_list[vo.pool_type]+1] = v
  285. end
  286. local function sort(a, b)
  287. return a.record_time < b.record_time
  288. end
  289. table.sort(self.all_record_list[vo.pool_type], sort)
  290. end
  291. --获取置顶记录列表
  292. function CapsuleEggModel:GetStickRecordList(pool_type)
  293. return self.stick_record_list[pool_type] and self.stick_record_list[pool_type] or {}
  294. end
  295. --获取普通记录列表
  296. function CapsuleEggModel:GetNormalRecordList(pool_type)
  297. return self.normal_record_list[pool_type] and self.normal_record_list[pool_type] or {}
  298. end
  299. --获取全服记录总列表
  300. function CapsuleEggModel:GetAllRecordList(pool_type)
  301. return self.all_record_list[pool_type] or {}
  302. end
  303. --设置全服幸运值 17001\17002\17010
  304. function CapsuleEggModel:SetServerlucky(pool_type,lucky)
  305. self.server_lucky[pool_type] = lucky
  306. self:Fire(CapsuleEggConst.UPDATE_CAPSULE_SERVER_LUCKY)
  307. end
  308. --获取全服幸运值
  309. function CapsuleEggModel:GetServerlucky(pool_type)
  310. return self.server_lucky[pool_type] and self.server_lucky[pool_type] or 0
  311. end
  312. --设置积分 17004
  313. function CapsuleEggModel:SetCapsuleEggScore(score)
  314. self.score = score
  315. self:Fire(CapsuleEggConst.UPDATE_CAPSULE_EGG_SCORE)
  316. end
  317. --获取积分
  318. function CapsuleEggModel:GetCapsuleEggScore( )
  319. return self.score
  320. end
  321. --设置商城商品购买信息 17005 |pos:商品位置|gtype_id:商品类型Id|type:兑换类型|num:剩余兑换的次数
  322. function CapsuleEggModel:SetCapsuleEggScoreShopData(vo)
  323. for k,v in pairs(vo.goods_list) do
  324. self.score_shop_data[v.pos] = {}
  325. self.score_shop_data[v.pos].pos = v.pos
  326. self.score_shop_data[v.pos].gtype_id = v.gtype_id
  327. self.score_shop_data[v.pos].num = v.num
  328. end
  329. end
  330. --兑换商品后刷新数据 17006
  331. function CapsuleEggModel:UpdateCapsuleEggScoreShopData(vo)
  332. self.score_shop_data[vo.pos] = {}
  333. self.score_shop_data[vo.pos].pos = vo.pos
  334. self.score_shop_data[vo.pos].gtype_id = vo.gtype_id
  335. self.score_shop_data[vo.pos].num = vo.num
  336. end
  337. --根据pos位置获取商品购买信息
  338. function CapsuleEggModel:GetCapsuleEggScoreShopDataByPos(pos)
  339. return self.score_shop_data[pos] and self.score_shop_data[pos] or nil
  340. end
  341. --设置仓库物品数据 17007
  342. function CapsuleEggModel:SetWarehouseData(vo)
  343. self.warehouse_data = {}
  344. for k,v in pairs(vo.goods_list) do
  345. table.insert(self.warehouse_data,v)
  346. end
  347. local function sort(a, b)
  348. return a.create_time < b.create_time
  349. end
  350. table.sort(self.warehouse_data, sort)
  351. self:SetWarehouseRed(#self.warehouse_data > 0)
  352. end
  353. --获取仓库物品列表
  354. function CapsuleEggModel:GetWarehouseData( )
  355. return self.warehouse_data
  356. end
  357. --清空仓库物品列表
  358. function CapsuleEggModel:ClearWarehouseData( )
  359. self.warehouse_data = {}
  360. self:SetWarehouseRed(false)
  361. end
  362. --物品tips是否展示“取出”按钮
  363. function CapsuleEggModel:IsShowCapsuleEggTakeOutBtn( )
  364. return self.is_show_warehouse_view and self.can_take_out_flag
  365. end
  366. --获取当前选中的仓库物品唯一id
  367. function CapsuleEggModel:GetWarehouseNowSelectedGoodsId( )
  368. return self.now_choose_goods_id
  369. end
  370. --重置选中的仓库物品唯一id
  371. function CapsuleEggModel:ResetWarehouseNowSelectedGoodsId( )
  372. self.now_choose_goods_id = nil
  373. self.can_take_out_flag = false
  374. end
  375. --返回奖励列表中的最高档位
  376. function CapsuleEggModel:GetRewardMaxGear(reward_list)
  377. local max_gear = 4
  378. local reward_cfg = {}
  379. for k,v in pairs(reward_list) do
  380. reward_cfg = self:GetCfgByRewardCfgId(v.reward_cfg_id)
  381. if reward_cfg.color < max_gear then
  382. max_gear = reward_cfg.color
  383. end
  384. end
  385. return max_gear
  386. end
  387. --保存当前抽奖的奖励列表
  388. function CapsuleEggModel:SetNowRewardList(reward_list)
  389. self.now_reward_list = reward_list
  390. self:SetWarehouseRed(#self.now_reward_list > 0)
  391. end
  392. --获取当前抽奖的奖励列表
  393. function CapsuleEggModel:GetNowRewardList()
  394. return self.now_reward_list
  395. end
  396. --是否能免费单抽
  397. function CapsuleEggModel:CanFreeDraw(pool_type)
  398. return self:GetFreeDrawTimesByPoolType(pool_type) > 0
  399. end
  400. --免费单抽倒计时
  401. function CapsuleEggModel:CountDownFreeTime(pool_type)
  402. self:CancelTimer(pool_type)
  403. local timer_func = function()
  404. self:CancelTimer(pool_type)
  405. self:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17000,pool_type)
  406. end
  407. if self:GetNextFreeDrawTimeByPoolType(pool_type) ~= 0 then
  408. self["timer_id"..pool_type] = GlobalTimerQuest:AddPeriodQuest(timer_func, self:GetNextFreeDrawTimeByPoolType(pool_type)+1)
  409. end
  410. end
  411. function CapsuleEggModel:CancelTimer(pool_type)
  412. if self["timer_id"..pool_type] then
  413. GlobalTimerQuest:CancelQuest(self["timer_id"..pool_type])
  414. self["timer_id"..pool_type] = nil
  415. end
  416. end
  417. --该奖池是否开放
  418. function CapsuleEggModel:IsPoolOpen(pool_type)
  419. -- if not GetModuleIsOpen(170) then
  420. -- return false
  421. -- else
  422. -- if pool_type == 1 then
  423. -- return true
  424. -- elseif pool_type == 2 then
  425. -- return RoleManager.Instance.mainRoleInfo.level >= self.capsule_egg_kv_cfg["open_lv"].value
  426. -- elseif pool_type == 3 then
  427. -- return ServerTimeModel:getInstance():GetOpenServerDay() >= self.capsule_egg_kv_cfg["open_day"].value
  428. -- end
  429. -- -- return GetModuleIsOpen(170,pool_type)
  430. -- end
  431. local is_open = GetModuleIsOpen(170,pool_type)
  432. return is_open
  433. end
  434. --红点
  435. function CapsuleEggModel:IsNeedRedAll( )
  436. for k,v in pairs(CapsuleEggConst.RedType) do
  437. self:IsNeedRed(v)
  438. end
  439. end
  440. function CapsuleEggModel:IsNeedRed( tab_id )
  441. local bool = false
  442. if tab_id == CapsuleEggConst.RedType.Dragon then
  443. bool = self:CheckCapsuleEggRed(1)
  444. elseif tab_id == CapsuleEggConst.RedType.Weapon then
  445. bool = self:CheckCapsuleEggRed(2)
  446. elseif tab_id == CapsuleEggConst.RedType.Clothes then
  447. bool = self:CheckCapsuleEggRed(3)
  448. -- elseif tab_id == CapsuleEggConst.RedType.Warehouse then
  449. -- bool = self:CheckWarehouseRed()
  450. end
  451. self.capsule_egg_red_dot_info[tab_id] = bool
  452. self:Fire(CapsuleEggConst.ANS_UPDATE_RED_DOT,tab_id,bool)
  453. end
  454. function CapsuleEggModel:GetAllRedDot( )
  455. return self.capsule_egg_red_dot_info
  456. end
  457. function CapsuleEggModel:CheckCapsuleEggRed(pool_type)
  458. if not self:IsPoolOpen(pool_type) then return false end
  459. local cost_ticket_num_list = self:GetCostTicketNumList()
  460. local is_ticket_enough = false
  461. for i,v in ipairs(cost_ticket_num_list[pool_type]) do
  462. self.draw_btn_red_list[pool_type] = self.draw_btn_red_list[pool_type] or {}
  463. self.draw_btn_red_list[pool_type][i] = false
  464. --优化文档需求:如果是单抽券 大于6张或以上给红点,如果是十连五十连券 大于1张或以上就给红点
  465. if i == 1 then
  466. if v >= 6 then
  467. is_ticket_enough = true
  468. self.draw_btn_red_list[pool_type][i] = true
  469. end
  470. elseif i == 3 then--50连屏蔽
  471. self.draw_btn_red_list[pool_type][i] = false
  472. else
  473. if v > 0 then
  474. is_ticket_enough = true
  475. self.draw_btn_red_list[pool_type][i] = true
  476. end
  477. end
  478. end
  479. local can_free = self:GetFreeDrawTimesByPoolType(pool_type) > 0
  480. return can_free or is_ticket_enough
  481. end
  482. --获取抽奖按钮红点 btn_type: 1|单抽 2|十连 3|五十连
  483. function CapsuleEggModel:GetDrawBtnRed(pool_type,btn_type)
  484. if not self:IsPoolOpen(pool_type) then return false end
  485. if self.draw_btn_red_list[pool_type] then
  486. return self.draw_btn_red_list[pool_type][btn_type]
  487. else
  488. return false
  489. end
  490. end
  491. function CapsuleEggModel:SetWarehouseRed(bool)
  492. self.warehouse_red = bool
  493. self:Fire(CapsuleEggConst.UPDATE_RED_DOT,CapsuleEggConst.RedType.Warehouse)
  494. end
  495. function CapsuleEggModel:CheckWarehouseRed( )
  496. return self.warehouse_red
  497. end
  498. function CapsuleEggModel:GetRedByRedType(RedType)
  499. return self.capsule_egg_red_dot_info[RedType] or false
  500. end
  501. --代币券数量刷新
  502. function CapsuleEggModel:UpdateCostTicketNum( )
  503. self:Fire(CapsuleEggConst.UPDATE_CPASULE_EGG_GOODS_NUM)
  504. -- self:Fire(CapsuleEggConst.UPDATE_RED_DOT,CapsuleEggConst.RedType.Dragon)
  505. -- self:Fire(CapsuleEggConst.UPDATE_RED_DOT,CapsuleEggConst.RedType.Weapon)
  506. -- self:Fire(CapsuleEggConst.UPDATE_RED_DOT,CapsuleEggConst.RedType.Clothes)
  507. self:Fire(CapsuleEggConst.UPDATE_RED_DOT)
  508. end
  509. --设置次数奖励信息
  510. function CapsuleEggModel:SetTimesRewardInfo(vo)
  511. self.capsule_egg_time_reward_data = self.capsule_egg_time_reward_data or {}
  512. self.capsule_egg_time_reward_data[vo.pool_type] = vo.reward_status_list
  513. self:UpdateTimeRewardRedDot(vo.pool_type)
  514. self:Fire(CapsuleEggConst.OPEN_CAPSULE_EGG_REWARD_UPDATE, vo.pool_type)
  515. self:Fire(CapsuleEggConst.UPDATE_RED_DOT)
  516. end
  517. --更新次数奖励红点
  518. function CapsuleEggModel:UpdateTimeRewardRedDot(pool_type)
  519. local cfg = self:GetTimeRewardCfg(pool_type)
  520. if cfg then
  521. local draw_times = self:GetSumDrawTimesByPoolType(pool_type)
  522. self.capsule_egg_timereward_red_dot_info[pool_type] = {}
  523. for k,v in pairs(cfg) do
  524. local status = self:GetTimesRewardStatusByTimes(pool_type, v.draw_times)
  525. if status == false and draw_times >= v.draw_times then
  526. self.capsule_egg_timereward_red_dot_info[pool_type] = true
  527. break
  528. end
  529. end
  530. end
  531. end
  532. --获取次数奖励红点
  533. function CapsuleEggModel:GetTimeRewardRedDot()
  534. local b = false
  535. for k,v in pairs(self.capsule_egg_timereward_red_dot_info) do
  536. if v == true then
  537. b = true
  538. break
  539. end
  540. end
  541. return b
  542. end
  543. --获取次数奖励状态
  544. function CapsuleEggModel:GetTimesRewardStatusByTimes(pool_type, times)
  545. local b = false
  546. if not self.capsule_egg_time_reward_data then
  547. b = nil
  548. else
  549. if self.capsule_egg_time_reward_data[pool_type] then
  550. for k,v in pairs(self.capsule_egg_time_reward_data[pool_type]) do
  551. if times == v.times then
  552. b = v.status == 1
  553. end
  554. end
  555. end
  556. end
  557. return b
  558. end
  559. --获取次数奖励时间戳
  560. function CapsuleEggModel:GetTimesRewarResetTime()
  561. local openDay = ServerTimeModel:getInstance():GetOpenServerDay()
  562. local current_week = tonumber(TimeUtil:GetCurrentWeekDay())
  563. current_week = current_week == 0 and 7 or current_week
  564. local next_monday = 7 - current_week + 1
  565. --如果开服是 周 5,6,7则下周1才算奖励
  566. if openDay <= 3 then
  567. local week = tonumber(TimeUtil:GetWeekStrByOpenDay(1))
  568. if week and week >= 5 and next_monday < 7 then
  569. next_monday = next_monday + 7
  570. end
  571. end
  572. local next_monday_time_stamp = TimeUtil:GetFutureZeroStampServer(next_monday)
  573. return next_monday_time_stamp
  574. end
  575. --单抽券的红点,只显示一次
  576. function CapsuleEggModel:CheckHaveSeeRedDot()
  577. self.have_see_red_dot = true
  578. self:Fire(CapsuleEggConst.UPDATE_RED_DOT)
  579. end
  580. --获取列表中需要展示的ssr,usr,大奖附赠列表
  581. function CapsuleEggModel:GetBigRewardList(reward_list)
  582. -- reward_list = {
  583. -- [1] = {gtype_id = 330902},
  584. -- [2] = {gtype_id = 330903},
  585. -- [3] = {gtype_id = 330213},
  586. -- [4] = {gtype_id = 330309},
  587. -- [5] = {gtype_id = 330310},
  588. -- [6] = {gtype_id = 330107},
  589. -- [7] = {gtype_id = 330107},
  590. -- [8] = {gtype_id = 330107},
  591. -- [9] = {gtype_id = 330107},
  592. -- [10] = {gtype_id = 330107},
  593. -- }
  594. -- gtype_id = 330310
  595. -- goods_num = 1
  596. -- reward_cfg_id = 43
  597. local show_reward_list = {}
  598. -- local dragon_reward_cfg = self:GetRewardCfgByPos(1,1)[2]
  599. local dragon_reward_type_id = self:GetRewardCfgByPos(1,1)[2]
  600. for k,v in pairs(reward_list) do
  601. local war_soul_cfg = WarSoulModel:getInstance():GetWarSoulCfg(v.gtype_id)
  602. if war_soul_cfg and war_soul_cfg.color >= 4 and war_soul_cfg.type ~= 999 then
  603. local temp_data = {}
  604. temp_data.gtype_id = v.gtype_id
  605. temp_data.cfg_war_soul = war_soul_cfg
  606. if dragon_reward_type_id == v.gtype_id then--获得了超级大奖
  607. temp_data.sort_id = 2
  608. temp_data.is_war_soul = 1
  609. table.insert(show_reward_list,temp_data)
  610. local dargon_temp_data = {
  611. gtype_id = stringtotable(Config.Capsuleeggkv[29].value)[1][2],
  612. sort_id = 2,
  613. is_war_soul = 2,
  614. cfg_war_soul = nil,
  615. }
  616. table.insert(show_reward_list,dargon_temp_data)
  617. else--其他的战魂
  618. if war_soul_cfg.color >= 5 then
  619. temp_data.sort_id = 3
  620. temp_data.is_war_soul = 1
  621. else
  622. temp_data.sort_id = 1
  623. temp_data.is_war_soul = 1
  624. end
  625. table.insert(show_reward_list,temp_data)
  626. end
  627. end
  628. end
  629. local arg = {"sort_id","is_war_soul"}
  630. local condition = {Array.UPPER,Array.UPPER}
  631. SortTools.MoreKeysSorter(show_reward_list, arg, condition)
  632. return show_reward_list
  633. end