源战役客户端
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 
 

1101 linhas
48 KiB

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