源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1100 lines
48 KiB

  1. CustomActivityModel = CustomActivityModel or BaseClass(BaseModel)
  2. --定制活动主类型(对应后台配置)
  3. CustomActivityModel.CustomActBaseType = {
  4. LIMIT_GIFT = 3, --限购礼包
  5. MONEY_COPY = 5, --彩钻复制机
  6. DAILY_RECHARGE = 6, --每日累充
  7. KFACTIVITY_RECHARGE = 7, --开服累充
  8. RUSH_RANK = 10, --开服冲榜
  9. POWER_TURNTABLE = 11, --源能转盘
  10. HOPE_GIFT = 19, --臻享礼包
  11. SAKURA_GIFT = 20, --源樱之礼
  12. ACC_CONSUME = 30, --累计消费
  13. ZERO_GIFT = 36, --0元礼包
  14. RECHARGE_RANK = 33, --充值排行
  15. SERVER_CONSUME = 39, --本服消费
  16. SINGLE_RECHARGE = 48, --单笔充值
  17. MAINLAND_JOURNEY = 50, --大陆征途
  18. FORTUNE_CAT = 64, --招财猫
  19. KFACTIVITY_LIMIT_SHOP = 65, --抢购商城
  20. GUILD_SPEED = 66, --社团竞榜
  21. FOSTER_STAGE = 67, --开服进阶
  22. CONTINUE_RECHARGE = 68, --连充豪礼
  23. MERCENARY_SUPPLY = 69, --佣兵补给
  24. KF_GROUP_BUYING = 70, --开服团购
  25. MOBILIZATION = 71, --全民动员
  26. MONOPOLY = 72, --大富翁
  27. ADVERTISEMENT = 73, --活动宣传
  28. CONTRACT = 74, --万物宝典
  29. INVEST_ACT = 75, --投资活动
  30. LIMIT_SECKILL = 76, --限时秒杀
  31. DISCOUNT_FULL_CUT = 77, --折扣满减
  32. HAPPY_RED_BAG = 78, --惊喜红包
  33. COM_RANK = 79, --通用排行
  34. LOGIN_PASS = 80, --登录通行证
  35. LIVELY_PASS = 81, --活跃通行证
  36. HIGH_EXCHANGE = 82, --嗨点兑换
  37. --主题活动相关
  38. OPERATE_ACTIVITY = 99, --主题活动
  39. REWARD_SHOW = 100, --资源展示
  40. BOSS_DROP = 101, --BOSS本服掉落
  41. DUN_MUL_DROP = 102, --副本多倍掉落
  42. SINGLE_DAY_RECHARGE = 103, --单日充值
  43. BOSS_TREASURE = 104, --幻魔宝典
  44. HIGH_POINT = 105, --嗨点
  45. E_DAY_LOGIN = 106, --每日登录
  46. LUCKY_TURNTABLE = 107, --幸运轮盘
  47. SCRAPING_CRAD = 108, --刮刮卡
  48. GET_LUCKY_BAG = 109, --抢福袋
  49. GET_RED_BAG = 110, --抢红包
  50. TAROT = 111, --塔罗牌
  51. COLLECT_ZI = 112, --集字兑换
  52. ADVENTURE = 113, --冒险征途
  53. STAGE_EXCHANGE = 114, --阶段兑换
  54. REVERSI = 115, --黑白棋抽奖
  55. JIGSAW = 116, --活跃拼图
  56. FESTIVAL_BOSS = 117, --节日幻魔
  57. AMUSING_JIGSAW_PUZZLE = 118,--眼疾手快趣味拼图
  58. THREE_FIGHT = 119, --三日作战
  59. PRAY_TREE = 120, --人参果树
  60. JUMP_ONE = 121, --跳一跳
  61. COMPOSE_ROBOT = 122, --合成机
  62. SUPER_AWARD = 123, --超能大奖
  63. MATERIAL_SUBMIT = 124, --材料提交
  64. ACT_GUIDE = 998, --活动引导
  65. ACTIVITY_ICON_DESC = 999, --活动图标说明
  66. SELECT_EGG = 125, --自选扭蛋
  67. --这里需要将一些非定制活动加入到开发活动中 这边创建一个标识 好分辨
  68. COPETING = 8989, --竞榜活动
  69. SEVEN_DAYS_LOGIN = 17500, -- 七日登录
  70. --以下是旧版活动
  71. -- CHARM_RANK = 1, --魅力榜
  72. -- CROSS_CHARM_RANK = 2, --跨服魅力榜
  73. -- MARRY_RANK = 3, --结婚榜
  74. -- KF_JI_ZI = 4, --开服集字
  75. -- SEVEN_RECHARGE = 7, --七日累充
  76. -- GOOD_GIFT = 11, --好评礼包
  77. -- THROW_EGG = 13, --砸蛋
  78. -- RECHARGE_GIFT = 14, --充值有礼
  79. -- LOGIN_GIFT = 15, --连续登录
  80. -- DUN_MUL_EXP = 16, --副本多倍经验
  81. -- DISCOUNT_SHOP = 17, --特惠商城
  82. -- CLOUD_SHOPPING = 18, --云购
  83. -- EUDEMONS_ATTACK = 19, --幻兽入侵
  84. -- BRAVE_GUILD = 24, --勇者盟约
  85. -- PERFECT_LOVER = 25, --完美恋人
  86. -- KILL_BOSS_FIRST = 26, --BOSS首杀
  87. -- GUILD_COMPETE = 27, --社团争霸
  88. -- ACT_BOSS = 20, --活动boss
  89. -- ACTIVITY_EXCHANGE = 21, --活动兑换
  90. -- ACT_RED_BAG = 29, --活动红包
  91. -- LUCKY_ACC = 31, --幸运鉴宝
  92. -- I_LOVE_GODDESS = 32, --我爱女神
  93. -- KING_AND_QUEEN = 34, --充值消费
  94. -- ZERO_GIFT = 36, --0元豪礼
  95. -- KF_YG_ZS = 37, --跨服云购(消耗彩钻)
  96. -- KF_YG_BZ = 38, --跨服云购(消耗红钻)
  97. -- CONTINUE_CONSUME = 40, --连续消费
  98. -- FUNC_CONSUMABLE = 41, --巨折献礼
  99. -- BOUTIQUE_SALE = 42, --精品特卖
  100. -- LUCKY_CARD = 35, --幸运翻牌
  101. -- ACTIVE_TURNPLATE = 43, --活跃转盘
  102. -- COMBINE_GUILD_COMPETE = 44, --合服社团争霸
  103. -- PIGEON_LETTER = 45, --白鸽送信
  104. -- VALUE_INVEST = 46, --超值投资
  105. -- NEW_DAILY_RECHARGE = 47, --每日累充
  106. -- SINGLE_RECHARGE = 48, --每日单笔充值
  107. -- KF_EARN = 49, --开服赚赚
  108. -- QIXI_TURNTABLE = 50, --七夕转盘
  109. -- QIXI_TICKET = 51, --七夕抽奖
  110. -- ONLINE_TIME = 54, --累计在线
  111. -- EVERYDAY_LIVELY = 56, --每日活跃
  112. -- FIREWORKS = 22, --烟花盛典
  113. -- HAPPYTURNTABLE = 55, --周一大放送
  114. -- Repeat_Recharge = 57, --重复充值领奖
  115. -- Recharge_Dial = 58, --充值转盘活动
  116. -- EVERYDAY_TARGET = 59, --每日目标
  117. -- GROWTH_INTEGRAL = 60, --成长积分
  118. -- JOY_WISH = 61, --欢乐许愿
  119. -- HONOUR_WAR = 62, --荣耀战神
  120. -- VIP_SALE = 63, --vip特惠
  121. }
  122. CustomActivityModel.CustomIconActType = {
  123. KfAct = 1,--开服活动
  124. JcAct = 3,--精彩活动
  125. OpAct = 6,--主题活动
  126. GiftAct = 7,--礼包活动
  127. }
  128. --云购类型
  129. CustomActivityModel.CloudShoppingType = {
  130. BenFu = 0, --本服
  131. KuaFu = 1, --跨服
  132. }
  133. --通用活动红点类型
  134. CustomActivityModel.ComActRedType = {
  135. Day = 1, --每日
  136. Once = 2, --每次活动一次
  137. }
  138. CustomActivityModel.FIRST_RECHARGE_TIP_TASK_ID = 10180--首充tip弹窗
  139. CustomActivityModel.FIRST_RECHARGE_TASK_ID = 11456--首充弹窗
  140. CustomActivityModel.CAT_FOTANA_TASK_ID = 10330--招财猫
  141. CustomActivityModel.SEVEN_LOGIN_TASK_ID = 10760--七日登陆
  142. CustomActivityModel.VIP_EX_CARD_TASK_ID = 11210--VIP体验卡任务ID
  143. CustomActivityModel.VIP_THREE_TASK_ID_LIST = {10800,11535}--V3弹窗
  144. CustomActivityModel.ZERO_GIFT_OPEN_lEVEL = {{1,72},{2,155}}--0元礼包{活动子类型sub_type,等级level}
  145. CustomActivityModel.PROTO_CCMD_EVENT = "PROTO_CCMD_EVENT" --发送协议
  146. CustomActivityModel.UPDATE_ACTIVITY_INFO = "CustomActivityModel.UPDATE_ACTIVITY_INFO"--更新活动信息
  147. CustomActivityModel.UPDATE_ACTIVITY_RED_AWARD_INFO = "CustomActivityModel.UPDATE_ACTIVITY_RED_AWARD_INFO"--更新活动红点奖励信息
  148. function CustomActivityModel:__init()
  149. CustomActivityModel.Instance = self
  150. self:ResetInfo()
  151. end
  152. function CustomActivityModel:getInstance()
  153. if CustomActivityModel.Instance == nil then
  154. CustomActivityModel.New()
  155. end
  156. return CustomActivityModel.Instance
  157. end
  158. --初始化信息
  159. function CustomActivityModel:ResetInfo()
  160. self.act_reward_list = {}
  161. self.act_list = {}
  162. self.bool_now_throw_egg = false
  163. self.acc_consume_list = {} --累计消费信息
  164. self.cache_chuanwen = {} --传闻缓存列表
  165. self.fly_in_goods_cache = {}--飞入物品缓存
  166. self.act_com_red_award_info = {}--活动奖励数据
  167. self.online_time_mul = 1 --累计在线奖励倍数
  168. self.can_fly_goods = true
  169. self.pellet_validation_data = nil -- 弹珠机数据验证缓存
  170. end
  171. function CustomActivityModel:__delete()
  172. self:ResetInfo()
  173. end
  174. --解析活动图标位置信息
  175. function CustomActivityModel:ParseIconPosCfg( pos_cfg )
  176. local new_cfg = DeepCopy(pos_cfg)
  177. local open_day = ServerTimeModel:getInstance():GetOpenServerDay()
  178. if new_cfg.day_change and new_cfg.day_change<=open_day then
  179. new_cfg = new_cfg.day_pos_cfg
  180. end
  181. return new_cfg
  182. end
  183. --处理协议进来的数据
  184. function CustomActivityModel:handleActVo(vo, bool_reset,is_preview)
  185. local pos_list = Config.ConfigFunctionIcon.ActPosIndex
  186. if bool_reset then
  187. --初始化数据
  188. self.act_list = {}
  189. -- OperateActivityModel:getInstance():clearOperateAllActRedDotShow()
  190. -- KfActivityModel:getInstance():clearKfAllActRedDotShow()
  191. end
  192. KfActivityModel:getInstance():ResetActGuideCache()
  193. local open_day = ServerTimeModel:getInstance():GetOpenServerDay()
  194. local level = RoleManager.Instance.mainRoleInfo.level
  195. local close_level = 9999
  196. for i,v in pairs(vo.list) do
  197. v.condition_list = ErlangParser:GetInstance():Parse(v.condition)
  198. if v.base_type == CustomActivityModel.CustomActBaseType.ZERO_GIFT
  199. or v.base_type == CustomActivityModel.CustomActBaseType.LIMIT_GIFT
  200. then--0元礼包要提前修改活动类型
  201. for kk,vv in pairs(v.condition_list) do
  202. if vv[1] == "act_type" then
  203. if vv[2] and vv[2][2] then
  204. if open_day >= tonumber(vv[2][2][1]) and open_day <= tonumber(vv[2][2][2]) then
  205. v.act_type = tonumber(vv[2][1])
  206. end
  207. end
  208. if vv[3] and vv[3][2] then
  209. if open_day >= tonumber(vv[3][2][1]) and open_day <= tonumber(vv[3][2][2]) then
  210. v.act_type = tonumber(vv[3][1])
  211. end
  212. end
  213. end
  214. end
  215. end
  216. if v.base_type == CustomActivityModel.CustomActBaseType.OPERATE_ACTIVITY then
  217. for kk,vv in pairs(v.condition_list) do
  218. if vv[1] == "close_lv" then
  219. close_level = tonumber(vv[2])
  220. end
  221. end
  222. end
  223. self:setActToList(v)
  224. --处理请求奖励状态[通用]
  225. self:Fire(CustomActivityModel.PROTO_CCMD_EVENT, 33104, v.base_type, v.sub_type)
  226. --每个活动各自处理
  227. if v.base_type == CustomActivityModel.CustomActBaseType.LIMIT_GIFT then--限购礼包现在和开服活动一样了 只有一个图标
  228. -- local icon_data = {vo = v, module_id = 331,sub_id = 3,icon_res_repath = nil,name = "限购礼包"}
  229. -- self:CreateIconCfg(icon_data)
  230. -- LimitGiftModel:getInstance():Fire(LimitGiftModel.REQUEST_INFO,33172, v.base_type, v.sub_type)
  231. elseif v.base_type == CustomActivityModel.CustomActBaseType.FORTUNE_CAT then -- 招财猫
  232. local pos_cfg = self:ParseIconPosCfg(pos_list[64])
  233. local icon_data = {vo = v, module_id = 331, sub_id = 64, sub_location = pos_cfg.line, pos_index = pos_cfg.row_index, icon_res_repath = "icon_331_64", name = "招财猫"}
  234. self:CreateIconCfg(icon_data)
  235. FortuneCatModel:getInstance():Fire(FortuneCatModel.REQUEST_CCMD_EVENT, 33219)
  236. FortuneCatModel:getInstance():Fire(FortuneCatModel.REQUEST_CCMD_EVENT, 33220, v.base_type, v.sub_type)
  237. FortuneCatModel:getInstance():Fire(FortuneCatModel.REQUEST_CCMD_EVENT, 33222, v.base_type, v.sub_type)
  238. elseif v.base_type == CustomActivityModel.CustomActBaseType.RUSH_RANK then -- 开服冲榜
  239. local rank_type_list = KfActivityModel:getInstance():GetTodayRankType()
  240. for n,l in pairs(rank_type_list) do
  241. KfActivityModel:getInstance():Fire(KfActivityModel.REQUEST_INFO, 22501, l, v.sub_type)
  242. end
  243. KfActivityModel:getInstance():Fire(KfActivityModel.REQUEST_INFO, 22502, v.sub_type)
  244. elseif v.base_type == CustomActivityModel.CustomActBaseType.SINGLE_RECHARGE then--单笔充值
  245. CustomActivityModel:getInstance():Fire(CustomActivityModel.PROTO_CCMD_EVENT, 33611, v.base_type, v.sub_type)
  246. elseif v.base_type == CustomActivityModel.CustomActBaseType.GUILD_SPEED then -- 社团竞榜
  247. GuildSpeedModel:getInstance():CheckIconBoolOpen()
  248. GuildSpeedModel:getInstance():Fire(GuildSpeedModel.REQUEST_INFO,40700)
  249. GuildSpeedModel:getInstance():Fire(GuildSpeedModel.REQUEST_INFO,40701)
  250. GuildSpeedModel:getInstance():Fire(GuildSpeedModel.REQUEST_INFO,40703)
  251. for i=1,4 do
  252. GuildSpeedModel:getInstance():Fire(GuildSpeedModel.REQUEST_INFO,40704,i)
  253. end
  254. elseif v.base_type == CustomActivityModel.CustomActBaseType.ZERO_GIFT then--0元礼包
  255. KfActivityModel:getInstance():Fire(KfActivityModel.REQUEST_INFO,33185,v.base_type,v.sub_type)
  256. elseif v.base_type == CustomActivityModel.CustomActBaseType.MOBILIZATION then--全民动员
  257. local icon_res_repath = "icon_331_71"
  258. local open_day = ServerTimeModel:getInstance():GetOpenServerDay()
  259. if open_day>= 8 then
  260. icon_res_repath = "icon_331_71_2"
  261. end
  262. local pos_cfg = self:ParseIconPosCfg(pos_list[71])
  263. local icon_data = {vo = v, module_id = 331, sub_location = 3, sub_id = 71, sub_location = pos_cfg.line, pos_index = pos_cfg.row_index, icon_res_repath = "icon_331_71", name = "全民动员"}
  264. self:CreateIconCfg(icon_data)
  265. elseif v.base_type == CustomActivityModel.CustomActBaseType.KF_GROUP_BUYING then--团购活动
  266. MobilizationModel:getInstance():Fire(MobilizationModel.UPDATE_MOBILIZATION_VIEW,nil,true)
  267. elseif v.base_type == CustomActivityModel.CustomActBaseType.DAILY_RECHARGE then--每日累充
  268. local pos_cfg = self:ParseIconPosCfg(pos_list[6])
  269. local icon_data = {vo = v, module_id = 331, sub_id = 6,sub_location = pos_cfg.line, pos_index = pos_cfg.row_index, icon_res_repath = "icon_331_6", name = "每日累充", effect_name = "ui_bianqiang"}
  270. self:CreateIconCfg(icon_data)
  271. RechargeActivityModel:getInstance():Fire(RechargeActivityModel.REQUEST_CCMD_EVENT, 15955, v.sub_type)
  272. RechargeActivityModel:getInstance():Fire(RechargeActivityModel.REQUEST_CCMD_EVENT, 15956, v.sub_type)
  273. CustomActivityModel:getInstance():Fire(CustomActivityModel.PROTO_CCMD_EVENT, 33180)
  274. elseif v.base_type == CustomActivityModel.CustomActBaseType.ADVERTISEMENT then -- 活动广告
  275. AdvertisementModel:getInstance():CheckAd(v)
  276. elseif v.base_type == CustomActivityModel.CustomActBaseType.MONOPOLY then --大富翁
  277. KfActivityModel:getInstance():Fire(KfActivityModel.REQUEST_INFO,33228,v.sub_type)
  278. elseif v.base_type == CustomActivityModel.CustomActBaseType.CONTRACT then --万物宝典
  279. ContractModel:getInstance():Fire(ContractConst.REQ_BASIC_DATA,v.sub_type)
  280. ContractModel:getInstance():Fire(ContractConst.REQ_TASK_PROCESS,v.sub_type)
  281. elseif v.base_type == CustomActivityModel.CustomActBaseType.OPERATE_ACTIVITY then --主题活动
  282. local pos_index = 99000 + v.sub_type
  283. local pos_cfg = self:ParseIconPosCfg(pos_list[pos_index] or {line = 3,row_index = 9 + v.sub_type/10})
  284. local icon_data = {vo = v, module_id = 331, sub_id = 99, sub_location = pos_cfg.line, pos_index = pos_cfg.row_index, icon_res_repath = "icon_154_2", name = "活动图标", effect_name = "ui_bianqiang",}
  285. self:CreateIconCfg(icon_data)
  286. elseif v.base_type == CustomActivityModel.CustomActBaseType.HIGH_POINT then --嗨点活动
  287. KfActivityModel:getInstance():Fire(KfActivityModel.REQUEST_INFO, 33140,v.base_type,v.sub_type)--这里放在33104后面请求
  288. elseif v.base_type == CustomActivityModel.CustomActBaseType.BOSS_TREASURE then --幻魔宝典
  289. KfBossTreasureModel:getInstance():Fire(KfBossTreasureConst.REQ_BASIC_DATA,v.sub_type)
  290. KfBossTreasureModel:getInstance():Fire(KfBossTreasureConst.REQ_TASK_PROCESS,v.sub_type)
  291. KfBossTreasureModel:getInstance():Fire(KfBossTreasureConst.REQ_REWARD_INFO,v.sub_type)
  292. elseif v.base_type == CustomActivityModel.CustomActBaseType.INVEST_ACT then -- 投资活动
  293. KfActivityModel:getInstance():Fire(KfActivityModel.REQUEST_INFO, 33141, v.sub_type)
  294. CustomActivityModel:getInstance():Fire(CustomActivityModel.PROTO_CCMD_EVENT, 33611, v.base_type, v.sub_type)
  295. elseif v.base_type == CustomActivityModel.CustomActBaseType.LUCKY_TURNTABLE then --幸运转盘
  296. OperateActivityModel:getInstance():Fire(OperateActivityModel.REQUEST_INFO, 33202, v.sub_type, 1)
  297. OperateActivityModel:getInstance():Fire(OperateActivityModel.REQUEST_INFO, 33202, v.sub_type, 2)
  298. elseif v.base_type == CustomActivityModel.CustomActBaseType.SCRAPING_CRAD then --刮刮乐
  299. OperateActivityModel:getInstance():ScrapingCardInitCfg(v)
  300. elseif v.base_type == CustomActivityModel.CustomActBaseType.LIMIT_SECKILL then --限时秒杀
  301. KfActivityModel:getInstance().is_open_limit_seckill_view = false
  302. KfActivityModel:getInstance():Fire(KfActivityModel.REQUEST_INFO, 33141, v.sub_type)
  303. KfActivityModel:getInstance():Fire(KfActivityModel.REQUEST_INFO, 33187, v.sub_type)
  304. KfActivityModel:getInstance():IsNeedRed(KfActivityModel.TabID.LimitSeckill,nil,v.sub_type)
  305. elseif v.base_type == CustomActivityModel.CustomActBaseType.GET_LUCKY_BAG or
  306. v.base_type == CustomActivityModel.CustomActBaseType.GET_RED_BAG then --抢红包/福袋
  307. KfActivityModel:getInstance():SetLuckyBagData(v.base_type, v.condition_list)
  308. elseif v.base_type == CustomActivityModel.CustomActBaseType.HAPPY_RED_BAG then--惊喜红包
  309. KfActivityModel:getInstance():Fire(KfActivityModel.REQUEST_INFO, 33250, v.sub_type)
  310. elseif v.base_type == CustomActivityModel.CustomActBaseType.DISCOUNT_FULL_CUT then--折扣满减
  311. KfActivityModel:getInstance():Fire(KfActivityModel.REQUEST_INFO, 33126, v.sub_type)
  312. if v.is_first_open then
  313. KfActivityModel:getInstance():AddKfDiscountFullCutNewOpenRedDot(v.sub_type,true)
  314. end
  315. elseif v.base_type == CustomActivityModel.CustomActBaseType.TAROT then --塔罗牌
  316. OperateActivityModel:getInstance():SetTarotCfg(v)
  317. elseif v.base_type == CustomActivityModel.CustomActBaseType.COM_RANK then--通用排行
  318. KfActivityModel:getInstance():Fire(KfActivityModel.REQUEST_INFO, 33169, v.base_type, v.sub_type)
  319. elseif v.base_type == CustomActivityModel.CustomActBaseType.STAGE_EXCHANGE then --阶段兑换
  320. OperateActivityModel:getInstance():Fire(OperateActivityModel.REQUEST_INFO, 33260, v.sub_type)
  321. elseif v.base_type == CustomActivityModel.CustomActBaseType.ADVENTURE then --冒险征途
  322. OperateActivityModel:getInstance():Fire(OperateActivityModel.REQUEST_INFO, 33263, v.sub_type)
  323. OperateActivityModel:getInstance():Fire(OperateActivityModel.REQUEST_INFO, 33265, v.sub_type)
  324. elseif v.base_type == CustomActivityModel.CustomActBaseType.MONEY_COPY then --彩钻复制机
  325. KfActivityModel:getInstance():Fire(KfActivityModel.REQUEST_INFO, 33131, v.sub_type)
  326. elseif v.base_type == CustomActivityModel.CustomActBaseType.REVERSI then --黑白棋抽奖
  327. OperateActivityModel:getInstance():Fire(OperateActivityModel.REQUEST_INFO, 33266, v.sub_type)
  328. OperateActivityModel:getInstance():Fire(OperateActivityModel.REQUEST_INFO, 33268, v.sub_type)
  329. OperateActivityModel:getInstance():Fire(OperateActivityModel.REQUEST_INFO, 33269, v.sub_type)
  330. elseif v.base_type == CustomActivityModel.CustomActBaseType.FESTIVAL_BOSS then --节日幻魔
  331. BossModel:GetInstance():Fire(BossConst.REQ_DESERTED_BOSS_SCMD, 46026)
  332. elseif v.base_type == CustomActivityModel.CustomActBaseType.JIGSAW then -- 活跃拼图
  333. OperateActivityModel:getInstance():Fire(OperateActivityModel.REQUEST_INFO, 33153, v.sub_type)
  334. elseif v.base_type == CustomActivityModel.CustomActBaseType.THREE_FIGHT then -- 三日作战
  335. OperateActivityModel:getInstance():Fire(OperateActivityModel.REQUEST_INFO, 33275, v.sub_type)
  336. elseif v.base_type == CustomActivityModel.CustomActBaseType.LOGIN_PASS then -- 登陆通行证
  337. KfActivityModel:getInstance():Fire(KfActivityModel.REQUEST_INFO, 33283, v.base_type, v.sub_type)
  338. KfActivityModel:getInstance():Fire(KfActivityModel.REQUEST_INFO, 33286, v.base_type, v.sub_type)
  339. elseif v.base_type == CustomActivityModel.CustomActBaseType.LIVELY_PASS then -- 活跃通行证
  340. KfActivityModel:getInstance():Fire(KfActivityModel.REQUEST_INFO, 33283, v.base_type, v.sub_type)
  341. KfActivityModel:getInstance():Fire(KfActivityModel.REQUEST_INFO, 33286, v.base_type, v.sub_type)
  342. elseif v.base_type == CustomActivityModel.CustomActBaseType.COMPOSE_ROBOT then -- 合成机
  343. OperateActivityModel:getInstance():Fire(OperateActivityModel.REQUEST_INFO, 33294, v.sub_type)
  344. OperateActivityModel:getInstance():Fire(OperateActivityModel.REQUEST_INFO, 33296, v.sub_type)
  345. --活动开了之后给一次红点,点开之后取消红点,所以这里要记录一个红点状态
  346. OperateActivityModel:getInstance():SetComposeRobotActFirstRed(v.sub_type)
  347. elseif v.base_type == CustomActivityModel.CustomActBaseType.SELECT_EGG then --自选扭蛋
  348. OperateActivityModel:getInstance():Fire(OperateActivityModel.REQUEST_INFO, 33600, v.sub_type)
  349. CustomActivityModel:getInstance():Fire(CustomActivityModel.PROTO_CCMD_EVENT, 33611, v.base_type, v.sub_type)
  350. elseif v.base_type == CustomActivityModel.CustomActBaseType.JUMP_ONE then --跳一跳
  351. local pos_cfg = self:ParseIconPosCfg(pos_list[121])
  352. local icon_data = {vo = v, module_id = 331, sub_id = 121, sub_location = pos_cfg.line, pos_index = pos_cfg.row_index, icon_res_repath = "icon_459_0", name = "跳一跳"}
  353. self:CreateIconCfg(icon_data)
  354. JumpOneModel.getInstance():SetActCfg(v)
  355. JumpOneModel:getInstance():Fire(JumpOneModel.REQUEST_INFO, 45901, v.sub_type)
  356. elseif v.base_type == CustomActivityModel.CustomActBaseType.MAINLAND_JOURNEY then--大陆征途
  357. local pos_cfg = self:ParseIconPosCfg(pos_list[50])
  358. local icon_data = {vo = v, module_id = 331, sub_id = 50, sub_location = pos_cfg.line, pos_index = pos_cfg.row_index, icon_res_repath = "icon_331_50", name = "大陆征途"}
  359. self:CreateIconCfg(icon_data)
  360. --logWarn('=======Msh:CustomActivityModel.lua[296]=======')
  361. --PrintTable(v)
  362. MainlandJourneyModel:getInstance():CheckIconBoolOpen()
  363. MainlandJourneyModel:getInstance():InitConfigJourneyAward(v.stime)
  364. MainlandJourneyModel:getInstance():InitActData(v)
  365. MainlandJourneyModel:getInstance():Fire(MainlandJourneyConst.REQUEST_CCMD_EVENT, 13800, v.sub_type, 0)
  366. elseif v.base_type == CustomActivityModel.CustomActBaseType.MATERIAL_SUBMIT then--材料上交
  367. OperateActivityModel:getInstance():Fire(OperateActivityModel.REQUEST_INFO, 14100, v.sub_type)
  368. elseif v.base_type == CustomActivityModel.CustomActBaseType.ACTIVITY_ICON_DESC then--活动图标说明
  369. ActivityIconManager:getInstance():SetActivityIconCustomDescInfo(v)
  370. elseif v.base_type == CustomActivityModel.CustomActBaseType.SAKURA_GIFT then --源樱之礼
  371. local pos_cfg = self:ParseIconPosCfg(pos_list[20])
  372. local icon_data = {vo = v, module_id = 331, sub_id = 20, sub_location = pos_cfg.line, pos_index = pos_cfg.row_index, icon_res_repath = "icon_331_20", name = "源樱之礼"}
  373. self:CreateIconCfg(icon_data)
  374. SakuraGiftModel:getInstance():Fire(SakuraGiftModel.REQUEST_CCMD_EVENT,33400, v.sub_type)
  375. SakuraGiftModel:getInstance():Fire(SakuraGiftModel.REQUEST_CCMD_EVENT,33403, v.sub_type)
  376. SakuraGiftModel:getInstance():CheckIconBoolOpen(v.sub_type)
  377. elseif v.base_type == CustomActivityModel.CustomActBaseType.CONTINUE_RECHARGE then --连充豪礼
  378. KfActivityModel:getInstance():Fire(KfActivityModel.REQUEST_INFO,33145,v.sub_type)
  379. CustomActivityModel:getInstance():Fire(CustomActivityModel.PROTO_CCMD_EVENT, 33611, v.base_type, v.sub_type)
  380. elseif v.base_type == CustomActivityModel.CustomActBaseType.POWER_TURNTABLE then --源能转盘
  381. local pos_cfg = self:ParseIconPosCfg(pos_list[11])
  382. local icon_data = {vo = v, module_id = 331, sub_id = 11, sub_location = pos_cfg.line, pos_index = pos_cfg.row_index, icon_res_repath = "icon_331_11", name = "源能转盘"}
  383. self:CreateIconCfg(icon_data)
  384. PowerTurnTableModel:getInstance():Fire(PowerTurnTableModel.REQUEST_INFO,33501,v.sub_type)
  385. PowerTurnTableModel:getInstance():Fire(PowerTurnTableModel.REQUEST_INFO,33502,v.sub_type)
  386. elseif v.base_type == CustomActivityModel.CustomActBaseType.ACT_GUIDE then -- 指引
  387. --if act_guide_first then
  388. -- act_guide_first = false
  389. -- KfActivityModel:getInstance():ResetActGuideCache()
  390. --end
  391. KfActivityModel:getInstance():SetActGuideCache(v)
  392. end
  393. end
  394. if close_level <= RoleManager.Instance.mainRoleInfo.level then
  395. self:UpdateActIconInfoActType()
  396. end
  397. end
  398. --检测情况
  399. function CustomActivityModel:checkAllOpen(base_type,sub_type)
  400. if base_type == CustomActivityModel.CustomActBaseType.OPERATE_ACTIVITY then--主题活动
  401. KfActivityModel:getInstance():CheckActIconBoolOpen(sub_type)
  402. elseif base_type == CustomActivityModel.CustomActBaseType.POWER_TURNTABLE then--源能转盘
  403. PowerTurnTableModel:getInstance():CheckPowerTurnTableIconBoolOpen(sub_type)
  404. elseif base_type == CustomActivityModel.CustomActBaseType.MERCENARY_SUPPLY then--佣兵限购
  405. MercenarySupplyModel:getInstance():CheckIconBoolOpen()
  406. elseif base_type == CustomActivityModel.CustomActBaseType.GUILD_SPEED then--公会竞速
  407. GuildSpeedModel:getInstance():CheckIconBoolOpen()
  408. elseif base_type == CustomActivityModel.CustomActBaseType.ACTIVITY_ICON_DESC then--公会竞速
  409. ActivityIconManager:getInstance():RefreshActivityIconCustomDescInfo(sub_type)
  410. elseif base_type == CustomActivityModel.CustomActBaseType.LIMIT_GIFT or base_type == CustomActivityModel.CustomActBaseType.ZERO_GIFT then--限购礼包 0元礼包需要检查活图标开启
  411. KfActivityModel:getInstance():CheckActIconBoolOpen(4)--礼包类型检查一下
  412. elseif base_type == CustomActivityModel.CustomActBaseType.MOBILIZATION then
  413. MobilizationModel:getInstance():Fire(MobilizationModel.REQUEST_INFO,33225,sub_type)
  414. MobilizationModel:getInstance():CheckIconBoolOpen(sub_type)
  415. elseif base_type == CustomActivityModel.CustomActBaseType.DAILY_RECHARGE then--每日累充
  416. RechargeActivityModel:getInstance():CheckDailyRechargeMainIconOpen(sub_type)
  417. elseif base_type == CustomActivityModel.CustomActBaseType.FORTUNE_CAT then--招财猫
  418. FortuneCatModel:getInstance():CheckEventOpen(base_type,sub_type)
  419. elseif base_type == CustomActivityModel.CustomActBaseType.ACT_GUIDE then -- 活动引导
  420. print('=======Msh:CustomActivityModel.lua[440] ==666666666=====')
  421. self:Fire(CustomActivityModel.UPDATE_ACTIVITY_INFO, base_type)
  422. end
  423. -- KfActivityModel:getInstance():CheckIconBoolOpen()--开服活动
  424. end
  425. --过期删除活动信息
  426. function CustomActivityModel:clearActInfo(vo)
  427. for k,v in pairs(vo.list) do
  428. KfActivityModel:getInstance():ClearActRedDotInfo(v.base_type,v.sub_type)
  429. if v.base_type == CustomActivityModel.CustomActBaseType.ZERO_GIFT then
  430. --还没领完的0元礼包活动不删掉,这个时候数据不新,判断不了0元礼包状态,直接一个33101请求全部
  431. self:Fire(CustomActivityModel.PROTO_CCMD_EVENT, 33101)
  432. else
  433. if self.act_list[v.base_type] then
  434. self.act_list[v.base_type][v.sub_type] = nil
  435. end
  436. if self.act_list[v.base_type] and IsTableEmpty(self.act_list[v.base_type]) then
  437. self.act_list[v.base_type] = nil
  438. end
  439. -- --清楚外部图标特殊
  440. if self:ISSpacielIconDelete(v.base_type,v.sub_type) then
  441. ActivityIconManager:getInstance():deleteIcon(self:ISSpacielIconDelete(v.base_type,v.sub_type),true)
  442. end
  443. end
  444. self:checkAllOpen(v.base_type,v.sub_type)
  445. end
  446. end
  447. function CustomActivityModel:ISSpacielIconDelete( base_type,sub_type )
  448. return nil
  449. end
  450. --保存活动列表
  451. function CustomActivityModel:setActToList(vo)
  452. self.act_list[vo.base_type] = self.act_list[vo.base_type] or {}
  453. self.act_list[vo.base_type][vo.sub_type] = vo
  454. end
  455. --获取活动信息[可用于判断活动是否存在]
  456. function CustomActivityModel:getActList(base_type, sub_type)
  457. if self.act_list[base_type] then
  458. local sub_index = sub_type or self:getActMinSubType(base_type)
  459. return self.act_list[base_type][sub_index]
  460. end
  461. end
  462. --得到活动的条件信息
  463. function CustomActivityModel:getActCondition( base_type, sub_type, name )
  464. local act_list = self:getActList(base_type, sub_type)
  465. if act_list and act_list.condition_list then
  466. for k,v in ipairs(act_list.condition_list) do
  467. if Trim(v[1]) == name then
  468. return v[2]
  469. end
  470. end
  471. end
  472. return nil
  473. end
  474. --获取全部活信息
  475. function CustomActivityModel:getAllActList()
  476. return self.act_list
  477. end
  478. --获取一个主类型的所有活动信息
  479. function CustomActivityModel:getAllActListByBaseType(base_type)
  480. return self.act_list[base_type] or {}
  481. end
  482. --获取当前活动最新子类型[支持多开的活动,不能使用这个方法来取子类型,传入act_type会判断埋活动类型]
  483. function CustomActivityModel:getActMinSubType(base_type,act_type)
  484. if base_type and self.act_list[base_type] then
  485. local sub_type_list = {}
  486. for k,v in pairs(self.act_list[base_type]) do
  487. table.insert(sub_type_list, v.sub_type)
  488. end
  489. local function sort_func(a, b)
  490. return a < b
  491. end
  492. table.sort(sub_type_list, sort_func)
  493. return sub_type_list[1] or 0
  494. else
  495. return 0
  496. end
  497. end
  498. --获取活动类型[0不是活动]
  499. function CustomActivityModel:getActType(base_type, sub_type)
  500. local list = self:getActList(base_type, sub_type)
  501. if list then
  502. return list.act_type
  503. else
  504. --默认活动类型
  505. for key,v in pairs(Config.ConfigActStatic.ActTypeToAct) do
  506. for i,n in pairs(v) do
  507. if base_type == n then
  508. return key
  509. end
  510. end
  511. end
  512. return 0
  513. end
  514. end
  515. --保存活动奖励状态列表
  516. function CustomActivityModel:setActRewardList(vo)
  517. local list = DeepCopy(vo)
  518. list.bool_get = false --是否有领取[方便设置红点]
  519. for k,v in pairs(list.reward_list) do
  520. v.condition_list = ErlangParser:GetInstance():Parse(v.conditon)
  521. v.reward_info = self:ResolveRewardFormal(v.form_type, v.reward)
  522. v.bool_get = v.status == 1
  523. if v.bool_get and list.base_type ~= CustomActivityModel.CustomActBaseType.RECHARGE_GIFT then
  524. list.bool_get = true
  525. end
  526. end
  527. if vo.base_type == CustomActivityModel.CustomActBaseType.REWARD_SHOW and
  528. vo.sub_type == self:getActMinSubType(CustomActivityModel.CustomActBaseType.REWARD_SHOW) then
  529. list = self:DealRewardShowRewardList( vo )
  530. end
  531. self.act_reward_list[vo.base_type] = self.act_reward_list[vo.base_type] or {}
  532. self.act_reward_list[vo.base_type][vo.sub_type] = list
  533. self:Fire(CustomActivityModel.UPDATE_ACTIVITY_INFO, vo.base_type, vo.sub_type)--更新活动信息
  534. self:checkAllOpen(vo.base_type,vo.sub_type)
  535. end
  536. function CustomActivityModel:RefreshActSomeData( vo )
  537. if self.act_reward_list and self.act_reward_list[vo.base_type] and self.act_reward_list[vo.base_type][vo.sub_type] then
  538. for k,v in pairs(self.act_reward_list[vo.base_type][vo.sub_type].reward_list) do
  539. if v.grade == vo.grade then
  540. v.progress = vo.progress
  541. v.status = vo.status
  542. v.receive_times = vo.receive_times
  543. break
  544. end
  545. end
  546. -------------------------
  547. self:Fire(CustomActivityModel.UPDATE_ACTIVITY_INFO, vo.base_type, vo.sub_type)--更新活动信息
  548. self:checkAllOpen(vo.base_type,vo.sub_type)
  549. end
  550. end
  551. -- 外部设置活动bool_get
  552. function CustomActivityModel:SetActBoolGet(base_type,sub_type,bool)
  553. if base_type == nil or sub_type == nil then return end
  554. if not self.act_reward_list[base_type] or self.act_reward_list[base_type][sub_type] == nil then return end
  555. self.act_reward_list[base_type][sub_type].bool_get = bool
  556. end
  557. --解析奖励格式[每个类型的格式都不同,有新的格式需要在这里添加]
  558. function CustomActivityModel:ResolveRewardFormal(kind, reward)
  559. local list = ErlangParser:GetInstance():Parse(reward)
  560. local total_list = {}
  561. for i,v in ipairs(list) do
  562. local array = {}
  563. if kind == 1 then --通用奖励格式[{类型,道具id,数量}]
  564. array.goods_kind = tonumber(v[1])
  565. array.goods_id = tonumber(v[2])
  566. array.goods_count = tonumber(v[3])
  567. elseif kind == 2 then --玩家等级阶段奖励格式[{等级,[{类型,道具id,数量}]
  568. array.role_lv = tonumber(v[1])
  569. array.goods_list = {}
  570. for k,n in ipairs(v[2]) do
  571. local info = {}
  572. info.goods_kind = tonumber(n[1])
  573. info.goods_id = tonumber(n[2])
  574. info.goods_count = tonumber(n[3])
  575. array.goods_list[k] = info
  576. end
  577. elseif kind == 3 then --随机奖励格式[{权值,[{类型,道具id,数量}]}]
  578. array.weight = tonumber(v[1])
  579. array.goods_list = {}
  580. for k,n in ipairs(v[2]) do
  581. local info = {}
  582. info.goods_kind = tonumber(n[1])
  583. info.goods_id = tonumber(n[2])
  584. info.goods_count = tonumber(n[3])
  585. array.goods_list[k] = info
  586. end
  587. elseif kind == 4 then --世界等级阶段格式[{世界等级,[{类型,道具id,数量}]
  588. array.world_lv = tonumber(v[1])
  589. array.goods_list = {}
  590. for k,n in ipairs(v[2]) do
  591. local info = {}
  592. info.goods_kind = tonumber(n[1])
  593. info.goods_id = tonumber(n[2])
  594. info.goods_count = tonumber(n[3])
  595. array.goods_list[k] = info
  596. end
  597. elseif kind == 5 then --性别奖励格式[{性别,[{类型,道具id,数量}]
  598. array.sex = tonumber(v[1])
  599. array.goods_list = {}
  600. for k,n in ipairs(v[2]) do
  601. local info = {}
  602. info.goods_kind = tonumber(n[1])
  603. info.goods_id = tonumber(n[2])
  604. info.goods_count = tonumber(n[3])
  605. array.goods_list[k] = info
  606. end
  607. elseif kind == 6 then --天数奖励格式[{天数,[{类型,道具id,数量}]
  608. array.day_num = tonumber(v[1])
  609. array.goods_list = {}
  610. for k,n in ipairs(v[2]) do
  611. local info = {}
  612. info.goods_kind = tonumber(n[1])
  613. info.goods_id = tonumber(n[2])
  614. info.goods_count = tonumber(n[3])
  615. array.goods_list[k] = info
  616. end
  617. end
  618. total_list[i] = array
  619. end
  620. return total_list
  621. end
  622. --获取现阶段的奖励列表[如果要所有档次填0]
  623. function CustomActivityModel:getNowActRewardGoodsList(grade, base_type, sub_type)
  624. sub_type = sub_type or self:getActMinSubType(base_type)
  625. local act_reward_list = self:getOneActRewardList(base_type, sub_type)
  626. local real_goods_list = {}
  627. if act_reward_list then
  628. for k,v in pairs(act_reward_list.reward_list) do
  629. if grade == v.grade or grade == 0 then
  630. local form_type = v.form_type
  631. local reward_info = v.reward_info
  632. if form_type == 1 then --通用奖励格式
  633. real_goods_list = reward_info
  634. elseif form_type == 2 then --玩家等级阶段奖励格式
  635. for k,v in pairs(reward_info) do
  636. if RoleManager.Instance.mainRoleInfo.level == v.role_lv then
  637. real_goods_list = v.goods_list
  638. break
  639. end
  640. end
  641. elseif form_type == 3 then --随机奖励格式[这里真的是随机一个key值]
  642. local rand_num = math.random(1, TableSize(reward_info))
  643. real_goods_list = reward_info[rand_num].goods_list
  644. elseif form_type == 4 then --世界等级阶段格式
  645. local act_list = self:getActList(base_type, sub_type)
  646. if act_list and act_list.wlv then
  647. local function sort_func(a, b)
  648. return a.world_lv < b.world_lv
  649. end
  650. table.sort(reward_info, sort_func)
  651. for k,v in pairs(reward_info) do
  652. if act_list.wlv >= v.world_lv then
  653. real_goods_list = v.goods_list
  654. elseif act_list.wlv < v.world_lv then
  655. break
  656. end
  657. end
  658. end
  659. elseif form_type == 5 then --性别奖励格式
  660. for k,v in pairs(reward_info) do
  661. if RoleManager.Instance.mainRoleInfo.sex == v.sex then
  662. real_goods_list = v.goods_list
  663. break
  664. end
  665. end
  666. end
  667. end
  668. end
  669. end
  670. return real_goods_list
  671. end
  672. --活动活动奖励状态列表 获取到的是33104协议的数据
  673. function CustomActivityModel:getOneActRewardList(base_type, sub_type)
  674. if base_type == nil then return end
  675. sub_type = sub_type or self:getActMinSubType(base_type)
  676. if sub_type == nil then return end
  677. if self.act_reward_list[base_type] then
  678. return self.act_reward_list[base_type][sub_type]
  679. end
  680. end
  681. --处理活动领取成功[errcode返回的只有为1,所以不用考虑]
  682. function CustomActivityModel:handleSuccessGetReward(vo)
  683. --特殊处理提示
  684. if vo.base_type == CustomActivityModel.CustomActBaseType.DAILY_RECHARGE then
  685. Message.show("领取成功","success")
  686. elseif vo.base_type == CustomActivityModel.CustomActBaseType.CONTINUE_RECHARGE then--连充豪礼
  687. KfActivityModel:getInstance():Fire(KfActivityModel.REQUEST_INFO,33145,vo.sub_type)
  688. elseif vo.base_type == CustomActivityModel.CustomActBaseType.COLLECT_ZI then
  689. Message.show("兑换成功","success")
  690. elseif vo.base_type == CustomActivityModel.CustomActBaseType.KFACTIVITY_LIMIT_SHOP then--限购商城
  691. Message.show("购买成功","success")
  692. else
  693. Message.show("领取成功","success")
  694. end
  695. if not self:NoshowAwardBaseType(vo.base_type) then
  696. self:ShowAward(vo)
  697. end
  698. self:Fire(CustomActivityModel.PROTO_CCMD_EVENT, 33104, vo.base_type, vo.sub_type)
  699. end
  700. function CustomActivityModel:NoshowAwardBaseType( base_type )
  701. if base_type == CustomActivityModel.CustomActBaseType.KFACTIVITY_LIMIT_SHOP
  702. or base_type == CustomActivityModel.CustomActBaseType.KF_GROUP_BUYING
  703. or base_type == CustomActivityModel.CustomActBaseType.COLLECT_ZI
  704. or base_type == CustomActivityModel.CustomActBaseType.HOPE_GIFT
  705. or base_type == CustomActivityModel.CustomActBaseType.FOSTER_STAGE
  706. or base_type == CustomActivityModel.CustomActBaseType.ACC_CONSUME
  707. then
  708. return true
  709. end
  710. return false
  711. end
  712. --展示奖励获得
  713. function CustomActivityModel:ShowAward( vo )
  714. local award_data = CustomActivityModel:getInstance():getOneActRewardList(vo.base_type,vo.sub_type)
  715. if award_data and award_data.reward_list then
  716. local award_info = nil
  717. for i,v in ipairs(award_data.reward_list) do
  718. if v.grade == vo.grade then
  719. local award = v.reward_info
  720. if #award > 0 then
  721. local new_award_list = {}
  722. for n,l in ipairs(award) do
  723. new_award_list[#new_award_list + 1] = {l.goods_kind, l.goods_id, l.goods_count}
  724. end
  725. GiftModel:getInstance():Fire(GiftModel.OPEN_SHOW_ACT_GOODS_VIEW, new_award_list)
  726. break
  727. end
  728. end
  729. end
  730. end
  731. end
  732. -- 先缓存飞入的物品[使用时务必要重置一下]
  733. function CustomActivityModel:SetFlyInGoodsCache(goods_list)
  734. self.fly_in_goods_cache = {}
  735. if goods_list and next(goods_list) then
  736. for k,vo in pairs(DeepCopy(goods_list)) do
  737. local goodsVo = GoodsModel:getInstance().bag_goods_dic[vo.goods_id]
  738. if goodsVo then
  739. if vo.goods_num > goodsVo.goods_num then
  740. vo.is_fly_show = true
  741. end
  742. else
  743. vo.is_fly_show = true
  744. end
  745. table.insert(self.fly_in_goods_cache, vo)
  746. end
  747. end
  748. end
  749. --展示缓存的飞入物品
  750. function CustomActivityModel:ShowFlyInGoods()
  751. if self.fly_in_goods_cache and next(self.fly_in_goods_cache) then
  752. local fly_list = {}
  753. for k,vo in pairs(self.fly_in_goods_cache) do
  754. ItemUseModel:getInstance():HandleUseItem(vo, true)
  755. if vo.is_fly_show then
  756. table.insert(fly_list, vo.type_id)
  757. end
  758. end
  759. MainUIModel:getInstance():PlayGoodsFlyList(fly_list)
  760. GlobalEventSystem:Fire(EventName.CHECK_SHOW_ITEM_USE)
  761. end
  762. self.fly_in_goods_cache = {}
  763. end
  764. --添加传闻缓存
  765. function CustomActivityModel:AddCacheChuanWen(scmd, type)
  766. table.insert(self.cache_chuanwen, {scmd, type})
  767. end
  768. --播放缓存的传闻
  769. function CustomActivityModel:PlayCacheChuanwenShow()
  770. for i, v in ipairs(self.cache_chuanwen) do
  771. GlobalEventSystem:Fire(EventName.RECEIVE_NEW_CHUANWEN, v[1], v[2])
  772. end
  773. self.cache_chuanwen = {}
  774. end
  775. -- 缓存弹珠机的抽奖验证数据 33179
  776. function CustomActivityModel:SetPelletEventValidationData(vo)
  777. self.pellet_validation_data = vo
  778. end
  779. function CustomActivityModel:GetPelletEventValidationData( )
  780. return self.pellet_validation_data
  781. end
  782. --是不是限时物品
  783. function CustomActivityModel:GetGoodsLimit( base_type,sub_type,goods_id,grade )
  784. if not base_type then
  785. print("CustomActivityModel:GetGoodsLimit 没有填base_type")
  786. return false
  787. end
  788. if not sub_type then
  789. print("CustomActivityModel:GetGoodsLimit 没有填sub_type")
  790. return false
  791. end
  792. if not grade then
  793. print("CustomActivityModel:GetGoodsLimit 没有填grade")
  794. return false
  795. end
  796. local expire_time = false
  797. local list = self.limit_reward_list[base_type.."@"..sub_type]
  798. local key = grade.."@"..goods_id
  799. if list and list[key] then
  800. expire_time = list[key]
  801. end
  802. return expire_time
  803. end
  804. --创建图标配置(偷懒生气 再也不用在ConfigFunctionIcon创建一堆活动图标了)
  805. --self:CreateIconCfg({vo,Config.Moduleopenlv["331@35"].lv,5,"icon_rightTop_33135","VIP特惠礼包"})--创建一种资源的图标
  806. --self:CreateIconCfg({vo,Config.Moduleopenlv["331@35"].lv,6,nil,"VIP特惠礼包"})--创建多种资源的图标(资源看下面的创建方法构建图标资源名)
  807. function CustomActivityModel:CreateIconCfg( icon_data )
  808. if not icon_data or not icon_data.vo then return end
  809. local v = icon_data.vo
  810. local icon_res_repath = icon_data.icon_res_repath
  811. local name = icon_data.name
  812. local is_find = false
  813. local icon_sub_type_base = v.base_type*1000
  814. if v.sub_type >= 10001 then
  815. icon_sub_type_base = v.base_type*100000
  816. end
  817. local open_day = ServerTimeModel:getInstance():GetOpenServerDay()
  818. for kkk,vvv in ipairs(v.condition_list) do
  819. if vvv[1] == "icon" then
  820. if v.base_type == CustomActivityModel.CustomActBaseType.OPERATE_ACTIVITY then
  821. if v.act_type == CustomActivityModel.CustomIconActType.KfAct then--开服活动前7天读不同的图标
  822. if open_day <= 8 then
  823. icon_res_repath = string.format("icon_99_%s",v.base_type*1000 + open_day + 100)
  824. else
  825. icon_res_repath = string.format("icon_99_%s",tonumber(vvv[2]) + v.base_type*1000)
  826. end
  827. else
  828. icon_res_repath = string.format("icon_99_%s",tonumber(vvv[2]) + v.base_type*1000)
  829. end
  830. else
  831. icon_res_repath = string.format("icon_331_%s",v.base_type)
  832. end
  833. end
  834. end
  835. for kk,vv in pairs(ActivityIconManager:getInstance().icon_cfg_new_list) do
  836. local icon_type = icon_sub_type_base + v.sub_type
  837. if vv.icon_type == icon_type and icon_res_repath then
  838. local server_data = CustomActivityModel:getInstance():getActList(v.base_type, v.sub_type)
  839. vv.icon_name = icon_res_repath
  840. is_find = true
  841. break
  842. end
  843. end
  844. if not is_find then
  845. local icon_type = icon_sub_type_base + v.sub_type
  846. local icon_cfg = {name=name, icon_type = icon_type, module_id = icon_data.module_id, sub_id = icon_data.sub_id, sub_location = icon_data.sub_location or 3, pos_index = icon_data.pos_index or 99999, model_id = 331, icon_name = icon_res_repath, effect_name = icon_data.effect_name or "ui_bianqiang", not_delete = false, count_down_time = 0,act_base_type=true}
  847. ActivityIconManager:getInstance().icon_cfg_new_list[icon_type] = icon_cfg
  848. if not ActivityIconManager:getInstance().act_cfg[v.base_type] then
  849. ActivityIconManager:getInstance().act_cfg[v.base_type] = {}
  850. end
  851. ActivityIconManager:getInstance().act_cfg[v.base_type][v.sub_type] = icon_cfg
  852. end
  853. end
  854. --购买弹窗
  855. -- data = {
  856. -- gold_type,--货币类型
  857. -- cost_price,--消耗金额
  858. -- ok_callback,--成功
  859. -- toggle_function,--多选
  860. -- togglePriceStr,--提示语
  861. -- use_function,--最终调用
  862. -- diamond_nonuse,--红钻不足时不使用彩钻
  863. -- }
  864. function CustomActivityModel:BuyTips( buy_tip_data )
  865. if not buy_tip_data or not buy_tip_data.use_function then
  866. print("huangcong:购买数据不正确")
  867. return
  868. end
  869. local jin = RoleManager.Instance.mainRoleInfo.jin
  870. local jinLock = RoleManager.Instance.mainRoleInfo.jinLock
  871. if buy_tip_data.cost_price <= 0 then--免费就直接启动
  872. buy_tip_data.ok_callback()
  873. return
  874. end
  875. --这段是因为商城那里彩钻红钻不需要二次提示了 所以加的跳过流程 后来有人需要就看shopbuyview怎么搞的
  876. if buy_tip_data.skip_tip and
  877. ((buy_tip_data.gold_type == 1 and buy_tip_data.cost_price <= jin)
  878. or (buy_tip_data.gold_type == 2 and buy_tip_data.cost_price <= jinLock)) then
  879. buy_tip_data.ok_callback()
  880. return
  881. end
  882. if buy_tip_data.gold_type ~= 1 and buy_tip_data.gold_type ~= 2 then
  883. buy_tip_data.ok_callback()
  884. return
  885. end
  886. local function recharge_call_back( ... )--充值
  887. local args = {...}
  888. local use_lockjin = args[1]
  889. local ok = function ( )
  890. if buy_tip_data.recharge_open_call_back then
  891. buy_tip_data.recharge_open_call_back()
  892. end
  893. end
  894. -- 关闭道具tips
  895. UIToolTipMgr:getInstance():CloseGoodsTips()
  896. local qc_data = {
  897. price = buy_tip_data.cost_price - (use_lockjin and jinLock or 0),
  898. close_callback = ok,
  899. qc_type = buy_tip_data.qc_type or 0,
  900. }
  901. GlobalEventSystem:Fire(EventName.OPEN_RECHARGE_TIP_VIEW, true, qc_data)
  902. end
  903. local function invest_call_back( ... )--前往投资
  904. -- 关闭道具tips
  905. UIToolTipMgr:getInstance():CloseGoodsTips()
  906. OpenFun.Open(420,1)
  907. if buy_tip_data.invest_call_back then
  908. buy_tip_data.invest_call_back()
  909. end
  910. end
  911. --不足话先走这里的逻辑
  912. if buy_tip_data.gold_type == 1 then--彩钻
  913. if jin < buy_tip_data.cost_price then--彩钻不足
  914. recharge_call_back()
  915. return
  916. end
  917. elseif buy_tip_data.gold_type == 2 then--红钻
  918. if jinLock < buy_tip_data.cost_price then--红钻不足用彩钻补齐
  919. local ok = function ( )
  920. if jinLock + jin < buy_tip_data.cost_price then
  921. recharge_call_back(true)
  922. else
  923. buy_tip_data.ok_callback()
  924. end
  925. end
  926. local jin_type_img = WordManager:GetMoneyFaceStr( 1 )
  927. local jinLock_type_img = WordManager:GetMoneyFaceStr( 2 )
  928. local jin_type_name = GoodsModel:getInstance():getGoodsName(100000, false)
  929. local jinLock_type_name = GoodsModel:getInstance():getGoodsName(100001, false)
  930. if buy_tip_data.diamond_nonuse then
  931. local str = string.format("您的<color=#ff203a>%s不足</color>,还差<color=#ff203a> %s%s </color>,是否前往投资?",jinLock_type_name,jinLock_type_img,buy_tip_data.cost_price - jinLock)
  932. Alert.show(str, Alert.Type.Two, invest_call_back, nil, "前往投资", "取消")
  933. else
  934. local str = string.format("您的<color=#ff203a>%s不足</color>,是否使用<color=#fdffc2> %s%s </color>补全?",jinLock_type_name,jin_type_img,buy_tip_data.cost_price - jinLock)
  935. if VipModel:getInstance():HasBoughtAllInvestmentTypes() then -- 已经购买了全部的投资类型,则不提示前往投资
  936. Alert.show(str, Alert.Type.Two, ok, nil, "彩钻补全", "取消")
  937. else
  938. Alert.show(str, Alert.Type.Two, ok, invest_call_back, "彩钻补全", "前往投资")
  939. end
  940. end
  941. return
  942. end
  943. end
  944. local function callFuncSum( ... )--方法合集
  945. buy_tip_data.ok_callback()
  946. end
  947. local asset, source = WordManager:GetCommonMoneyIcon(buy_tip_data.gold_type)
  948. local toggle_tip_data = {
  949. gold_ab_res = asset,
  950. gold_res = source,
  951. price = buy_tip_data.cost_price,
  952. insufficientText = buy_tip_data.insufficientText or "",
  953. priceText = buy_tip_data.togglePriceStr,--string.format("<color=#fdffc2>%s</color> 购买商品",self.limit_cost)
  954. titleText = "提示",
  955. ok_callback = callFuncSum,
  956. no_need_toggle = buy_tip_data.no_need_toggle,
  957. toggle_function = buy_tip_data.toggle_function,
  958. is_complex_ok_callback = true,
  959. }
  960. buy_tip_data.use_function(toggle_tip_data,callFuncSum)
  961. end
  962. function CustomActivityModel:SetGoodsCanFly( bool )
  963. self.can_fly_goods = bool
  964. end
  965. function CustomActivityModel:GetGoodsCanFly( )
  966. return self.can_fly_goods
  967. end
  968. --获得活动展示配置
  969. function CustomActivityModel:GetActModelConShowCfg( base_type,fashion_type,model_res_id )
  970. local result = false
  971. if CustomActivityConst[base_type] then
  972. result = CustomActivityConst[base_type][0] or result
  973. if CustomActivityConst[base_type][fashion_type] then
  974. result = CustomActivityConst[base_type][fashion_type][0] or result
  975. if CustomActivityConst[base_type][fashion_type][model_res_id] then
  976. result = CustomActivityConst[base_type][fashion_type][model_res_id] or result
  977. end
  978. end
  979. end
  980. return DeepCopy(result)
  981. end
  982. function CustomActivityModel:DealRewardShowRewardList( vo )
  983. local list = DeepCopy(vo)
  984. --list.bool_get = false --是否有领取[方便设置红点]
  985. for k,v in pairs(list.reward_list) do
  986. v.condition_list = ErlangParser:GetInstance():Parse(v.conditon)
  987. for i, vv in ipairs(v.condition_list) do
  988. if vv[1] == "jump_link" then
  989. v.jump_link = {}
  990. v.jump_link[1] = vv[2][1]
  991. v.jump_link[2] = vv[2][2]
  992. elseif vv[1] == "role_lv" then
  993. v.role_lv = vv[2]
  994. elseif vv[1] == "tag" then
  995. v.tag = vv[2]
  996. end
  997. end
  998. v.reward_info = ErlangParser:GetInstance():Parse(v.reward)
  999. if v.reward_info[1][1] == "show_res" then
  1000. v.show_res = {}
  1001. v.show_res[1] = v.reward_info[1][2]
  1002. v.show_res[2] = v.reward_info[1][3]
  1003. end
  1004. --v.bool_get = v.status == 1
  1005. -- if v.bool_get and list.base_type ~= CustomActivityModel.CustomActBaseType.RECHARGE_GIFT then
  1006. -- list.bool_get = true
  1007. -- end
  1008. end
  1009. -- 按grade参数从小到大排序
  1010. local sort_func = function ( a, b )
  1011. return a.grade < b.grade
  1012. end
  1013. table.sort(list.reward_list, sort_func)
  1014. return list
  1015. end
  1016. --设置活动通用红点奖励信息
  1017. function CustomActivityModel:SetActComAwardInfo( scmd )
  1018. if not self.act_com_red_award_info[scmd.base_type] then
  1019. self.act_com_red_award_info[scmd.base_type] = {}
  1020. end
  1021. self.act_com_red_award_info[scmd.base_type][scmd.sub_type] = scmd
  1022. self:Fire(CustomActivityModel.UPDATE_ACTIVITY_RED_AWARD_INFO,scmd.base_type,scmd.sub_type)
  1023. end
  1024. --获得活动通用红点奖励信息
  1025. function CustomActivityModel:GetActComAwardInfo( base_type,sub_type )
  1026. if not base_type or not sub_type or not self.act_com_red_award_info[base_type] then return nil end
  1027. return self.act_com_red_award_info[base_type][sub_type] or nil
  1028. end
  1029. --更新图标活动在哪个图标内的信息信息
  1030. function CustomActivityModel:UpdateActIconInfoActType( )
  1031. local act_base_type_list = {CustomActivityModel.CustomActBaseType.LIMIT_GIFT,CustomActivityModel.CustomActBaseType.ZERO_GIFT}
  1032. for i,base_type in ipairs(act_base_type_list) do
  1033. local act_list = self:getAllActListByBaseType(base_type) or {}
  1034. for k,v in pairs(act_list) do
  1035. if v.act_type == CustomActivityModel.CustomIconActType.GiftAct then--关闭等级小于人物等级则放到3精彩活动里面去
  1036. v.act_type = CustomActivityModel.CustomIconActType.JcAct
  1037. end
  1038. end
  1039. end
  1040. end