|
CustomActivityModel = CustomActivityModel or BaseClass(BaseModel)
|
|
|
|
--定制活动主类型(对应后台配置)
|
|
CustomActivityModel.CustomActBaseType = {
|
|
LIMIT_GIFT = 3, --限购礼包
|
|
MONEY_COPY = 5, --彩钻复制机
|
|
DAILY_RECHARGE = 6, --每日累充
|
|
KFACTIVITY_RECHARGE = 7, --开服累充
|
|
RUSH_RANK = 10, --开服冲榜
|
|
POWER_TURNTABLE = 11, --源能转盘
|
|
HOPE_GIFT = 19, --臻享礼包
|
|
SAKURA_GIFT = 20, --源樱之礼
|
|
ACC_CONSUME = 30, --累计消费
|
|
ZERO_GIFT = 36, --0元礼包
|
|
RECHARGE_RANK = 33, --充值排行
|
|
SERVER_CONSUME = 39, --本服消费
|
|
SINGLE_RECHARGE = 48, --单笔充值
|
|
MAINLAND_JOURNEY = 50, --大陆征途
|
|
FORTUNE_CAT = 64, --招财猫
|
|
KFACTIVITY_LIMIT_SHOP = 65, --抢购商城
|
|
GUILD_SPEED = 66, --社团竞榜
|
|
FOSTER_STAGE = 67, --开服进阶
|
|
CONTINUE_RECHARGE = 68, --连充豪礼
|
|
MERCENARY_SUPPLY = 69, --佣兵补给
|
|
KF_GROUP_BUYING = 70, --开服团购
|
|
MOBILIZATION = 71, --全民动员
|
|
MONOPOLY = 72, --大富翁
|
|
ADVERTISEMENT = 73, --活动宣传
|
|
CONTRACT = 74, --万物宝典
|
|
INVEST_ACT = 75, --投资活动
|
|
LIMIT_SECKILL = 76, --限时秒杀
|
|
DISCOUNT_FULL_CUT = 77, --折扣满减
|
|
HAPPY_RED_BAG = 78, --惊喜红包
|
|
COM_RANK = 79, --通用排行
|
|
LOGIN_PASS = 80, --登录通行证
|
|
LIVELY_PASS = 81, --活跃通行证
|
|
HIGH_EXCHANGE = 82, --嗨点兑换
|
|
|
|
--主题活动相关
|
|
OPERATE_ACTIVITY = 99, --主题活动
|
|
REWARD_SHOW = 100, --资源展示
|
|
BOSS_DROP = 101, --BOSS本服掉落
|
|
DUN_MUL_DROP = 102, --副本多倍掉落
|
|
SINGLE_DAY_RECHARGE = 103, --单日充值
|
|
BOSS_TREASURE = 104, --幻魔宝典
|
|
HIGH_POINT = 105, --嗨点
|
|
E_DAY_LOGIN = 106, --每日登录
|
|
LUCKY_TURNTABLE = 107, --幸运轮盘
|
|
SCRAPING_CRAD = 108, --刮刮卡
|
|
GET_LUCKY_BAG = 109, --抢福袋
|
|
GET_RED_BAG = 110, --抢红包
|
|
TAROT = 111, --塔罗牌
|
|
COLLECT_ZI = 112, --集字兑换
|
|
ADVENTURE = 113, --冒险征途
|
|
STAGE_EXCHANGE = 114, --阶段兑换
|
|
REVERSI = 115, --黑白棋抽奖
|
|
JIGSAW = 116, --活跃拼图
|
|
FESTIVAL_BOSS = 117, --节日幻魔
|
|
AMUSING_JIGSAW_PUZZLE = 118,--眼疾手快趣味拼图
|
|
THREE_FIGHT = 119, --三日作战
|
|
PRAY_TREE = 120, --人参果树
|
|
JUMP_ONE = 121, --跳一跳
|
|
COMPOSE_ROBOT = 122, --合成机
|
|
SUPER_AWARD = 123, --超能大奖
|
|
MATERIAL_SUBMIT = 124, --材料提交
|
|
ACT_GUIDE = 998, --活动引导
|
|
ACTIVITY_ICON_DESC = 999, --活动图标说明
|
|
SELECT_EGG = 125, --自选扭蛋
|
|
|
|
|
|
--这里需要将一些非定制活动加入到开发活动中 这边创建一个标识 好分辨
|
|
COPETING = 8989, --竞榜活动
|
|
SEVEN_DAYS_LOGIN = 17500, -- 七日登录
|
|
|
|
|
|
--以下是旧版活动
|
|
-- CHARM_RANK = 1, --魅力榜
|
|
-- CROSS_CHARM_RANK = 2, --跨服魅力榜
|
|
-- MARRY_RANK = 3, --结婚榜
|
|
-- KF_JI_ZI = 4, --开服集字
|
|
-- SEVEN_RECHARGE = 7, --七日累充
|
|
-- GOOD_GIFT = 11, --好评礼包
|
|
-- THROW_EGG = 13, --砸蛋
|
|
-- RECHARGE_GIFT = 14, --充值有礼
|
|
-- LOGIN_GIFT = 15, --连续登录
|
|
-- DUN_MUL_EXP = 16, --副本多倍经验
|
|
-- DISCOUNT_SHOP = 17, --特惠商城
|
|
-- CLOUD_SHOPPING = 18, --云购
|
|
-- EUDEMONS_ATTACK = 19, --幻兽入侵
|
|
-- BRAVE_GUILD = 24, --勇者盟约
|
|
-- PERFECT_LOVER = 25, --完美恋人
|
|
-- KILL_BOSS_FIRST = 26, --BOSS首杀
|
|
-- GUILD_COMPETE = 27, --社团争霸
|
|
-- ACT_BOSS = 20, --活动boss
|
|
-- ACTIVITY_EXCHANGE = 21, --活动兑换
|
|
-- ACT_RED_BAG = 29, --活动红包
|
|
-- LUCKY_ACC = 31, --幸运鉴宝
|
|
-- I_LOVE_GODDESS = 32, --我爱女神
|
|
-- KING_AND_QUEEN = 34, --充值消费
|
|
-- ZERO_GIFT = 36, --0元豪礼
|
|
|
|
-- KF_YG_ZS = 37, --跨服云购(消耗彩钻)
|
|
-- KF_YG_BZ = 38, --跨服云购(消耗红钻)
|
|
-- CONTINUE_CONSUME = 40, --连续消费
|
|
-- FUNC_CONSUMABLE = 41, --巨折献礼
|
|
-- BOUTIQUE_SALE = 42, --精品特卖
|
|
-- LUCKY_CARD = 35, --幸运翻牌
|
|
-- ACTIVE_TURNPLATE = 43, --活跃转盘
|
|
-- COMBINE_GUILD_COMPETE = 44, --合服社团争霸
|
|
-- PIGEON_LETTER = 45, --白鸽送信
|
|
-- VALUE_INVEST = 46, --超值投资
|
|
-- NEW_DAILY_RECHARGE = 47, --每日累充
|
|
-- SINGLE_RECHARGE = 48, --每日单笔充值
|
|
-- KF_EARN = 49, --开服赚赚
|
|
-- QIXI_TURNTABLE = 50, --七夕转盘
|
|
-- QIXI_TICKET = 51, --七夕抽奖
|
|
-- ONLINE_TIME = 54, --累计在线
|
|
-- EVERYDAY_LIVELY = 56, --每日活跃
|
|
-- FIREWORKS = 22, --烟花盛典
|
|
-- HAPPYTURNTABLE = 55, --周一大放送
|
|
-- Repeat_Recharge = 57, --重复充值领奖
|
|
-- Recharge_Dial = 58, --充值转盘活动
|
|
-- EVERYDAY_TARGET = 59, --每日目标
|
|
-- GROWTH_INTEGRAL = 60, --成长积分
|
|
-- JOY_WISH = 61, --欢乐许愿
|
|
-- HONOUR_WAR = 62, --荣耀战神
|
|
-- VIP_SALE = 63, --vip特惠
|
|
}
|
|
|
|
CustomActivityModel.CustomIconActType = {
|
|
KfAct = 1,--开服活动
|
|
JcAct = 3,--精彩活动
|
|
OpAct = 6,--主题活动
|
|
GiftAct = 7,--礼包活动
|
|
}
|
|
--云购类型
|
|
CustomActivityModel.CloudShoppingType = {
|
|
BenFu = 0, --本服
|
|
KuaFu = 1, --跨服
|
|
}
|
|
|
|
--通用活动红点类型
|
|
CustomActivityModel.ComActRedType = {
|
|
Day = 1, --每日
|
|
Once = 2, --每次活动一次
|
|
}
|
|
|
|
CustomActivityModel.FIRST_RECHARGE_TIP_TASK_ID = 10180--首充tip弹窗
|
|
CustomActivityModel.FIRST_RECHARGE_TASK_ID = 11456--首充弹窗
|
|
CustomActivityModel.CAT_FOTANA_TASK_ID = 10330--招财猫
|
|
CustomActivityModel.SEVEN_LOGIN_TASK_ID = 10760--七日登陆
|
|
CustomActivityModel.VIP_EX_CARD_TASK_ID = 11210--VIP体验卡任务ID
|
|
CustomActivityModel.VIP_THREE_TASK_ID_LIST = {10800,11535}--V3弹窗
|
|
CustomActivityModel.ZERO_GIFT_OPEN_lEVEL = {{1,72},{2,155}}--0元礼包{活动子类型sub_type,等级level}
|
|
|
|
|
|
CustomActivityModel.PROTO_CCMD_EVENT = "PROTO_CCMD_EVENT" --发送协议
|
|
CustomActivityModel.UPDATE_ACTIVITY_INFO = "CustomActivityModel.UPDATE_ACTIVITY_INFO"--更新活动信息
|
|
CustomActivityModel.UPDATE_ACTIVITY_RED_AWARD_INFO = "CustomActivityModel.UPDATE_ACTIVITY_RED_AWARD_INFO"--更新活动红点奖励信息
|
|
|
|
function CustomActivityModel:__init()
|
|
CustomActivityModel.Instance = self
|
|
self:ResetInfo()
|
|
end
|
|
|
|
function CustomActivityModel:getInstance()
|
|
if CustomActivityModel.Instance == nil then
|
|
CustomActivityModel.New()
|
|
end
|
|
return CustomActivityModel.Instance
|
|
end
|
|
|
|
--初始化信息
|
|
function CustomActivityModel:ResetInfo()
|
|
self.act_reward_list = {}
|
|
self.act_list = {}
|
|
self.bool_now_throw_egg = false
|
|
self.acc_consume_list = {} --累计消费信息
|
|
self.cache_chuanwen = {} --传闻缓存列表
|
|
self.fly_in_goods_cache = {}--飞入物品缓存
|
|
self.act_com_red_award_info = {}--活动奖励数据
|
|
self.online_time_mul = 1 --累计在线奖励倍数
|
|
self.can_fly_goods = true
|
|
self.pellet_validation_data = nil -- 弹珠机数据验证缓存
|
|
end
|
|
|
|
function CustomActivityModel:__delete()
|
|
self:ResetInfo()
|
|
end
|
|
|
|
--解析活动图标位置信息
|
|
function CustomActivityModel:ParseIconPosCfg( pos_cfg )
|
|
local new_cfg = DeepCopy(pos_cfg)
|
|
local open_day = ServerTimeModel:getInstance():GetOpenServerDay()
|
|
if new_cfg.day_change and new_cfg.day_change<=open_day then
|
|
new_cfg = new_cfg.day_pos_cfg
|
|
end
|
|
return new_cfg
|
|
end
|
|
|
|
--处理协议进来的数据
|
|
function CustomActivityModel:handleActVo(vo, bool_reset,is_preview)
|
|
local pos_list = Config.ConfigFunctionIcon.ActPosIndex
|
|
if bool_reset then
|
|
--初始化数据
|
|
self.act_list = {}
|
|
-- OperateActivityModel:getInstance():clearOperateAllActRedDotShow()
|
|
-- KfActivityModel:getInstance():clearKfAllActRedDotShow()
|
|
end
|
|
KfActivityModel:getInstance():ResetActGuideCache()
|
|
local open_day = ServerTimeModel:getInstance():GetOpenServerDay()
|
|
local level = RoleManager.Instance.mainRoleInfo.level
|
|
local close_level = 9999
|
|
for i,v in pairs(vo.list) do
|
|
v.condition_list = ErlangParser:GetInstance():Parse(v.condition)
|
|
if v.base_type == CustomActivityModel.CustomActBaseType.ZERO_GIFT
|
|
or v.base_type == CustomActivityModel.CustomActBaseType.LIMIT_GIFT
|
|
then--0元礼包要提前修改活动类型
|
|
for kk,vv in pairs(v.condition_list) do
|
|
if vv[1] == "act_type" then
|
|
if vv[2] and vv[2][2] then
|
|
if open_day >= tonumber(vv[2][2][1]) and open_day <= tonumber(vv[2][2][2]) then
|
|
v.act_type = tonumber(vv[2][1])
|
|
end
|
|
end
|
|
if vv[3] and vv[3][2] then
|
|
if open_day >= tonumber(vv[3][2][1]) and open_day <= tonumber(vv[3][2][2]) then
|
|
v.act_type = tonumber(vv[3][1])
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if v.base_type == CustomActivityModel.CustomActBaseType.OPERATE_ACTIVITY then
|
|
for kk,vv in pairs(v.condition_list) do
|
|
if vv[1] == "close_lv" then
|
|
close_level = tonumber(vv[2])
|
|
end
|
|
end
|
|
end
|
|
|
|
self:setActToList(v)
|
|
--处理请求奖励状态[通用]
|
|
self:Fire(CustomActivityModel.PROTO_CCMD_EVENT, 33104, v.base_type, v.sub_type)
|
|
--每个活动各自处理
|
|
if v.base_type == CustomActivityModel.CustomActBaseType.LIMIT_GIFT then--限购礼包现在和开服活动一样了 只有一个图标
|
|
-- local icon_data = {vo = v, module_id = 331,sub_id = 3,icon_res_repath = nil,name = "限购礼包"}
|
|
-- self:CreateIconCfg(icon_data)
|
|
-- LimitGiftModel:getInstance():Fire(LimitGiftModel.REQUEST_INFO,33172, v.base_type, v.sub_type)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.FORTUNE_CAT then -- 招财猫
|
|
local pos_cfg = self:ParseIconPosCfg(pos_list[64])
|
|
local icon_data = {vo = v, module_id = 331, sub_id = 64, sub_location = pos_cfg.line, pos_index = pos_cfg.row_index, icon_res_repath = "icon_331_64", name = "招财猫"}
|
|
self:CreateIconCfg(icon_data)
|
|
FortuneCatModel:getInstance():Fire(FortuneCatModel.REQUEST_CCMD_EVENT, 33219)
|
|
FortuneCatModel:getInstance():Fire(FortuneCatModel.REQUEST_CCMD_EVENT, 33220, v.base_type, v.sub_type)
|
|
FortuneCatModel:getInstance():Fire(FortuneCatModel.REQUEST_CCMD_EVENT, 33222, v.base_type, v.sub_type)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.RUSH_RANK then -- 开服冲榜
|
|
local rank_type_list = KfActivityModel:getInstance():GetTodayRankType()
|
|
for n,l in pairs(rank_type_list) do
|
|
KfActivityModel:getInstance():Fire(KfActivityModel.REQUEST_INFO, 22501, l, v.sub_type)
|
|
end
|
|
KfActivityModel:getInstance():Fire(KfActivityModel.REQUEST_INFO, 22502, v.sub_type)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.SINGLE_RECHARGE then--单笔充值
|
|
CustomActivityModel:getInstance():Fire(CustomActivityModel.PROTO_CCMD_EVENT, 33611, v.base_type, v.sub_type)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.GUILD_SPEED then -- 社团竞榜
|
|
GuildSpeedModel:getInstance():CheckIconBoolOpen()
|
|
GuildSpeedModel:getInstance():Fire(GuildSpeedModel.REQUEST_INFO,40700)
|
|
GuildSpeedModel:getInstance():Fire(GuildSpeedModel.REQUEST_INFO,40701)
|
|
GuildSpeedModel:getInstance():Fire(GuildSpeedModel.REQUEST_INFO,40703)
|
|
for i=1,4 do
|
|
GuildSpeedModel:getInstance():Fire(GuildSpeedModel.REQUEST_INFO,40704,i)
|
|
end
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.ZERO_GIFT then--0元礼包
|
|
KfActivityModel:getInstance():Fire(KfActivityModel.REQUEST_INFO,33185,v.base_type,v.sub_type)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.MOBILIZATION then--全民动员
|
|
local icon_res_repath = "icon_331_71"
|
|
local open_day = ServerTimeModel:getInstance():GetOpenServerDay()
|
|
if open_day>= 8 then
|
|
icon_res_repath = "icon_331_71_2"
|
|
end
|
|
local pos_cfg = self:ParseIconPosCfg(pos_list[71])
|
|
local icon_data = {vo = v, module_id = 331, sub_location = 3, sub_id = 71, sub_location = pos_cfg.line, pos_index = pos_cfg.row_index, icon_res_repath = "icon_331_71", name = "全民动员"}
|
|
self:CreateIconCfg(icon_data)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.KF_GROUP_BUYING then--团购活动
|
|
MobilizationModel:getInstance():Fire(MobilizationModel.UPDATE_MOBILIZATION_VIEW,nil,true)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.DAILY_RECHARGE then--每日累充
|
|
local pos_cfg = self:ParseIconPosCfg(pos_list[6])
|
|
local icon_data = {vo = v, module_id = 331, sub_id = 6,sub_location = pos_cfg.line, pos_index = pos_cfg.row_index, icon_res_repath = "icon_331_6", name = "每日累充", effect_name = "ui_bianqiang"}
|
|
self:CreateIconCfg(icon_data)
|
|
RechargeActivityModel:getInstance():Fire(RechargeActivityModel.REQUEST_CCMD_EVENT, 15955, v.sub_type)
|
|
RechargeActivityModel:getInstance():Fire(RechargeActivityModel.REQUEST_CCMD_EVENT, 15956, v.sub_type)
|
|
CustomActivityModel:getInstance():Fire(CustomActivityModel.PROTO_CCMD_EVENT, 33180)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.ADVERTISEMENT then -- 活动广告
|
|
AdvertisementModel:getInstance():CheckAd(v)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.MONOPOLY then --大富翁
|
|
KfActivityModel:getInstance():Fire(KfActivityModel.REQUEST_INFO,33228,v.sub_type)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.CONTRACT then --万物宝典
|
|
ContractModel:getInstance():Fire(ContractConst.REQ_BASIC_DATA,v.sub_type)
|
|
ContractModel:getInstance():Fire(ContractConst.REQ_TASK_PROCESS,v.sub_type)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.OPERATE_ACTIVITY then --主题活动
|
|
local pos_index = 99000 + v.sub_type
|
|
local pos_cfg = self:ParseIconPosCfg(pos_list[pos_index] or {line = 3,row_index = 9 + v.sub_type/10})
|
|
local icon_data = {vo = v, module_id = 331, sub_id = 99, sub_location = pos_cfg.line, pos_index = pos_cfg.row_index, icon_res_repath = "icon_154_2", name = "活动图标", effect_name = "ui_bianqiang",}
|
|
self:CreateIconCfg(icon_data)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.HIGH_POINT then --嗨点活动
|
|
KfActivityModel:getInstance():Fire(KfActivityModel.REQUEST_INFO, 33140,v.base_type,v.sub_type)--这里放在33104后面请求
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.BOSS_TREASURE then --幻魔宝典
|
|
KfBossTreasureModel:getInstance():Fire(KfBossTreasureConst.REQ_BASIC_DATA,v.sub_type)
|
|
KfBossTreasureModel:getInstance():Fire(KfBossTreasureConst.REQ_TASK_PROCESS,v.sub_type)
|
|
KfBossTreasureModel:getInstance():Fire(KfBossTreasureConst.REQ_REWARD_INFO,v.sub_type)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.INVEST_ACT then -- 投资活动
|
|
KfActivityModel:getInstance():Fire(KfActivityModel.REQUEST_INFO, 33141, v.sub_type)
|
|
CustomActivityModel:getInstance():Fire(CustomActivityModel.PROTO_CCMD_EVENT, 33611, v.base_type, v.sub_type)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.LUCKY_TURNTABLE then --幸运转盘
|
|
OperateActivityModel:getInstance():Fire(OperateActivityModel.REQUEST_INFO, 33202, v.sub_type, 1)
|
|
OperateActivityModel:getInstance():Fire(OperateActivityModel.REQUEST_INFO, 33202, v.sub_type, 2)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.SCRAPING_CRAD then --刮刮乐
|
|
OperateActivityModel:getInstance():ScrapingCardInitCfg(v)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.LIMIT_SECKILL then --限时秒杀
|
|
KfActivityModel:getInstance().is_open_limit_seckill_view = false
|
|
KfActivityModel:getInstance():Fire(KfActivityModel.REQUEST_INFO, 33141, v.sub_type)
|
|
KfActivityModel:getInstance():Fire(KfActivityModel.REQUEST_INFO, 33187, v.sub_type)
|
|
KfActivityModel:getInstance():IsNeedRed(KfActivityModel.TabID.LimitSeckill,nil,v.sub_type)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.GET_LUCKY_BAG or
|
|
v.base_type == CustomActivityModel.CustomActBaseType.GET_RED_BAG then --抢红包/福袋
|
|
KfActivityModel:getInstance():SetLuckyBagData(v.base_type, v.condition_list)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.HAPPY_RED_BAG then--惊喜红包
|
|
KfActivityModel:getInstance():Fire(KfActivityModel.REQUEST_INFO, 33250, v.sub_type)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.DISCOUNT_FULL_CUT then--折扣满减
|
|
KfActivityModel:getInstance():Fire(KfActivityModel.REQUEST_INFO, 33126, v.sub_type)
|
|
if v.is_first_open then
|
|
KfActivityModel:getInstance():AddKfDiscountFullCutNewOpenRedDot(v.sub_type,true)
|
|
end
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.TAROT then --塔罗牌
|
|
OperateActivityModel:getInstance():SetTarotCfg(v)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.COM_RANK then--通用排行
|
|
KfActivityModel:getInstance():Fire(KfActivityModel.REQUEST_INFO, 33169, v.base_type, v.sub_type)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.STAGE_EXCHANGE then --阶段兑换
|
|
OperateActivityModel:getInstance():Fire(OperateActivityModel.REQUEST_INFO, 33260, v.sub_type)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.ADVENTURE then --冒险征途
|
|
OperateActivityModel:getInstance():Fire(OperateActivityModel.REQUEST_INFO, 33263, v.sub_type)
|
|
OperateActivityModel:getInstance():Fire(OperateActivityModel.REQUEST_INFO, 33265, v.sub_type)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.MONEY_COPY then --彩钻复制机
|
|
KfActivityModel:getInstance():Fire(KfActivityModel.REQUEST_INFO, 33131, v.sub_type)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.REVERSI then --黑白棋抽奖
|
|
OperateActivityModel:getInstance():Fire(OperateActivityModel.REQUEST_INFO, 33266, v.sub_type)
|
|
OperateActivityModel:getInstance():Fire(OperateActivityModel.REQUEST_INFO, 33268, v.sub_type)
|
|
OperateActivityModel:getInstance():Fire(OperateActivityModel.REQUEST_INFO, 33269, v.sub_type)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.FESTIVAL_BOSS then --节日幻魔
|
|
BossModel:GetInstance():Fire(BossConst.REQ_DESERTED_BOSS_SCMD, 46026)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.JIGSAW then -- 活跃拼图
|
|
OperateActivityModel:getInstance():Fire(OperateActivityModel.REQUEST_INFO, 33153, v.sub_type)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.THREE_FIGHT then -- 三日作战
|
|
OperateActivityModel:getInstance():Fire(OperateActivityModel.REQUEST_INFO, 33275, v.sub_type)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.LOGIN_PASS then -- 登陆通行证
|
|
KfActivityModel:getInstance():Fire(KfActivityModel.REQUEST_INFO, 33283, v.base_type, v.sub_type)
|
|
KfActivityModel:getInstance():Fire(KfActivityModel.REQUEST_INFO, 33286, v.base_type, v.sub_type)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.LIVELY_PASS then -- 活跃通行证
|
|
KfActivityModel:getInstance():Fire(KfActivityModel.REQUEST_INFO, 33283, v.base_type, v.sub_type)
|
|
KfActivityModel:getInstance():Fire(KfActivityModel.REQUEST_INFO, 33286, v.base_type, v.sub_type)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.COMPOSE_ROBOT then -- 合成机
|
|
OperateActivityModel:getInstance():Fire(OperateActivityModel.REQUEST_INFO, 33294, v.sub_type)
|
|
OperateActivityModel:getInstance():Fire(OperateActivityModel.REQUEST_INFO, 33296, v.sub_type)
|
|
--活动开了之后给一次红点,点开之后取消红点,所以这里要记录一个红点状态
|
|
OperateActivityModel:getInstance():SetComposeRobotActFirstRed(v.sub_type)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.SELECT_EGG then --自选扭蛋
|
|
OperateActivityModel:getInstance():Fire(OperateActivityModel.REQUEST_INFO, 33600, v.sub_type)
|
|
CustomActivityModel:getInstance():Fire(CustomActivityModel.PROTO_CCMD_EVENT, 33611, v.base_type, v.sub_type)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.JUMP_ONE then --跳一跳
|
|
local pos_cfg = self:ParseIconPosCfg(pos_list[121])
|
|
local icon_data = {vo = v, module_id = 331, sub_id = 121, sub_location = pos_cfg.line, pos_index = pos_cfg.row_index, icon_res_repath = "icon_459_0", name = "跳一跳"}
|
|
self:CreateIconCfg(icon_data)
|
|
JumpOneModel.getInstance():SetActCfg(v)
|
|
JumpOneModel:getInstance():Fire(JumpOneModel.REQUEST_INFO, 45901, v.sub_type)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.MAINLAND_JOURNEY then--大陆征途
|
|
local pos_cfg = self:ParseIconPosCfg(pos_list[50])
|
|
local icon_data = {vo = v, module_id = 331, sub_id = 50, sub_location = pos_cfg.line, pos_index = pos_cfg.row_index, icon_res_repath = "icon_331_50", name = "大陆征途"}
|
|
self:CreateIconCfg(icon_data)
|
|
--logWarn('=======Msh:CustomActivityModel.lua[296]=======')
|
|
--PrintTable(v)
|
|
MainlandJourneyModel:getInstance():CheckIconBoolOpen()
|
|
MainlandJourneyModel:getInstance():InitConfigJourneyAward(v.stime)
|
|
MainlandJourneyModel:getInstance():InitActData(v)
|
|
MainlandJourneyModel:getInstance():Fire(MainlandJourneyConst.REQUEST_CCMD_EVENT, 13800, v.sub_type, 0)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.MATERIAL_SUBMIT then--材料上交
|
|
OperateActivityModel:getInstance():Fire(OperateActivityModel.REQUEST_INFO, 14100, v.sub_type)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.ACTIVITY_ICON_DESC then--活动图标说明
|
|
ActivityIconManager:getInstance():SetActivityIconCustomDescInfo(v)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.SAKURA_GIFT then --源樱之礼
|
|
local pos_cfg = self:ParseIconPosCfg(pos_list[20])
|
|
local icon_data = {vo = v, module_id = 331, sub_id = 20, sub_location = pos_cfg.line, pos_index = pos_cfg.row_index, icon_res_repath = "icon_331_20", name = "源樱之礼"}
|
|
self:CreateIconCfg(icon_data)
|
|
SakuraGiftModel:getInstance():Fire(SakuraGiftModel.REQUEST_CCMD_EVENT,33400, v.sub_type)
|
|
SakuraGiftModel:getInstance():Fire(SakuraGiftModel.REQUEST_CCMD_EVENT,33403, v.sub_type)
|
|
SakuraGiftModel:getInstance():CheckIconBoolOpen(v.sub_type)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.CONTINUE_RECHARGE then --连充豪礼
|
|
KfActivityModel:getInstance():Fire(KfActivityModel.REQUEST_INFO,33145,v.sub_type)
|
|
CustomActivityModel:getInstance():Fire(CustomActivityModel.PROTO_CCMD_EVENT, 33611, v.base_type, v.sub_type)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.POWER_TURNTABLE then --源能转盘
|
|
local pos_cfg = self:ParseIconPosCfg(pos_list[11])
|
|
local icon_data = {vo = v, module_id = 331, sub_id = 11, sub_location = pos_cfg.line, pos_index = pos_cfg.row_index, icon_res_repath = "icon_331_11", name = "源能转盘"}
|
|
self:CreateIconCfg(icon_data)
|
|
PowerTurnTableModel:getInstance():Fire(PowerTurnTableModel.REQUEST_INFO,33501,v.sub_type)
|
|
PowerTurnTableModel:getInstance():Fire(PowerTurnTableModel.REQUEST_INFO,33502,v.sub_type)
|
|
elseif v.base_type == CustomActivityModel.CustomActBaseType.ACT_GUIDE then -- 指引
|
|
--if act_guide_first then
|
|
-- act_guide_first = false
|
|
-- KfActivityModel:getInstance():ResetActGuideCache()
|
|
--end
|
|
KfActivityModel:getInstance():SetActGuideCache(v)
|
|
end
|
|
end
|
|
if close_level <= RoleManager.Instance.mainRoleInfo.level then
|
|
self:UpdateActIconInfoActType()
|
|
end
|
|
end
|
|
|
|
--检测情况
|
|
function CustomActivityModel:checkAllOpen(base_type,sub_type)
|
|
if base_type == CustomActivityModel.CustomActBaseType.OPERATE_ACTIVITY then--主题活动
|
|
KfActivityModel:getInstance():CheckActIconBoolOpen(sub_type)
|
|
elseif base_type == CustomActivityModel.CustomActBaseType.POWER_TURNTABLE then--源能转盘
|
|
PowerTurnTableModel:getInstance():CheckPowerTurnTableIconBoolOpen(sub_type)
|
|
elseif base_type == CustomActivityModel.CustomActBaseType.MERCENARY_SUPPLY then--佣兵限购
|
|
MercenarySupplyModel:getInstance():CheckIconBoolOpen()
|
|
elseif base_type == CustomActivityModel.CustomActBaseType.GUILD_SPEED then--公会竞速
|
|
GuildSpeedModel:getInstance():CheckIconBoolOpen()
|
|
elseif base_type == CustomActivityModel.CustomActBaseType.ACTIVITY_ICON_DESC then--公会竞速
|
|
ActivityIconManager:getInstance():RefreshActivityIconCustomDescInfo(sub_type)
|
|
elseif base_type == CustomActivityModel.CustomActBaseType.LIMIT_GIFT or base_type == CustomActivityModel.CustomActBaseType.ZERO_GIFT then--限购礼包 0元礼包需要检查活图标开启
|
|
KfActivityModel:getInstance():CheckActIconBoolOpen(4)--礼包类型检查一下
|
|
elseif base_type == CustomActivityModel.CustomActBaseType.MOBILIZATION then
|
|
MobilizationModel:getInstance():Fire(MobilizationModel.REQUEST_INFO,33225,sub_type)
|
|
MobilizationModel:getInstance():CheckIconBoolOpen(sub_type)
|
|
elseif base_type == CustomActivityModel.CustomActBaseType.DAILY_RECHARGE then--每日累充
|
|
RechargeActivityModel:getInstance():CheckDailyRechargeMainIconOpen(sub_type)
|
|
elseif base_type == CustomActivityModel.CustomActBaseType.FORTUNE_CAT then--招财猫
|
|
FortuneCatModel:getInstance():CheckEventOpen(base_type,sub_type)
|
|
elseif base_type == CustomActivityModel.CustomActBaseType.ACT_GUIDE then -- 活动引导
|
|
print('=======Msh:CustomActivityModel.lua[440] ==666666666=====')
|
|
self:Fire(CustomActivityModel.UPDATE_ACTIVITY_INFO, base_type)
|
|
end
|
|
-- KfActivityModel:getInstance():CheckIconBoolOpen()--开服活动
|
|
end
|
|
|
|
--过期删除活动信息
|
|
function CustomActivityModel:clearActInfo(vo)
|
|
for k,v in pairs(vo.list) do
|
|
KfActivityModel:getInstance():ClearActRedDotInfo(v.base_type,v.sub_type)
|
|
if v.base_type == CustomActivityModel.CustomActBaseType.ZERO_GIFT then
|
|
--还没领完的0元礼包活动不删掉,这个时候数据不新,判断不了0元礼包状态,直接一个33101请求全部
|
|
self:Fire(CustomActivityModel.PROTO_CCMD_EVENT, 33101)
|
|
else
|
|
if self.act_list[v.base_type] then
|
|
self.act_list[v.base_type][v.sub_type] = nil
|
|
end
|
|
if self.act_list[v.base_type] and IsTableEmpty(self.act_list[v.base_type]) then
|
|
self.act_list[v.base_type] = nil
|
|
end
|
|
-- --清楚外部图标特殊
|
|
if self:ISSpacielIconDelete(v.base_type,v.sub_type) then
|
|
ActivityIconManager:getInstance():deleteIcon(self:ISSpacielIconDelete(v.base_type,v.sub_type),true)
|
|
end
|
|
end
|
|
self:checkAllOpen(v.base_type,v.sub_type)
|
|
end
|
|
end
|
|
|
|
function CustomActivityModel:ISSpacielIconDelete( base_type,sub_type )
|
|
return nil
|
|
end
|
|
|
|
--保存活动列表
|
|
function CustomActivityModel:setActToList(vo)
|
|
self.act_list[vo.base_type] = self.act_list[vo.base_type] or {}
|
|
self.act_list[vo.base_type][vo.sub_type] = vo
|
|
end
|
|
|
|
--获取活动信息[可用于判断活动是否存在]
|
|
function CustomActivityModel:getActList(base_type, sub_type)
|
|
if self.act_list[base_type] then
|
|
local sub_index = sub_type or self:getActMinSubType(base_type)
|
|
return self.act_list[base_type][sub_index]
|
|
end
|
|
end
|
|
|
|
--得到活动的条件信息
|
|
function CustomActivityModel:getActCondition( base_type, sub_type, name )
|
|
local act_list = self:getActList(base_type, sub_type)
|
|
if act_list and act_list.condition_list then
|
|
for k,v in ipairs(act_list.condition_list) do
|
|
if Trim(v[1]) == name then
|
|
return v[2]
|
|
end
|
|
end
|
|
end
|
|
return nil
|
|
end
|
|
|
|
--获取全部活信息
|
|
function CustomActivityModel:getAllActList()
|
|
return self.act_list
|
|
end
|
|
|
|
--获取一个主类型的所有活动信息
|
|
function CustomActivityModel:getAllActListByBaseType(base_type)
|
|
return self.act_list[base_type] or {}
|
|
end
|
|
|
|
--获取当前活动最新子类型[支持多开的活动,不能使用这个方法来取子类型,传入act_type会判断埋活动类型]
|
|
function CustomActivityModel:getActMinSubType(base_type,act_type)
|
|
if base_type and self.act_list[base_type] then
|
|
local sub_type_list = {}
|
|
for k,v in pairs(self.act_list[base_type]) do
|
|
table.insert(sub_type_list, v.sub_type)
|
|
end
|
|
local function sort_func(a, b)
|
|
return a < b
|
|
end
|
|
table.sort(sub_type_list, sort_func)
|
|
return sub_type_list[1] or 0
|
|
else
|
|
return 0
|
|
end
|
|
end
|
|
|
|
--获取活动类型[0不是活动]
|
|
function CustomActivityModel:getActType(base_type, sub_type)
|
|
local list = self:getActList(base_type, sub_type)
|
|
if list then
|
|
return list.act_type
|
|
else
|
|
--默认活动类型
|
|
for key,v in pairs(Config.ConfigActStatic.ActTypeToAct) do
|
|
for i,n in pairs(v) do
|
|
if base_type == n then
|
|
return key
|
|
end
|
|
end
|
|
end
|
|
return 0
|
|
end
|
|
end
|
|
|
|
--保存活动奖励状态列表
|
|
function CustomActivityModel:setActRewardList(vo)
|
|
local list = DeepCopy(vo)
|
|
list.bool_get = false --是否有领取[方便设置红点]
|
|
for k,v in pairs(list.reward_list) do
|
|
v.condition_list = ErlangParser:GetInstance():Parse(v.conditon)
|
|
v.reward_info = self:ResolveRewardFormal(v.form_type, v.reward)
|
|
v.bool_get = v.status == 1
|
|
if v.bool_get and list.base_type ~= CustomActivityModel.CustomActBaseType.RECHARGE_GIFT then
|
|
list.bool_get = true
|
|
end
|
|
end
|
|
if vo.base_type == CustomActivityModel.CustomActBaseType.REWARD_SHOW and
|
|
vo.sub_type == self:getActMinSubType(CustomActivityModel.CustomActBaseType.REWARD_SHOW) then
|
|
list = self:DealRewardShowRewardList( vo )
|
|
end
|
|
self.act_reward_list[vo.base_type] = self.act_reward_list[vo.base_type] or {}
|
|
self.act_reward_list[vo.base_type][vo.sub_type] = list
|
|
self:Fire(CustomActivityModel.UPDATE_ACTIVITY_INFO, vo.base_type, vo.sub_type)--更新活动信息
|
|
self:checkAllOpen(vo.base_type,vo.sub_type)
|
|
end
|
|
|
|
function CustomActivityModel:RefreshActSomeData( vo )
|
|
if self.act_reward_list and self.act_reward_list[vo.base_type] and self.act_reward_list[vo.base_type][vo.sub_type] then
|
|
for k,v in pairs(self.act_reward_list[vo.base_type][vo.sub_type].reward_list) do
|
|
if v.grade == vo.grade then
|
|
v.progress = vo.progress
|
|
v.status = vo.status
|
|
v.receive_times = vo.receive_times
|
|
break
|
|
end
|
|
end
|
|
-------------------------
|
|
self:Fire(CustomActivityModel.UPDATE_ACTIVITY_INFO, vo.base_type, vo.sub_type)--更新活动信息
|
|
self:checkAllOpen(vo.base_type,vo.sub_type)
|
|
end
|
|
end
|
|
|
|
-- 外部设置活动bool_get
|
|
function CustomActivityModel:SetActBoolGet(base_type,sub_type,bool)
|
|
if base_type == nil or sub_type == nil then return end
|
|
if not self.act_reward_list[base_type] or self.act_reward_list[base_type][sub_type] == nil then return end
|
|
self.act_reward_list[base_type][sub_type].bool_get = bool
|
|
end
|
|
|
|
--解析奖励格式[每个类型的格式都不同,有新的格式需要在这里添加]
|
|
function CustomActivityModel:ResolveRewardFormal(kind, reward)
|
|
local list = ErlangParser:GetInstance():Parse(reward)
|
|
local total_list = {}
|
|
for i,v in ipairs(list) do
|
|
local array = {}
|
|
if kind == 1 then --通用奖励格式[{类型,道具id,数量}]
|
|
array.goods_kind = tonumber(v[1])
|
|
array.goods_id = tonumber(v[2])
|
|
array.goods_count = tonumber(v[3])
|
|
elseif kind == 2 then --玩家等级阶段奖励格式[{等级,[{类型,道具id,数量}]
|
|
array.role_lv = tonumber(v[1])
|
|
array.goods_list = {}
|
|
for k,n in ipairs(v[2]) do
|
|
local info = {}
|
|
info.goods_kind = tonumber(n[1])
|
|
info.goods_id = tonumber(n[2])
|
|
info.goods_count = tonumber(n[3])
|
|
array.goods_list[k] = info
|
|
end
|
|
elseif kind == 3 then --随机奖励格式[{权值,[{类型,道具id,数量}]}]
|
|
array.weight = tonumber(v[1])
|
|
array.goods_list = {}
|
|
for k,n in ipairs(v[2]) do
|
|
local info = {}
|
|
info.goods_kind = tonumber(n[1])
|
|
info.goods_id = tonumber(n[2])
|
|
info.goods_count = tonumber(n[3])
|
|
array.goods_list[k] = info
|
|
end
|
|
elseif kind == 4 then --世界等级阶段格式[{世界等级,[{类型,道具id,数量}]
|
|
array.world_lv = tonumber(v[1])
|
|
array.goods_list = {}
|
|
for k,n in ipairs(v[2]) do
|
|
local info = {}
|
|
info.goods_kind = tonumber(n[1])
|
|
info.goods_id = tonumber(n[2])
|
|
info.goods_count = tonumber(n[3])
|
|
array.goods_list[k] = info
|
|
end
|
|
elseif kind == 5 then --性别奖励格式[{性别,[{类型,道具id,数量}]
|
|
array.sex = tonumber(v[1])
|
|
array.goods_list = {}
|
|
for k,n in ipairs(v[2]) do
|
|
local info = {}
|
|
info.goods_kind = tonumber(n[1])
|
|
info.goods_id = tonumber(n[2])
|
|
info.goods_count = tonumber(n[3])
|
|
array.goods_list[k] = info
|
|
end
|
|
elseif kind == 6 then --天数奖励格式[{天数,[{类型,道具id,数量}]
|
|
array.day_num = tonumber(v[1])
|
|
array.goods_list = {}
|
|
for k,n in ipairs(v[2]) do
|
|
local info = {}
|
|
info.goods_kind = tonumber(n[1])
|
|
info.goods_id = tonumber(n[2])
|
|
info.goods_count = tonumber(n[3])
|
|
array.goods_list[k] = info
|
|
end
|
|
end
|
|
total_list[i] = array
|
|
end
|
|
return total_list
|
|
end
|
|
|
|
--获取现阶段的奖励列表[如果要所有档次填0]
|
|
function CustomActivityModel:getNowActRewardGoodsList(grade, base_type, sub_type)
|
|
sub_type = sub_type or self:getActMinSubType(base_type)
|
|
local act_reward_list = self:getOneActRewardList(base_type, sub_type)
|
|
local real_goods_list = {}
|
|
if act_reward_list then
|
|
for k,v in pairs(act_reward_list.reward_list) do
|
|
if grade == v.grade or grade == 0 then
|
|
local form_type = v.form_type
|
|
local reward_info = v.reward_info
|
|
if form_type == 1 then --通用奖励格式
|
|
real_goods_list = reward_info
|
|
elseif form_type == 2 then --玩家等级阶段奖励格式
|
|
for k,v in pairs(reward_info) do
|
|
if RoleManager.Instance.mainRoleInfo.level == v.role_lv then
|
|
real_goods_list = v.goods_list
|
|
break
|
|
end
|
|
end
|
|
elseif form_type == 3 then --随机奖励格式[这里真的是随机一个key值]
|
|
local rand_num = math.random(1, TableSize(reward_info))
|
|
real_goods_list = reward_info[rand_num].goods_list
|
|
elseif form_type == 4 then --世界等级阶段格式
|
|
local act_list = self:getActList(base_type, sub_type)
|
|
if act_list and act_list.wlv then
|
|
local function sort_func(a, b)
|
|
return a.world_lv < b.world_lv
|
|
end
|
|
table.sort(reward_info, sort_func)
|
|
for k,v in pairs(reward_info) do
|
|
if act_list.wlv >= v.world_lv then
|
|
real_goods_list = v.goods_list
|
|
elseif act_list.wlv < v.world_lv then
|
|
break
|
|
end
|
|
end
|
|
end
|
|
elseif form_type == 5 then --性别奖励格式
|
|
for k,v in pairs(reward_info) do
|
|
if RoleManager.Instance.mainRoleInfo.sex == v.sex then
|
|
real_goods_list = v.goods_list
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
return real_goods_list
|
|
end
|
|
|
|
--活动活动奖励状态列表 获取到的是33104协议的数据
|
|
function CustomActivityModel:getOneActRewardList(base_type, sub_type)
|
|
if base_type == nil then return end
|
|
sub_type = sub_type or self:getActMinSubType(base_type)
|
|
if sub_type == nil then return end
|
|
if self.act_reward_list[base_type] then
|
|
return self.act_reward_list[base_type][sub_type]
|
|
end
|
|
end
|
|
|
|
--处理活动领取成功[errcode返回的只有为1,所以不用考虑]
|
|
function CustomActivityModel:handleSuccessGetReward(vo)
|
|
--特殊处理提示
|
|
if vo.base_type == CustomActivityModel.CustomActBaseType.DAILY_RECHARGE then
|
|
Message.show("领取成功","success")
|
|
elseif vo.base_type == CustomActivityModel.CustomActBaseType.CONTINUE_RECHARGE then--连充豪礼
|
|
KfActivityModel:getInstance():Fire(KfActivityModel.REQUEST_INFO,33145,vo.sub_type)
|
|
elseif vo.base_type == CustomActivityModel.CustomActBaseType.COLLECT_ZI then
|
|
Message.show("兑换成功","success")
|
|
elseif vo.base_type == CustomActivityModel.CustomActBaseType.KFACTIVITY_LIMIT_SHOP then--限购商城
|
|
Message.show("购买成功","success")
|
|
else
|
|
Message.show("领取成功","success")
|
|
end
|
|
if not self:NoshowAwardBaseType(vo.base_type) then
|
|
self:ShowAward(vo)
|
|
end
|
|
self:Fire(CustomActivityModel.PROTO_CCMD_EVENT, 33104, vo.base_type, vo.sub_type)
|
|
end
|
|
|
|
function CustomActivityModel:NoshowAwardBaseType( base_type )
|
|
if base_type == CustomActivityModel.CustomActBaseType.KFACTIVITY_LIMIT_SHOP
|
|
or base_type == CustomActivityModel.CustomActBaseType.KF_GROUP_BUYING
|
|
or base_type == CustomActivityModel.CustomActBaseType.COLLECT_ZI
|
|
or base_type == CustomActivityModel.CustomActBaseType.HOPE_GIFT
|
|
or base_type == CustomActivityModel.CustomActBaseType.FOSTER_STAGE
|
|
or base_type == CustomActivityModel.CustomActBaseType.ACC_CONSUME
|
|
then
|
|
return true
|
|
end
|
|
return false
|
|
end
|
|
|
|
--展示奖励获得
|
|
function CustomActivityModel:ShowAward( vo )
|
|
local award_data = CustomActivityModel:getInstance():getOneActRewardList(vo.base_type,vo.sub_type)
|
|
if award_data and award_data.reward_list then
|
|
local award_info = nil
|
|
for i,v in ipairs(award_data.reward_list) do
|
|
if v.grade == vo.grade then
|
|
local award = v.reward_info
|
|
if #award > 0 then
|
|
local new_award_list = {}
|
|
for n,l in ipairs(award) do
|
|
new_award_list[#new_award_list + 1] = {l.goods_kind, l.goods_id, l.goods_count}
|
|
end
|
|
GiftModel:getInstance():Fire(GiftModel.OPEN_SHOW_ACT_GOODS_VIEW, new_award_list)
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
-- 先缓存飞入的物品[使用时务必要重置一下]
|
|
function CustomActivityModel:SetFlyInGoodsCache(goods_list)
|
|
self.fly_in_goods_cache = {}
|
|
if goods_list and next(goods_list) then
|
|
for k,vo in pairs(DeepCopy(goods_list)) do
|
|
local goodsVo = GoodsModel:getInstance().bag_goods_dic[vo.goods_id]
|
|
if goodsVo then
|
|
if vo.goods_num > goodsVo.goods_num then
|
|
vo.is_fly_show = true
|
|
end
|
|
else
|
|
vo.is_fly_show = true
|
|
end
|
|
table.insert(self.fly_in_goods_cache, vo)
|
|
end
|
|
end
|
|
end
|
|
|
|
--展示缓存的飞入物品
|
|
function CustomActivityModel:ShowFlyInGoods()
|
|
if self.fly_in_goods_cache and next(self.fly_in_goods_cache) then
|
|
local fly_list = {}
|
|
for k,vo in pairs(self.fly_in_goods_cache) do
|
|
ItemUseModel:getInstance():HandleUseItem(vo, true)
|
|
if vo.is_fly_show then
|
|
table.insert(fly_list, vo.type_id)
|
|
end
|
|
end
|
|
MainUIModel:getInstance():PlayGoodsFlyList(fly_list)
|
|
GlobalEventSystem:Fire(EventName.CHECK_SHOW_ITEM_USE)
|
|
end
|
|
self.fly_in_goods_cache = {}
|
|
end
|
|
|
|
--添加传闻缓存
|
|
function CustomActivityModel:AddCacheChuanWen(scmd, type)
|
|
table.insert(self.cache_chuanwen, {scmd, type})
|
|
end
|
|
|
|
--播放缓存的传闻
|
|
function CustomActivityModel:PlayCacheChuanwenShow()
|
|
for i, v in ipairs(self.cache_chuanwen) do
|
|
GlobalEventSystem:Fire(EventName.RECEIVE_NEW_CHUANWEN, v[1], v[2])
|
|
end
|
|
self.cache_chuanwen = {}
|
|
end
|
|
|
|
-- 缓存弹珠机的抽奖验证数据 33179
|
|
function CustomActivityModel:SetPelletEventValidationData(vo)
|
|
self.pellet_validation_data = vo
|
|
end
|
|
function CustomActivityModel:GetPelletEventValidationData( )
|
|
return self.pellet_validation_data
|
|
end
|
|
|
|
--是不是限时物品
|
|
function CustomActivityModel:GetGoodsLimit( base_type,sub_type,goods_id,grade )
|
|
if not base_type then
|
|
print("CustomActivityModel:GetGoodsLimit 没有填base_type")
|
|
return false
|
|
end
|
|
if not sub_type then
|
|
print("CustomActivityModel:GetGoodsLimit 没有填sub_type")
|
|
return false
|
|
end
|
|
if not grade then
|
|
print("CustomActivityModel:GetGoodsLimit 没有填grade")
|
|
return false
|
|
end
|
|
local expire_time = false
|
|
local list = self.limit_reward_list[base_type.."@"..sub_type]
|
|
local key = grade.."@"..goods_id
|
|
if list and list[key] then
|
|
expire_time = list[key]
|
|
end
|
|
return expire_time
|
|
end
|
|
|
|
--创建图标配置(偷懒生气 再也不用在ConfigFunctionIcon创建一堆活动图标了)
|
|
--self:CreateIconCfg({vo,Config.Moduleopenlv["331@35"].lv,5,"icon_rightTop_33135","VIP特惠礼包"})--创建一种资源的图标
|
|
--self:CreateIconCfg({vo,Config.Moduleopenlv["331@35"].lv,6,nil,"VIP特惠礼包"})--创建多种资源的图标(资源看下面的创建方法构建图标资源名)
|
|
function CustomActivityModel:CreateIconCfg( icon_data )
|
|
if not icon_data or not icon_data.vo then return end
|
|
local v = icon_data.vo
|
|
local icon_res_repath = icon_data.icon_res_repath
|
|
local name = icon_data.name
|
|
|
|
local is_find = false
|
|
local icon_sub_type_base = v.base_type*1000
|
|
if v.sub_type >= 10001 then
|
|
icon_sub_type_base = v.base_type*100000
|
|
end
|
|
local open_day = ServerTimeModel:getInstance():GetOpenServerDay()
|
|
for kkk,vvv in ipairs(v.condition_list) do
|
|
if vvv[1] == "icon" then
|
|
if v.base_type == CustomActivityModel.CustomActBaseType.OPERATE_ACTIVITY then
|
|
if v.act_type == CustomActivityModel.CustomIconActType.KfAct then--开服活动前7天读不同的图标
|
|
if open_day <= 8 then
|
|
icon_res_repath = string.format("icon_99_%s",v.base_type*1000 + open_day + 100)
|
|
else
|
|
icon_res_repath = string.format("icon_99_%s",tonumber(vvv[2]) + v.base_type*1000)
|
|
end
|
|
else
|
|
icon_res_repath = string.format("icon_99_%s",tonumber(vvv[2]) + v.base_type*1000)
|
|
end
|
|
else
|
|
icon_res_repath = string.format("icon_331_%s",v.base_type)
|
|
end
|
|
end
|
|
end
|
|
for kk,vv in pairs(ActivityIconManager:getInstance().icon_cfg_new_list) do
|
|
local icon_type = icon_sub_type_base + v.sub_type
|
|
if vv.icon_type == icon_type and icon_res_repath then
|
|
local server_data = CustomActivityModel:getInstance():getActList(v.base_type, v.sub_type)
|
|
vv.icon_name = icon_res_repath
|
|
is_find = true
|
|
break
|
|
end
|
|
end
|
|
if not is_find then
|
|
local icon_type = icon_sub_type_base + v.sub_type
|
|
local icon_cfg = {name=name, icon_type = icon_type, module_id = icon_data.module_id, sub_id = icon_data.sub_id, sub_location = icon_data.sub_location or 3, pos_index = icon_data.pos_index or 99999, model_id = 331, icon_name = icon_res_repath, effect_name = icon_data.effect_name or "ui_bianqiang", not_delete = false, count_down_time = 0,act_base_type=true}
|
|
ActivityIconManager:getInstance().icon_cfg_new_list[icon_type] = icon_cfg
|
|
if not ActivityIconManager:getInstance().act_cfg[v.base_type] then
|
|
ActivityIconManager:getInstance().act_cfg[v.base_type] = {}
|
|
end
|
|
ActivityIconManager:getInstance().act_cfg[v.base_type][v.sub_type] = icon_cfg
|
|
end
|
|
end
|
|
|
|
--购买弹窗
|
|
-- data = {
|
|
-- gold_type,--货币类型
|
|
-- cost_price,--消耗金额
|
|
-- ok_callback,--成功
|
|
-- toggle_function,--多选
|
|
-- togglePriceStr,--提示语
|
|
-- use_function,--最终调用
|
|
-- diamond_nonuse,--红钻不足时不使用彩钻
|
|
-- }
|
|
function CustomActivityModel:BuyTips( buy_tip_data )
|
|
if not buy_tip_data or not buy_tip_data.use_function then
|
|
print("huangcong:购买数据不正确")
|
|
return
|
|
end
|
|
local jin = RoleManager.Instance.mainRoleInfo.jin
|
|
local jinLock = RoleManager.Instance.mainRoleInfo.jinLock
|
|
|
|
if buy_tip_data.cost_price <= 0 then--免费就直接启动
|
|
buy_tip_data.ok_callback()
|
|
return
|
|
end
|
|
--这段是因为商城那里彩钻红钻不需要二次提示了 所以加的跳过流程 后来有人需要就看shopbuyview怎么搞的
|
|
if buy_tip_data.skip_tip and
|
|
((buy_tip_data.gold_type == 1 and buy_tip_data.cost_price <= jin)
|
|
or (buy_tip_data.gold_type == 2 and buy_tip_data.cost_price <= jinLock)) then
|
|
buy_tip_data.ok_callback()
|
|
return
|
|
end
|
|
if buy_tip_data.gold_type ~= 1 and buy_tip_data.gold_type ~= 2 then
|
|
buy_tip_data.ok_callback()
|
|
return
|
|
end
|
|
|
|
local function recharge_call_back( ... )--充值
|
|
local args = {...}
|
|
local use_lockjin = args[1]
|
|
local ok = function ( )
|
|
if buy_tip_data.recharge_open_call_back then
|
|
buy_tip_data.recharge_open_call_back()
|
|
end
|
|
end
|
|
-- 关闭道具tips
|
|
UIToolTipMgr:getInstance():CloseGoodsTips()
|
|
local qc_data = {
|
|
price = buy_tip_data.cost_price - (use_lockjin and jinLock or 0),
|
|
close_callback = ok,
|
|
qc_type = buy_tip_data.qc_type or 0,
|
|
}
|
|
GlobalEventSystem:Fire(EventName.OPEN_RECHARGE_TIP_VIEW, true, qc_data)
|
|
end
|
|
|
|
local function invest_call_back( ... )--前往投资
|
|
-- 关闭道具tips
|
|
UIToolTipMgr:getInstance():CloseGoodsTips()
|
|
OpenFun.Open(420,1)
|
|
if buy_tip_data.invest_call_back then
|
|
buy_tip_data.invest_call_back()
|
|
end
|
|
end
|
|
|
|
--不足话先走这里的逻辑
|
|
if buy_tip_data.gold_type == 1 then--彩钻
|
|
if jin < buy_tip_data.cost_price then--彩钻不足
|
|
recharge_call_back()
|
|
return
|
|
end
|
|
elseif buy_tip_data.gold_type == 2 then--红钻
|
|
if jinLock < buy_tip_data.cost_price then--红钻不足用彩钻补齐
|
|
local ok = function ( )
|
|
if jinLock + jin < buy_tip_data.cost_price then
|
|
recharge_call_back(true)
|
|
else
|
|
buy_tip_data.ok_callback()
|
|
end
|
|
end
|
|
local jin_type_img = WordManager:GetMoneyFaceStr( 1 )
|
|
local jinLock_type_img = WordManager:GetMoneyFaceStr( 2 )
|
|
local jin_type_name = GoodsModel:getInstance():getGoodsName(100000, false)
|
|
local jinLock_type_name = GoodsModel:getInstance():getGoodsName(100001, false)
|
|
if buy_tip_data.diamond_nonuse then
|
|
local str = string.format("您的<color=#ff203a>%s不足</color>,还差<color=#ff203a> %s%s </color>,是否前往投资?",jinLock_type_name,jinLock_type_img,buy_tip_data.cost_price - jinLock)
|
|
Alert.show(str, Alert.Type.Two, invest_call_back, nil, "前往投资", "取消")
|
|
else
|
|
local str = string.format("您的<color=#ff203a>%s不足</color>,是否使用<color=#fdffc2> %s%s </color>补全?",jinLock_type_name,jin_type_img,buy_tip_data.cost_price - jinLock)
|
|
if VipModel:getInstance():HasBoughtAllInvestmentTypes() then -- 已经购买了全部的投资类型,则不提示前往投资
|
|
Alert.show(str, Alert.Type.Two, ok, nil, "彩钻补全", "取消")
|
|
else
|
|
Alert.show(str, Alert.Type.Two, ok, invest_call_back, "彩钻补全", "前往投资")
|
|
end
|
|
end
|
|
return
|
|
end
|
|
end
|
|
|
|
local function callFuncSum( ... )--方法合集
|
|
buy_tip_data.ok_callback()
|
|
end
|
|
|
|
local asset, source = WordManager:GetCommonMoneyIcon(buy_tip_data.gold_type)
|
|
local toggle_tip_data = {
|
|
gold_ab_res = asset,
|
|
gold_res = source,
|
|
price = buy_tip_data.cost_price,
|
|
insufficientText = buy_tip_data.insufficientText or "",
|
|
priceText = buy_tip_data.togglePriceStr,--string.format("<color=#fdffc2>%s</color> 购买商品",self.limit_cost)
|
|
titleText = "提示",
|
|
ok_callback = callFuncSum,
|
|
no_need_toggle = buy_tip_data.no_need_toggle,
|
|
toggle_function = buy_tip_data.toggle_function,
|
|
is_complex_ok_callback = true,
|
|
}
|
|
buy_tip_data.use_function(toggle_tip_data,callFuncSum)
|
|
end
|
|
|
|
function CustomActivityModel:SetGoodsCanFly( bool )
|
|
self.can_fly_goods = bool
|
|
end
|
|
|
|
function CustomActivityModel:GetGoodsCanFly( )
|
|
return self.can_fly_goods
|
|
end
|
|
|
|
--获得活动展示配置
|
|
function CustomActivityModel:GetActModelConShowCfg( base_type,fashion_type,model_res_id )
|
|
local result = false
|
|
if CustomActivityConst[base_type] then
|
|
result = CustomActivityConst[base_type][0] or result
|
|
if CustomActivityConst[base_type][fashion_type] then
|
|
result = CustomActivityConst[base_type][fashion_type][0] or result
|
|
if CustomActivityConst[base_type][fashion_type][model_res_id] then
|
|
result = CustomActivityConst[base_type][fashion_type][model_res_id] or result
|
|
end
|
|
end
|
|
end
|
|
return DeepCopy(result)
|
|
end
|
|
|
|
function CustomActivityModel:DealRewardShowRewardList( vo )
|
|
local list = DeepCopy(vo)
|
|
--list.bool_get = false --是否有领取[方便设置红点]
|
|
for k,v in pairs(list.reward_list) do
|
|
v.condition_list = ErlangParser:GetInstance():Parse(v.conditon)
|
|
for i, vv in ipairs(v.condition_list) do
|
|
if vv[1] == "jump_link" then
|
|
v.jump_link = {}
|
|
v.jump_link[1] = vv[2][1]
|
|
v.jump_link[2] = vv[2][2]
|
|
elseif vv[1] == "role_lv" then
|
|
v.role_lv = vv[2]
|
|
elseif vv[1] == "tag" then
|
|
v.tag = vv[2]
|
|
end
|
|
end
|
|
v.reward_info = ErlangParser:GetInstance():Parse(v.reward)
|
|
if v.reward_info[1][1] == "show_res" then
|
|
v.show_res = {}
|
|
v.show_res[1] = v.reward_info[1][2]
|
|
v.show_res[2] = v.reward_info[1][3]
|
|
end
|
|
--v.bool_get = v.status == 1
|
|
-- if v.bool_get and list.base_type ~= CustomActivityModel.CustomActBaseType.RECHARGE_GIFT then
|
|
-- list.bool_get = true
|
|
-- end
|
|
end
|
|
-- 按grade参数从小到大排序
|
|
local sort_func = function ( a, b )
|
|
return a.grade < b.grade
|
|
end
|
|
table.sort(list.reward_list, sort_func)
|
|
return list
|
|
end
|
|
|
|
--设置活动通用红点奖励信息
|
|
function CustomActivityModel:SetActComAwardInfo( scmd )
|
|
if not self.act_com_red_award_info[scmd.base_type] then
|
|
self.act_com_red_award_info[scmd.base_type] = {}
|
|
end
|
|
self.act_com_red_award_info[scmd.base_type][scmd.sub_type] = scmd
|
|
self:Fire(CustomActivityModel.UPDATE_ACTIVITY_RED_AWARD_INFO,scmd.base_type,scmd.sub_type)
|
|
end
|
|
|
|
--获得活动通用红点奖励信息
|
|
function CustomActivityModel:GetActComAwardInfo( base_type,sub_type )
|
|
if not base_type or not sub_type or not self.act_com_red_award_info[base_type] then return nil end
|
|
return self.act_com_red_award_info[base_type][sub_type] or nil
|
|
end
|
|
|
|
|
|
--更新图标活动在哪个图标内的信息信息
|
|
function CustomActivityModel:UpdateActIconInfoActType( )
|
|
local act_base_type_list = {CustomActivityModel.CustomActBaseType.LIMIT_GIFT,CustomActivityModel.CustomActBaseType.ZERO_GIFT}
|
|
for i,base_type in ipairs(act_base_type_list) do
|
|
local act_list = self:getAllActListByBaseType(base_type) or {}
|
|
for k,v in pairs(act_list) do
|
|
if v.act_type == CustomActivityModel.CustomIconActType.GiftAct then--关闭等级小于人物等级则放到3精彩活动里面去
|
|
v.act_type = CustomActivityModel.CustomIconActType.JcAct
|
|
end
|
|
end
|
|
end
|
|
end
|