|
|
- KfActivityModel = KfActivityModel or BaseClass(BaseVo, true)
- local KfActivityModel = KfActivityModel
-
- KfActivityModel.REQUEST_INFO = "KfActivityModel.REQUEST_INFO"
- KfActivityModel.OPEN_ACTIVITY_BASE_VIEW = "KfActivityModel.OPEN_ACTIVITY_BASE_VIEW"--打开主界面
- KfActivityModel.UPDATE_ACTIVITY_BASE_VIEW = "KfActivityModel.UPDATE_ACTIVITY_BASE_VIEW"--更新主界面
- KfActivityModel.OPEN_RANK_SHOW_VIEW = "KfActivityModel.OPEN_RANK_SHOW_VIEW"--打开往期排行
- KfActivityModel.OPEN_RANK_RE_CB_VIEW = "KfActivityModel.OPEN_RANK_RE_CB_VIEW"--冲榜升级变强途径
- KfActivityModel.REQUEST_INFO = "KfActivityModel.REQUEST_INFO"--请求协议
- KfActivityModel.ANS_UPDATE_VIEW = "KfActivityModel.ANS_UPDATE_VIEW"--更新界面
-
- KfActivityModel.UPDATE_ZERO_GIFT_VIEW = "KfActivityModel.UPDATE_ZERO_GIFT_VIEW"--更新0元礼包界面
- KfActivityModel.UPDATE_GROUP_BUYING_VIEW = "KfActivityModel.UPDATE_GROUP_BUYING_VIEW"--更新开服团购界面
- KfActivityModel.OPEN_GROUP_BUYING_SHARE_VIEW = "KfActivityModel.OPEN_GROUP_BUYING_SHARE_VIEW"--打开团购分享界面
-
- KfActivityModel.MONOPOLY_DICE_ACTION_START = "KfActivityModel.MONOPOLY_DICE_ACTION_START"--开始大富翁骰子动画
- KfActivityModel.MONOPOLY_DICE_ACTION_STOP = "KfActivityModel.MONOPOLY_DICE_ACTION_STOP"--停止大富翁骰子动画
-
- KfActivityModel.UPDATE_LIMIT_SECKILL_INFO ="KfActivityModel.UPDATE_LIMIT_SECKILL_INFO" -- 更新秒杀数据
- KfActivityModel.UPDATE_LIMIT_SECKILL_ROUND_INFO ="KfActivityModel.UPDATE_LIMIT_SECKILL_ROUND_INFO" -- 更新秒杀场次数据
- KfActivityModel.OPEN_LIMIT_SECKILL_BUY_VIEW ="KfActivityModel.OPEN_LIMIT_SECKILL_BUY_VIEW" -- 打开限时秒杀购买界面
- KfActivityModel.LIMIT_SECKILL_BUY_SUCCESS ="KfActivityModel.LIMIT_SECKILL_BUY_SUCCESS" -- 抢购成功
-
- KfActivityModel.OPEN_SCRAOING_CARD_TIPS_VIEW_VIEW ="KfActivityModel.OPEN_SCRAOING_CARD_TIPS_VIEW_VIEW" -- 打开刮刮卡刮奖
-
- KfActivityModel.UPDATE_HAPPY_RED_BAG_INFO ="KfActivityModel.UPDATE_HAPPY_RED_BAG_INFO" -- 更新惊喜红包数据
- KfActivityModel.ANS_DRAW_HAPPY_RED_BAG ="KfActivityModel.ANS_DRAW_HAPPY_RED_BAG" -- 抽取惊喜红包
- KfActivityModel.UPDATE_HAPPY_RED_BAG_HISTORY ="KfActivityModel.UPDATE_HAPPY_RED_BAG_HISTORY" -- 惊喜红包全服记录
-
- KfActivityModel.ANS_DISCOUNT_FULL_CUT_INFO = "KfActivityModel.ANS_DISCOUNT_FULL_CUT_INFO" -- 折扣满减数据
- KfActivityModel.ANS_DISCOUNT_FULL_CUT_HISTORY = "KfActivityModel.ANS_DISCOUNT_FULL_CUT_HISTORY" -- 折扣满减历史记录
- KfActivityModel.OPEN_DISCOUNT_FULL_CUT_HISTORY = "KfActivityModel.OPEN_DISCOUNT_FULL_CUT_HISTORY" -- 折扣满减历史记录
- KfActivityModel.OPEN_DISCOUNT_FULL_CUT_HISTORY_TIP = "KfActivityModel.OPEN_DISCOUNT_FULL_CUT_HISTORY_TIP" -- 折扣满减历史记录
- KfActivityModel.ANS_DISCOUNT_FULL_CUT_BUY = "KfActivityModel.ANS_DISCOUNT_FULL_CUT_BUY" -- 折扣满减购买
- KfActivityModel.SELECT_DISCOUNT_FULL_CUT_GOODS = "KfActivityModel.SELECT_DISCOUNT_FULL_CUT_GOODS" -- 折扣满减购买
- KfActivityModel.CHANGE_DISCOUNT_FULL_CUT_TICKET = "KfActivityModel.CHANGE_DISCOUNT_FULL_CUT_TICKET" -- 折扣满减选择券
- KfActivityModel.OPEN_DISCOUNT_FULL_CUT_LUCKY_VIEW = "KfActivityModel.OPEN_DISCOUNT_FULL_CUT_LUCKY_VIEW" -- 打开折扣转盘界面
- KfActivityModel.UPDATE_DISCOUNT_FULL_CUT_LUCKY_VIEW = "KfActivityModel.UPDATE_DISCOUNT_FULL_CUT_LUCKY_VIEW"-- 更新折扣转盘界面
- KfActivityModel.LUCKY_DISCOUNT_FULL_CUT_LUCKY_VIEW = "KfActivityModel.LUCKY_DISCOUNT_FULL_CUT_LUCKY_VIEW"-- 折扣转盘界面抽奖
-
- KfActivityModel.OPEN_MONEY_COPY_VIEW = "KfActivityModel.OPEN_MONEY_COPY_VIEW" -- 打开彩钻复制机
- KfActivityModel.UPDATE_MONEY_COPY_VIEW = "KfActivityModel.UPDATE_MONEY_COPY_VIEW" --更新彩钻复制机
-
- KfActivityModel.ANS_PASS_ACT_BASIC = "KfActivityModel.ANS_PASS_ACT_BASIC" -- 活跃/登陆 通行证信息
- KfActivityModel.ANS_PASS_ACT_REWARD_LIST = "KfActivityModel.ANS_PASS_ACT_REWARD_LIST" --活跃/登陆 通行证奖励信息
- KfActivityModel.OPEN_PASS_ACT_BUY_TIP = "KfActivityModel.OPEN_PASS_ACT_BUY_TIP" --活跃/登陆 通行证购买界面
-
- KfActivityModel.OPEN_ZERO_GIFT_SHOW_VIEW = "KfActivityModel.OPEN_ZERO_GIFT_SHOW_VIEW"--打开0元礼包展示界面
-
- KfActivityModel.OPEN_ACT_GUIDE_BASE_VIEW = "KfActivityModel.OPEN_ACT_GUIDE_BASE_VIEW"--打开活动引导基础展示界面
-
- local table_insert = table.insert
- KfActivityModel.TabID = {
- RushRank = 1,--开服冲榜
- OpenRecharge = 2,--开服累充
- FosterStage = 3,--开服进阶
- LimitGift = 4,--限购礼包
- LimitShop = 5,--抢购商城
- ContinueRecharge = 6,--连充豪礼
- ZeroGift = 7,--0元礼包
- GroupBuying = 8,--开服团购
- SingleRecharge = 9,--单笔充值
- Monopoly = 10,--大富翁
- Competing = 11,--竞榜
- AccConsume = 15,--累计消费
- RewardShow = 16, --活动宣传
- InvestAct = 19, --投资活动
- LimitSeckill = 20, --限时秒杀
- DiscountFullCut = 26,--折扣满减
- HappyRedBag = 27,--惊喜红包
- ComRank = 28,--通用排行
- MoneyCopy = 29,--源晶复制机
- LoginPass = 39,--登陆通行证
- LivelyPass = 40,--活跃通行证
- MainlandJourney = 41,--大陆征途
- HighExchange = 42,--嗨点兑换
- SakuraGift = 47,--源樱之礼
-
-
- --(主题活动配置方法、资源文件、代码文件)都写到OperateActivity 但是各类更新全部用KfActivityModel的
- SingleDayRecharge = 12,--单日充值
- BossDrop = 13,--BOSS掉落
- DunMul = 14,--副本多倍
- BossTreasure = 17,--幻魔宝典
- HighPoint = 18, --嗨点玩法
- EDayLogin = 21, --每日登录
- LuckyTurntable = 22, --幸运轮盘
- ScrapingCard = 23, --刮刮卡
- GetLuckyBag = 24, --抢福袋
- GetRedBag = 25, --抢福袋
- Tarot = 29, --塔罗牌
- CollectZi = 30, --集字兑换
- StageExchange = 31, --阶段兑换
- Adventure = 32, --冒险征途
- Jigsaw = 33, --活跃拼图
- Reversi = 34,--黑白棋抽奖
- FestivalBoss = 35,--节日幻魔
- AmasingJigsawPuzzle = 36,--眼疾手快趣味拼图
- ThreeFight = 37,--三日作战
- PrayTree = 38,--人参果树
- ComposeRobot = 43,--合成机
- SuperAward = 44,--超能大奖
- MaterialSubmit = 45,--材料提交
- JumpOne = 46,--跳一跳
- SelectEgg = 48,--自选扭蛋
- }
-
- --is_most代表是否是多条开放性页签(开服活动\精彩活动\主题活动)(sort_id以后让运营单独调一次即可 我们自增)
- KfActivityModel.TabData = {
- {id = KfActivityModel.TabID.RewardShow, name = "珍宝展示", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.REWARD_SHOW, is_most = true, sort_id = 1},
- {id = KfActivityModel.TabID.RushRank, name = "开服冲榜", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.RUSH_RANK, is_most = true, sort_id = 2},
- {id = KfActivityModel.TabID.FosterStage, name = "开服进阶", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.FOSTER_STAGE, is_most = true, sort_id = 3},
- {id = KfActivityModel.TabID.OpenRecharge, name = "开服累充", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.KFACTIVITY_RECHARGE, is_most = true, sort_id = 4},
- {id = KfActivityModel.TabID.AccConsume, name = "累计消费", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.ACC_CONSUME, is_most = true, sort_id = 5},
- {id = KfActivityModel.TabID.LimitShop, name = "抢购商城", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.KFACTIVITY_LIMIT_SHOP, is_most = true, sort_id = 44},
- {id = KfActivityModel.TabID.SingleRecharge, name = "单笔充值", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.SINGLE_RECHARGE, is_most = true, sort_id = 7},
- {id = KfActivityModel.TabID.ZeroGift, name = "0元礼包", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.ZERO_GIFT, is_most = true, sort_id = 2},
- {id = KfActivityModel.TabID.ContinueRecharge, name = "连充豪礼", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.CONTINUE_RECHARGE, is_most = true, sort_id = 9},
- {id = KfActivityModel.TabID.LimitGift, name = "限购礼包", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.LIMIT_GIFT, is_most = true, sort_id = 10},
- {id = KfActivityModel.TabID.Monopoly, name = "大富翁", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.MONOPOLY, is_most = true, sort_id = 11},
- {id = KfActivityModel.TabID.GroupBuying, name = "开服团购", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.KF_GROUP_BUYING, is_most = true, sort_id = 12},
- {id = KfActivityModel.TabID.Competing, name = "限时冲榜", module_id = 333, base_type = CustomActivityModel.CustomActBaseType.COPETING, is_most = true, sort_id = 13},
- {id = KfActivityModel.TabID.SingleDayRecharge, name = "单日充值", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.SINGLE_DAY_RECHARGE, is_most = true, sort_id = 14},
- {id = KfActivityModel.TabID.BossDrop, name = "幻魔掉落", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.BOSS_DROP, is_most = true, sort_id = 15},
- {id = KfActivityModel.TabID.DunMul, name = "副本多倍", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.DUN_MUL_DROP, is_most = true, sort_id = 16},
- {id = KfActivityModel.TabID.BossTreasure, name = "幻魔宝典", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.BOSS_TREASURE, is_most = true, sort_id = 17},
- {id = KfActivityModel.TabID.HighPoint, name = "嗨点玩法", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.HIGH_POINT, is_most = true, sort_id = 18},
- {id = KfActivityModel.TabID.InvestAct, name = "投资活动", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.INVEST_ACT, is_most = true, sort_id = 8},
- {id = KfActivityModel.TabID.LimitSeckill, name = "限时秒杀", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.LIMIT_SECKILL, is_most = true, sort_id = 20},
- {id = KfActivityModel.TabID.EDayLogin, name = "每日登录", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.E_DAY_LOGIN, is_most = true, sort_id = 21},
- {id = KfActivityModel.TabID.LuckyTurntable, name = "幸运轮盘", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.LUCKY_TURNTABLE, is_most = true, sort_id = 22},
- {id = KfActivityModel.TabID.ScrapingCard, name = "刮刮卡", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.SCRAPING_CRAD, is_most = true, sort_id = 23},
- {id = KfActivityModel.TabID.GetLuckyBag, name = "抢福袋", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.GET_LUCKY_BAG, is_most = true, sort_id = 24},
- {id = KfActivityModel.TabID.GetRedBag, name = "抢红包", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.GET_RED_BAG, is_most = true, sort_id = 25},
- {id = KfActivityModel.TabID.DiscountFullCut, name = "折扣满减", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.DISCOUNT_FULL_CUT, is_most = true, sort_id = 26},
- {id = KfActivityModel.TabID.HappyRedBag, name = "惊喜红包", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.HAPPY_RED_BAG, is_most = true, sort_id = 27},
- {id = KfActivityModel.TabID.ComRank, name = "通用排行", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.COM_RANK, is_most = true, sort_id = 29},
- {id = KfActivityModel.TabID.Tarot, name = "塔罗牌", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.TAROT, is_most = true, sort_id = 29},
- {id = KfActivityModel.TabID.CollectZi, name = "集字兑换", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.COLLECT_ZI, is_most = true, sort_id = 30},
- {id = KfActivityModel.TabID.HappyRedBag, name = "惊喜红包", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.HAPPY_RED_BAG, is_most = true, sort_id = 31},
- {id = KfActivityModel.TabID.StageExchange, name = "阶段兑换", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.STAGE_EXCHANGE, is_most = true, sort_id = 32},
- {id = KfActivityModel.TabID.Adventure, name = "冒险征途", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.ADVENTURE, is_most = true, sort_id = 33},
- {id = KfActivityModel.TabID.Reversi, name = "黑白棋抽奖", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.REVERSI, is_most = true, sort_id = 34},
- {id = KfActivityModel.TabID.Jigsaw, name = "活跃拼图", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.JIGSAW, is_most = true, sort_id = 35},
- {id = KfActivityModel.TabID.FestivalBoss, name = "节日幻魔", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.FESTIVAL_BOSS, is_most = true, sort_id = 36},
- {id = KfActivityModel.TabID.AmasingJigsawPuzzle, name = "趣味拼图", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.AMUSING_JIGSAW_PUZZLE, is_most = true, sort_id = 37},
- {id = KfActivityModel.TabID.ThreeFight, name = "三日作战", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.THREE_FIGHT, is_most = true, sort_id = 37},
- {id = KfActivityModel.TabID.PrayTree, name = "人参果树", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.PRAY_TREE, is_most = true, sort_id = 38},
- {id = KfActivityModel.TabID.LoginPass, name = "登陆通行证", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.LOGIN_PASS, is_most = true, sort_id = 39},
- {id = KfActivityModel.TabID.LivelyPass, name = "活跃通行证", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.LIVELY_PASS, is_most = true, sort_id = 40},
- {id = KfActivityModel.TabID.MainlandJourney, name = "大陆征途", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.MAINLAND_JOURNEY, is_most = true, sort_id = 41},
- {id = KfActivityModel.TabID.HighExchange, name = "嗨点兑换", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.HIGH_EXCHANGE, is_most = true, sort_id = 42},
- {id = KfActivityModel.TabID.ComposeRobot, name = "合成机", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.COMPOSE_ROBOT, is_most = true, sort_id = 2},
- {id = KfActivityModel.TabID.SuperAward, name = "超能大奖", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.SUPER_AWARD, is_most = true, sort_id = 6},
- {id = KfActivityModel.TabID.MaterialSubmit, name = "材料提交", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.MATERIAL_SUBMIT, is_most = true, sort_id = 45},
- {id = KfActivityModel.TabID.JumpOne, name = "跳一跳", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.JUMP_ONE, is_most = true, sort_id = 46},
- {id = KfActivityModel.TabID.SelectEgg, name = "自选扭蛋", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.SELECT_EGG, is_most = true, sort_id = 3},
- }
-
- KfActivityModel.MaxRankDay = 9--开服天数限制
- KfActivityModel.MaxRankType = 9--榜单类型限制
- KfActivityModel.SpecialRankType = 9--榜单特殊类型
-
-
- KfActivityModel.MonopolyCircleTypeFive = 1--1-5圈
- KfActivityModel.MonopolyCircleTypeTen = 2--2-10圈
- KfActivityModel.MonopolyMaxCircle = 10--最大10圈
- KfActivityModel.MonopolyMaxLattice = 26--最大26格有效格子数(起点终点不算)
-
- KfActivityModel.ComRankStr = {
- ["recharge"] = {desc = "充值彩钻",btn_desc = "前往充值"},
- ["consume"] = {desc = "消费彩钻",btn_desc = "前往消费"},
- ["item"] = {desc = "道具数量",btn_desc = "获取道具"},
- }
-
- KfActivityModel.KfDFullCutLuckyGoodsId = 105200--折扣转盘抽奖id
-
- KfActivityModel.AdventureOneCost = 10--冒险征途单次抽取的消耗数
- KfActivityModel.AdventureTenCost = 100--冒险征途单次抽取的消耗数
-
- KfActivityModel.ContinueSignRechargePrice = 300--补签需要充值的金额
-
- function KfActivityModel:__init()
- KfActivityModel.Instance = self
- self.login_red = nil--登陆红点
- self:Reset()
- end
-
- function KfActivityModel:Reset()
- self.view_info = {}--界面信息
- self.act_red_dot_info = {}
- self.red_dot_info = {}
- self.rush_rank_info = {}--冲榜信息
- -- self.limit_shop_red_first_open_list = {}--限购商城红点每日登陆列表
- self.limit_shop_toggle = {}--限购商城购买确认信息
- self.limit_gift_toggle = {}--限购礼包购买确认信息
- self.zero_gift_toggle = {}--0元礼包购买确认信息
- self.kf_group_buying_toggle = {}--限购礼包购买确认信息
- self.high_info = {}--嗨点活动信息
- self.high_point_toggle = {}--嗨点复选提示框信息
- self.is_close_main_icon = false
-
- self.zero_gift_view_info = {}--0元礼包信息33185、33186
-
- if self.zero_gift_time_id_list then
- for k,v in pairs(self.zero_gift_time_id_list) do
- GlobalTimerQuest:CancelQuest(v)
- v = nil
- end
- end
- self.zero_gift_time_id_list = {}
- self.zero_gift_first_open_red_list = {} --首次0元礼包活动的红点
- self.zero_gift_first_open_red_flag = {} --首次0元礼包活动的红点是否干掉
-
- --团购活动
- self.group_buying_view_info = {}--团购信息
- self.group_buying_time_list = {}--团购倒计时时间列表
- if self.groupBuying_time_id_list then--团购倒计时列表
- for k,v in pairs(self.groupBuying_time_id_list) do
- GlobalTimerQuest:CancelQuest(v)
- v = nil
- end
- end
- self.groupBuying_time_id_list = {}--计时器ID列表
-
- --大富翁
- self.monopoly_info = {}--大富翁信息
- self.monopoly_first_open_red_flag = {}--大富翁红点信息
- -- 投资活动
- self.invest_event_data = {}
- self.invest_grade_red_cache = {} -- 投资活动档位红点缓存s
-
- self:InitCfg()
- self:InitMonopolyCfg()--初始化大富翁配置
- self:InitActViewClassTable()
- self:InitRewardShowCfg() -- 初始化珍宝展示配置
-
- --限时秒杀
- self.limit_seckill_base_info = {}--基础信息
- self.limit_seckill_round_info = {}--场次信息
- self.limit_seckill_record_info = {}--购买记录
- self.limit_seckill_buy_info = {}--抢购界面信息
- self.is_open_limit_seckill_view = false
- self.sec_kill_buy_sure = {} -- 消耗彩钻无须确认
- self.sec_kill_remind_cache = {} -- 开抢前两分钟提醒
-
- --刮刮卡
- self.is_red_scraping_card_list = {}
-
- --塔罗牌
- self.is_red_tarot_list = {}
-
- --惊喜红包
- self.happy_red_bag_base_info = {}--基础信息
- self.happy_red_bag_history_info = {}--抽取全服记录
-
- --折扣满减
- self.discount_full_cut_info = {}--基础信息
- self.discount_full_cut_history = {}--购买记录
- self.discount_full_cut_lucky_list = {}--设置折扣满减奖池数据
- self.discount_full_cut_mask_first_open_red = {}--首次开界面红点
- self.discount_full_cut_new_red = {}--折扣满减活动新开红点
- self.discount_full_cut_draw_goods_red = {}--折扣满减活动物品红点
- self.discount_full_cut_draw_goods_num = 0--保存当前折扣满减活动物品数量
- self.discount_full_cut_draw_free_red = {}--折扣满减活动免费抽奖次数红点
- self.discount_full_cut_draw_free_status = {}--保存当前折扣满减活动免费抽奖次数
-
- --人参果树
- self.is_red_praytreelist = {}
-
- --通用排行
- self.com_rank_info = {}--封榜活动信息
-
- self.money_copy_data = {}--彩钻复制机
-
- self.pass_act_info = {}--通行证
- self.pass_act_reward_info = {}
-
- --小额连充信息
- self.kf_continue_info = {}
-
- --开服进阶红点信息
- self.forsert_stage_red_info = {}
-
- --开服团购红点信息
- self.group_red_list = {}
-
- --嗨点兑换登陆一次红点信息
- self.high_login_red_list = {}
-
- self.act_guide_cache = false -- 活动指引记录缓存
- self:ResetFosterActGuideBtnCache()
- end
-
- function KfActivityModel:getInstance()
- if KfActivityModel.Instance == nil then
- KfActivityModel.Instance = KfActivityModel.New()
- end
- return KfActivityModel.Instance
- end
-
- --初始化活动界面类
- function KfActivityModel:InitActViewClassTable( )
- self.act_view_class = {--所有活动界面类
- [KfActivityModel.TabID.RushRank] = KfActivityRushRankView,--开服冲榜
- [KfActivityModel.TabID.OpenRecharge] = KfActivityOpenRechargeView,--开服累充
- [KfActivityModel.TabID.FosterStage] = KfActivityForsterStageView,--开服进阶
- [KfActivityModel.TabID.LimitGift] = KfActivityLimitGiftSubView,--限购礼包
- [KfActivityModel.TabID.LimitShop] = KfActivityLimitShopView,--抢购商城
- [KfActivityModel.TabID.ContinueRecharge] = KfActivityContinueRechargeViewNew,--连充豪礼
- [KfActivityModel.TabID.ZeroGift] = KfActivityZeroGiftSubView,--0元礼包
- [KfActivityModel.TabID.GroupBuying] = KfGroupBuyingView,--开服团购
- [KfActivityModel.TabID.SingleRecharge] = KfActivitySingleRechargeView,--单笔充值
- [KfActivityModel.TabID.Monopoly] = KfMonopolyMainView,--大富翁
- [KfActivityModel.TabID.Competing] = KfCompetingListMainView,--竞榜
- [KfActivityModel.TabID.SingleDayRecharge] = OpSingleRechargeSubView,--单日充值
- [KfActivityModel.TabID.BossDrop] = OpBossActDropSubView,--BOSS掉落
- [KfActivityModel.TabID.DunMul] = OpDunMultipleDropView,--副本多倍
- [KfActivityModel.TabID.AccConsume] = KfActivityAccConsumeView,--累计消费
- [KfActivityModel.TabID.RewardShow] = ActivityRewardShowView,--奖励展示
- [KfActivityModel.TabID.BossTreasure] = KfBossTreasureView,--幻魔宝典
- [KfActivityModel.TabID.HighPoint] = KfActHighPointView,--嗨点玩法
- [KfActivityModel.TabID.EDayLogin] = KfActivityEDayLoginView,--每日登录
- [KfActivityModel.TabID.ScrapingCard] = KfActivityScrapingCardView,--刮刮卡
- [KfActivityModel.TabID.InvestAct] = KfActivityInvestmentView,--投资活动
- [KfActivityModel.TabID.LimitSeckill] = LimitSecKillView,--限时秒杀
- [KfActivityModel.TabID.LuckyTurntable] = LuckyTurnTableView,--幸运轮盘
- [KfActivityModel.TabID.GetLuckyBag] = GetLuckyBagView,--抢福袋
- [KfActivityModel.TabID.GetRedBag] = GetLuckyBagView,--抢红包
- [KfActivityModel.TabID.DiscountFullCut] = KfDiscountFullCutView,--折扣满减
- [KfActivityModel.TabID.HappyRedBag] = KfHappyRedBagView,--惊喜红包
- [KfActivityModel.TabID.ComRank] = KfActivityComRankView,--通用排行
- [KfActivityModel.TabID.Tarot] = KfActivityTarotView,--塔罗牌
- [KfActivityModel.TabID.CollectZi] = OpCollectZiView,--集字兑换
- [KfActivityModel.TabID.StageExchange] = OpStageExchangeView,--阶段兑换
- [KfActivityModel.TabID.Adventure] = OpAdventureView,--冒险征途
- [KfActivityModel.TabID.Jigsaw] = OpJigsawView,--活跃拼图
- [KfActivityModel.TabID.Reversi] = OpReversiView,--黑白棋抽奖
- [KfActivityModel.TabID.FestivalBoss] = OpFestivalBossView,--节日幻魔
- [KfActivityModel.TabID.AmasingJigsawPuzzle] = OpAmasingJigsawView,--节日拼图
- [KfActivityModel.TabID.ThreeFight] = OpThreeFightView,--三日作战
- [KfActivityModel.TabID.LoginPass] = KfActivityLoginPassView,--登陆通行证
- [KfActivityModel.TabID.LivelyPass] = KfActivityLivelyPassView,--活跃通行证
- [KfActivityModel.TabID.PrayTree] = OpActivityPrayTreeView,--人参果树
- [KfActivityModel.TabID.ComposeRobot] = OpComposeRobotView,--合成机
- [KfActivityModel.TabID.HighExchange] = KfActHighExchangeView,--嗨点兑换
- [KfActivityModel.TabID.SuperAward] = OpSuperAwardView,--超能大奖
- --以下需要开发的新活动
- -- [KfActivityModel.TabID.MainlandJourney] = OpActivityPrayTreeView,--大陆征途
- -- [KfActivityModel.TabID.ComposeRobot] = OpActivityPrayTreeView,--合成机
- [KfActivityModel.TabID.MaterialSubmit] = OpMaterialSubmitView,--材料提交
- [KfActivityModel.TabID.JumpOne] = JumpOneMainView,--跳一跳
- [KfActivityModel.TabID.SelectEgg] = OpSelectEggView,--自选扭蛋
- }
- end
-
- --初始化配置
- function KfActivityModel:InitCfg( )
- self.rush_rank_cfg = {}--冲榜基本配置
- local rush_rank_cfg = DeepCopy(Config.Rushrank)
- for k,v in pairs(rush_rank_cfg) do
- local data = v
- data.limit = stringtotable(v.limit)--目标条件
- data.figure_id = stringtotable(v.figure_id)--展示模型
- data.nominate = stringtotable(v.nominate)--跳转数据
- data.name = Trim(v.name)--名字
- data.tips = Trim(v.tips)--大奖名字
- self.rush_rank_cfg[v.id] = data
- if v.start_day > KfActivityModel.MaxRankDay then
- KfActivityModel.MaxRankDay = v.start_day
- KfActivityModel.MaxRankType = v.id
- end
- end
-
- self.rush_rank_award_cfg = {}--冲榜排行奖励配置
- local rush_rank_award_cfg = DeepCopy(Config.Rushrankreward)
- for k,v in pairs(rush_rank_award_cfg) do
- local data = v
- data.rank_limit = stringtotable(v.rank_limit)--目标条件
- data.reward = stringtotable(v.reward)--奖励
- data.about = Trim(v.about)--说明
- if not self.rush_rank_award_cfg[v.id] then
- self.rush_rank_award_cfg[v.id] = {}
- end
- self.rush_rank_award_cfg[v.id][#self.rush_rank_award_cfg[v.id] + 1] = data
- end
- local sortFunc = function (a,b)
- return a.reward_id < b.reward_id
- end
- for i,v in ipairs(self.rush_rank_award_cfg) do
- table.sort(v, sortFunc)
- end
-
- self.rush_rank_goal_cfg = {}--冲榜targer奖励配置
- local rush_rank_goal_cfg = DeepCopy(Config.Rushgoalreward)
- for k,v in pairs(rush_rank_goal_cfg) do
- local data = v
- data.goal_value = stringtotable(v.goal_value)--目标条件
- data.reward = stringtotable(v.reward)--奖励配置
- data.about = Trim(v.about)--说明
- if not self.rush_rank_goal_cfg[v.id] then
- self.rush_rank_goal_cfg[v.id] = {}
- end
- self.rush_rank_goal_cfg[v.id][#self.rush_rank_goal_cfg[v.id] + 1] = data
- end
- for i,v in ipairs(self.rush_rank_goal_cfg) do
- table.sort(v, sortFunc)
- end
-
- self.com_rank_score_cfg = {}
- local com_rank_score_cfg = DeepCopy(Config.Vierankreq)
- for k,v in pairs(com_rank_score_cfg) do
- local data = v
- data.type_value = Trim(v.type_value)--说明
- if not self.com_rank_score_cfg[v.type_key] then
- self.com_rank_score_cfg[v.type_key] = {}
- end
- self.com_rank_score_cfg[v.type_key][v.rank] = data
- end
- end
-
- --初始化大富翁配置
- function KfActivityModel:InitMonopolyCfg( )
- self.mono_kv_cfg = {}--大富翁常量配置
- local mono_kv_cfg = DeepCopy(Config.Monokv)
- for k,v in pairs(mono_kv_cfg) do
- if k == "gold_dice_count" then
- self.mono_kv_cfg.gold_dice_count = v.val--每日最大获得金骰子数量
- elseif k == "gold_dice_level" then
- self.mono_kv_cfg.gold_dice_level = stringtotable(v.val)--充值赠送金骰子档位
- elseif k == "luckycard_count" then
- self.mono_kv_cfg.luckycard_count = v.val --幸运卡池数量
- elseif k == "mono_total_round" then
- self.mono_kv_cfg.mono_total_round = v.val --活动总圈数
- elseif k == "normal_dice_count" then
- self.mono_kv_cfg.normal_dice_count = v.val --每日最大获得普通骰子数量
- elseif k == "normal_dice_level" then
- self.mono_kv_cfg.normal_dice_level = stringtotable(v.val) --充值赠送普通骰子档位
- end
- end
-
- self.mono_lattice_cfg = {}--大富翁圈数格子配置
- local mono_lattice_cfg = DeepCopy(Config.Monolattice)
- for k,v in pairs(mono_lattice_cfg) do
- if not self.mono_lattice_cfg[v.round] then
- self.mono_lattice_cfg[v.round] = {}
- end
- self.mono_lattice_cfg[v.round][v.lattice_index] = v
- end
-
- self.mono_smallbox_award_cfg = {}--大富翁小宝箱配置
- local mono_smallbox_award_cfg = DeepCopy(Config.Monosmallbox)
- for k,v in pairs(mono_smallbox_award_cfg) do
- local data = v
- data.rewards = stringtotable(data.rewards)[1]
- self.mono_smallbox_award_cfg[v.index] = data
- end
-
- self.mono_lucky_award_cfg = {}--大富翁幸运卡奖励
- local mono_lucky_award_cfg = DeepCopy(Config.Monoluckycard)
- for k,v in pairs(mono_lucky_award_cfg) do
- local data = v
- data.rewards = stringtotable(data.rewards)[1]
- self.mono_lucky_award_cfg[v.index] = data
- end
-
- self.mono_round_award_cfg = {}--大富翁圈数奖励
- local mono_round_award_cfg = DeepCopy(Config.Monoroundrewards)
- for k,v in pairs(mono_round_award_cfg) do
- local data = v
- data.rewards = stringtotable(data.rewards)[1]
- data.show = stringtotable(data.show)
- if not self.mono_round_award_cfg[v.sub_type] then
- self.mono_round_award_cfg[v.sub_type] = {}
- end
- self.mono_round_award_cfg[v.sub_type][v.round] = data
- end
- end
-
- -- 初始化珍宝展示的配置
- function KfActivityModel:InitRewardShowCfg( )
- self.show_res_cfg = {}
- for k,v in pairs(Config.Showresource) do
- if not self.show_res_cfg[v.item_id] then
- self.show_res_cfg[v.item_id] = {}
- end
- self.show_res_cfg[v.item_id][v.model_id] = self.show_res_cfg[v.item_id][v.model_id] or {}
- self.show_res_cfg[v.item_id][v.model_id][v.model_type] = v
- end
- end
-
- -- 获取珍宝展示配置
- function KfActivityModel:GetRewardShowCfg( item_id )
- local item_id = tonumber(item_id)
- if item_id and self.show_res_cfg[item_id] then
- return self.show_res_cfg[item_id]
- else
- -- logWarn('=======Msh:KfActivityModel.lua[278]=参数有误======', item_id)
- end
- end
-
- --更新主界面活动图标红点(开服、主题、精彩)CustomActivityModel.CustomIconActType
- function KfActivityModel:CheckMainIconRedDot( act_type )
- if not act_type then
- return
- end
- local bool = false
- local base_type = CustomActivityModel.CustomActBaseType.OPERATE_ACTIVITY
- local sub_type = nil
- local sub_type_list = CustomActivityModel:getInstance():getAllActListByBaseType(base_type)
- for k,v in pairs(sub_type_list) do
- if v.act_type == act_type then
- sub_type = v.sub_type
- break
- end
- end
- if not sub_type then return end
- local icon_sub_type = base_type*1000 + sub_type
- if sub_type >= 10001 then
- icon_sub_type = base_type*100000 + sub_type
- end
- local act_list = CustomActivityModel:getInstance():getActList(base_type, sub_type)
- if not act_list then
- return
- else
- if self.red_dot_info[act_type] then
- for k,v in pairs(self.red_dot_info[act_type]) do
- local module_sub_id = self:ByTabIdGetActType(k)
- if GetModuleIsOpen(331,module_sub_id)
- or (k == KfActivityModel.TabID.Competing and GetModuleIsOpen(333,nil))--竞榜是333模块的
- then
- if module_sub_id == CustomActivityModel.CustomActBaseType.SUPER_AWARD then--超能大奖比较特殊
- for kk,vv in pairs(v) do
- if vv == true and self:CheckSuperAwardTabIsOpen(module_sub_id,kk) then
- bool = vv
- break
- end
- end
- elseif module_sub_id == CustomActivityModel.CustomActBaseType.HIGH_EXCHANGE then--嗨点兑换比较特殊
- for sub_type,vv in pairs(v) do
- if not self.high_login_red_list[sub_type] then
- bool = true
- break
- end
- end
- else
- for kk,vv in pairs(v) do
- if vv == true then
- bool = vv
- break
- end
- end
- end
- end
- end
- end
- -- print("huangcong:KfActivityModel [start:445] :", icon_sub_type,act_type)
- -- PrintTable(self.red_dot_info[act_type])
- -- print("huangcong:KfActivityModel [end]")
- GlobalEventSystem:Fire(ActivityIconManager.UPDATE_ICON_TIPS, icon_sub_type, bool)
- end
- end
-
- --通过页签ID获得定制活动类型
- function KfActivityModel:ByTabIdGetActType( tabId )
- for i,v in ipairs(KfActivityModel.TabData) do
- if v.id == tabId then
- return v.base_type
- end
- end
- end
-
- --通过定制活动类型获得页签ID
- function KfActivityModel:ByActTypeGetTabId( act_type )
- for i,v in ipairs(KfActivityModel.TabData) do
- if v.base_type == act_type then
- return v.id
- end
- end
- end
-
- --这样写红点 每次调全局的只要调两次
- function KfActivityModel:IsNeedRedAll( )--暂时去掉
-
- end
-
- function KfActivityModel:IsNeedRed( id,is_all,sub_type )
- local bool = false
- local act_type = CustomActivityModel.CustomIconActType.KfAct--默认是开服活动
- if id == KfActivityModel.TabID.RushRank then--开服冲榜
- sub_type = sub_type or CustomActivityModel:getInstance():getActMinSubType(CustomActivityModel.CustomActBaseType.RUSH_RANK)
- bool,act_type = self:CheckRushRankRedDot(sub_type)
- elseif id == KfActivityModel.TabID.OpenRecharge then--开服累充
- bool,act_type = self:CheckActCommonRedDot(CustomActivityModel.CustomActBaseType.KFACTIVITY_RECHARGE,sub_type)
- elseif id == KfActivityModel.TabID.FosterStage then--开服进阶
- bool,act_type = self:CheckFosterStageRedDot(CustomActivityModel.CustomActBaseType.FOSTER_STAGE,sub_type)
- elseif id == KfActivityModel.TabID.LimitGift then--限购礼包
- bool,act_type = self:CheckLimitGiftRedDot(sub_type)
- elseif id == KfActivityModel.TabID.LimitShop then--限购商城
- bool,act_type = self:CheckLimitShopRedDot(sub_type)
- elseif id == KfActivityModel.TabID.ContinueRecharge then--连充豪礼
- bool,act_type = self:CheckContinueRechargeRedDot(CustomActivityModel.CustomActBaseType.CONTINUE_RECHARGE,sub_type)
- elseif id == KfActivityModel.TabID.ZeroGift and GetModuleIsOpen(331,36) then--0元礼包
- bool,act_type = self:CheckZeroGiftRedDot(sub_type)
- elseif id == KfActivityModel.TabID.GroupBuying and GetModuleIsOpen(331,70) then--开服团购
- bool,act_type = self:CheckKfGroupBuyingRedDot(sub_type)
- elseif id == KfActivityModel.TabID.SingleDayRecharge then
- bool,act_type = self:CheckActCommonRedDot(CustomActivityModel.CustomActBaseType.SINGLE_DAY_RECHARGE,sub_type)
- elseif id == KfActivityModel.TabID.SingleRecharge then--单笔充值
- bool,act_type = self:CheckActCommonRedDot(CustomActivityModel.CustomActBaseType.SINGLE_RECHARGE,sub_type)
- if not bool then
- local com_act_red_info = CustomActivityModel:getInstance():GetActComAwardInfo(CustomActivityModel.CustomActBaseType.SINGLE_RECHARGE,sub_type)
- if com_act_red_info then
- bool = com_act_red_info.status == 1
- end
- end
- self.act_red_dot_info[CustomActivityModel.CustomActBaseType.SINGLE_RECHARGE][sub_type] = bool
- elseif id == KfActivityModel.TabID.Monopoly then--大富翁
- bool,act_type = self:CheckMonopolyRedDot(sub_type)
- elseif id == KfActivityModel.TabID.Competing then--竞榜--这里先默认放到开服活动类型中
- bool,act_type = self:CheckCompetingRedDot(sub_type)
- elseif id == KfActivityModel.TabID.BossDrop then--boss掉落
- bool,act_type = self:CheckBossDropRedDot(sub_type)
- elseif id == KfActivityModel.TabID.DunMul then--副本多倍
- bool,act_type = self:CheckDunMulRedDot(sub_type)
- elseif id == KfActivityModel.TabID.AccConsume then--开服累充
- bool,act_type = self:CheckActCommonRedDot(CustomActivityModel.CustomActBaseType.ACC_CONSUME,sub_type)
- elseif id == KfActivityModel.TabID.BossTreasure then--幻魔宝典
- bool,act_type = self:CheckActBossTreasureRedDot(sub_type)
- elseif id == KfActivityModel.TabID.HighPoint then--嗨点玩法
- bool,act_type = self:CheckHighPointRedDot(CustomActivityModel.CustomActBaseType.HIGH_POINT,sub_type)
- elseif id == KfActivityModel.TabID.InvestAct then--投资活动
- bool,act_type = self:CheckActInvestRedDot(sub_type)
- elseif id == KfActivityModel.TabID.LimitSeckill then--限时秒杀
- bool,act_type = self:CheckSecKillRedDot(sub_type)
- elseif id == KfActivityModel.TabID.EDayLogin then--每日登录
- bool,act_type = self:CheckActCommonRedDot(CustomActivityModel.CustomActBaseType.E_DAY_LOGIN,sub_type)
- elseif id == KfActivityModel.TabID.LuckyTurntable then--幸运轮盘
- bool,act_type = self:CheckLuckyTurnTableRedDot(sub_type)
- elseif id == KfActivityModel.TabID.ScrapingCard then--刮刮卡
- bool,act_type = self:CheckScrapingCardRedDot(CustomActivityModel.CustomActBaseType.SCRAPING_CRAD,sub_type)
- elseif id == KfActivityModel.TabID.DiscountFullCut then--折扣满减
- bool,act_type = self:CheckKfDiscountFullCutRedDot(sub_type)
- elseif id == KfActivityModel.TabID.ComRank then--通用排行
- bool,act_type = self:CheckActCommonRedDot(CustomActivityModel.CustomActBaseType.COM_RANK,sub_type)
- elseif id == KfActivityModel.TabID.Tarot then--塔罗牌
- bool,act_type = self:CheckActTarotRedDot(CustomActivityModel.CustomActBaseType.TAROT,sub_type)
- elseif id == KfActivityModel.TabID.CollectZi then--集字兑换
- bool,act_type = self:CheckCollectActRedDot(CustomActivityModel.CustomActBaseType.COLLECT_ZI,sub_type)
- elseif id == KfActivityModel.TabID.HappyRedBag then--惊喜红包
- bool,act_type = self:CheckActHappyRedBagRedDot(sub_type)
- elseif id == KfActivityModel.TabID.StageExchange then--阶段兑换
- bool,act_type = self:CheckStageExchangeRedDot(CustomActivityModel.CustomActBaseType.STAGE_EXCHANGE,sub_type)
- elseif id == KfActivityModel.TabID.Adventure then--冒险征途
- bool,act_type = self:CheckAdventureRedDot(CustomActivityModel.CustomActBaseType.ADVENTURE,sub_type)
- elseif id == KfActivityModel.TabID.Reversi then--黑白棋抽奖
- bool,act_type = self:CheckReversiRedDot(CustomActivityModel.CustomActBaseType.REVERSI,sub_type)
- elseif id == KfActivityModel.TabID.FestivalBoss then--节日幻魔
- bool,act_type = self:CheckFestivalBossRedDot(CustomActivityModel.CustomActBaseType.FESTIVAL_BOSS,sub_type)
- elseif id == KfActivityModel.TabID.Jigsaw then--活跃拼图
- bool, act_type = self:CheckJigsawRedDot(CustomActivityModel.CustomActBaseType.JIGSAW, sub_type)
- elseif id == KfActivityModel.TabID.AmasingJigsawPuzzle then--眼疾手快趣味拼图
- -- bool,act_type = self:CheckActCommonRedDot(CustomActivityModel.CustomActBaseType.AMUSING_JIGSAW_PUZZLE,sub_type)
- elseif id == KfActivityModel.TabID.ThreeFight then--三日作战
- bool, act_type = OperateActivityModel:getInstance():CheckThreeFightRedDot(sub_type)
- if not self.act_red_dot_info[CustomActivityModel.CustomActBaseType.THREE_FIGHT] then
- self.act_red_dot_info[CustomActivityModel.CustomActBaseType.THREE_FIGHT] = {}
- end
- self.act_red_dot_info[CustomActivityModel.CustomActBaseType.THREE_FIGHT][sub_type] = bool
- elseif id == KfActivityModel.TabID.LoginPass then--登陆通行证
- bool,act_type = self:CheckComPassRedDot(CustomActivityModel.CustomActBaseType.LOGIN_PASS,sub_type)
- elseif id == KfActivityModel.TabID.LivelyPass then--活跃通行证
- bool,act_type = self:CheckComPassRedDot(CustomActivityModel.CustomActBaseType.LIVELY_PASS,sub_type)
- elseif id == KfActivityModel.TabID.PrayTree then--人参果树(祈福活动)
- bool,act_type = self:CheckPrayTreeRedDot(CustomActivityModel.CustomActBaseType.PRAY_TREE,sub_type)
- elseif id == KfActivityModel.TabID.MainlandJourney then--大陆征途
- bool,act_type = self:CheckActCommonRedDot(CustomActivityModel.CustomActBaseType.MAINLAND_JOURNEY,sub_type)
- elseif id == KfActivityModel.TabID.HighExchange then--嗨点兑换
- bool,act_type = self:CheckHighPointRedDot(CustomActivityModel.CustomActBaseType.HIGH_EXCHANGE,sub_type)
- elseif id == KfActivityModel.TabID.ComposeRobot then--合成机
- bool,act_type = self:CheckActComposeRobotRedDot(CustomActivityModel.CustomActBaseType.COMPOSE_ROBOT,sub_type)
- elseif id == KfActivityModel.TabID.SuperAward then--超能大奖
- bool,act_type = self:CheckActCommonRedDot(CustomActivityModel.CustomActBaseType.SUPER_AWARD,sub_type)
- elseif id == KfActivityModel.TabID.MaterialSubmit then--材料提交
- bool,act_type = self:CheckActMaterialSubmitRedDot(CustomActivityModel.CustomActBaseType.MATERIAL_SUBMIT,sub_type)
- elseif id == KfActivityModel.TabID.SelectEgg then--自选扭蛋
- bool,act_type = self:CheckActSelectEggRedDot(CustomActivityModel.CustomActBaseType.SELECT_EGG,sub_type)
- end
- act_type = act_type or CustomActivityModel.CustomIconActType.KfAct
- if not self.red_dot_info[act_type] then--红点信息要和活动类型对应
- self.red_dot_info[act_type] = {}
- end
- if not self.red_dot_info[act_type][id] then--红点信息要和活动类型对应
- self.red_dot_info[act_type][id] = {}
- end
- if sub_type then
- self.red_dot_info[act_type][id][sub_type] = bool
- end
- self:Fire(KfActivityModel.ANS_UPDATE_VIEW,id,bool,sub_type)
- if not is_all then
- self:CheckMainIconRedDot(act_type)
- end
- -- print("huangcong:KfActivityModel [222]: ",bool,id)
- -- PrintTable(self.red_dot_info)
- end
-
- --清除活动刷新红点信息
- function KfActivityModel:ClearActRedDotInfo( base_type,sub_type )
- local id = nil
- for i,v in ipairs(KfActivityModel.TabData) do
- if base_type == v.base_type then
- id = v.id
- break
- end
- end
- if id then
- for act_type,v in pairs(self.red_dot_info) do
- for v_id,vv in pairs(v) do
- if v_id == id then
- for v_sub_type,vvv in pairs(vv) do
- if v_sub_type == sub_type then
- self.red_dot_info[act_type][v_id][sub_type] = false
- self:CheckMainIconRedDot(act_type)
- return
- end
- end
- end
- end
- end
- end
- end
-
-
- --设置0元礼包首次打开cookie
- function KfActivityModel:SetZeroGiftFirstOpenCookie( bool )
- CookieWrapper.Instance:SaveCookie(CookieLevelType.Account,CookieTimeType.TYPE_ALWAYS,CookieKey.ZERO_GIFT_VIEW_FIRST_OPEN,bool)
- CookieWrapper.Instance:WriteAll()
- end
-
- --获得0元礼包首次打开cookie
- function KfActivityModel:GetZeroGiftFirstOpenCookie( )
- local bool = CookieWrapper.Instance:GetCookie(CookieLevelType.Account,CookieKey.ZERO_GIFT_VIEW_FIRST_OPEN) or false
- return bool
- end
-
- --获得0元礼包是否首次打开过
- function KfActivityModel:GetZeroGiftFirstOpenRed(sub_type)
- if self.zero_gift_first_open_red_list then
- return self.zero_gift_first_open_red_list[sub_type] or false
- end
- return false
- end
-
- --0元礼包首次打开红点
- function KfActivityModel:SetZeroGiftFirstOpenRed(sub_type)
- if self.zero_gift_first_open_red_list[sub_type] then
- self.zero_gift_first_open_red_list[sub_type] = false
- self.zero_gift_first_open_red_flag[sub_type] = true
- self:IsNeedRed(KfActivityModel.TabID.ZeroGift,nil,sub_type)
- end
- end
-
- --判断等级是否达到0元礼包可购买等级
- function KfActivityModel:IsLvCanBuyZeroGift(level)
- local bool = false
- local base_type = CustomActivityModel.CustomActBaseType.ZERO_GIFT
- local all_list = CustomActivityModel:getInstance():getAllActListByBaseType(base_type) or {}
- if not all_list then return false end
- local sub_type = CustomActivityModel:getInstance():getActMinSubType(base_type)
- for k,v in pairs(all_list) do
- local award_data = CustomActivityModel:getInstance():getOneActRewardList(v.base_type,v.sub_type)
- if award_data then
- for kk,vv in ipairs(award_data.reward_list) do
- local cost_num = 99999
- local buy_level = 99999
- for m,n in ipairs(vv.condition_list) do
- if n[1] == "cost" then
- cost_num = tonumber(n[2][1][3])
- elseif n[1] == "buy_lv" then
- buy_level = tonumber(n[2]) or 1
- end
- if cost_num == 0 and buy_level == level then
- bool = true
- sub_type = v.sub_type
- break
- end
- end
- end
- end
- end
- return bool,sub_type
- end
-
- --检查0元礼包红点
- function KfActivityModel:CheckZeroGiftRedDot( sub_type )
- local show = false
- local base_type = CustomActivityModel.CustomActBaseType.ZERO_GIFT
- local server_time = TimeUtil:getServerTime()
- local my_level = RoleManager.Instance.mainRoleInfo.level
- local act_type = CustomActivityModel.CustomIconActType.KfAct
- local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type)
- if not act_list then return show end
- act_type = act_list.act_type
- act_list = DeepCopy(act_list)
- if not self.act_red_dot_info[base_type] then
- self.act_red_dot_info[base_type] = {}--红点信息
- end
-
- local sub_type_red = false
- self.zero_gift_first_open_red_list[act_list.sub_type] = false
- if act_list.is_first_open == 1 and not self.zero_gift_first_open_red_flag[act_list.sub_type] then
- self.zero_gift_first_open_red_list[act_list.sub_type] = true
- sub_type_red = true
- show = true
- end
- local zero_data = self:GetZeroGiftInfo(act_list.sub_type)
- local award_data = CustomActivityModel:getInstance():getOneActRewardList(act_list.base_type,act_list.sub_type)
- if zero_data and award_data then
- for kk,vv in ipairs(zero_data.reward_list) do
- if vv.status == 4 then--可领取
- sub_type_red = true
- show = true
- break
- end
- if vv.status == 0 then--可以免费领
- local cost_num = nil
- local buy_level = 1
- local conditon = {}
- for award_k,award_v in pairs(award_data.reward_list) do
- if award_v.grade == vv.grade then
- conditon = award_v.condition_list
- end
- end
- for m,n in ipairs(conditon) do
- if n[1] == "cost" then
- cost_num = tonumber(n[2][1][3])
- elseif n[1] == "buy_lv" then
- buy_level = tonumber(n[2]) or 1
- end
- end
- if cost_num and cost_num == 0 and my_level>=buy_level then
- sub_type_red = true
- show = true
- break
- end
- end
- end
- end
- self.act_red_dot_info[base_type][act_list.sub_type] = sub_type_red
- return show,act_type
- end
-
- function KfActivityModel:CheckZeroGiftTabIsOpen(sub_type)
- local bool = false
- local zero_data = self:GetZeroGiftInfo(sub_type)
- if zero_data then
- for i,v in ipairs(zero_data.reward_list) do
- if v.status == 0 or v.status == 1 or v.status == 4 then
- bool = true
- end
- end
- end
- return bool
- end
-
- --检查boss掉落红点
- function KfActivityModel:CheckBossDropRedDot( sub_type )
- local base_type = CustomActivityModel.CustomActBaseType.BOSS_DROP
- local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type)
- local show = false
- local act_type = CustomActivityModel.CustomIconActType.KfAct
- if act_list then
- act_type = act_list.act_type
- end
- return show,act_type
- end
-
- --检查副本多倍掉落红点
- function KfActivityModel:CheckDunMulRedDot( sub_type )
- local base_type = CustomActivityModel.CustomActBaseType.DUN_MUL_DROP
- local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type)
- local show = false
- local act_type = CustomActivityModel.CustomIconActType.KfAct
- if act_list then
- act_type = act_list.act_type
- end
- return show,act_type
- end
-
- --幻魔宝典红点
- function KfActivityModel:CheckActBossTreasureRedDot( sub_type )
- local base_type = CustomActivityModel.CustomActBaseType.BOSS_TREASURE
- local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type)
- local act_type = CustomActivityModel.CustomIconActType.KfAct
- local bool = false
- if not self.act_red_dot_info[base_type] then
- self.act_red_dot_info[base_type] = {}
- end
- self.act_red_dot_info[base_type][sub_type] = false
- if act_list then
- act_type = act_list.act_type
- bool = KfBossTreasureModel:getInstance():GetAllRedBySubType( false,sub_type )
- self.act_red_dot_info[act_list.base_type][act_list.sub_type] = bool
- end
- return bool,act_type
- end
-
- --惊喜红包红点
- function KfActivityModel:CheckActHappyRedBagRedDot( sub_type )
- local base_type = CustomActivityModel.CustomActBaseType.HAPPY_RED_BAG
- local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type)
- local act_type = CustomActivityModel.CustomIconActType.KfAct
- local bool = false
- if not self.act_red_dot_info[base_type] then
- self.act_red_dot_info[base_type] = {}
- end
- self.act_red_dot_info[base_type][sub_type] = false
-
- if act_list then
- act_type = act_list.act_type
-
- end
-
- if act_list then
- act_type = act_list.act_type
- local server_time = TimeUtil:getServerTime( )
- if server_time > act_list.stime and act_list.etime > server_time then
- local red_data = self:GetHappyRedBagRedDotBySubType(sub_type)
- bool = red_data.box or red_data.red_bag
- self.act_red_dot_info[act_list.base_type][act_list.sub_type] = bool
- end
- end
- return bool,act_type
- end
-
- --塔罗牌红点
- function KfActivityModel:CheckActTarotRedDot( base_type, sub_type )
- if not sub_type then return false end
- local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type)
- local show = false
- local act_type = CustomActivityModel.CustomIconActType.KfAct
- if not self.act_red_dot_info[base_type] then
- self.act_red_dot_info[base_type] = {}
- end
- self.act_red_dot_info[base_type][sub_type] = false
- if act_list then
- act_type = act_list.act_type
- local server_time = TimeUtil:getServerTime( )
- if server_time > act_list.stime and act_list.etime > server_time then
- local b = OperateActivityModel:getInstance():TarotGetRedDot(sub_type)
- if b then
- self.act_red_dot_info[act_list.base_type][act_list.sub_type] = true
- show = true
- end
- if not self.is_red_tarot_list[sub_type] then
- self.is_red_tarot_list[sub_type] = true
- OperateActivityModel:getInstance():Fire(OperateActivityModel.REQUEST_INFO, 33255, sub_type)
- end
- end
- end
- return show,act_type
- end
-
- --检查竞榜红点
- function KfActivityModel:CheckCompetingRedDot( base_type )
- local red_bool = false
- local red_list = CompetingListModel:getInstance():GetComtingRedList()
- if red_list and TableSize(red_list) > 0 then
- red_bool = red_list[base_type] or false
- end
- local act_type = CustomActivityModel.CustomIconActType.KfAct--默认放在开服活动图标里面
- local competing_cfg = CompetingListModel:getInstance():GetCompetingCfg(base_type)
- if competing_cfg then
- for k,v in pairs(competing_cfg.condition) do
- if v[1] == "icon" then
- act_type = tonumber(v[2])
- break
- end
- end
- end
- return red_bool,act_type
- end
-
- --检查大富翁红点
- function KfActivityModel:CheckMonopolyRedDot( sub_type )
- local base_type = CustomActivityModel.CustomActBaseType.MONOPOLY
- local show = false
- local server_time = TimeUtil:getServerTime()
- local my_level = RoleManager.Instance.mainRoleInfo.level
- local act_type = CustomActivityModel.CustomIconActType.KfAct
- local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type)
- if not act_list then return show,act_type end
- act_list = DeepCopy(act_list)
- act_type = act_list.act_type
- if not self.act_red_dot_info[base_type] then
- self.act_red_dot_info[base_type] = {}--红点信息
- end
- local open_level = Config.Modulesub["331@72"].open_lv or 1
- for l,w in pairs(act_list.condition_list) do
- if type(w) == "table" and w[1] == "role_lv" then
- open_level = tonumber(w[2])
- end
- end
- if server_time > act_list.stime and act_list.etime > server_time then
- if my_level >= open_level then
- self.act_red_dot_info[base_type][act_list.sub_type] = false or not self.monopoly_first_open_red_flag[act_list.sub_type]
- if not self.act_red_dot_info[base_type][act_list.sub_type] then
- local server_info = self:GetMonopolyInfo(act_list.sub_type)
- if server_info and server_info.normal_count then
- local is_over = (server_info.cur_index == 26 and server_info.round == KfActivityModel.MonopolyMaxCircle)
- --红点
- show = (server_info.normal_count + server_info.gold_count > 0) and not is_over
- if not show then
- for k,v in pairs(server_info.circle_rewards) do
- if act_list.circle <= 5 and act_list.status == 1 then
- show = true
- elseif act_list.circle > 5 and act_list.status == 1 then
- show = true
- end
- end
- end
- end
- self.act_red_dot_info[base_type][act_list.sub_type] = show
- end
- end
- end
- return show,act_type
- end
-
- --检查开服团购红点
- function KfActivityModel:CheckKfGroupBuyingRedDot( sub_type )
- local show = false
- local base_type = CustomActivityModel.CustomActBaseType.KF_GROUP_BUYING
- local act_info_list = CustomActivityModel:getInstance():getAllActListByBaseType(base_type) or {}
- local act_type = CustomActivityModel.CustomIconActType.KfAct
- if act_info_list and sub_type then--传进来只需要刷一次
- for i,v in pairs(act_info_list) do
- if v.sub_type == sub_type then
- act_type = v.act_type
- self:CheckKfGroupBuyingSubTypeRedDot(v.sub_type)
- local is_mobilization_act = false
- for ii,vv in ipairs(v.condition_list) do
- if vv[1] == "custom_act" and tonumber(vv[2]) == 71 then
- is_mobilization_act = true
- MobilizationModel:getInstance():CheckGroupBuyingRed(tonumber(vv[3]))--这边要计算全民动员那边团购的红点
- break
- end
- end
- end
- end
- end
- if self.act_red_dot_info[base_type] and TableSize(self.act_red_dot_info[base_type]) > 0 then
- local act_list = CustomActivityModel:getInstance():getActList(base_type, sub_type)
- if act_list then
- local is_mobilization_act = false
- for ii,vv in ipairs(act_list.condition_list) do
- if vv[1] == "custom_act" and tonumber(vv[2]) == 71 then
- is_mobilization_act = true
- end
- end
- if not is_mobilization_act then
- if self.act_red_dot_info[base_type][sub_type] then
- show = v
- end
- end
- end
- end
- return show,act_type
- end
-
- --检查限购礼包红点
- function KfActivityModel:CheckLimitGiftRedDot( sub_type )
- local all_list = CustomActivityModel:getInstance():getAllActListByBaseType(CustomActivityModel.CustomActBaseType.LIMIT_GIFT) or {}
- local show = false
- local base_type = CustomActivityModel.CustomActBaseType.LIMIT_GIFT
- local server_time = TimeUtil:getServerTime()
- local my_level = RoleManager.Instance.mainRoleInfo.level
- local act_type = CustomActivityModel.CustomIconActType.KfAct
- all_list = DeepCopy(all_list)
- if not all_list then return show,act_type end
- local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type)
- act_list = DeepCopy(act_list)
- if not act_list then return show,act_type end
- act_type = act_list.act_type
- if not self.act_red_dot_info[base_type] then
- self.act_red_dot_info[base_type] = {}
- end
-
- local open_level = Config.Modulesub["331@3"].open_lv or 1
- for l,w in pairs(act_list.condition_list) do
- if type(w) == "table" and w[1] == "role_lv" then
- open_level = tonumber(w[2])
- end
- end
- -- self.act_red_dot_info[base_type][act_list.sub_type] = false
- if server_time > act_list.stime and act_list.etime > server_time then
- if my_level >= open_level and GetModuleIsOpen(331,CustomActivityModel.CustomActBaseType.LIMIT_GIFT) then
- self.act_red_dot_info[base_type][act_list.sub_type] = act_list.is_first_open == 1 or LimitGiftModel:getInstance().login_red[act_list.sub_type]
- if not self.act_red_dot_info[base_type][act_list.sub_type] then
- local award_data = CustomActivityModel:getInstance():getOneActRewardList(act_list.base_type,act_list.sub_type)
- if award_data then
- local is_buy_over = true
- for n,l in pairs(award_data.reward_list) do
- if l.status ~= 2 then
- is_buy_over = false
- break
- end
- end
- if is_buy_over then--买完了就不要作妖了
- self.act_red_dot_info[base_type][act_list.sub_type] = false
- return false
- end
- for ii,vv in pairs(award_data.reward_list) do
- local conditon = vv.condition_list
- if conditon and not self.act_red_dot_info[base_type][act_list.sub_type] then
- local cur_price = nil
- local recharge_gold = nil
- for iii,vvv in ipairs(conditon) do
- if vvv[1] == "limit_cost" then
- cur_price = tonumber(vvv[2])
- elseif vvv[1] == "recharge_gold" then
- recharge_gold = tonumber(vvv[2])
- end
- end
- self.act_red_dot_info[base_type][act_list.sub_type] = vv.status == 1 and (cur_price == 0 or recharge_gold ~= nil)
- end
- end
- end
- end
- end
- end
-
- if LimitGiftModel:getInstance().login_red[act_list.sub_type] == nil then
- for k,v in pairs(all_list) do
- local award_data = CustomActivityModel:getInstance():getOneActRewardList(v.base_type,v.sub_type)
- if award_data and award_data.reward_list then
- for ii,vv in pairs(award_data.reward_list) do
- if LimitGiftModel:getInstance().login_red[act_list.sub_type] == nil then
- LimitGiftModel:getInstance().login_red[act_list.sub_type] = vv.status ~= 2
- show = vv.status ~= 2
- if show then
- self.act_red_dot_info[base_type][act_list.sub_type] = true
- end
- elseif LimitGiftModel:getInstance().login_red[act_list.sub_type] then
- break
- end
- end
- end
- end
- end
- show = show or LimitGiftModel:getInstance().login_red[act_list.sub_type] or self.act_red_dot_info[base_type] and self.act_red_dot_info[base_type][sub_type] or false
- return show,act_type
- end
-
- --检查限购礼包是否卖完
- function KfActivityModel:CheckLimitGiftCanBuy( sub_type )
- local all_list = CustomActivityModel:getInstance():getAllActListByBaseType(CustomActivityModel.CustomActBaseType.LIMIT_GIFT) or {}
- local show = false
- local base_type = CustomActivityModel.CustomActBaseType.LIMIT_GIFT
- local server_time = TimeUtil:getServerTime()
- local my_level = RoleManager.Instance.mainRoleInfo.level
- local act_type = CustomActivityModel.CustomIconActType.KfAct
- all_list = DeepCopy(all_list)
- if not all_list then return show,act_type end
- local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type)
- act_list = DeepCopy(act_list)
- if not act_list then return show,act_type end
- act_type = act_list.act_type
-
- local open_level = Config.Modulesub["331@3"].open_lv or 1
- for l,w in pairs(act_list.condition_list) do
- if type(w) == "table" and w[1] == "role_lv" then
- open_level = tonumber(w[2])
- end
- end
- if server_time > act_list.stime and act_list.etime > server_time then
- if my_level >= open_level and GetModuleIsOpen(331,CustomActivityModel.CustomActBaseType.LIMIT_GIFT) then
- local award_data = CustomActivityModel:getInstance():getOneActRewardList(act_list.base_type,act_list.sub_type)
- if award_data then
- local is_buy_over = true
- local cur_vip = RoleManager.Instance.mainRoleInfo.vip_flag
- for n,l in pairs(award_data.reward_list) do
- local can_buy = true
- for i,v in pairs(l.condition_list) do
- if type(v) == "table" and v[1] == "vip" and tonumber(v[2]) > cur_vip then
- can_buy = false
- break
- end
- end
- if l.status ~= 2 and can_buy then
- is_buy_over = false
- break
- end
- end
- if not is_buy_over then -- 没卖完
- return true
- end
- end
- end
- end
- return false
- end
-
- --检查限购礼包所有红点
- function KfActivityModel:CheckLimitGiftAllRedDot( )
- local all_act_list = CustomActivityModel:getInstance():getAllActListByBaseType(CustomActivityModel.CustomActBaseType.LIMIT_GIFT) or {}
- for i,v in pairs(all_act_list) do
- self:IsNeedRed(KfActivityModel.TabID.LimitGift,nil,v.sub_type)
- end
- end
-
- --检查冲榜红点
- function KfActivityModel:CheckRushRankRedDot( sub_type )
- -- if not GetModuleIsOpen(331,10) then return false end
- local openDay = ServerTimeModel:getInstance():GetOpenServerDay()
- local base_type = CustomActivityModel.CustomActBaseType.RUSH_RANK
- local sub_type = sub_type or CustomActivityModel:getInstance():getActMinSubType(base_type)
- local server_time = TimeUtil:getServerTime( )
- local show = false
- local act_type = CustomActivityModel.CustomIconActType.KfAct
- if not self.act_red_dot_info[base_type] then
- self.act_red_dot_info[base_type] = {}
- end
- self.act_red_dot_info[base_type][sub_type] = false
- local all_act = CustomActivityModel:getInstance():getActList(CustomActivityModel.CustomActBaseType.RUSH_RANK,sub_type)
- if all_act then
- act_type = all_act.act_type
- if server_time > all_act.stime and all_act.etime >= server_time then
- local rank_type_list = self:GetTodayRankType()
- for k,rank_type in pairs(rank_type_list) do
- local target_reward_list = self:GetTargetRewardList(rank_type)
- if target_reward_list then
- for k,v in pairs(target_reward_list) do
- if v.state == 1 then
- show = true
- break
- end
- end
- end
- if show then
- break
- end
- end
- self.act_red_dot_info[base_type][sub_type] = show
- end
- end
- if self.act_red_dot_info[base_type] then
- for i,v in ipairs(self.act_red_dot_info[base_type]) do
- if v then
- return v,act_type
- end
- end
- end
- return false,act_type
- end
-
- --活动通用奖励红点33105
- function KfActivityModel:CheckContinueRechargeRedDot(base_type,sub_type)
- if not sub_type then return false end
- local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type)
- local show = false
- local act_type = CustomActivityModel.CustomIconActType.KfAct
- if not self.act_red_dot_info[base_type] then
- self.act_red_dot_info[base_type] = {}
- end
- self.act_red_dot_info[base_type][sub_type] = false
- if act_list then
- act_type = act_list.act_type
- local server_time = TimeUtil:getServerTime( )
- local info = CustomActivityModel:getInstance():getOneActRewardList(base_type, sub_type)
- if server_time > act_list.stime and act_list.etime > server_time then
- if info and info.reward_list then
- for k,n in pairs(info.reward_list) do
- if n.status == 1 then
- show = true
- end
- end
- end
- end
- if not show then
- local com_act_red_info = CustomActivityModel:getInstance():GetActComAwardInfo(act_list.base_type,act_list.sub_type)
- if com_act_red_info then
- show = com_act_red_info.status == 1
- end
- end
- self.act_red_dot_info[act_list.base_type][act_list.sub_type] = show
- end
- return show,act_type
- end
-
- --活动通用奖励红点33105
- function KfActivityModel:CheckActCommonRedDot(base_type,sub_type)
- -- if not GetModuleIsOpen(331,base_type) or not sub_type then return false end
- if not sub_type then return false end
- local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type)
- local show = false
- local act_type = CustomActivityModel.CustomIconActType.KfAct
- if not self.act_red_dot_info[base_type] then
- self.act_red_dot_info[base_type] = {}
- end
- self.act_red_dot_info[base_type][sub_type] = false
- if act_list then
- act_type = act_list.act_type
- local server_time = TimeUtil:getServerTime( )
- local info = CustomActivityModel:getInstance():getOneActRewardList(base_type, sub_type)
- if server_time > act_list.stime and act_list.etime > server_time then
- if info and info.reward_list then
- for k,n in pairs(info.reward_list) do
- if n.status == 1 then
- self.act_red_dot_info[act_list.base_type][act_list.sub_type] = true
- show = true
- end
- end
- end
- end
- -- if not show and base_type == CustomActivityModel.CustomActBaseType.CONTINUE_RECHARGE then--连充有额外处理
- -- local resign_info = self:GetKfContinueInfo(act_list.sub_type)
- -- if resign_info then
- -- local award_day = math.ceil((act_list.etime - act_list.stime)/60/60/24)--当前活动剩余多少天
- -- local real_day = math.ceil((TimeUtil:getServerTime( ) - act_list.stime)/60/60/24)--当前第几天
- -- local day_award_list = {}
- -- for k,v in pairs(info.reward_list) do
- -- for ii,vv in ipairs(v.condition_list) do
- -- if vv[1] == "recharge_gold" and award_day >= v.grade then--天数奖励展示
- -- local data = v
- -- data.day = v.grade
- -- day_award_list[#day_award_list + 1] = data
- -- end
- -- end
- -- end
- -- local sort_func = function ( a, b )
- -- return a.day < b.day
- -- end
- -- if #day_award_list > 1 then
- -- table.sort(day_award_list, sort_func)
- -- end
- -- for i,v in ipairs(day_award_list) do
- -- if real_day > i and resign_info.can_resign_time > 0 and v.status == 0 then
- -- show = true
- -- self.act_red_dot_info[act_list.base_type][act_list.sub_type] = true
- -- break
- -- end
- -- end
- -- end
- -- end
- end
-
- return show,act_type
- end
-
- function KfActivityModel:CheckFosterStageRedDot( base_type,sub_type )
- if not sub_type then return false end
- local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type)
- local show = false
- local act_type = CustomActivityModel.CustomIconActType.KfAct
- if not self.act_red_dot_info[base_type] then
- self.act_red_dot_info[base_type] = {}
- end
- self.act_red_dot_info[base_type][sub_type] = false
- if act_list then
- act_type = act_list.act_type
- local server_time = TimeUtil:getServerTime( )
- local info = CustomActivityModel:getInstance():getOneActRewardList(base_type, sub_type)
- if server_time > act_list.stime and act_list.etime > server_time then
- local openDay = ServerTimeModel:getInstance():GetOpenServerDay()
- local first_red_list = self:GetFosterStageCookie() or {}
- -- if openDay <= 8 and not self.forsert_stage_red_info[act_list.sub_type] then--前八天每次登陆红点
- -- show = true
- -- elseif openDay > 8 and
- if not first_red_list[act_list.sub_type] then
- show = true
- else
- if info and info.reward_list then
- for k,n in pairs(info.reward_list) do
- if n.status == 1 then
- show = true
- end
- end
- end
- end
- self.act_red_dot_info[act_list.base_type][act_list.sub_type] = show
- end
- end
- return show,act_type
- end
-
- --设置开服进阶红点cookie
- function KfActivityModel:SetFosterStageCookie( sub_type )
- local list = self:GetFosterStageCookie() or {}
- list[sub_type] = true
- CookieWrapper.Instance:SaveCookie(CookieLevelType.Account,CookieTimeType.TYPE_DAY2,CookieKey.KF_FORSTER_STAGE_ACT_RED,list)
- CookieWrapper.Instance:WriteAll()
- end
-
- --获得开服进阶红点cookie
- function KfActivityModel:GetFosterStageCookie( )
- local bool = CookieWrapper.Instance:GetCookie(CookieLevelType.Account,CookieKey.KF_FORSTER_STAGE_ACT_RED) or {}
- return bool
- end
-
- --检查限购商城的红点
- function KfActivityModel:CheckLimitShopRedDot( sub_type )
- local base_type = CustomActivityModel.CustomActBaseType.KFACTIVITY_LIMIT_SHOP
- local show = false
- local level = RoleManager.Instance.mainRoleInfo.level
- local server_time = TimeUtil:getServerTime( )
- local act_type = CustomActivityModel.CustomIconActType.KfAct
- local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type)
- if act_list then
- act_list = DeepCopy(act_list)
- act_type = act_list.act_type
- local info = CustomActivityModel:getInstance():getOneActRewardList(act_list.base_type, act_list.sub_type)
- if not self.act_red_dot_info[act_list.base_type] then
- self.act_red_dot_info[act_list.base_type] = {}
- end
- self.act_red_dot_info[act_list.base_type][act_list.sub_type] = false
- if server_time > act_list.stime and act_list.etime > server_time then
- if info and info.reward_list then
- for k,n in pairs(info.reward_list) do
- local gold_type = 0
- local limit_cost = 0
- local show_level_range = {0,999999}
- local limit_times = 0
- local limit_vip = 0
- for i,v in ipairs(n.condition_list) do
- if v[1] == "gold_type" then
- gold_type = tonumber(v[2])
- elseif v[1] == "limit_cost" then
- limit_cost = tonumber(v[2])
- elseif v[1] == "limit_times" then
- limit_times = tonumber(v[2])
- elseif v[1] == "show_level_range" then
- show_level_range = {tonumber(v[2]),tonumber(v[3])}
- elseif v[1] == "limit_vip" then
- limit_vip = tonumber(v[2])
- end
- end
- --先满足等级和次数
- if info.status ~= 2 and level >= tonumber(show_level_range[1]) and level <= tonumber(show_level_range[2]) and limit_times - n.progress > 0 and (RoleManager.Instance.mainRoleInfo.vip_flag >= limit_vip and not VipModel:getInstance():IsVipExperience()) then
- if gold_type == 2 and limit_cost <= RoleManager.Instance.mainRoleInfo.jinLock then--红钻数量满足
- self.act_red_dot_info[act_list.base_type][act_list.sub_type] = true
- show = true
- elseif gold_type == 1 and limit_cost == 0 then--免费
- self.act_red_dot_info[act_list.base_type][act_list.sub_type] = true
- show = true
- elseif gold_type == 2 and limit_cost == 0 then--免费
- self.act_red_dot_info[act_list.base_type][act_list.sub_type] = true
- show = true
- end
- end
- end
- end
- end
- end
- return show,act_type
- end
-
- --检查限购商城是否卖完
- function KfActivityModel:CheckLimitShopCanBuy( sub_type )
- local base_type = CustomActivityModel.CustomActBaseType.KFACTIVITY_LIMIT_SHOP
- local show = false
- local level = RoleManager.Instance.mainRoleInfo.level
- local server_time = TimeUtil:getServerTime( )
- local act_type = CustomActivityModel.CustomIconActType.KfAct
- local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type)
- if act_list then
- act_list = DeepCopy(act_list)
- act_type = act_list.act_type
- local info = CustomActivityModel:getInstance():getOneActRewardList(act_list.base_type, act_list.sub_type)
- if server_time > act_list.stime and act_list.etime > server_time then
- if info and info.reward_list then
- for k,n in pairs(info.reward_list) do
- local gold_type = 0
- local limit_cost = 0
- local show_level_range = {0,999999}
- local limit_times = 0
- for i,v in ipairs(n.condition_list) do
- if v[1] == "gold_type" then
- gold_type = tonumber(v[2])
- elseif v[1] == "limit_cost" then
- limit_cost = tonumber(v[2])
- elseif v[1] == "limit_times" then
- limit_times = tonumber(v[2])
- elseif v[1] == "show_level_range" then
- show_level_range = {tonumber(v[2]),tonumber(v[3])}
- end
- end
- --先满足等级和次数
- if info.status ~= 2 and level >= tonumber(show_level_range[1]) and level <= tonumber(show_level_range[2]) and limit_times - n.progress > 0 then
- return true -- 有满足条件可以买的
- end
- end
- end
- end
- end
- return show,act_type
- end
-
- --检查刮刮卡城的红点
- function KfActivityModel:CheckScrapingCardRedDot(base_type, sub_type )
- if not sub_type then return false end
- local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type)
- local show = false
- local act_type = CustomActivityModel.CustomIconActType.KfAct
- if not self.act_red_dot_info[base_type] then
- self.act_red_dot_info[base_type] = {}
- end
- self.act_red_dot_info[base_type][sub_type] = false
- if act_list then
- act_type = act_list.act_type
- local server_time = TimeUtil:getServerTime( )
- if server_time > act_list.stime and act_list.etime > server_time then
- local b = OperateActivityModel:getInstance():ScrapingCradGetRedDot(sub_type)
- if b then
- self.act_red_dot_info[act_list.base_type][act_list.sub_type] = true
- show = true
- end
- if not self.is_red_scraping_card_list[sub_type] then
- self.is_red_scraping_card_list[sub_type] = true
- OperateActivityModel:getInstance():Fire(OperateActivityModel.REQUEST_INFO, 33244, sub_type)
- OperateActivityModel:getInstance():Fire(OperateActivityModel.REQUEST_INFO, 33246, sub_type)
- end
- end
- end
- return show,act_type
- end
-
- --检查人参果树的红点
- function KfActivityModel:CheckPrayTreeRedDot(base_type, sub_type )
- if not sub_type then return false end
- local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type)
- local show = false
- local act_type = CustomActivityModel.CustomIconActType.KfAct
- if not self.act_red_dot_info[base_type] then
- self.act_red_dot_info[base_type] = {}
- end
- self.act_red_dot_info[base_type][sub_type] = false
- if act_list then
- act_type = act_list.act_type
- local server_time = TimeUtil:getServerTime( )
- if server_time > act_list.stime and act_list.etime > server_time then
- local b = OperateActivityModel:getInstance():PrayTreeGetRedDot()
- if b then
- self.act_red_dot_info[act_list.base_type][act_list.sub_type] = true
- show = true
- end
- if not self.is_red_praytreelist[sub_type] then
- self.is_red_praytreelist[sub_type] = true
- OperateActivityModel:getInstance():Fire(OperateActivityModel.REQUEST_INFO, 33280, sub_type)
- end
- end
- end
- return show,act_type
- end
-
-
- --检查集字红点
- function KfActivityModel:CheckCollectActRedDot( base_type,sub_type )
- if not sub_type then return false end
- local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type)
- local show = false
- local act_type = CustomActivityModel.CustomIconActType.KfAct
- if not self.act_red_dot_info[base_type] then
- self.act_red_dot_info[base_type] = {}
- end
- self.act_red_dot_info[base_type][sub_type] = false
-
- local cookies_list = OperateActivityModel:getInstance():GetJiZiRedDotTipCookie()
- local sub_cookies_list = cookies_list[sub_type]
- if act_list then
- act_type = act_list.act_type
- local server_time = TimeUtil:getServerTime( )
- local info = CustomActivityModel:getInstance():getOneActRewardList(base_type, sub_type)
- if server_time > act_list.stime and act_list.etime > server_time then
- if info and info.reward_list then
- for k,n in pairs(info.reward_list) do
- local exchange_limit = 0
- local goods_exchange_list = {}
- for kk,vv in pairs(n.condition_list) do
- if vv[1] == "exchange_limit" then--兑换限制
- exchange_limit = tonumber(vv[2])
- elseif vv[1] == "goods_exchange" then--兑换列表
- goods_exchange_list = vv[2]
- end
- end
- local red_bool = GoodsModel:getInstance():GetEnough(goods_exchange_list)
- red_bool = red_bool and n.receive_times < exchange_limit
- if red_bool and not (sub_cookies_list and sub_cookies_list[n.grade]) then
- show = true
- self.act_red_dot_info[act_list.base_type][act_list.sub_type] = true
- break
- end
- end
- end
- end
- end
- return show,act_type
- end
-
- --阶段兑换红点
- function KfActivityModel:CheckStageExchangeRedDot( base_type,sub_type )
- local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type)
- local act_type = CustomActivityModel.CustomIconActType.KfAct
- local bool = false
- if not self.act_red_dot_info[base_type] then
- self.act_red_dot_info[base_type] = {}
- end
- self.act_red_dot_info[base_type][sub_type] = false
- local server_time = TimeUtil:getServerTime( )
- if act_list and server_time > act_list.stime and act_list.etime > server_time then
- act_type = act_list.act_type
- bool = self:GetStageExchangeRedDotBySubType(sub_type)
- self.act_red_dot_info[act_list.base_type][act_list.sub_type] = bool
- end
- return bool,act_type
- end
-
- --冒险征途红点
- function KfActivityModel:CheckAdventureRedDot(base_type,sub_type)
- if not sub_type then return false end
- local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type)
- local show = false
- local act_type = CustomActivityModel.CustomIconActType.KfAct
- if not self.act_red_dot_info[base_type] then
- self.act_red_dot_info[base_type] = {}
- end
- self.act_red_dot_info[base_type][sub_type] = false
- if act_list then
- act_type = act_list.act_type
- local server_time = TimeUtil:getServerTime( )
- local info = CustomActivityModel:getInstance():getOneActRewardList(base_type, sub_type)
- if server_time > act_list.stime and act_list.etime > server_time then
- -------------------------
- --可以抽奖励
- local adventure_data = OperateActivityModel:getInstance():GetAdventureNumInfo(sub_type)
- if adventure_data then
- if adventure_data.score >= KfActivityModel.AdventureOneCost then
- self.act_red_dot_info[act_list.base_type][act_list.sub_type] = true
- show = true
- end
- end
- -------------------------
- --有奖励可领取
- if (not show) and info and info.reward_list then
- for k,n in pairs(info.reward_list) do
- if n.status == 1 then
- self.act_red_dot_info[act_list.base_type][act_list.sub_type] = true
- show = true
- end
- end
- end
- end
- end
- return show,act_type
- end
-
- --黑白棋红点
- function KfActivityModel:CheckReversiRedDot( base_type,sub_type )
- local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type)
- local act_type = CustomActivityModel.CustomIconActType.KfAct
- if not act_list then return false,act_type end
- local bool = false
- if not self.act_red_dot_info[base_type] then
- self.act_red_dot_info[base_type] = {}
- end
- self.act_red_dot_info[base_type][sub_type] = false
- -------------------------
- local open_level = Config.Modulesub["331@115"] and Config.Modulesub["331@115"].open_lv or 1
- for l,w in pairs(act_list.condition_list) do
- if type(w) == "table" and w[1] == "role_lv" then
- open_level = tonumber(w[2])
- end
- end
- if RoleManager.Instance.mainRoleInfo.level >= open_level then
- local server_time = TimeUtil:getServerTime( )
- if act_list and server_time > act_list.stime and act_list.etime > server_time then
- act_type = act_list.act_type
- bool = self:GetReversiRedDotBySubType(sub_type)
- self.act_red_dot_info[act_list.base_type][act_list.sub_type] = bool
- end
- else
- self.check_lv_act_open = self.check_lv_act_open or {}
- self.check_lv_act_open[open_level] = self.check_lv_act_open[open_level] or {}
- self.check_lv_act_open[open_level][base_type] = self.check_lv_act_open[open_level][base_type] or {}
- self.check_lv_act_open[open_level][base_type][sub_type] = true
- end
- return bool,act_type
- end
-
- --节日幻魔红点
- function KfActivityModel:CheckFestivalBossRedDot( base_type,sub_type )
- local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type)
- local act_type = CustomActivityModel.CustomIconActType.KfAct
- if not act_list then return false,act_type end
- local bool = false
- if not self.act_red_dot_info[base_type] then
- self.act_red_dot_info[base_type] = {}
- end
- self.act_red_dot_info[base_type][sub_type] = false
- -------------------------
- local open_level = Config.Modulesub["331@117"] and Config.Modulesub["331@117"].open_lv or 1
- for l,w in pairs(act_list.condition_list) do
- if type(w) == "table" and w[1] == "role_lv" then
- open_level = tonumber(w[2])
- end
- end
- if RoleManager.Instance.mainRoleInfo.level >= open_level then
- local server_time = TimeUtil:getServerTime( )
- if act_list and server_time > act_list.stime and act_list.etime > server_time then
- act_type = act_list.act_type
- bool = self:GetFestivalBossRedDotBySubType(sub_type)
- self.act_red_dot_info[act_list.base_type][act_list.sub_type] = bool
- end
- else
- self.check_lv_act_open = self.check_lv_act_open or {}
- self.check_lv_act_open[open_level] = self.check_lv_act_open[open_level] or {}
- self.check_lv_act_open[open_level][base_type] = self.check_lv_act_open[open_level][base_type] or {}
- self.check_lv_act_open[open_level][base_type][sub_type] = true
- end
- return bool,act_type
- end
-
- -- 检查活跃拼图红点
- function KfActivityModel:CheckJigsawRedDot(base_type, sub_type)
- if not sub_type then return false end
- local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type)
- local reward_cfg = CustomActivityModel:getInstance():getOneActRewardList(base_type, sub_type)
- local bool = false
- local act_type = CustomActivityModel.CustomIconActType.OpAct
- if not self.act_red_dot_info[base_type] then
- self.act_red_dot_info[base_type] = {}
- end
- self.act_red_dot_info[base_type][sub_type] = false
- if act_list and reward_cfg then
- act_type = act_list.act_type
- local server_time = TimeUtil:getServerTime( )
- if server_time > act_list.stime and act_list.etime > server_time then
- bool = OperateActivityModel:getInstance():GetJigsawRed(sub_type, reward_cfg)
- self.act_red_dot_info[base_type][sub_type] = bool
- end
- end
- return bool, act_type
- end
-
- -- 检查合成机红点
- function KfActivityModel:CheckActComposeRobotRedDot(base_type,sub_type)
- if not sub_type then return false end
- local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type)
- local act_type = act_list and act_list.act_type and act_list.act_type or CustomActivityModel.CustomIconActType.OpAct
- local bool = false
- if not self.act_red_dot_info[base_type] then
- self.act_red_dot_info[base_type] = {}
- end
- self.act_red_dot_info[base_type][sub_type] = false
- bool = OperateActivityModel:getInstance():GetComposeRobotMainRed(sub_type)
- self.act_red_dot_info[base_type][sub_type] = bool
- return bool, act_type
- end
-
- --检查自选扭蛋红点
- function KfActivityModel:CheckActSelectEggRedDot(base_type,sub_type)
- if not sub_type then return false end
- local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type)
- local act_type = act_list and act_list.act_type and act_list.act_type or CustomActivityModel.CustomIconActType.OpAct
- local bool = false
- if not self.act_red_dot_info[base_type] then
- self.act_red_dot_info[base_type] = {}
- end
- self.act_red_dot_info[base_type][sub_type] = false
- bool = OperateActivityModel:getInstance():GetSelectEggMainRed(sub_type)
- self.act_red_dot_info[base_type][sub_type] = bool
- return bool, act_type
- end
-
- --检查材料上交红点
- function KfActivityModel:CheckActMaterialSubmitRedDot( base_type,sub_type )
- if not sub_type then return false end
- local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type)
- local act_type = act_list and act_list.act_type or CustomActivityModel.CustomIconActType.OpAct
- local bool = false
- if not self.act_red_dot_info[base_type] then
- self.act_red_dot_info[base_type] = {}
- end
- self.act_red_dot_info[base_type][sub_type] = false
- bool = OperateActivityModel:getInstance():CheckMaterialSubmitRedDot(base_type,sub_type)
- self.act_red_dot_info[base_type][sub_type] = bool
- return bool, act_type
- end
-
- --获得活动信息页签列表
- function KfActivityModel:UpdateTab( act_type )
- local menu_name_list = {}
- local is_chace = {}
- local my_level = RoleManager.Instance.mainRoleInfo.level
- local open_level = 0
- local server_time = TimeUtil:getServerTime( )
- for k, v in ipairs(KfActivityModel.TabData) do
- open_level = 0
- if GetModuleIsOpen(v.module_id,v.base_type)
- and v.base_type ~= CustomActivityModel.CustomActBaseType.COPETING --竞榜不在这个判断里面
- then
- if v.is_most then--是后台定制的活动就要进行数据选取
- local sub_type_list = DeepCopy(CustomActivityModel:getInstance():getAllActListByBaseType(v.base_type))
- for i,vv in pairs(sub_type_list) do
- if act_type == vv.act_type and v.base_type == CustomActivityModel.CustomActBaseType.DUN_MUL_DROP then--副本多倍只有一个页签
- vv.id = v.id
- vv.sort_id = v.sort_id
- table_insert(menu_name_list, vv)
- break
- else
- if act_type == vv.act_type--活动类型首先要相等
- and (server_time > vv.stime and vv.etime > server_time --满足活动开放时间
- or v.base_type == CustomActivityModel.CustomActBaseType.ZERO_GIFT -- (0元礼包如果有未领的返还也要显示页签不能消失)
- or v.base_type == CustomActivityModel.CustomActBaseType.INVEST_ACT -- (投资活动如果有未领的天数奖励,页签不能消失)
- or v.base_type == CustomActivityModel.CustomActBaseType.COM_RANK--通用排行
- )then
- for l,w in pairs(vv.condition_list) do
- if type(w) == "table" and w[1] == "role_lv" then
- open_level = tonumber(w[2])
- break
- end
- end
- if not is_chace[v.base_type] then
- is_chace[v.base_type] = {}
- end
- if not is_chace[v.base_type][vv.sub_type] and open_level <= my_level then
- is_chace[v.base_type][vv.sub_type] = vv
- vv.id = v.id
- vv.sort_id = v.sort_id
- if v.base_type == CustomActivityModel.CustomActBaseType.RUSH_RANK then --开服冲榜
- local today_list = self:GetTodayRankType()
- for n,l in ipairs(today_list) do
- local rush_rank_cfg = self:GetRushRankCfg(l)
- if rush_rank_cfg then
- vv.name = rush_rank_cfg.name
- vv.rank_type = l
- table_insert(menu_name_list, DeepCopy(vv))
- break
- end
- end
- elseif v.base_type == CustomActivityModel.CustomActBaseType.LIMIT_GIFT then --限购礼包
- local award_data = CustomActivityModel:getInstance():getOneActRewardList(v.base_type,vv.sub_type)
- if award_data then
- for n,l in pairs(award_data.reward_list) do
- if l.status ~= 2 then
- table_insert(menu_name_list, DeepCopy(vv))
- break
- end
- end
- end
- elseif v.base_type == CustomActivityModel.CustomActBaseType.ZERO_GIFT then --0元礼包
- if self:CheckZeroGiftTabIsOpen(vv.sub_type) then
- table_insert(menu_name_list, DeepCopy(vv))
- end
- elseif v.base_type == CustomActivityModel.CustomActBaseType.KF_GROUP_BUYING then --开服团购不能是全民动员的嵌入式活动
- local is_mobilization_act = false
- for n,l in pairs(vv.condition_list) do
- if l[1] == "custom_act" and tonumber(l[2]) == 71 then
- is_mobilization_act = true
- break
- end
- end
- if not is_mobilization_act then
- table_insert(menu_name_list, DeepCopy(vv))
- end
- -- elseif v.base_type == CustomActivityModel.CustomActBaseType.INVEST_ACT then -- 投资活动
- -- if self:CheckInvestActTabIsOpen(vv.sub_type) then
- -- table_insert(menu_name_list, DeepCopy(vv))
- -- end
- elseif v.base_type == CustomActivityModel.CustomActBaseType.COM_RANK then -- 通用排行
- if self:CheckComRankTabIsOpen(vv.sub_type) then
- table_insert(menu_name_list, DeepCopy(vv))
- end
- elseif v.base_type == CustomActivityModel.CustomActBaseType.SUPER_AWARD then -- 超能大奖
- if self:CheckSuperAwardTabIsOpen(v.base_type,vv.sub_type) then
- table_insert(menu_name_list, DeepCopy(vv))
- end
- else
- table_insert(menu_name_list, vv)
- end
- end
- end
- end
- end
- else--直接插入 由前端决定是否开放的活动
- v.sub_type = 1
- table_insert(menu_name_list, v)
- end
- end
- end
-
- --这里判断是否有竞榜开放 然后插入进列表里面
- local competing_open_list = CompetingListModel:getInstance():GetCompetingOpenActList(act_type)
- if competing_open_list and #competing_open_list > 0 then
- for k,v in pairs(competing_open_list) do
- table_insert(menu_name_list, v)
- end
- end
- self.menu_name_list = menu_name_list
- return menu_name_list
- end
-
- --检查超能大奖是否开启
- function KfActivityModel:CheckSuperAwardTabIsOpen( base_type,sub_type )
- local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type)
- if act_list then
- local recharge_num = 0
- local consume_num = 0
- for k,v in pairs(act_list.condition_list) do
- if v[1] == "recharge" then
- recharge_num = tonumber(v[2])
- elseif v[1] == "consume" then
- consume_num = tonumber(v[2])
- end
- end
-
- local cur_recharge_num = 0
- local cur_consume_num = 0
- local award_data = CustomActivityModel:getInstance():getOneActRewardList(base_type,sub_type)
- local complete_num = 0
- if award_data and award_data.reward_list then
- for kk,vv in ipairs(award_data.reward_list) do
- if #vv.condition_list == 1 then
- for m,n in ipairs(vv.condition_list) do
- if n[1] == "recharge" then
- cur_recharge_num = vv.progress
- break
- elseif n[1] == "consume" then
- cur_consume_num = vv.progress
- break
- end
- end
- end
- complete_num = (vv.status == 2 and 1 or 0) + complete_num
- end
- if recharge_num <= cur_recharge_num and consume_num <= cur_consume_num then
- local all_act_list = CustomActivityModel:getInstance():getAllActListByBaseType(base_type)
- if TableSize(all_act_list) == 1 then--一个的时候直接开 2个只能开一个
- return true
- elseif TableSize(all_act_list) == 2 then
- if recharge_num>0 and consume_num>0 then--判断上一个是否全部完成
- for i,v in pairs(all_act_list) do
- if v.sub_type ~= sub_type then
- complete_num = 0
- local sub_award_data = CustomActivityModel:getInstance():getOneActRewardList(base_type,v.sub_type)
- if sub_award_data then
- for kk,vv in ipairs(sub_award_data.reward_list) do
- complete_num = (vv.status == 2 and 1 or 0) + complete_num
- end
- return complete_num >= #sub_award_data.reward_list
- end
- end
- end
- else
- return complete_num < #award_data.reward_list
- end
- end
- end
- end
- end
- return false
- end
-
- function KfActivityModel:CheckActivityIdOpen( act_type,id )
- if id then
- local data = self:UpdateTab(act_type)
- local item_data = nil
- for k,v in pairs(data) do
- if v.id == id then
- item_data = v
- break
- end
- end
-
- if not item_data then
- return false
- end
- end
- return true
- end
-
- function KfActivityModel:GetTodayRankType()--获得当天的冲榜类型
- local openDay = ServerTimeModel:getInstance():GetOpenServerDay()
- local rank_type_list = {}
- for _, v in pairs(Config.Rushrank) do
- if openDay >= tonumber(v.start_day) and openDay <= tonumber(v.clear_day) - 1 then
- rank_type_list[#rank_type_list + 1] = tonumber(v.id)
- end
- end
- if #rank_type_list >= 2 then
- local sort_func = function ( a, b )
- return a < b
- end
- table.sort(rank_type_list, sort_func)
- end
- return rank_type_list
- end
-
- function KfActivityModel:GetRankTypeOpenDay(rank_type)--获得当天的冲榜类型
- for _, v in pairs(Config.Rushrank) do
- if v.id == rank_type then
- return v.start_day
- end
- end
- return 1
- end
-
- --设置冲榜信息
- function KfActivityModel:SetRushRankInfo(vo)
- local new_rank_list = {}
- for i,v in ipairs(vo.rank_list) do
- new_rank_list[v.rank] = v
- end
- vo.rank_list = new_rank_list
- if not self.rush_rank_info[vo.sub_type] then
- self.rush_rank_info[vo.sub_type] = {}
- end
- self.rush_rank_info[vo.sub_type][vo.rank_type] = vo
- local base_type = CustomActivityModel.CustomActBaseType.OPERATE_ACTIVITY
- local op_act_list = CustomActivityModel:getInstance():getAllActListByBaseType(base_type) or {}
- for k, v in pairs(op_act_list) do
- if v.act_type == CustomActivityModel.CustomIconActType.KfAct then--开服冲榜
- self:CheckActIconBoolOpen(v.sub_type)
- break
- end
- end
- end
-
- function KfActivityModel:GetRushRankInfo(sub_type,rank_type)
- if self.rush_rank_info[sub_type] then
- return self.rush_rank_info[sub_type][rank_type]
- end
- end
-
- --设置目标奖励信息
- function KfActivityModel:SetTargetRewardList(vo)
- self.target_reward_list = {}
- for i,v in ipairs(vo.goal_list) do
- if not self.target_reward_list[v.rank_type] then
- self.target_reward_list[v.rank_type] = {}
- end
- self.target_reward_list[v.rank_type][v.goal] = v
- end
- self:IsNeedRed(KfActivityModel.TabID.RushRank,nil,vo.sub_type)
- end
-
- function KfActivityModel:GetTargetRewardList( rank_type )
- return self.target_reward_list[rank_type]
- end
-
- --获得冲榜配置
- function KfActivityModel:GetRushRankCfg( rank_type )
- return self.rush_rank_cfg[rank_type]
- end
-
- --获得冲榜总配置
- function KfActivityModel:GetAllRushRankCfg( rank_type )
- return self.rush_rank_cfg
- end
-
- --获得冲榜奖励配置
- function KfActivityModel:GetRushRankAwardCfg( id )
- return self.rush_rank_award_cfg[id]
- end
-
- function KfActivityModel:GetRushGoalAwardCfg( id )
- return self.rush_rank_goal_cfg[id]
- end
-
- --获得排名配置
- function KfActivityModel:GetRushRankListCfg( id )
- local award_cfg =DeepCopy(self:GetRushRankAwardCfg(id))
- local rank_list = {}
- local rank_limit_list = {}
- if award_cfg then
- for i,v in ipairs(award_cfg) do
- for k=v.rank_min,v.rank_max do
- rank_list[k] = v.rank_limit
- local str_list = Split(Trim(v.about),"@") or {"",""}
- rank_limit_list[k] = str_list and str_list[2] or ""
- end
- end
- end
- return rank_list,rank_limit_list
- end
-
- --得到冲榜阶级说明
- function KfActivityModel:GetRushRankLimitInfo(limit,index)
- local limitStr, value1, value2 = "", nil, nil
- index = index or 1
- if TableSize(limit) > 0 then
- local str = tostring(limit[index][1])
- if Trim(str) == "lv" then
- limitStr = "等级"
- value1 = tonumber(limit[index][2])
- elseif Trim(str) == "combat" then
- limitStr = "战力"
- value1 = tonumber(limit[index][2])
- elseif Trim(str) == "gold" then
- limitStr = "充值"
- value1 = tonumber(limit[index][2])
- elseif Trim(str) == "stone_lv" then
- limitStr = "宝石"
- value1 = tonumber(limit[index][2])
- elseif Trim(str) == "horse_stage" then
- limitStr = "坐骑"
- value1 = tonumber(limit[index][2][1])
- value2 = tonumber(limit[index][2][2])
- elseif Trim(str) == "pet_stage" then
- limitStr = "AI娘"
- value1 = tonumber(limit[index][2][1])
- value2 = tonumber(limit[index][2][2])
- end
- end
- return Trim(str), limitStr, value1, value2
- end
-
- --累充充值总数
- function KfActivityModel:SetRecharge(base_type, sub_type, number)
- local act_list = CustomActivityModel:getInstance():getActList(base_type, sub_type)
- if act_list then
- self.seven_recharge_total = self.seven_recharge_total or {}
- self.seven_recharge_total[sub_type] = number
- if not self.recharge_total then
- self.recharge_total = {}
- end
- if not self.recharge_total[base_type] then
- self.recharge_total[base_type] = {}
- end
- self.recharge_total[base_type][sub_type] = number
- end
- end
-
-
- function KfActivityModel:SetZeroGiftInfo( vo )
- local new_data = {}
- for kk,vv in pairs(vo.reward_list) do
- new_data[vv.grade] = vv
- end
- vo.reward_list = new_data
- if vo and vo.sub_type then
- self.zero_gift_view_info[vo.sub_type] = {}
- self.zero_gift_view_info[vo.sub_type] = vo
- else
- self.zero_gift_view_info[vo.sub_type] = {}
- end
-
- self:ZeroGiftNeedTimeLater()
- -- local is_show_time = vo.start_time and (vo.start_time - TimeUtil:getServerTime()) > 0
- local base_type = CustomActivityModel.CustomActBaseType.OPERATE_ACTIVITY
- local act_list = CustomActivityModel:getInstance():getAllActListByBaseType(base_type) or {}
- for k, v in pairs(act_list) do
- if v.act_type == CustomActivityModel.CustomIconActType.GiftAct then--限时礼包类型
- self:CheckActIconBoolOpen(v.sub_type)
- break
- end
- end
- end
-
- function KfActivityModel:GetZeroGiftInfo(sub_type)
- return self.zero_gift_view_info[sub_type] or nil
- end
-
- function KfActivityModel:GetZeroGiftGradeInfo(sub_type,grade)
- if not self.zero_gift_view_info[sub_type] then return nil end
- for k,v in pairs(self.zero_gift_view_info[sub_type].reward_list) do
- if v.grade == grade then
- return v
- end
- end
- return nil
- end
-
- function KfActivityModel:ZeroGiftNeedTimeLater( )--是否需要倒计时刷新
- for k,v in pairs(self.zero_gift_view_info) do
- local limit_time = 0
- local limit_data = nil
- for kk,vv in pairs(v.reward_list) do
- if vv.time - TimeUtil:getServerTime() > 0 then
- if limit_time - TimeUtil:getServerTime() > 0 then
- if limit_time > vv.time then
- limit_time = vv.time
- limit_data = vv
- end
- else
- limit_time = vv.time
- limit_data = vv
- end
- end
- end
- if limit_time - TimeUtil:getServerTime() > 0 then
- self:SetZeroGiftActDetailShow(v.sub_type,limit_data)
- else
- if self.zero_gift_time_id_list[v.sub_type] then
- GlobalTimerQuest:CancelQuest(self.zero_gift_time_id_list[v.sub_type])
- self.zero_gift_time_id_list[v.sub_type] = nil
- end
- end
- end
- end
-
- function KfActivityModel:SetZeroGiftActDetailShow( sub_type,data )
- if self.zero_gift_time_id_list[sub_type] then
- GlobalTimerQuest:CancelQuest(self.zero_gift_time_id_list[sub_type])
- self.zero_gift_time_id_list[sub_type] = nil
- end
- if not sub_type or not data.time then return end
- local sec = data.time - TimeUtil:getServerTime()
- if sec >= 0 then
- local function onTimer()
- sec = data.time - TimeUtil:getServerTime()
- if sec >= 0 then
- -- print("WQ:AllGiftModel [155]倒计时领奖中: ",sec)
- else
- if self.zero_gift_time_id_list[sub_type] then
- local function delay_method( )
- self:Fire(KfActivityModel.REQUEST_INFO,33185,CustomActivityModel.CustomActBaseType.ZERO_GIFT,sub_type)
- end
- setTimeout(delay_method, 0.5)
- GlobalTimerQuest:CancelQuest(self.zero_gift_time_id_list[sub_type])
- self.zero_gift_time_id_list[sub_type] = nil
- end
- end
- end
- if not self.zero_gift_time_id_list[sub_type] then
- self.zero_gift_time_id_list[sub_type] = GlobalTimerQuest:AddPeriodQuest(onTimer, 1, -1)
- end
- else
- if self.zero_gift_time_id_list[sub_type] then
- GlobalTimerQuest:CancelQuest(self.zero_gift_time_id_list[sub_type])
- self.zero_gift_time_id_list[sub_type] = nil
- end
- end
- end
-
- --设置团购信息
- function KfActivityModel:SetGroupBuyingInfo( scmd )
- local list = {}
- for k,v in pairs(scmd.list) do
- list[v.grade] = v
- end
- scmd.list = list
- self.group_buying_view_info[scmd.sub_type] = scmd
- end
-
- --团购信息推送 设置信息
- function KfActivityModel:SetGroupBuyingInfoByGrade( scmd )
- if self.group_buying_view_info[scmd.sub_type] and self.group_buying_view_info[scmd.sub_type].list
- and self.group_buying_view_info[scmd.sub_type].list[scmd.grade] then
- self.group_buying_view_info[scmd.sub_type].list[scmd.grade] = scmd
- end
- end
-
- function KfActivityModel:GetGroupBuyingInfo( sub_type )
- return self.group_buying_view_info[sub_type]
- end
-
- --团购倒计时
- function KfActivityModel:KfGroupBuyingTimeLater( sub_type )
- if self.groupBuying_time_id_list[sub_type] then
- GlobalTimerQuest:CancelQuest(self.groupBuying_time_id_list[sub_type])
- self.groupBuying_time_id_list[sub_type] = nil
- end
- if not sub_type or not self.group_buying_time_list[sub_type] then return end
- if self.group_buying_time_list[sub_type] > 0 then
- local function onTimer()
- self.group_buying_time_list[sub_type] = self.group_buying_time_list[sub_type] - 1
- if self.group_buying_time_list[sub_type] >= 0 then
-
- else
- if self.groupBuying_time_id_list[sub_type] then
- GlobalTimerQuest:CancelQuest(self.groupBuying_time_id_list[sub_type])
- self.groupBuying_time_id_list[sub_type] = nil
- end
- end
- end
- if not self.groupBuying_time_id_list[sub_type] then
- self.groupBuying_time_id_list[sub_type] = GlobalTimerQuest:AddPeriodQuest(onTimer, 1, -1)
- end
- else
- if self.groupBuying_time_id_list[sub_type] then
- GlobalTimerQuest:CancelQuest(self.groupBuying_time_id_list[sub_type])
- self.groupBuying_time_id_list[sub_type] = nil
- end
- end
- end
-
- --检查开服团购红点子类型
- function KfActivityModel:CheckKfGroupBuyingSubTypeRedDot( sub_type )
- local info = self:GetGroupBuyingInfo(sub_type)
- local base_type = CustomActivityModel.CustomActBaseType.KF_GROUP_BUYING
- if not self.act_red_dot_info[base_type] then
- self.act_red_dot_info[base_type] = {}
- end
- if not info or not info.list then
- self.act_red_dot_info[base_type][sub_type] = false
- return
- end
- local sort_func = function ( a, b )
- return a.grade < b.grade
- end
- self.act_red_dot_info[base_type][sub_type] = false
- local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type)
- local award_data = CustomActivityModel:getInstance():getOneActRewardList(base_type,sub_type)
- local jin_enough = false
- if award_data and award_data.reward_list and info.list then
- local gold_type = 0
- local original_price = 0
- local discount_list = nil
- local member_list = nil
- table.sort(award_data.reward_list, sort_func)
- for kk,vv in ipairs(award_data.reward_list) do
- for m,n in ipairs(vv.condition_list) do
- if n[1] == "gold_type" then
- gold_type = tonumber(n[2])
- elseif n[1] == "original_price" then
- original_price = tonumber(n[2])
- elseif n[1] == "discount" then
- discount_list = n[2]
- elseif n[1] == "member" then
- member_list = n[2]
- end
- end
-
- if info.list[vv.grade] and gold_type == 2 then
- local is_buy = info.list[vv.grade].price ~= 0--是否购买
- local cur_discount = self:GetKfGroupBuyingCurDiscount(discount_list,member_list,info.list[vv.grade].member)
- if not is_buy and not jin_enough then
- jin_enough = (gold_type == 1 and original_price*cur_discount/10 <= RoleManager.Instance.mainRoleInfo.jin) or original_price*cur_discount/10 <= RoleManager.Instance.mainRoleInfo.jinLock
- end
- local get_num = is_buy and (info.list[vv.grade].price - cur_discount*original_price/10) or 0
- self.act_red_dot_info[base_type][sub_type] = get_num > 0
- if get_num > 0 then
- break
- end
- end
- end
- end
- -- local group_red_list = CookieWrapper.Instance:GetCookie(CookieLevelType.Account,CookieKey.GROUP_BUYING) or {}
- -- if group_red_list[sub_type] == nil then
- -- group_red_list[sub_type] = true
- -- CookieWrapper.Instance:SaveCookie(CookieLevelType.Account,CookieTimeType.TYPE_ALWAYS,CookieKey.GROUP_BUYING,group_red_list)
- -- CookieWrapper.Instance:WriteAll()
- -- end
- if self.group_red_list[sub_type] == nil and not jin_enough then--买不起 没红点
- self.group_red_list[sub_type] = false
- end
- if self.group_red_list[sub_type] == false and jin_enough then--本来买不起 突然有钱了 买的起 那就要有红点了。
- self.group_red_list[sub_type] = nil
- end
- if self.group_red_list[sub_type] == nil then
- for i,v in ipairs(info.list) do
- local is_buy = v.price ~= 0--是否购买
- if not is_buy then--未购买
- self.act_red_dot_info[base_type][sub_type] = true
- break
- end
- end
- end
- -- print("huangcong:KfActivityModel [start:1792] :", self.act_red_dot_info[base_type])
- -- PrintTable(self.act_red_dot_info[base_type])
- -- print("huangcong:KfActivityModel [end]")
- end
-
- --获取当前折数
- function KfActivityModel:GetKfGroupBuyingCurDiscount( discount_list,member_list,member )
- local cur_discount = 0
- if discount_list and #discount_list > 0 then
- local member_num = member or 0
- for i,v in ipairs(member_list) do
- if tonumber(v) <= member_num then
- cur_discount = tonumber(discount_list[i])
- end
- end
- end
- cur_discount = cur_discount < 0 and 0 or cur_discount
- return cur_discount
- end
-
- --获得补签消耗
- function KfActivityModel:GetMonopolyDesignPrice( count )
- if Config.Monoprice[count] then
- return Config.Monoprice[count].price
- end
- return 0
- end
-
- --获得大富翁圈数格子配置
- function KfActivityModel:GetMonopolyLatticeCfg( round,index )
- if not index then
- return self.mono_lattice_cfg[round]
- elseif self.mono_lattice_cfg[round] then
- return self.mono_lattice_cfg[round][index]
- end
- end
-
- --获得小宝箱奖励
- function KfActivityModel:GetMonopolySmallBoxAward( index )
- return self.mono_smallbox_award_cfg[index]
- end
-
- --获得幸运卡奖励
- function KfActivityModel:GetMonopolyLuckyAward( index )
- return self.mono_lucky_award_cfg[index]
- end
-
- --获得大富翁圈数奖励
- function KfActivityModel:GetMonopolyRoundAward( sub_type,round )
- if self.mono_round_award_cfg[sub_type] and not round then
- return self.mono_round_award_cfg[sub_type]
- elseif self.mono_round_award_cfg[sub_type] then
- return self.mono_round_award_cfg[sub_type][round]
- end
- end
-
- --设置大富翁信息
- function KfActivityModel:SetMonopolyInfo( vo )
- local new_data = vo
- -- local new_lucky_pools = {}
- -- for k,v in pairs(vo.lucky_pools) do
- -- new_lucky_pools[v.index] = v
- -- end
-
- local new_dice_list = {}
- for k,v in pairs(vo.dice_list) do
- new_dice_list[v.index] = v
- end
-
- local new_circle_rewards = {}
- for k,v in pairs(vo.circle_rewards) do
- new_circle_rewards[v.circle] = v
- end
- -- new_data.lucky_pools = new_lucky_pools
- if #vo.lucky_pools > 1 then
- local sort_func = function ( a, b )
- return a.index < b.index
- end
- table.sort(vo.lucky_pools, sort_func)
- end
- -- print("huangcong:KfActivityController [start:547] vo:", vo.lucky_pools)
- -- PrintTable(vo.lucky_pools)
- -- print("huangcong:KfActivityController [end]")
- new_data.dice_list = new_dice_list
- new_data.circle_rewards = new_circle_rewards
- self.monopoly_info[vo.sub_type] = vo
- end
-
- --获得大富翁信息
- function KfActivityModel:GetMonopolyInfo( sub_type )
- return self.monopoly_info[sub_type]
- end
-
- --检查活动图标(开服活动 精彩活动 主题活动)开启
- function KfActivityModel:CheckActIconBoolOpen( sub_type )
- local base_type = CustomActivityModel.CustomActBaseType.OPERATE_ACTIVITY
- local sub_type = sub_type or CustomActivityModel:getInstance():getActMinSubType(base_type)
- local level = RoleManager.Instance.mainRoleInfo.level
- local act_list = CustomActivityModel:getInstance():getActList(base_type, sub_type)
- local openDay = ServerTimeModel:getInstance():GetOpenServerDay()
- local is_open = false
- local end_time = 0
- local open_level = 1
- local close_level = 9999
- local icon_sub_type = base_type*1000 + sub_type
- if sub_type >= 10001 then
- icon_sub_type = base_type*100000 + sub_type
- end
- if act_list and act_list.etime then
- for l,w in pairs(act_list.condition_list) do
- if type(w) == "table" and w[1] == "role_lv" then
- open_level = tonumber(w[2])
- elseif type(w) == "table" and w[1] == "close_lv" then
- close_level = tonumber(w[2])
- end
- end
- local have_time = TimeUtil:getServerTime( ) - act_list.stime
- end_time = act_list.etime - TimeUtil:getServerTime()
- is_open = have_time > 0 and end_time > 0 and open_level <= level and close_level > level
- if GetModuleIsOpen(331,base_type) then
- if is_open then
- if act_list.act_type == CustomActivityModel.CustomIconActType.JcAct then--开服狂huan
- local act_sub_list = self:UpdateTab(act_list.act_type)
- if TableSize(act_sub_list) > 0 then
- self:UpdateZeroGiftIconState(icon_sub_type)
- end
- end
- if act_list.act_type == CustomActivityModel.CustomIconActType.GiftAct then
- local act_sub_list = self:UpdateTab(act_list.act_type)
- if TableSize(act_sub_list) > 0 then
- local min_time = self:GetActiListMinTime(act_sub_list)
- if min_time and min_time > 0 then
- local str = nil
- if openDay <= 4 and level < 110 then
- str = "110级可领"
- end
- ActivityIconManager:getInstance():addIcon(icon_sub_type, min_time, str)
- else
- ActivityIconManager:getInstance():addIcon(icon_sub_type, -1)
- end
- else
- ActivityIconManager:getInstance():deleteIcon(icon_sub_type)
- end
- elseif act_list.act_type == CustomActivityModel.CustomIconActType.KfAct and openDay <= 8 then--开服排行开服前8天底下要显示开服冲榜信息
- local rank_type_list = self:GetTodayRankType()
- local rank_sub_type = CustomActivityModel:getInstance():getActMinSubType(CustomActivityModel.CustomActBaseType.RUSH_RANK)
- local rank_info = self:GetRushRankInfo(rank_sub_type,rank_type_list and rank_type_list[1])
- local str = "今日主题"
- local rank_max_limit = self:GetRushRankMaxLimit(rank_type_list and rank_type_list[1])--冲榜最大限制
- if rank_info and rank_info.sel_rank and rank_info.sel_rank ~= 0 and rank_info.sel_rank <= rank_max_limit then
- str = string.format("排名:%s",rank_info.sel_rank)
- end
- ActivityIconManager:getInstance():addIcon(icon_sub_type, -1, str)
- else
- ActivityIconManager:getInstance():addIcon(icon_sub_type, -1)
- end
- else
- ActivityIconManager:getInstance():deleteIcon(icon_sub_type)
- end
- else
- -- print("huangcong:KfActivityModel [62]: ",key)
- end
- else
- ActivityIconManager:getInstance():deleteIcon(icon_sub_type)
- end
- end
-
- -- 0元礼包特殊更新逻辑
- function KfActivityModel:UpdateZeroGiftIconState(icon_sub_type)
- if RoleManager.Instance.mainRoleInfo.level > 96 then return end
- local zeroGiftHaveOpen = self:GetZeroGiftFirstOpenCookie()
- -- print("Lizhijian:KfActivityModel [start:2264] self.haveBubble ------------------------------------------")
- -- 零元礼包界面打开后不显示气泡
- if not zeroGiftHaveOpen and not self.haveBubble then
- self.haveBubble = true
- -- 0元礼包气泡提示 前端自定义配置,可修改
- local act_icon_info = {
- condition_list = {
- { 'type', 0}, -- 0为直接读取图片,1为读取程序字
- { 'role_lv', 96},
- { 'func', icon_sub_type},
- { 'show', 999}, -- 显示时长
- { 'node', {0}},
- { 'loc', 'right'},
- {'bg_type', 36} -- 气泡样式,对应1或者2的资源后缀
- },
- stime = 0,
- base_type = 999,
- sub_type = -1, -- 气泡显示优先级,-1为最高优先级
- etime = 2147000000, --INT_MAX
- desc = "免费送SR战魂", -- 气泡文本内容
- condition = "",
- is_first_open = 0,
- wlv = 948,
- name = "0元礼包",
- act_type = CustomActivityModel.CustomIconActType.JcAct,
- }
- local function delay_func( ... )
- ActivityIconManager:getInstance():SetActivityIconCustomDescInfo(act_icon_info)
- end
- setTimeout(delay_func,60)
- end
-
- -- 零元礼包界面打开后不显示光效
- local icon_data = ActivityIconManager:getIconCfg(icon_sub_type)
- if zeroGiftHaveOpen then
- icon_data.effect_name = nil
- else
- icon_data.effect_name = "ui_bianqiang"
- end
- ActivityIconManager:SetIconNewCfgInfo(icon_data)
- GlobalEventSystem:Fire(ActivityIconManager.UPDATE_SINGLE_ICON,icon_sub_type)
- end
-
- --获得活动列表最小时间
- function KfActivityModel:GetActiListMinTime( all_list )
- local my_level = RoleManager.Instance.mainRoleInfo.level
- local min_end_time = nil
- local server_time = TimeUtil:getServerTime( )
- for k,v in pairs(all_list) do
- local open_level = Config.Modulesub["331@"..v.base_type].open_lv or 1
- local end_time = v.etime
- for l,w in pairs(v.condition_list) do
- if type(w) == "table" and w[1] == "role_lv" then
- open_level = tonumber(w[2])
- break
- end
- end
- if server_time > v.stime and end_time > server_time then--暂时先用这个不然看不到
- if my_level >= open_level and GetModuleIsOpen(331,v.base_type) then
- if v.base_type == CustomActivityModel.CustomActBaseType.ZERO_GIFT then--0元礼包的拿自己的数据
- local zero_info = self:GetZeroGiftInfo(v.sub_type)
- if zero_info and zero_info.reward_list then
- for kk,vv in pairs(zero_info.reward_list) do
- if vv.status ~= 2 then
- if not min_end_time then
- min_end_time = end_time - TimeUtil:getServerTime( )
- else
- min_end_time = (end_time - TimeUtil:getServerTime( )) < min_end_time and (end_time - TimeUtil:getServerTime( )) or min_end_time
- end
- end
- end
- end
- else
- local award_data = CustomActivityModel:getInstance():getOneActRewardList(v.base_type,v.sub_type)
- if award_data and award_data.reward_list then
- for ii,vv in pairs(award_data.reward_list) do
- if vv.status ~= 2 then
- if not min_end_time then
- min_end_time = end_time - TimeUtil:getServerTime( )
- else
- min_end_time = (end_time - TimeUtil:getServerTime( )) < min_end_time and (end_time - TimeUtil:getServerTime( )) or min_end_time
- end
- end
- end
- end
- end
- end
- end
- end
- return min_end_time
- end
-
- --检查活动图标升级刷新
- function KfActivityModel:CheckActIconLevelUp( level )
- if level >= Config.Modulesub["331@99"].open_lv then--主题活动判断等级
- local all_act_list = CustomActivityModel:getInstance():getAllActListByBaseType(CustomActivityModel.CustomActBaseType.OPERATE_ACTIVITY)
- if all_act_list then
- for i,v in pairs(all_act_list) do
- for l,w in pairs(v.condition_list) do
- if type(w) == "table" and w[1] == "role_lv" then
- local open_level = tonumber(w[2])
- if open_level == level or level == Config.Modulesub["331@99"].open_lv then
- self:CheckActIconBoolOpen(v.sub_type)
- self:CheckMainIconRedDot(v.act_type)
- end
- end
- end
- end
- end
- end
- end
-
- --获得活动类型资源
- function KfActivityModel:GetActTypeRes( act_type )
- return KfActivityConst.ActTypeRes[act_type]
- end
-
-
- --获得界面类
- function KfActivityModel:GetViewClassAndDesc(id,choose_tab_data)
- local view_class = self.act_view_class[id]
- local desc_str = ""
- if choose_tab_data.base_type and choose_tab_data.sub_type then
- local act_list = CustomActivityModel:getInstance():getActList(choose_tab_data.base_type, choose_tab_data.sub_type)
- if act_list then
- if string.len(act_list.desc) == 0 and choose_tab_data.base_type == 7 then
- desc_str = string.format("%s",HtmlColorTxt("活动期间,每日累充到一定金额,即可领取丰厚的返利奖励!", ColorUtil.WHITE_DARK))
- elseif choose_tab_data.base_type == CustomActivityModel.CustomActBaseType.MONOPOLY then--大富翁说明在界面里面
- desc_str = ""
- elseif choose_tab_data.base_type == CustomActivityModel.CustomActBaseType.Competing then--竞榜有自己的时间
- desc_str = ""
- elseif choose_tab_data.base_type == CustomActivityModel.CustomActBaseType.DUN_MUL_DROP then--竞榜有自己的时间
- desc_str = ""
- elseif choose_tab_data.base_type == CustomActivityModel.CustomActBaseType.BOSS_TREASURE then--幻魔宝典
- desc_str = ""
- elseif choose_tab_data.base_type == CustomActivityModel.CustomActBaseType.RUSH_RANK then--幻魔宝典
- elseif choose_tab_data.base_type == CustomActivityModel.CustomActBaseType.FESTIVAL_BOSS then--节日幻魔
- desc_str = ""
- elseif choose_tab_data.base_type == CustomActivityModel.CustomActBaseType.LOGIN_PASS then
- desc_str = ""
- elseif choose_tab_data.base_type == CustomActivityModel.CustomActBaseType.COMPOSE_ROBOT then--合成机自己有额外说明
- desc_str = ""
- elseif choose_tab_data.base_type == CustomActivityModel.CustomActBaseType.DISCOUNT_FULL_CUT then
- desc_str = ""
- elseif choose_tab_data.base_type == CustomActivityModel.CustomActBaseType.JUMP_ONE then
- desc_str = ""
- else
- local desc = ChuanWenManager:getInstance():FormatColorTag2(Trim(act_list.desc),true)
- desc_str = string.format("%s",desc)
- end
- else
- desc_str = ""
- end
- end
- if string.len(desc_str) ~= 0 then
- desc_str = string.format("<color=%s>活动说明:</color>%s","#a9c1e1",desc_str) or ""
- end
- return view_class,desc_str
- end
-
- --获得活动类型
- function KfActivityModel:GetActType(sub_type,id)
- local act_type = nil
- if id == KfActivityModel.TabID.Competing and sub_type then
- local competing_cfg = CompetingListModel:getInstance():GetCompetingCfg(sub_type)
- if competing_cfg then
- local icon_act_type = CustomActivityModel.CustomIconActType.KfAct--默认放在开服活动图标里面
- for k,v in pairs(competing_cfg.condition) do
- if v[1] == "icon" then
- act_type = tonumber(v[2])
- break
- end
- end
- end
- return act_type
- end
-
- local server_time = TimeUtil:getServerTime()
- if id then
- for k,v in pairs(KfActivityModel.TabData) do
- if v.id == id then
- local base_type = v.base_type
- local all_act_list = CustomActivityModel:getInstance():getAllActListByBaseType(base_type)
- local open_level = 1
- for kk,vv in pairs(all_act_list) do
- open_level = 1
- if server_time > vv.stime and vv.etime > server_time and (not sub_type or sub_type == vv.sub_type) then--满足活动开放时间(0元礼包如果有未领的返还也要显示页签不能消失)
- for l,w in pairs(vv.condition_list) do
- if type(w) == "table" and w[1] == "role_lv" then
- open_level = tonumber(w[2])
- break
- end
- end
- if open_level <= RoleManager.Instance.mainRoleInfo.level then
- act_type = vv.act_type
- break
- end
- end
- end
- break
- end
- end
- else
- local base_type = CustomActivityModel.CustomActBaseType.OPERATE_ACTIVITY
- local act_list = CustomActivityModel:getInstance():getActList(base_type, sub_type)
- if act_list then
- act_type = act_list.act_type
- end
- end
- return act_type
- end
-
- --设置嗨点活动信息
- function KfActivityModel:SetHighPointInfo( scmd )
- if not self.high_info then
- self.high_info = {}
- end
- if not self.high_info[scmd.base_type] then
- self.high_info[scmd.base_type] = {}
- end
- if not self.high_info[scmd.base_type][scmd.sub_type] then
- self.high_info[scmd.base_type][scmd.sub_type] = {}
- end
- self.high_info[scmd.base_type][scmd.sub_type] = scmd
-
- local sort_func = function ( a, b )
- return a.order_id < b.order_id
- end
- table.sort(scmd.mod_list, sort_func)
-
- local new_mod_list = {}
- for i,v in ipairs(scmd.mod_list) do
- local data = v
- local jump_id_list = stringtotable(data.jump_id)
- if jump_id_list then
- data.jump_id = jump_id_list[1]
- end
- new_mod_list[#new_mod_list + 1] = data
- end
- self.high_info[scmd.base_type][scmd.sub_type].mod_list = scmd.mod_list
- if scmd.base_type == CustomActivityModel.CustomActBaseType.HIGH_POINT then--嗨点更新
- self:IsNeedRed(KfActivityModel.TabID.HighPoint,nil,scmd.sub_type)
- elseif scmd.base_type == CustomActivityModel.CustomActBaseType.HIGH_EXCHANGE then--嗨点兑换更新
- self:IsNeedRed(KfActivityModel.TabID.HighExchange,nil,scmd.sub_type)
- end
- end
-
- --嗨点总数推送 需要刷新红点
- function KfActivityModel:SetHighPointSumNum( scmd )
- if self.high_info[scmd.base_type] and self.high_info[scmd.base_type][scmd.sub_type] then
- self.high_info[scmd.base_type][scmd.sub_type].sum_points = scmd.sum_points
- end
- if scmd.base_type == CustomActivityModel.CustomActBaseType.HIGH_POINT then--嗨点更新
- self:IsNeedRed(KfActivityModel.TabID.HighPoint,nil,scmd.sub_type)
- elseif scmd.base_type == CustomActivityModel.CustomActBaseType.HIGH_EXCHANGE then--嗨点兑换更新
- self:IsNeedRed(KfActivityModel.TabID.HighExchange,nil,scmd.sub_type)
- end
- end
-
- --获得嗨点兑换资源图标
- function KfActivityModel:GetHighExchangeIconPic( sub_type )
- local base_type = CustomActivityModel.CustomActBaseType.HIGH_EXCHANGE
- sub_type = sub_type or CustomActivityModel:getInstance():getActMinSubType(base_type)
- local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type)
- if act_list then
- for k,v in pairs(act_list.condition_list) do
- if v[1] and v[2] then
- if v[1] == "act_icon_pic" then
- return tonumber(v[2])
- end
- end
- end
- end
- return 1
- end
-
- --获得嗨点红点资源信息
- function KfActivityModel:GetHighPointInfo( base_type, sub_type )
- if self.high_info[base_type] then
- return self.high_info[base_type][sub_type]
- end
- end
-
- --检查嗨点红点
- function KfActivityModel:CheckHighPointRedDot(base_type,sub_type)
- -- if not GetModuleIsOpen(331,base_type) or not sub_type then return false end
- if not sub_type then return false end
- local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type)
- local show = false
- local act_type = CustomActivityModel.CustomIconActType.KfAct
- if not self.act_red_dot_info[base_type] then
- self.act_red_dot_info[base_type] = {}
- end
- self.act_red_dot_info[base_type][sub_type] = false
- if act_list then
- act_type = act_list.act_type
- local server_time = TimeUtil:getServerTime( )
- local info = CustomActivityModel:getInstance():getOneActRewardList(base_type, sub_type)
- if server_time > act_list.stime and act_list.etime > server_time then
- if info and info.reward_list then
- for k,n in pairs(info.reward_list) do
- if n.status == 1 then
- self.act_red_dot_info[act_list.base_type][act_list.sub_type] = true
- show = true
- elseif n.status == 0 then
- local parse = n.condition_list
- if parse then
- local max = 0
- local limit_time = 0
- for kk,vv in pairs(parse) do--[{hi_points,250},{limit_times,1},{tag,1},{show_level_range,1,999}]
- if vv[1] == "hi_points" then
- max = tonumber(vv[2])
- elseif vv[1] == "limit_times" then
- limit_time = tonumber(vv[2])
- end
- end
-
- local max = tonumber(parse[1][2])
- local server_info = self:GetHighPointInfo(act_list.base_type,act_list.sub_type)
- local cur = 0
- if server_info and server_info.sum_points then
- cur = server_info.sum_points
- end
- if act_list.base_type == CustomActivityModel.CustomActBaseType.HIGH_POINT then
- if cur >= max then
- self.act_red_dot_info[act_list.base_type][act_list.sub_type] = true
- show = true
- end
- elseif act_list.base_type == CustomActivityModel.CustomActBaseType.HIGH_EXCHANGE then
- if limit_time > n.receive_times and (cur >= max or not self.high_login_red_list[act_list.sub_type]) then
- self.act_red_dot_info[act_list.base_type][act_list.sub_type] = true
- show = true
- end
- end
- end
- end
- end
- end
- end
- end
- return show,act_type
- end
-
-
- -- 设置投资活动数据 33141
- function KfActivityModel:SetInvestActData(vo)
- self.invest_event_data[vo.sub_type] = self.invest_event_data[vo.sub_type] or {}
- self.invest_event_data[vo.sub_type].sub_type = vo.sub_type
- self.invest_event_data[vo.sub_type].investment_list = vo.investment_list
- end
- function KfActivityModel:GetInvestActData(sub_type, grade)
- if grade then
- if self.invest_event_data[sub_type]
- and self.invest_event_data[sub_type].investment_list then
- for k, v in pairs(self.invest_event_data[sub_type].investment_list) do
- if v.grade == grade then
- return v
- end
- end
- end
- return nil
- else
- return self.invest_event_data[sub_type]
- end
- end
- -- 获取投资档位的天数奖励领取情况
- function KfActivityModel:GetInvestActGradeReceiveFlag(sub_type, grade, day_num)
- local grade_data = self:GetInvestActData(sub_type, grade)
- if grade_data then
- for k, v in ipairs(grade_data.awards) do
- if v.award_id == day_num then
- return v.status -- 0不可领 1可领 2已领
- end
- end
- end
- return 0
- end
- -- 更新投资档位的购买情况 33142
- function KfActivityModel:UpdateInvestActBuyFlag(vo)
- self.invest_event_data[vo.sub_type] = self.invest_event_data[vo.sub_type] or {}
- self.invest_event_data[vo.sub_type].investment_list = self.invest_event_data[vo.sub_type].investment_list or {}
- for k, v in pairs(self.invest_event_data[vo.sub_type].investment_list) do
- if v.grade == vo.grade then
- v.is_buy = 1
- break
- end
- end
- end
-
- -- 更新投资活动数据 33144
- function KfActivityModel:UpdateInvestActData(vo)
- if self.invest_event_data[vo.sub_type]
- and self.invest_event_data[vo.sub_type].investment_list then
- for k, grade_data in ipairs(self.invest_event_data[vo.sub_type].investment_list) do
- if grade_data.grade == vo.grade then
- for k2, v in ipairs(grade_data.awards) do
- if v.award_id == vo.day then
- v.status = 2
- break
- end
- end
- break
- end
- end
- end
- end
-
- -- 检查目标子活动页签是否显示
- function KfActivityModel:CheckInvestActTabIsOpen(sub_type)
- local invest_data = self:GetInvestActData(sub_type)
- if invest_data then
- for k, v in ipairs(invest_data.investment_list) do
- if v.is_buy == 0 then -- 存在未购买,则显示页签
- return true
- end
- -- 已购买的要判断是否有未领取的奖励
- for k2, v2 in ipairs(v.awards) do
- if v2.status ~= 2 then -- 存在不可领或者可领取的,则显示页签
- return true
- end
- end
- end
- end
- return false
- end
-
- -- 检查投资活动红点
- function KfActivityModel:CheckActInvestRedDot(sub_type)
- local act_list = CustomActivityModel:getInstance():getActList(CustomActivityModel.CustomActBaseType.INVEST_ACT, sub_type)
- local act_type = CustomActivityModel.CustomIconActType.KfAct
- local bool = false
- self.invest_grade_red_cache[sub_type] = self.invest_grade_red_cache[sub_type] or {}
- if act_list then
- act_type = act_list.act_type
- if not self.act_red_dot_info[act_list.base_type] then
- self.act_red_dot_info[act_list.base_type] = {}
- end
- local invest_data = self:GetInvestActData(sub_type)
- if invest_data then
- for k, v in ipairs(invest_data.investment_list) do
- local grade_red = false
- if v.is_buy == 1 then
- for k2, v2 in ipairs(v.awards) do
- grade_red = grade_red or v2.status == 1
- end
- end
- bool = bool or grade_red
- -- 同时缓存投资的档位红点
- self.invest_grade_red_cache[sub_type][v.grade] = grade_red
- end
- end
- if not bool then
- local com_act_red_info = CustomActivityModel:getInstance():GetActComAwardInfo(act_list.base_type,act_list.sub_type)
- if com_act_red_info then
- bool = com_act_red_info.status == 1
- end
- if not bool and com_act_red_info and com_act_red_info.tab_list then--投资活动比较特殊
- for i,v in ipairs(com_act_red_info.tab_list) do
- if v.status == 1 then
- bool = true
- break
- end
- end
- end
- end
- self.act_red_dot_info[act_list.base_type][act_list.sub_type] = bool
- end
- return bool, act_type
- end
- -- 获取缓存的投资档位红点
- function KfActivityModel:GetInvestActGradeRed(sub_type, grade)
- local show_red = self.invest_grade_red_cache[sub_type] and self.invest_grade_red_cache[sub_type][grade] or false
- if not show_red then
- local com_act_red_info = CustomActivityModel:getInstance():GetActComAwardInfo(CustomActivityModel.CustomActBaseType.INVEST_ACT,sub_type)
- if com_act_red_info and com_act_red_info.tab_list then--投资活动比较特殊
- for i,v in ipairs(com_act_red_info.tab_list) do
- if v.status == 1 and v.grade == grade then
- show_red = true
- break
- end
- end
- end
- end
- return show_red
- end
-
- function KfActivityModel:CheckLuckyTurnTableRedDot(sub_type)
- local need_red = false
- local data1 = OperateActivityModel:getInstance():GetLuckyTurnTableBaseInfo(sub_type, 1)
- local data2 = OperateActivityModel:getInstance():GetLuckyTurnTableBaseInfo(sub_type, 2)
- if TableSize(data1) > 0 then
- local rest_num = data1.times - data1.use_times
- need_red = need_red or rest_num > 0
- end
- if TableSize(data2) > 0 then
- local rest_num = data2.times - data2.use_times
- need_red = need_red or rest_num > 0
- end
- local act_list = CustomActivityModel:getInstance():getActList(CustomActivityModel.CustomActBaseType.LUCKY_TURNTABLE, sub_type)
- local act_type = CustomActivityModel.CustomIconActType.KfAct
- local bool = false
- if not self.act_red_dot_info[CustomActivityModel.CustomActBaseType.LUCKY_TURNTABLE] then
- self.act_red_dot_info[CustomActivityModel.CustomActBaseType.LUCKY_TURNTABLE] = {}
- end
- if act_list then
- act_type = act_list.act_type
- local server_time = TimeUtil:getServerTime( )
- if server_time > act_list.stime and act_list.etime > server_time then
- self.act_red_dot_info[CustomActivityModel.CustomActBaseType.LUCKY_TURNTABLE][sub_type] = need_red
- else
- need_red = false
- end
- end
- return need_red,act_type
- end
- --秒杀基础信息
- function KfActivityModel:SetSecKillBaseInfo( vo )
- self.limit_seckill_base_info = vo
- self:Fire(KfActivityModel.UPDATE_LIMIT_SECKILL_INFO)
- -- 加个即将开始的倒计时timer提醒
- local cur_time = TimeUtil:getServerTime( )
- local cur_round = vo.round
- self:InitSeckillCache(vo.sub_type)
-
- -- 场次排序
- local sort_func = function ( a, b )
- return a.round_id < b.round_id
- end
- table.sort(self.limit_seckill_base_info.round_info, sort_func)
-
- if not (self:GetSecKillRemindCache()[vo.sub_type] == true) then return end -- 判断是否要提醒
- self.limit_sec_kill_has_show_cache = self.limit_sec_kill_has_show_cache or {}
- self.limit_sec_kill_has_show_cache[vo.sub_type] = self.limit_sec_kill_has_show_cache[vo.sub_type] or {}
- if self.limit_sec_kill_has_show_cache[vo.sub_type][cur_round] then -- 弹过的场次就别再弹了
- return
- end
- for k,v in pairs(self.limit_seckill_base_info.round_info) do
- local zero_time = TimeUtil:GetToDayNHourStr(0)
- local cfg_open_time = stringtotable(v.round_time)
- local open_time = zero_time + 60*60*cfg_open_time[1] + 60*cfg_open_time[2] + cfg_open_time[3]--算出开放的时间戳
- local end_time = open_time + v.duration
- local is_end = (cur_time - end_time) >= 0 or v.round_id < cur_round--是否结束了
- local is_open = (cur_time - open_time) >= 0--是否开启了
- --开抢前五分钟就要开始倒计时了
- if not is_end and not is_open then
- local open_act_remind_tips = function ()
- self.limit_sec_kill_has_show_cache[vo.sub_type][cur_round] = true -- 弹过的场次就别再弹了
- local click_event = function () -- 跳转活动
- GlobalEventSystem:Fire(KfActivityModel.OPEN_ACTIVITY_BASE_VIEW,
- vo.sub_type, KfActivityModel.TabID.LimitSeckill)
- end
- local data = {
- winId = KfActivityModel.TabID.LimitSeckill,
- sub_type = vo.sub_type,
- click_event = click_event,
- }
- GlobalEventSystem:Fire(EventName.SHOW_COMMON_ACT_REMIND_TIPS,data)
- end
- if (open_time - cur_time) <= 120 then -- 已经准备开始了 就弹
- open_act_remind_tips()
- elseif cur_round == v.round_id then -- 就是当前场次
- local function onTimer()
- local cur_time = TimeUtil:getServerTime( )
- if (open_time - cur_time) <= 120 then
- open_act_remind_tips()
- if self.act_sec_kill_timer_list[vo.sub_type] then
- GlobalTimerQuest:CancelQuest(self.act_sec_kill_timer_list[vo.sub_type])
- self.act_sec_kill_timer_list[vo.sub_type] = nil
- end
- end
- end
- if not self.act_sec_kill_timer_list then
- self.act_sec_kill_timer_list = {}
- end
- if self.act_sec_kill_timer_list[vo.sub_type] then
- GlobalTimerQuest:CancelQuest(self.act_sec_kill_timer_list[vo.sub_type])
- self.act_sec_kill_timer_list[vo.sub_type] = nil
- end
- self.act_sec_kill_timer_list[vo.sub_type] = GlobalTimerQuest:AddPeriodQuest(onTimer, 1, -1)
- onTimer()
- end
- end
- end
- end
-
- function KfActivityModel:GetSecKillBaseInfo( )
- return self.limit_seckill_base_info
- end
-
- function KfActivityModel:IsSecKillAllRoundEnd( )
- local base_info = self:GetSecKillBaseInfo()
- local last_round_info = base_info.round_info[#base_info.round_info]
- local cur_round = base_info.round
- if last_round_info.round_id > cur_round then
- return false
- end
- local cur_time = TimeUtil:getServerTime( )
- local zero_time = TimeUtil:GetToDayNHourStr(0)
- local cfg_open_time = stringtotable(last_round_info.round_time)
- local open_time = zero_time + 60*60*cfg_open_time[1] + 60*cfg_open_time[2] + cfg_open_time[3]--算出开放的时间戳
- local end_time = open_time + last_round_info.duration
- local is_end = (cur_time - end_time) >= 0 --是否结束了
- return is_end
- end
-
- --场次信息
- function KfActivityModel:SetSecKillRoundInfo( vo )
- local data = {}
- local condition = nil
- for i,v in ipairs(vo.round_info) do
- data[i] = v
- condition = stringtotable(v.condition)
- for ii,vv in ipairs(condition) do
- data[i][vv[1]] = vv[2]
- end
- end
- if not self.limit_seckill_round_info[vo.round] then
- self.limit_seckill_round_info[vo.round] = {}
- end
- local sort_func = function ( a, b )
- return a.grade_id < b.grade_id
- end
- table.sort(data, sort_func)
- self.limit_seckill_round_info[vo.round] = data
- self:Fire(KfActivityModel.UPDATE_LIMIT_SECKILL_ROUND_INFO)
- end
-
- function KfActivityModel:GetSecKillRoundInfo( round )
- if round then
- return self.limit_seckill_round_info[round] or {}
- end
- return {}
- end
- --更新一个信息
- function KfActivityModel:SetSecKillOneInfo(round, grade_id, is_my)
- if not round or not grade_id then
- return
- end
- if self.limit_seckill_round_info[round] then
- for i,v in ipairs(self.limit_seckill_round_info[round]) do
- if v.grade_id == grade_id then
- if is_my then
- v.self_buy = v.self_buy + 1
- else
- v.buy_count = v.buy_count + 1
- end
- break
- end
- end
- end
- self:Fire(KfActivityModel.UPDATE_LIMIT_SECKILL_ROUND_INFO)
- end
-
- --清理秒杀场次信息
- function KfActivityModel:CleanSecKillRoundInfo( )
- self.limit_seckill_round_info = {}
- end
-
- --记录
- function KfActivityModel:SetSecKillRecordInfo( vo )
- self.limit_seckill_record_info = vo
- self:ChangeVar("limit_seckill_record_info", self.limit_seckill_record_info, false, true)
- end
-
- function KfActivityModel:SetSecKillOneRecord( vo )
- local data = {
- goods_id = vo.goods_id,
- TvId = vo.TvId,
- server_num = vo.server_num,
- goods_num = vo.goods_num,
- name = vo.name,
- cost = vo.cost,
- }
- table_insert(self.limit_seckill_record_info.buy_log, data)
- self:ChangeVar("limit_seckill_record_info", self.limit_seckill_record_info, false, true)
- end
-
- function KfActivityModel:GetSecKillRecordInfo( )
- return self.limit_seckill_record_info
- end
-
- --抢购界面信息
- function KfActivityModel:SetSecKillBuyInfo( vo )
- if not self.limit_seckill_buy_info[vo.round] then
- self.limit_seckill_buy_info[vo.round] = {}
- end
- self.limit_seckill_buy_info[vo.round][vo.grade_id] = vo
- self:ChangeVar("limit_seckill_buy_info", self.limit_seckill_buy_info, false, true)
- end
-
- function KfActivityModel:GetSecKillBuyInfo(round, grade_id )
- if not round or not grade_id then
- return {}
- end
- if self.limit_seckill_buy_info[round] then
- return self.limit_seckill_buy_info[round][grade_id] or {}
- end
- return {}
- end
- --场次开启需要重新刷一下红点
- function KfActivityModel:LimitSecKillRoundStart( round )
- local data = self:GetSecKillBaseInfo()
- if data and data.round_info and data.round_info[round] then
- if data.round_info[round].label == 2 then
- self.is_open_limit_seckill_view = false
- self:IsNeedRed(KfActivityModel.TabID.LimitSeckill,nil,data.sub_type)
- end
- end
- end
-
- function KfActivityModel:CheckSecKillRedDot(sub_type)
- local need_red = not self.is_open_limit_seckill_view
- local act_list = CustomActivityModel:getInstance():getActList(CustomActivityModel.CustomActBaseType.LIMIT_SECKILL, sub_type)
- local act_type = CustomActivityModel.CustomIconActType.KfAct
- if act_list then
- act_type = act_list.act_type
- end
- if not self.act_red_dot_info[CustomActivityModel.CustomActBaseType.LIMIT_SECKILL] then
- self.act_red_dot_info[CustomActivityModel.CustomActBaseType.LIMIT_SECKILL] = {}
- end
- self.act_red_dot_info[CustomActivityModel.CustomActBaseType.LIMIT_SECKILL][sub_type] = need_red
- return need_red,act_type
- end
-
- function KfActivityModel:InitSeckillCache(sub_type)
- if self:GetSecKillBuySureCache( )[sub_type] == nil then
- self:SetSecKillBuySureCache( sub_type, true )
- end
- if self:GetSecKillRemindCache( )[sub_type] == nil then
- self:SetSecKillRemindCache( sub_type, false )
- end
- end
-
- -- 购买秒杀物品时是否无需确认
- function KfActivityModel:GetSecKillBuySureCache( )
- -- local list = CookieWrapper.Instance:GetCookie(CookieLevelType.Account,
- -- CookieKey.SEC_KILL_BUY_TIPS) or {}
- self.sec_kill_buy_sure = self.sec_kill_buy_sure or {}
- local list = self.sec_kill_buy_sure
- -- if list[sub_type] == nil then
- -- self:SetSecKillBuySureCache(sub_type, false)
- -- list[sub_type] = false
- -- end
- return list
- end
-
- -- 每个场次是否需要提醒
- function KfActivityModel:GetSecKillRemindCache( )
- local list = CookieWrapper.Instance:GetCookie(CookieLevelType.Account,
- CookieKey.SEC_KILL_NEED_REMIND) or {}
- -- if list[sub_type] == nil then
- -- self:SetSecKillRemindCache(sub_type, false)
- -- list[sub_type] = false
- -- end
- return list
- end
-
- -- 购买时无需提示彩钻购买
- function KfActivityModel:SetSecKillBuySureCache( sub_type, bool )
- self.sec_kill_buy_sure = self.sec_kill_buy_sure or {}
- if bool ~= nil then
- self.sec_kill_buy_sure[sub_type] = bool
- else
- if self.sec_kill_buy_sure[sub_type] ~= nil then
- self.sec_kill_buy_sure[sub_type] = not self.sec_kill_buy_sure[sub_type]
- else
- self.sec_kill_buy_sure[sub_type] = true
- end
- end
- -- local list = self:GetSecKillBuySureCache() or {}
- -- if bool ~= nil then
- -- list[sub_type] = bool
- -- else
- -- if list[sub_type] ~= nil then
- -- list[sub_type] = not list[sub_type]
- -- else
- -- list[sub_type] = true
- -- end
- -- end
- -- CookieWrapper.Instance:SaveCookie(CookieLevelType.Account,
- -- CookieTimeType.TYPE_ALWAYS, CookieKey.SEC_KILL_BUY_TIPS, list)
- -- CookieWrapper.Instance:WriteAll()
- end
-
- function KfActivityModel:SetSecKillRemindCache( sub_type, bool )
- local list = self:GetSecKillRemindCache() or {}
- if bool ~= nil then
- list[sub_type] = bool
- else
- if list[sub_type] ~= nil then
- list[sub_type] = not list[sub_type]
- else
- list[sub_type] = false
- end
- end
- CookieWrapper.Instance:SaveCookie(CookieLevelType.Account,
- CookieTimeType.TYPE_ALWAYS, CookieKey.SEC_KILL_NEED_REMIND, list)
- CookieWrapper.Instance:WriteAll()
- end
-
- --------------抢红包/福袋--start---------------
- -- 处理condition数据
- function KfActivityModel:SetLuckyBagData( base_type, condition_list )
- local data
- if base_type == CustomActivityModel.CustomActBaseType.GET_RED_BAG then -- 抢福袋
- self.red_bag_data = {}
- data = self.red_bag_data
- elseif base_type == CustomActivityModel.CustomActBaseType.GET_LUCKY_BAG then -- 抢红包
- self.lucky_bag_data = {}
- data = self.lucky_bag_data
- else
- return
- end
- for k, v in pairs(condition_list) do
- if v[1] == "open_time" then
- data.open_time = {}
- for i, v2 in ipairs(v[2]) do
- table.insert(data.open_time, { hour = tonumber(v2[1]), min = tonumber(v2[2]) } )
- end
- -- 时间从小到大排序:
- local sort_func = function ( a, b )
- if a.hour ~= b.hour then
- return a.hour < b.hour
- else
- return a.min < b.min
- end
- end
- table.sort(data.open_time, sort_func)
- else
- data[Trim(v[1])] = tonumber(v[2])
- end
- end
- -- logWarn('=======Msh:KfActivityModel.lua[1928]=======', base_type)
- -- print('Msh:KfActivityModel.lua[1929] base_type', base_type)
- -- PrintTable(condition_list)
- -- PrintTable(data)
- end
-
- -- 获取数据
- function KfActivityModel:GetLuckyBagDataByKey( base_type, key )
- local data
- if base_type == CustomActivityModel.CustomActBaseType.GET_RED_BAG then -- 抢福袋
- data = self.red_bag_data
- elseif base_type == CustomActivityModel.CustomActBaseType.GET_LUCKY_BAG then -- 抢红包
- data = self.lucky_bag_data
- else
- return
- end
- if data and data[key] then
- return data[key]
- end
- end
-
- -- 获取今日距离下一次开启活动的时间
- function KfActivityModel:GetLuckyBagNextOpenTime( base_type )
- local data
- if base_type == CustomActivityModel.CustomActBaseType.GET_RED_BAG then -- 抢福袋
- data = self.red_bag_data
- elseif base_type == CustomActivityModel.CustomActBaseType.GET_LUCKY_BAG then -- 抢红包
- data = self.lucky_bag_data
- else
- return
- end
- if data and data.open_time then
- local curTime = TimeUtil:getServerTime()
- for i,v in ipairs(data.open_time) do -- 注意遍历的时间必须从小到大 如10:00 12:00 14:00
- local today_open_time = TimeUtil:GetToDayNHourStr(v.hour) + v.min * 60
- local remain_time = today_open_time - curTime
- if remain_time > 0 then
- return today_open_time
- end
- end
- end
-
- return -1 -- 今日已经没有场次
- end
-
- -- 获取活动状态
- -- 返回值: state key_time
- -- 活动已结束 0 nil
- -- 活动持续中 1 活动结束时间
- -- 图标开启中 2 下次开启时间
- -- 准备开启图标 3 需要开启图标的时间
- function KfActivityModel:GetLuckyBagActTime( base_type )
- --print('Msh:KfActivityModel.lua[1988] data', base_type)
- local data
- if base_type == CustomActivityModel.CustomActBaseType.GET_RED_BAG then -- 抢福袋
- data = self.red_bag_data
- elseif base_type == CustomActivityModel.CustomActBaseType.GET_LUCKY_BAG then -- 抢红包
- data = self.lucky_bag_data
- else
- return
- end
- if data and data.open_time then
- local curTime = TimeUtil:getServerTime()
- for i,v in ipairs(data.open_time) do -- 注意遍历的时间必须从小到大 如10:00 12:00 14:00
- local today_open_time = TimeUtil:GetToDayNHourStr(v.hour) + v.min * 60
- local ac_end_time = today_open_time + data.last_time
- if ac_end_time - curTime > 0 then -- 匹配到的下一场次
- local icon_open_time = today_open_time - data.show_time
- --local remain_time = today_open_time - curTime
- if curTime >= today_open_time then -- 活动持续中
- return 1, ac_end_time
- elseif curTime >= icon_open_time then -- 图标开启中
- return 2, today_open_time
- elseif curTime < icon_open_time then -- 准备开启图标
- return 3, icon_open_time
- else
- -- logWarn('=======Msh:KfActivityModel.lua[2003]==error=====')
- return
- end
- end
- end
- end
- return 0 -- 今日已经没有场次
- end
-
- function KfActivityModel:GetShowRewardList( base_type, sub_type )
- local reward_data = CustomActivityModel:getInstance():getOneActRewardList(base_type, sub_type).reward_list
- -- logWarn('=======Msh:KfActivityModel.lua[2024]===666====')
- -- PrintTable(CustomActivityModel:getInstance():getOneActRewardList(base_type, sub_type))
- local sort_func = function ( a, b )
- return a.grade < b.grade
- end
- table.sort(reward_data, sort_func)
- local res_list = {}
- local show_count = 10 -- 最多展示10个奖励
- for i,v in ipairs(reward_data) do
- local ui_show = 0
- for i2,v2 in ipairs(v.condition_list) do
- if v2[1] == "ui_show" then
- ui_show = tonumber(v2[2])
- break
- end
- end
- if ui_show == 1 then
- table.insert(res_list, stringtotable(v.reward)[1])
- show_count = show_count - 1
- end
- if show_count <= 0 then
- break
- end
- end
- return res_list
- end
-
- function KfActivityModel:SetLuckyBagGradeRewardData( base_type )
- local reward_data = CustomActivityModel:getInstance():getOneActRewardList(base_type, sub_type).reward_list
- self.lucky_bag_reward_data = self.lucky_bag_reward_data or {}
- self.lucky_bag_reward_data[base_type] = {}
- -- local sort_func = function ( a, b )
- -- return a.grade < b.grade
- -- end
- -- table.sort(reward_data, sort_func)
- local data = self.lucky_bag_reward_data[base_type]
- for i,v in ipairs(reward_data) do
- local ui_show = 0
- for i2,v2 in ipairs(v.condition_list) do
- if v2[1] == "ui_show" then
- ui_show = tonumber(v2[2])
- break
- end
- end
- data[v.grade] = {grade = v.grade, reward = stringtotable(v.reward), ui_show = ui_show}
- end
- end
-
- function KfActivityModel:GetTargetGradeReward( base_type, grade )
- if not (self.lucky_bag_reward_data and self.lucky_bag_reward_data[base_type]) then
- self:SetLuckyBagGradeRewardData( base_type )
- end
- local data = self.lucky_bag_reward_data[base_type][grade]
- return data
- end
-
- function KfActivityModel:SetLuckyBagLastGetTime( time )
- self.last_lucky_bag_get_time = time
- end
-
- function KfActivityModel:GetLuckyBagLastGetTime( )
- if self.last_lucky_bag_get_time then
- return self.last_lucky_bag_get_time
- else
- return 0
- end
- end
-
- --------------抢红包/福袋----end-------------
-
- --------------惊喜红包----start-------------
- --基础信息
- function KfActivityModel:GetHappyRedBagBaseInfo( sub_type )
- if sub_type then
- return self.happy_red_bag_base_info[sub_type]
- else
- return self.happy_red_bag_base_info
- end
- end
- function KfActivityModel:SetHappyRedBagBaseInfo( value )
- self.happy_red_bag_base_info[value.sub_type] = value
- self:IsNeedRed( KfActivityModel.TabID.HappyRedBag,nil,value.sub_type )
- end
- --全服记录
- function KfActivityModel:GetHappyRedBagHistoryInfo( sub_type )
- if sub_type then
- return self.happy_red_bag_history_info[sub_type]
- else
- return self.happy_red_bag_history_info
- end
- end
- function KfActivityModel:SetHappyRedBagHistoryInfo( value )
- local function sort_call( a,b )
- --从大到小
- return a.time > b.time
- end
- if TableSize(value.log_list) > 1 then
- table.sort( value.log_list, sort_call )
- end
- self.happy_red_bag_history_info[value.sub_type] = value.log_list
- end
-
- function KfActivityModel:GetHappyRedBagRewardById( id )
- --通过id获得展示奖励列表
- if not Config.Supredpacket[id] then return end
- local conf = Config.Supredpacket[id]
- local result = {
- [1] = stringtotable(conf.mid_draw)[2],
- [2] = stringtotable(conf.up_draw)[2],
- [3] = stringtotable(conf.dream_draw)[2],
- }
- return result
- end
-
- --获得充值条件
- function KfActivityModel:GetHappyRedBagNeedRechargeById( id )
- if not Config.Supredpacket[id] then return 9999 end
- return Config.Supredpacket[id].recharge_gold
- end
-
- --获得红包可领取状态
- function KfActivityModel:GetHappyRedBagReceiveStatus( sub_type )
- local data = self:GetHappyRedBagBaseInfo(sub_type)
- if data then
- return data.can_receive
- end
- end
-
- --已经抽完次数
- function KfActivityModel:IsHappyRedBagDrawMax( sub_type )
- local function GetMaxTimeInPool( id )
- local pool_id = false
- for k,v in pairs(Config.Supredpacket) do
- if v.id == id then
- pool_id = v.draw_pool
- break
- end
- end
- local time = 0
- for k,v in pairs(Config.Supredpacket) do
- if v.draw_pool == pool_id then
- time = time + 1
- end
- end
- return time
- end
- local data = self:GetHappyRedBagBaseInfo(sub_type)
- if data then
- local time = GetMaxTimeInPool(data.id)
- if data.draw_times == time and data.can_receive == 0 then
- return true,time
- else
- return false,time
- end
- end
- return false,0
- end
-
- function KfActivityModel:GetHappyRedBagRedDotBySubType( sub_type )
- local need_lv = GetModuleOpenLevel(331,78)
- local act_info = CustomActivityModel:getInstance():getActList(CustomActivityModel.CustomActBaseType.HAPPY_RED_BAG, sub_type)
- if act_info and act_info.condition then
- local confition_list = stringtotable(act_info.condition)
- for k,v in pairs(confition_list) do
- if v[1] == "role_lv" then
- need_lv = math.max( need_lv , tonumber(v[2]) )
- end
- end
- end
- local show_red = {}
- if RoleManager.Instance.mainRoleInfo.level < need_lv then return show_red end
- local base_data = self:GetHappyRedBagBaseInfo(sub_type)
- if not base_data then return show_red end
- if self:IsHappyRedBagDrawMax(sub_type) then
- --抽满
- return show_red
- end
- -------------------------
- local need_recharge = self:GetHappyRedBagNeedRechargeById(base_data.id)--充值条件
- if base_data and base_data.box_has_receive == 0 and base_data.draw_times >= 1 then
- --判断宝箱是否可领取
- show_red.box = true
- end
-
- --判断是否可以领红包(待领取奖励 or 充值达到条件且未抽取)
- if base_data.can_receive == 1 then
- --待领取的时候
- if base_data.draw_times == 1 then
- --第一次领取,需要判断是否达到充值条件
- show_red.red_bag = base_data.recharge_num >= need_recharge
- else
- show_red.red_bag = true
- end
- else
- --未抽取的时候,判断充值是否达到条件,或者是第一次抽取
- show_red.red_bag = (base_data.recharge_num >= need_recharge) or (base_data.draw_times == 0)
- end
- return show_red
- end
- --------------惊喜红包----end-------------
-
- --------------折扣满减----start-------------
- --基础信息
- function KfActivityModel:GetDiscountFullCutInfo( sub_type )
- if sub_type then
- return self.discount_full_cut_info[sub_type]
- end
- end
- function KfActivityModel:SetDiscountFullCutInfo( data )
- if data and data.sub_type then
- self.discount_full_cut_info[data.sub_type] = data
- -------------------------
- --[[local temp = self.discount_full_cut_draw_free_status[data.sub_type]
- if (temp and (data.free_count < temp)) then
- self.discount_full_cut_draw_free_red[data.sub_type] = true
- self:IsNeedRed(KfActivityModel.TabID.DiscountFullCut,nil,data.sub_type)
- end
- self.discount_full_cut_draw_free_status[data.sub_type] = data.free_count--]]
- if self.discount_full_cut_draw_free_red[data.sub_type] ~= "has_open" then
- self.discount_full_cut_draw_free_red[data.sub_type] = data.free_count == 0
- self:IsNeedRed(KfActivityModel.TabID.DiscountFullCut,nil,data.sub_type)
- end
- end
- end
- --购买记录
- function KfActivityModel:GetDiscountFullCutHistory( sub_type )
- if sub_type then
- return self.discount_full_cut_history[sub_type]
- end
- end
- function KfActivityModel:SetDiscountFullCutHistory( data )
- if data and data.sub_type then
- self.discount_full_cut_history[data.sub_type] = data.list
- end
- end
-
- --获取折扣券配置
- function KfActivityModel:GetDiscountFullCutTicketConf( ticket_type,ticket_id )
- if ticket_id then
- return Config.Discountmallcoupon[ticket_id]
- end
- if ticket_type then
- local list = {}
- for k,v in pairs(Config.Discountmallcoupon) do
- if v.type == ticket_type then
- list[v.goods_id] = v
- end
- end
- return list
- else
- return Config.Discountmallcoupon
- end
-
- end
-
- function KfActivityModel:CheckKfDiscountFullCutRedDot( sub_type )
- -------------------------
- local base_type = CustomActivityModel.CustomActBaseType.DISCOUNT_FULL_CUT
- sub_type = sub_type or CustomActivityModel:getInstance():getActMinSubType(base_type)
- local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type)
- local act_type = CustomActivityModel.CustomIconActType.KfAct
- local bool = false
- if not self.act_red_dot_info[base_type] then
- self.act_red_dot_info[base_type] = {}
- end
- self.act_red_dot_info[base_type][sub_type] = false
-
- if act_list then
- act_type = act_list.act_type
- local server_time = TimeUtil:getServerTime( )
- if server_time > act_list.stime and act_list.etime > server_time then
- bool = self:GetDiscountFullCutRedDotBySubType(sub_type)
- self.act_red_dot_info[act_list.base_type][act_list.sub_type] = bool
- end
- end
- return bool,act_type
- end
-
- function KfActivityModel:GetDiscountFullCutRedDotBySubType( sub_type )
- if not sub_type then return false end
- -------------------------
- local need_lv = GetModuleOpenLevel(331,77)
- local act_info = CustomActivityModel:getInstance():getActList(CustomActivityModel.CustomActBaseType.DISCOUNT_FULL_CUT, sub_type)
- if act_info and act_info.condition then
- local confition_list = stringtotable(act_info.condition)
- for k,v in pairs(confition_list) do
- if v[1] == "role_lv" then
- need_lv = math.max( need_lv , tonumber(v[2]) )
- end
- end
- end
- if RoleManager.Instance.mainRoleInfo.level < need_lv then
- --等级没到
- return false
- end
- -------------------------
- local bool_1 = (not self.discount_full_cut_mask_first_open_red[sub_type])
- local bool_2 = self.discount_full_cut_draw_goods_red[sub_type]
- local bool_3 = self.discount_full_cut_new_red[sub_type]
- local bool_4 = self.discount_full_cut_draw_free_red[sub_type] == true
- return bool_1 or bool_2 or bool_3 or bool_4
- end
-
- function KfActivityModel:CheckKfDiscountFullCutGoodsChangeRedDot( )
- --数量变更红点
- local draw_tick_id = KfActivityModel.KfDFullCutLuckyGoodsId
- local num = GoodsModel:getInstance():GetTypeGoodsNum( draw_tick_id )
- if self.discount_full_cut_draw_goods_num ~= num and num > self.discount_full_cut_draw_goods_num then
- local all_list = CustomActivityModel:getInstance():getAllActListByBaseType(CustomActivityModel.CustomActBaseType.DISCOUNT_FULL_CUT)
- for k,v in pairs(all_list) do
- self.discount_full_cut_draw_goods_red[v.sub_type] = true
- self:IsNeedRed(KfActivityModel.TabID.DiscountFullCut,nil,v.sub_type)
- end
- end
- self.discount_full_cut_draw_goods_num = num
- end
-
- --活动刚开给个红点
- function KfActivityModel:AddKfDiscountFullCutNewOpenRedDot( sub_type,bool )
- if not sub_type then return end
- self.discount_full_cut_new_red[sub_type] = bool
- self:IsNeedRed(KfActivityModel.TabID.DiscountFullCut,nil,sub_type)
- end
-
- --开界面红点处理
- function KfActivityModel:AddKfDiscountFullCutMaskFirstOpenRedDot( sub_type,bool )
- if not sub_type then return end
- self.discount_full_cut_mask_first_open_red[sub_type] = bool
- self:IsNeedRed(KfActivityModel.TabID.DiscountFullCut,nil,sub_type)
- end
-
- --开抽奖界面消抽奖券红点
- function KfActivityModel:AddKfDiscountFullCutMaskGoodsRedDot( sub_type )
- if not sub_type then return end
- self.discount_full_cut_draw_goods_red[sub_type] = false
- self:IsNeedRed(KfActivityModel.TabID.DiscountFullCut,nil,sub_type)
- end
-
- --开抽奖界面消免费红点
- function KfActivityModel:AddKfDiscountFullCutMaskFreeRedDot( sub_type )
- do return end--以前免费红点是一次性的,现在不是了
- -------------------------
- if not sub_type then return end
- self.discount_full_cut_draw_free_red[sub_type] = "has_open"
- self:IsNeedRed(KfActivityModel.TabID.DiscountFullCut,nil,sub_type)
- end
-
- --设置折扣满减奖池数据
- function KfActivityModel:SetDiscountFullCutLuckyTableList( vo )
- if vo and vo.sub_type then
- self.discount_full_cut_lucky_list[vo.sub_type] = vo.goods_list
- end
- end
-
- --获得折扣满减奖池数据
- function KfActivityModel:GetDiscountFullCutLuckyTableList( sub_type )
- return self.discount_full_cut_lucky_list[sub_type]
- end
- --------------折扣满减----end--------------
-
- --------------阶段兑换----start--------------
- function KfActivityModel:CheckStageExchangeGoodsChangeRedDot( )
- --道具变更红点检查
- local all_list = CustomActivityModel:getInstance():getAllActListByBaseType(CustomActivityModel.CustomActBaseType.STAGE_EXCHANGE)
- for k,v in pairs(all_list) do
- self:IsNeedRed(KfActivityModel.TabID.StageExchange,nil,v.sub_type)
- end
- end
- function KfActivityModel:GetStageExchangeRedDotBySubType( sub_type )
- --活动开启首次登陆红点
- local red_first_data = CookieWrapper.Instance:GetCookie(CookieLevelType.Account,CookieKey.STAGE_EXCHANGE_RED) or {}
- if not red_first_data[sub_type] then
- -------------------------
- --没开过界面
- return true
- end
- -------------------------
- local check_price_list = false--当前要比价用的
- --阶段开启奖励可临取时,临取按钮红点提示
- local operate_model = OperateActivityModel:getInstance()
- local base_data = operate_model:GetStageExchangeInfo(sub_type)
- if not base_data then return false end
- local unlock_phase = operate_model:GetStageExchangeUnlockPhase(sub_type)
- local open_reward_status = 0
- for i,v in ipairs(base_data) do
- if v.phase == unlock_phase then
- open_reward_status = v.open_reward_status
- check_price_list = DeepCopy(v.goods_list or {})
- break
- end
- end
- if open_reward_status == 1 then
- return true
- end
- -------------------------
- local cost_id = operate_model:GetStageExchangeCostId( sub_type )
- local goods_num = GoodsModel:getInstance():GetTypeGoodsNum( cost_id )
- -------------------------
- --价格为0,可买,阶段商店页签红点提示
- for k,v in pairs(check_price_list) do
- if v.cost_goods_num == 0 and v.exchange_num < v.limit_num then
- return true
- end
- end
- --玩家道具总额足够兑换本阶段商店最高价道具时,阶段商店页签红点提示
- --获取价格列表
- local function sort_call( a,b )
- --从大到小
- return a.cost_goods_num > b.cost_goods_num
- end
- table.sort( check_price_list, sort_call )
- for i,v in pairs(check_price_list) do
- if v.exchange_num < v.limit_num then
- --最高价位
- return goods_num >= v.cost_goods_num
- end
- end
- return false
- end
- --新活动开启 or 奖池因玩家升级引起刷新,红点变化
- function KfActivityModel:MaskStageExchangeOpenRedDot( sub_type )
- local data = CookieWrapper.Instance:GetCookie(CookieLevelType.Account,CookieKey.STAGE_EXCHANGE_RED) or {}
- if not data[sub_type] then
- data[sub_type] = true
- CookieWrapper.Instance:SaveCookie(CookieLevelType.Account,CookieTimeType.TYPE_ALWAYS,CookieKey.STAGE_EXCHANGE_RED,data)
- CookieWrapper.Instance:WriteAll()
- self:IsNeedRed(KfActivityModel.TabID.StageExchange,nil,sub_type)
- end
- end
- --------------阶段兑换----end--------------
-
- --获得通用排行排名数据
- function KfActivityModel:GetComRankCfg( type_key )
- return self.com_rank_score_cfg[type_key]
- end
-
- --设置通用结算排行数据
- function KfActivityModel:SetComRankInfo( vo )
- local new_rank_list = {}
- for k,v in pairs(vo.rank_list) do
- new_rank_list[v.rank] = v
- end
- vo.rank_list = new_rank_list
- self.com_rank_info[vo.sub_type] = vo
- end
-
- --获得通用结算排行数据
- function KfActivityModel:GetComRankInfo( sub_type )
- return self.com_rank_info[sub_type]
- end
-
- function KfActivityModel:CheckComRankTabIsOpen( sub_type )
- local act_list = CustomActivityModel:getInstance():getActList(CustomActivityModel.CustomActBaseType.COM_RANK,sub_type)
- if act_list then
- local show_time = 0
- for k,v in pairs(act_list.condition_list) do
- if v[1] == "show_time" then
- show_time = tonumber(v[2])
- break
- end
- end
- local server_time = TimeUtil:getServerTime( )
- local end_time = act_list.etime + show_time
- if server_time > act_list.stime and end_time > server_time then
- return true
- end
- end
- return false
- end
-
- --------------源晶复制机----start--------------
- --是否需要显示源晶复制机按钮
- function KfActivityModel:IsShowMoneyCopy( type_tag )
- return false
- end
- function KfActivityModel:GetMoneyCopyData( sub_type )
- return self.money_copy_data[sub_type]
- end
- function KfActivityModel:SetMoneyCopyData( data )
- self.money_copy_data[data.sub_type] = data
- end
- --通过标记获取活动子类
- function KfActivityModel:GetMoneyCopySubTypeByTag( tag )
- local base_type = CustomActivityModel.CustomActBaseType.MONEY_COPY
- local sub_type_list = CustomActivityModel:getInstance():getAllActListByBaseType(base_type)
- local show_place = false
- for k,v in pairs(sub_type_list) do
- show_place = false
- for kk,vv in pairs(v.condition_list) do
- if vv[1] == "show_place" then
- show_place = vv[2]
- end
- end
- if show_place then
- if tag == "chargeplus" and show_place == "chargeplus" then
- --首充追加界面
- return v.sub_type
- end
- elseif tag == "charge" then
- --普通充值界面用的
- return v.sub_type
- end
- end
- return false
- end
- --获取是否在活动时间内,返回开始时间和活动时间
- function KfActivityModel:IsInMoneyCopyTime( sub_type )
- local base_type = CustomActivityModel.CustomActBaseType.MONEY_COPY
- local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type)
-
- if act_list then
- -------------------------
- local need_lv = GetModuleOpenLevel(331,5)
- local confition_list = stringtotable(act_list.condition)
- for k,v in pairs(confition_list) do
- if v[1] == "role_lv" then
- need_lv = math.max( need_lv , tonumber(v[2]) )
- end
- end
- if need_lv > RoleManager.Instance.mainRoleInfo.level then
- --等级不足
- return false,0,0
- end
- -------------------------
- local show_type = false
- for k,v in pairs(act_list.condition_list) do
- if v[1] == "show_place" then
- show_type = v[2]
- break
- end
- end
- local server_time = TimeUtil:getServerTime( )
- if show_type then
- local base_data = self:GetMoneyCopyData( sub_type )
- if base_data and base_data.stime > 0 and base_data.etime > 0 then
- return (server_time > base_data.stime and base_data.etime > server_time), base_data.stime, base_data.etime
- else
- return false,0,0
- end
- else
- return (server_time > act_list.stime and act_list.etime > server_time), act_list.stime, act_list.etime
- end
- end
- return false,0,0
- end
- --获取红点
- function KfActivityModel:IsMoneyCopyRedByTag( tag )
- local sub_type = self:GetMoneyCopySubTypeByTag(tag)
- if sub_type then
- return self:IsMoneyCopyRedBySubType( sub_type )
- end
- return false
- end
- function KfActivityModel:IsMoneyCopyRedBySubType( sub_type )
- local base_type = CustomActivityModel.CustomActBaseType.MONEY_COPY
- sub_type = sub_type or CustomActivityModel:getInstance():getActMinSubType(base_type)
- local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type)
- if act_list then
- local in_time = self:IsInMoneyCopyTime(sub_type)
- if in_time then
- --活动期内才需要红点了
- local base_data = self:GetMoneyCopyData(sub_type)
- if base_data and base_data.total > 0 then
- local cur_time_tb = os.date( '*t' ,TimeUtil:getServerTime())
- local last_time_tb = os.date( '*t' ,base_data.last_time)
- if last_time_tb.day ~= cur_time_tb.day or last_time_tb.month ~= cur_time_tb.month then
- return true
- end
- end
- end
- end
- return false
- end
- --------------源晶复制机----end--------------
-
- --------------黑白棋----start--------------
- function KfActivityModel:GetReversiRedDotBySubType( sub_type )
- --活动开启首次登陆红点
- local red_first_data = CookieWrapper.Instance:GetCookie(CookieLevelType.Account,CookieKey.REVERSI_RED) or {}
- if not red_first_data[sub_type] then
- -------------------------
- --没开过界面
- return true
- end
- -- 当玩家有免费抽奖次数时
- local bool_red = self:GetReversiFreeDrawRed(sub_type)
- bool_red = bool_red or self:GetReversiFreeRreshRed(sub_type)
-
- if not bool_red then
- local base_type = CustomActivityModel.CustomActBaseType.REVERSI
- local free_buff_kind = OperateActivityModel.MaterialSubmitBuffKind.ACT_LUCKY_FREE --是否存在活动加成buff 首次抽奖免费
- local free_buff_cfg,free_buff_info = OperateActivityModel:getInstance():GetMaterialBuffInfoByKind(free_buff_kind)
- local buff_free_times = 0
- if free_buff_cfg and free_buff_info then
- local sec = free_buff_info.etime - TimeUtil:getServerTime( )
- if sec > 0 then
- self:ActReversiBuffTimeLate(sec,sub_type)
- buff_free_times = free_buff_cfg.data
- for k,v in pairs(free_buff_info.used) do
- if v.kdata == base_type then--十连还有次数
- buff_free_times = buff_free_times - v.vdata
- break
- end
- end
- if buff_free_times > 0 then
- bool_red = true
- end
- end
- end
- end
-
- return bool_red
- -- 当奖池刷新(玩家升级导致)时候
- end
-
- --黑白棋活动BUFF时间倒计时
- function KfActivityModel:ActReversiBuffTimeLate( sub_type )
- if self.act_reversi_buff_timer_id then
- GlobalTimerQuest:CancelQuest(self.act_reversi_buff_timer_id)
- self.act_reversi_buff_timer_id = nil
- end
- if self.reversi_act_sec and self.reversi_act_sec >= sec then
- return
- else
- self.reversi_act_sec = sec
- end
- local sec = sec or 0
- if sec > 0 then
- local function onTimer()
- sec = sec - 1
- if sec > 0 then
-
- else
- if self.act_reversi_buff_timer_id then
- GlobalTimerQuest:CancelQuest(self.act_reversi_buff_timer_id)
- self.act_reversi_buff_timer_id = nil
- end
- KfActivityModel:getInstance():IsNeedRed(KfActivityModel.TabID.Reversi,nil,sub_type)
- end
- end
- if not self.act_reversi_buff_timer_id then
- self.act_reversi_buff_timer_id = GlobalTimerQuest:AddPeriodQuest(onTimer, 1, -1)
- end
- onTimer()
- else
- if self.act_reversi_buff_timer_id then
- GlobalTimerQuest:CancelQuest(self.act_reversi_buff_timer_id)
- self.act_reversi_buff_timer_id = nil
- end
- KfActivityModel:getInstance():IsNeedRed(KfActivityModel.TabID.Reversi,nil,sub_type)
- end
- end
-
- --免费抽奖次数
- function KfActivityModel:GetReversiFreeDrawRed( sub_type )
- local data = OperateActivityModel:getInstance():GetReversiInfo( sub_type )
- return data and data.free_times > 0
- end
-
- --当玩家能够免费刷新奖池时
- function KfActivityModel:GetReversiFreeRreshRed( sub_type )
- local data = OperateActivityModel:getInstance():GetReversiCurInfo(sub_type)
- if not data then return false end
- local open_num = 0
- for k,v in pairs(data) do
- if v.status == 1 then
- open_num = open_num + 1
- end
- end
- return open_num >= 16
- end
-
- function KfActivityModel:MaskReversiOpenRedDot( sub_type,bool )
- local data = CookieWrapper.Instance:GetCookie(CookieLevelType.Account,CookieKey.REVERSI_RED) or {}
- if data[sub_type] ~= bool then
- data[sub_type] = bool
- CookieWrapper.Instance:SaveCookie(CookieLevelType.Account,CookieTimeType.TYPE_ALWAYS,CookieKey.REVERSI_RED,data)
- CookieWrapper.Instance:WriteAll()
- self:IsNeedRed(KfActivityModel.TabID.Reversi,nil,sub_type)
- end
- end
- --------------黑白棋----end--------------
-
- --------------活动幻魔----start--------------
- function KfActivityModel:GetFestivalBossRedDotBySubType( sub_type )
- --活动开启首次登陆红点
- local red_first_data = CookieWrapper.Instance:GetCookie(CookieLevelType.Account,CookieKey.FESTIVAL_BOSS_RED) or {}
- if not red_first_data[sub_type] then
- -------------------------
- --没开过界面
- return true
- end
- return false
- end
-
- function KfActivityModel:MaskFestivalBossOpenRedDot( sub_type,bool )
- local data = CookieWrapper.Instance:GetCookie(CookieLevelType.Account,CookieKey.FESTIVAL_BOSS_RED) or {}
- if data[sub_type] ~= bool then
- data[sub_type] = bool
- CookieWrapper.Instance:SaveCookie(CookieLevelType.Account,CookieTimeType.TYPE_ALWAYS,CookieKey.FESTIVAL_BOSS_RED,data)
- CookieWrapper.Instance:WriteAll()
- self:IsNeedRed(KfActivityModel.TabID.FestivalBoss,nil,sub_type)
- end
- end
- --------------活动幻魔----end--------------
-
- --------------活跃/登陆 通行证----start--------------
- --活跃/登陆 通行证信息
- function KfActivityModel:GetPassActInfo( act_type,sub_type )
- if self.pass_act_info[act_type] then
- return self.pass_act_info[act_type][sub_type] or false
- end
- return false
- end
- function KfActivityModel:SetPassActInfo( value )
- if value then
- local function sort_call( a,b )
- return a.need < b.need
- end
- table.sort( value.reward_list, sort_call )
- self.pass_act_info[value.act_type] = self.pass_act_info[value.act_type] or {}
- self.pass_act_info[value.act_type][value.sub_type] = value
- self:IsNeedRed(self:ByActTypeGetTabId( value.act_type ),nil,value.sub_type)
- end
- end
-
- --活跃/登陆 通行证奖励信息
- function KfActivityModel:GetPassActRewardInfo( act_type,sub_type )
- if self.pass_act_reward_info[act_type] then
- return self.pass_act_reward_info[act_type][sub_type] or false
- end
- return false
- end
- function KfActivityModel:SetPassActRewardInfo( value )
- if value then
- local function sort_call( a,b )
- return a.need < b.need
- end
- table.sort( value.reward_list, sort_call )
- self.pass_act_reward_info[value.act_type] = self.pass_act_reward_info[value.act_type] or {}
- self.pass_act_reward_info[value.act_type][value.sub_type] = value
- end
- end
-
- function KfActivityModel:GetPassActCurLvSelect( act_type,sub_type )
- if act_type == CustomActivityModel.CustomActBaseType.LOGIN_PASS then
- local base_data = self:GetPassActInfo(act_type,sub_type)
- local cur_active = base_data and base_data.active or 1
- if base_data then
- --判断一下是不是全都到期了,到期了就取第一个可未领的
- local award_data = self:GetPassActRewardInfo(act_type,sub_type)
- local max_grade = award_data and #award_data.reward_list or false
- if (cur_active > max_grade) then
- for i,v in ipairs(base_data.reward_list) do
- if v.normal_status~=2 or v.extra_status ~= 2 then
- cur_active = v.grade
- break
- end
- end
- end
- end
- return cur_active
- elseif act_type == CustomActivityModel.CustomActBaseType.LIVELY_PASS then
- --获取最低可领取的奖励段
- --最低不可领取的
- --最大奖励点
- local cur_active = false--普通最低可操作档位
- local base_data = self:GetPassActInfo(act_type,sub_type)
- if base_data then
- for i,v in ipairs(base_data.reward_list) do
- if v.normal_status~=2 then
- cur_active = v.grade
- break
- end
- end
- return cur_active or 1--貌似也不需要,直接选第一个
- --[[if not cur_active then
- --没有那么就要考虑显示最高基本 or 第一个
- local max_grade = 0
- local min_grade = 9999
- local temp = self:GetPassActRewardInfo( act_type,sub_type )
- if temp and temp.reward_list then
- for k,v in pairs(temp.reward_list) do
- max_grade = max_grade < v.grade and v.grade or max_grade
- min_grade = min_grade > v.grade and v.grade or min_grade
- end
- return base_data.is_pay == 1 and max_grade or min_grade
- end
- end--]]
- end
- end
- return 1
- end
-
- function KfActivityModel:GetPassActRewardStatus( act_type,sub_type,grade )
- local basic = self:GetPassActInfo(act_type,sub_type)
- if not basic then return 0,0 end
- local cur_data = false
- for k,v in pairs(basic.reward_list) do
- if v.grade == grade then
- cur_data = v
- break
- end
- end
- if cur_data then
- return cur_data.normal_status,cur_data.extra_status
- else
- return 0,0
- end
- end
-
- function KfActivityModel:PassActChangeRewardStatus( act_type,sub_type,grade,reward_opty )
- local base_data = self:GetPassActInfo(act_type,sub_type)
- if (not base_data) then return end
- local have_set = false
- for k,v in pairs(base_data.reward_list) do
- if v.grade == grade then
- if reward_opty == 1 then
- v.normal_status = 2
- have_set = true
- elseif reward_opty == 2 then
- v.extra_status = 2
- have_set = true
- elseif reward_opty == 3 then
- v.normal_status = 2
- v.extra_status = 2
- have_set = true
- end
- end
- end
- if not have_set then
- return false
- else
- self:IsNeedRed(self:ByActTypeGetTabId( act_type ),nil,sub_type)
- end
- end
-
- --通用通行证红点
- function KfActivityModel:CheckComPassRedDot( base_type,sub_type )
- local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type)
- local act_type = CustomActivityModel.CustomIconActType.KfAct
- if not act_list then return false,act_type end
- local bool = false
- if not self.act_red_dot_info[base_type] then
- self.act_red_dot_info[base_type] = {}
- end
- self.act_red_dot_info[base_type][sub_type] = false
- -------------------------
- local open_level = Config.Modulesub["331@" .. base_type] and Config.Modulesub["331@" .. base_type].open_lv or 1
- for l,w in pairs(act_list.condition_list) do
- if type(w) == "table" and w[1] == "role_lv" then
- open_level = tonumber(w[2])
- end
- end
- if RoleManager.Instance.mainRoleInfo.level >= open_level then
- local server_time = TimeUtil:getServerTime( )
- if act_list and server_time > act_list.stime and act_list.etime > server_time then
- act_type = act_list.act_type
- bool = self:GetComPassRedDotBySubType(base_type,sub_type)
- self.act_red_dot_info[act_list.base_type][act_list.sub_type] = bool
- end
- else
- self.check_lv_act_open = self.check_lv_act_open or {}
- self.check_lv_act_open[open_level] = self.check_lv_act_open[open_level] or {}
- self.check_lv_act_open[open_level][base_type] = self.check_lv_act_open[open_level][base_type] or {}
- self.check_lv_act_open[open_level][base_type][sub_type] = true
- end
- return bool,act_type
- end
-
- function KfActivityModel:GetComPassRedDotBySubType( base_type,sub_type )
- local base_data = self:GetPassActInfo(base_type,sub_type)
- if base_data then
- for k,v in pairs(base_data.reward_list) do
- if v.normal_status == 1 or v.extra_status == 1 then
- return true
- end
- end
- end
- return false
- end
- --------------活跃/登陆 通行证----end--------------
-
- --构建抢购商城小弹窗信息
- function KfActivityModel:GetRushQuickBuy( goods_id )
- local base_type = CustomActivityModel.CustomActBaseType.KFACTIVITY_LIMIT_SHOP
- local sub_type = CustomActivityModel:getInstance():getActMinSubType(base_type)
- if not sub_type then return end
- local server_data = CustomActivityModel:getInstance():getOneActRewardList(base_type,sub_type)
- if not server_data then return end
- local info_list = server_data.reward_list
- if not info_list or not TableSize(info_list) == 0 then return end
- local level = RoleManager.Instance.mainRoleInfo.level
- local item_list = {}
- for i,v in ipairs(info_list) do
- if #v.reward_info == 1 and (v.reward_info[1].goods_id == goods_id or not goods_id) then
- local lv_can = true
- local num_can = true
- for k,vv in pairs(v.condition_list) do
- if vv[1] == "show_level_range" then
- if level < tonumber(vv[2]) or level > tonumber(vv[3]) then
- lv_can = false
- end
- elseif vv[1] == "limit_times" then
- num_can = tonumber(vv[2]) - v.progress > 0
- end
- end
- if lv_can and num_can then
- --符合等级,符合数量条件
- item_list[#item_list + 1] = v
- end
- end
- end
- -------------------------
- if #item_list > 0 then
- return item_list
- end
- end
-
- -- 判断是否需要展示广告
- function KfActivityModel:CheckFosterRechargeAdsShow( show_type, grade )
- local bool = false
- if not RechargeActivityModel:getInstance():IsRecharge( ) then
- local open_server_day = ServerTimeModel:getInstance():GetOpenServerDay()
- local cfg = KfActivityConst.FosterRechargeData[show_type]
- if cfg and cfg.opday_lim[1] <= open_server_day and cfg.opday_lim[2] >= open_server_day -- 天数
- and cfg.grade[1] <= grade and cfg.grade[2] >= grade then -- 阶数
- bool = true
- end
- end
- return bool
- end
-
- --设置小额连充信息
- function KfActivityModel:SetKfContinueInfo( vo )
- local can_resign_time = math.floor(vo.total/KfActivityModel.ContinueSignRechargePrice)--可以补签的数量
- vo.can_resign_time = can_resign_time - vo.resign
- --离下一个补签需要充值多少
- vo.offer_price = math.ceil(vo.total/KfActivityModel.ContinueSignRechargePrice) * KfActivityModel.ContinueSignRechargePrice - vo.total
- if vo.offer_price == 0 and vo.can_resign_time == 0 then
- vo.offer_price = KfActivityModel.ContinueSignRechargePrice
- end
- self.kf_continue_info[vo.sub_type] = vo
- self:IsNeedRed(KfActivityModel.TabID.ContinueRecharge,nil,vo.sub_type)
- end
-
- --获得小额连充补签信息
- function KfActivityModel:GetKfContinueInfo( sub_type )
- return self.kf_continue_info[sub_type]
- end
-
- ----------活动引导-998-start--------
- -- 设置缓存
- function KfActivityModel:SetActGuideCache( data )
- self.act_guide_cache = self.act_guide_cache or {}
- for l,w in pairs(data.condition_list) do
- if w[1] == "role_lv" then -- 升级时弹(运营同一个等级会配很多个东西,所以存成表)
- self.act_guide_cache.role_lv = self.act_guide_cache.role_lv or {}
- self.act_guide_cache.role_lv[tonumber(w[2])] = self.act_guide_cache.role_lv[tonumber(w[2])] or {}
- table.insert(self.act_guide_cache.role_lv[tonumber(w[2])], data.sub_type) -- 记录一下这个等级
- elseif w[1] == "foster" then --进阶成功时弹
- self.act_guide_cache.foster = self.act_guide_cache.foster or {}
- local temp = {
- [1] = data.sub_type,
- [2] = tonumber(w[2]),
- [3] = tonumber(w[3]),
- [4] = tonumber(w[4]),
- }
- table.insert(self.act_guide_cache.foster, temp)
- elseif w[1] == "end_foster" then
- self.act_guide_cache.end_foster = self.act_guide_cache.end_foster or {}
- local temp = {
- [1] = data.sub_type,
- [2] = tonumber(w[2]),
- [3] = tonumber(w[3]),
- [4] = tonumber(w[4]),
- }
- table.insert(self.act_guide_cache.end_foster, temp)
- elseif w[1] == "type" then
- data.type = tonumber(w[2])
- elseif w[1] == "good" then
- data.good = tonumber(w[2])
- end
- end
- end
-
- -- 检查是否需要弹出活动引导
- function KfActivityModel:CheckNeedShowActGuide( check_key, check_value)
- if not check_key or not check_value or not self.act_guide_cache or not self.act_guide_cache[check_key] then
- return
- end
- local sub_type = false
- if check_key == "role_lv" then
- if self.act_guide_cache.role_lv[check_value] then
- sub_type = self.act_guide_cache.role_lv[check_value] -- 这是个表
- end
- elseif check_key == "foster" then
- sub_type = sub_type or {}
- for k,v in pairs(self.act_guide_cache[check_key]) do
- if check_value[1] == v[2] and check_value[2] == v[3] and check_value[3] == v[4] then
- table.insert(sub_type, v[1])
- -- sub_type = v[1]
- end
- end
- elseif check_key == "end_foster" then
- sub_type = sub_type or {}
- --print('=======Msh:KfActivityModel.lua[4448] ===TABLE====')
- --PrintTable(self.act_guide_cache[check_key])
- for k,v in pairs(self.act_guide_cache[check_key]) do
- if check_value[1] == v[2] and
- not ((check_value[2] == v[3] and check_value[3] >= v[4] ) or
- (check_value[2] > v[3])) then
- table.insert(sub_type, v[1])
- end
- end
- return sub_type -- 不需要打开界面
- end
- -- print('=======Msh:KfActivityModel.lua[4428] ===TABLE====')
- -- PrintTable(self.act_guide_cache)
- if sub_type and type(sub_type) == "table" then
- --print('=======Msh:KfActivityModel.lua[4431] ===TABLE====')
- --PrintTable(sub_type)
- for i,v in pairs(sub_type) do
- --print('=======Msh:KfActivityModel.lua[4432] ==打开冲=====', data)
- self:Fire(KfActivityModel.OPEN_ACT_GUIDE_BASE_VIEW, v)
- end
- elseif sub_type then
- print('=======Msh:KfActivityModel.lua[4439] ===TABLE====', sub_type)
- PrintTable(self.act_guide_cache[check_key])
- self:Fire(KfActivityModel.OPEN_ACT_GUIDE_BASE_VIEW, sub_type)
- end
- end
-
- function KfActivityModel:ResetActGuideCache( )
- local open_day = ServerTimeModel:getInstance():GetOpenServerDay()
- if self.act_guide_cache and self.act_guide_cache.open_day and self.act_guide_cache.open_day == open_day then
- return
- end
- self.act_guide_cache = {open_day = open_day}
- end
-
- -- 检测新获得的物品是否是直升丹需要展示 (这里是不走活动协议的)
- function KfActivityModel:IsAddActGuideList( goods_vo )
- local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(goods_vo.type_id)
- if basic.subtype == 24 or basic.subtype == 16 then -- 等级直升丹/进阶直升丹
- local bag_goods_dic = GoodsModel:getInstance():GetBagGoodsDic()
- local bag_good_vo = bag_goods_dic[goods_vo.goods_id]
-
- self.act_guide_add_goods_list = self.act_guide_add_goods_list or {}
- --背包本来没有
- if not bag_good_vo then
- --道具增加
- if goods_vo.goods_num > 0 then
- local copy_new_vo = DeepCopy(goods_vo)
- table.insert(self.act_guide_add_goods_list, copy_new_vo)
- end
- else
- --道具变更,并且增加
- if goods_vo.goods_num > bag_good_vo.goods_num then
- local copy_new_vo = DeepCopy(goods_vo)
- table.insert(self.act_guide_add_goods_list, copy_new_vo)
- end
- end
- end
- end
-
- -- 检查是否需要弹出直升丹的推荐使用
- function KfActivityModel:CheckActGuideNeedShow( need_close )
- if self.act_guide_add_goods_list and TableSize(self.act_guide_add_goods_list) > 0 then
- -- local data = table.remove(self.act_guide_add_goods_list, 1)
- -- print('=======Msh:KfActivityModel.lua[4481] ===打开界面====')
- self:Fire(KfActivityModel.OPEN_ACT_GUIDE_BASE_VIEW, nil, nil, true)
- elseif need_close then -- 关闭界面
- -- print('=======Msh:KfActivityModel.lua[4483] =====关界面==')
- -- PrintCallStack()
- self:Fire(KfActivityModel.OPEN_ACT_GUIDE_BASE_VIEW, nil, true, true)
- end
- end
-
- function KfActivityModel:GetActGuideAddGoodsData( )
- if self.act_guide_add_goods_list and TableSize(self.act_guide_add_goods_list) > 0 then
- return table.remove(self.act_guide_add_goods_list, 1)
- end
- end
-
- -- 只靠物品id打开推荐使用
- function KfActivityModel:ShowActGuideUseByGoodsID( goods_id )
- local goods_vo = {
- type_id = goods_id,
- }
- self.act_guide_add_goods_list = self.act_guide_add_goods_list or {}
- table.insert(self.act_guide_add_goods_list, goods_vo)
- self:CheckActGuideNeedShow()
- end
-
- -- 每次登陆缓存一下是否看过某进阶系统的直升按钮
- function KfActivityModel:CheckFosterActGuideEffectShow( show_type )
- self.foster_act_guide_btn_cache = self.foster_act_guide_btn_cache or {}
- return self.foster_act_guide_btn_cache[show_type]
- end
-
- -- 记录已经看过的缓存
- function KfActivityModel:SetFosterActGuideBtnCache( show_type )
- self.foster_act_guide_btn_cache = self.foster_act_guide_btn_cache or {}
- self.foster_act_guide_btn_cache[show_type] = true
- end
-
- function KfActivityModel:ResetFosterActGuideBtnCache( )
- self.foster_act_guide_btn_cache = {}
- end
-
- -- 记录需要播放高层级升级特效标志
- function KfActivityModel:SetIsNeedTopEffect( bool )
- self.act_guide_is_need_top_effect = bool
- end
-
- -- 获取特效标志
- function KfActivityModel:GetIsNeedTopEffect( )
- return self.act_guide_is_need_top_effect
- end
- ----------活动引导-998-end-----------
-
- --获得上榜条件最大限制
- function KfActivityModel:GetRushRankMaxLimit( rank_type )
- local max_rank_limit = 30
- local rank_cfg = self:GetRushRankAwardCfg(rank_type) or {}
- for i,v in ipairs(rank_cfg) do
- max_rank_limit = max_rank_limit < v.rank_max and v.rank_max or max_rank_limit
- end
- return max_rank_limit
- end
|