|
CompetingListModel = CompetingListModel or BaseClass(BaseVo, true)
|
|
local CompetingListModel = CompetingListModel
|
|
|
|
CompetingListModel.REQUEST_INFO = "CompetingListModel.REQUEST_INFO"
|
|
CompetingListModel.OPEN_COMPETING_LIST_VIEW = "CompetingListModel.OPEN_COMPETING_LIST_VIEW"--打开主界面
|
|
CompetingListModel.UPDATE_COMPETING_LIST_VIEW = "CompetingListModel.UPDATE_COMPETING_LIST_VIEW"--更新主界面
|
|
CompetingListModel.REQUEST_INFO = "CompetingListModel.REQUEST_INFO"--请求协议
|
|
CompetingListModel.OPEN_COMPETING_LIST_RESULT_VIEW = "CompetingListModel.OPEN_COMPETING_LIST_RESULT_VIEW"--打开结算界面
|
|
CompetingListModel.CLOSE_LUCK_DRAW_RESULT_VIEW = "CompetingListModel.CLOSE_LUCK_DRAW_RESULT_VIEW"--关闭结算界面
|
|
CompetingListModel.UPDATE_HUNT_RECORD = "CompetingListModel.UPDATE_HUNT_RECORD"--更新记录数据
|
|
CompetingListModel.OPEN_COMPETING_LIST_TIP_VIEW = "CompetingListModel.OPEN_COMPETING_LIST_TIP_VIEW"--打开竞榜提示界面
|
|
CompetingListModel.UPDATE_BOX_AWARD = "CompetingListModel.UPDATE_BOX_AWARD"--更新宝箱领取信息
|
|
CompetingListModel.UPDATE_RANK_INFO = "CompetingListModel.UPDATE_RANK_INFO"--更新排名
|
|
CompetingListModel.UPDATE_FONTANI_VIEW = "CompetingListModel.UPDATE_FONTANI_VIEW"--更新许愿池界面
|
|
CompetingListModel.OPEN_FONTANI_VIEW = "CompetingListModel.OPEN_FONTANI_VIEW"--打开许愿池界面
|
|
CompetingListModel.OPEN_COMPETING_LIST_AWARD_SHOW_VIEW = "CompetingListModel.OPEN_COMPETING_LIST_AWARD_SHOW_VIEW"--奖池道具展示界面
|
|
|
|
function CompetingListModel:__init()
|
|
CompetingListModel.Instance = self
|
|
self:Reset()
|
|
end
|
|
|
|
function CompetingListModel:Reset()
|
|
self.view_info = {}--界面信息
|
|
self.award_cfg = {}--展示奖励配置
|
|
self.fontani_award_cfg = {}--许愿池展示奖励配置
|
|
self.box_award_cfg = {}--宝箱奖励配置
|
|
self.rank_award_cfg = {}--排行奖励配置
|
|
self.rank_score_cfg = {}--排行积分信息配置
|
|
self.record = {}--记录数据
|
|
self.next_show_state_list = {} --下次是否打开相关功能的提示列表
|
|
self.const_cfg = {}--常量配置
|
|
self.result_info = {}--结算界面信息
|
|
self.is_open_view_list = {}--打开过的界面列表
|
|
self.cur_view_type_list = {}--当前界面类型列表
|
|
self.competing_buy_toggle = {}--竞榜购买toggle
|
|
self.red_info_list = {}--红点信息列表
|
|
self.is_open_view = false
|
|
self:InitRankScoreCFG()
|
|
self:InitBoxAwardCFG()
|
|
self:InitRankCFG()
|
|
self:InitTvCFG()
|
|
self:InitConstCfg()
|
|
end
|
|
|
|
function CompetingListModel:getInstance()
|
|
if CompetingListModel.Instance == nil then
|
|
CompetingListModel.Instance = CompetingListModel.New()
|
|
end
|
|
return CompetingListModel.Instance
|
|
end
|
|
|
|
--检查界面是否打开过
|
|
function CompetingListModel:CheckViewIsOpened( base_type )
|
|
return self.is_open_view_list[base_type]
|
|
end
|
|
|
|
--设置界面是否打开过
|
|
function CompetingListModel:SetViewIsOpened( base_type )
|
|
self.is_open_view_list[base_type] = base_type
|
|
end
|
|
|
|
--检查界面奖励展示类型
|
|
function CompetingListModel:GetCurViewType( base_type )
|
|
return self.cur_view_type_list[base_type]
|
|
end
|
|
|
|
--设置界面奖励展示类型
|
|
function CompetingListModel:SetCurViewType( base_type,type )
|
|
self.cur_view_type_list[base_type] = type
|
|
end
|
|
|
|
--彩钻购买提示
|
|
function CompetingListModel:CheckIsNeedToShowView(tips_type)
|
|
local show = self.next_show_state_list[tips_type]
|
|
if show == nil then
|
|
show = true
|
|
end
|
|
return show
|
|
end
|
|
|
|
--初始化竞榜界面显示配置
|
|
function CompetingListModel:InitComptingIconCfg( )
|
|
if not self.view_cfg then
|
|
self.view_cfg = {}
|
|
self:InitViewCfg()
|
|
end
|
|
end
|
|
|
|
--界面显示配置初始化
|
|
function CompetingListModel:InitViewCfg( )
|
|
local data = DeepCopy(Config.Raceranktime)
|
|
local openDay = ServerTimeModel:getInstance():GetOpenServerDay()
|
|
for k,v in pairs(data) do
|
|
v.condition = stringtotable(v.condition)
|
|
v.open_day = stringtotable(v.open_day)
|
|
v.name = Trim(v.name)
|
|
if tonumber(v.open_day[1]) <= openDay and tonumber(v.open_day[2]) >= openDay then--在开服天数区间范围内
|
|
self.view_cfg[v.act_id] = v
|
|
if v.type == 1 then
|
|
local icon_cfg = {name=v.name, icon_type = 33300000 + v.act_id, sub_location = 3, pos_index = 31, module_id = 333, sub_id = nil, open_lv = v.lv, icon_name = "icon_rightTop_3001" or Trim(v.icon_res), effect_name = "effect_tubiao_001", not_delete = false, count_down_time = 0,act_base_type=true}
|
|
ActivityIconManager:getInstance().icon_cfg_new_list[icon_cfg.icon_type] = icon_cfg
|
|
elseif v.type == 2 then
|
|
local icon_cfg = {name=v.name, icon_type = 1033300000 + v.act_id, sub_location = 3, pos_index = 31, module_id = 333, open_lv = v.lv, icon_name = Trim(v.icon_res), effect_name = "effect_tubiao_001", not_delete = false, count_down_time = 0,act_base_type=true}
|
|
ActivityIconManager:getInstance().icon_cfg_new_list[icon_cfg.icon_type] = icon_cfg
|
|
end
|
|
end
|
|
end
|
|
GlobalEventSystem:Fire(ActivityIconManager.REFRESH_ICON, true)
|
|
end
|
|
|
|
--设置常量配置
|
|
function CompetingListModel:InitConstCfg( )
|
|
for k,v in pairs(Config.Racerankconstant) do
|
|
local key = Trim(v.key)
|
|
self.const_cfg[key] = v
|
|
end
|
|
if self.const_cfg["rock_cost_1"] then
|
|
self.one_cost_data = stringtotable(self.const_cfg["rock_cost_1"].value)
|
|
end
|
|
if self.const_cfg["rock_cost_10"] then
|
|
self.ten_cost_data = stringtotable(self.const_cfg["rock_cost_10"].value)
|
|
end
|
|
|
|
self.one_score = 0
|
|
if self.const_cfg["rock_score_1"] then
|
|
self.one_score = self.const_cfg["rock_score_1"].value
|
|
end
|
|
|
|
if self.const_cfg["wish_cost_rune"] then--符文消耗道具
|
|
self.wish_cost_rune = self.const_cfg["wish_cost_rune"].value
|
|
end
|
|
|
|
if self.const_cfg["wish_cost_coin"] then--符文消耗道具
|
|
self.wish_cost_coin = self.const_cfg["wish_cost_coin"].value
|
|
end
|
|
|
|
if self.const_cfg["wish_score_rune"] then--符文许愿获得积分
|
|
self.wish_score_rune = self.const_cfg["wish_score_rune"].value
|
|
end
|
|
|
|
if self.const_cfg["wish_score_coin"] then--金币许愿获得积分
|
|
self.wish_score_coin = self.const_cfg["wish_score_coin"].value
|
|
end
|
|
|
|
if self.const_cfg["discount_opday"] then--开服x天后进行打折
|
|
self.discount_opday = self.const_cfg["discount_opday"].value
|
|
end
|
|
|
|
if self.const_cfg["discount_rate"] then--开服x天后进行打折
|
|
self.discount_rate = stringtotable(self.const_cfg["discount_rate"].value)
|
|
end
|
|
|
|
if self.const_cfg["discount_times"] then--每期活动打折最大次数
|
|
self.discount_times = self.const_cfg["discount_times"].value
|
|
end
|
|
|
|
local one_data = self.one_cost_data[1]
|
|
local ten_data = self.ten_cost_data[1]
|
|
if not one_data or not ten_data then return end
|
|
self.cost_id = one_data[2]
|
|
self.one_cost = one_data[3]
|
|
self.ten_cost = ten_data[3]
|
|
|
|
self.discount_cfg = {}--打折配置
|
|
local cfg = DeepCopy(Config.Racerankdiscount)
|
|
for i,v in ipairs(cfg) do
|
|
if v.is_show == 1 then
|
|
local count = #self.discount_cfg + 1
|
|
self.discount_cfg[count] = v
|
|
if v.cost_list then
|
|
local goods_list = stringtotable(v.cost_list)
|
|
if goods_list and goods_list[1] then
|
|
self.discount_cfg[count].discount = goods_list[1][3]
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
--通过subtype得到右边奖励数据
|
|
function CompetingListModel:GetRankAwardCfg( base_type,stage )
|
|
if self.rank_award_cfg[base_type] and self.rank_award_cfg[base_type][stage] then
|
|
return self.rank_award_cfg[base_type][stage]
|
|
end
|
|
return nil
|
|
end
|
|
|
|
--设置展示排行榜奖励配置
|
|
function CompetingListModel:InitRankCFG( )
|
|
local data = DeepCopy(Config.Racerankrankaward)
|
|
for k,v in pairs(data) do
|
|
if not self.rank_award_cfg[v.act_id] then
|
|
self.rank_award_cfg[v.act_id] = {}
|
|
end
|
|
v.award = stringtotable(v.award)
|
|
if not self.rank_award_cfg[v.act_id][v.stage] then
|
|
self.rank_award_cfg[v.act_id][v.stage] = {}
|
|
end
|
|
self.rank_award_cfg[v.act_id][v.stage][v.min_rank] = v
|
|
end
|
|
end
|
|
|
|
--通过base_type得到右边奖励数据
|
|
function CompetingListModel:GetRankScoreCfg( base_type )
|
|
if self.rank_score_cfg[base_type] then
|
|
return self.rank_score_cfg[base_type]
|
|
end
|
|
return nil
|
|
end
|
|
|
|
--设置展示排行榜积分配置
|
|
function CompetingListModel:InitRankScoreCFG( )
|
|
local data = DeepCopy(Config.Racerankrequirement)
|
|
for k,v in pairs(data) do
|
|
if not self.rank_score_cfg[v.act_id] then
|
|
self.rank_score_cfg[v.act_id] = {}
|
|
end
|
|
|
|
self.rank_score_cfg[v.act_id][v.ranking_lower] = v
|
|
end
|
|
|
|
local min = 0
|
|
local max = 0
|
|
for k,v in pairs(self.rank_score_cfg) do
|
|
for kk,vv in pairs(v) do
|
|
if type(vv) == "table" and vv.ranking_upper and vv.ranking_lower then
|
|
min = vv.ranking_upper
|
|
max = vv.ranking_lower
|
|
if max > min then
|
|
for i=min,max do
|
|
if not v[i] then
|
|
v[i] = vv
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
--通过subtype得到右边奖励数据
|
|
function CompetingListModel:GetAwardCfg( base_type,stage )
|
|
if self.award_cfg[base_type] and self.award_cfg[base_type][stage] then
|
|
return self.award_cfg[base_type][stage]
|
|
end
|
|
return nil
|
|
end
|
|
|
|
--设置展示奖池奖励配置
|
|
function CompetingListModel:InitTvCFG( )
|
|
local data = DeepCopy(Config.Racerankaward)
|
|
for k,v in pairs(data) do
|
|
v.award = stringtotable(v.award)
|
|
if v.type == 0 then
|
|
if not self.award_cfg[v.act_id] then
|
|
self.award_cfg[v.act_id] = {}
|
|
end
|
|
if not self.award_cfg[v.act_id][v.stage] then
|
|
self.award_cfg[v.act_id][v.stage] = {}
|
|
end
|
|
if v.award[1] then
|
|
self.award_cfg[v.act_id][v.stage][v.award_id] = v.award[1]
|
|
end
|
|
else
|
|
if not self.fontani_award_cfg[v.act_id] then
|
|
self.fontani_award_cfg[v.act_id] = {}
|
|
end
|
|
if not self.fontani_award_cfg[v.act_id][v.type] then
|
|
self.fontani_award_cfg[v.act_id][v.type] = {}
|
|
end
|
|
if not self.fontani_award_cfg[v.act_id][v.type][v.stage] then
|
|
self.fontani_award_cfg[v.act_id][v.type][v.stage] = {}
|
|
end
|
|
if v.award[1] then
|
|
self.fontani_award_cfg[v.act_id][v.type][v.stage][v.award_id] = v.award[1]
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
--获得宝箱奖励配置 通过类型and stage
|
|
function CompetingListModel:GetBoxAwardCFGByType( base_type,stage )
|
|
if self.box_award_cfg[base_type] and self.box_award_cfg[base_type][stage] then
|
|
return self.box_award_cfg[base_type][stage]
|
|
end
|
|
return nil
|
|
end
|
|
|
|
--初始化宝箱奖励配置
|
|
function CompetingListModel:InitBoxAwardCFG( )
|
|
local data = DeepCopy(Config.Raceranktimesaward)
|
|
for k,v in pairs(data) do
|
|
if not self.box_award_cfg[v.act_id] then
|
|
self.box_award_cfg[v.act_id] = {}
|
|
end
|
|
v.award = stringtotable(v.award)
|
|
if not self.box_award_cfg[v.act_id][v.stage] then
|
|
self.box_award_cfg[v.act_id][v.stage] = {}
|
|
end
|
|
self.box_award_cfg[v.act_id][v.stage][v.award_id] = v
|
|
end
|
|
-- print("huangcong:CompetingListModel [128]: ",self.box_award_cfg)
|
|
-- PrintTable(self.box_award_cfg)
|
|
end
|
|
|
|
--获得当前世界等级阶段
|
|
function CompetingListModel:GetCurWorldLvStage( )
|
|
local worldLv = RoleManager.Instance.mainRoleInfo.worldLv or 0
|
|
for i,v in ipairs(Config.Racerankworldlev) do
|
|
if v.max_lev >= worldLv then
|
|
return v.stage
|
|
end
|
|
end
|
|
end
|
|
|
|
--检测竞榜和图标是否需要开启
|
|
function CompetingListModel:CheckIconBoolOpen(base_type)
|
|
local level = RoleManager.Instance.mainRoleInfo.level
|
|
local is_open = false
|
|
local end_time = 0
|
|
local server_data = self.view_info[base_type]
|
|
-- local key = string.format("%s@%s",333,base_type)
|
|
local sub_base_type = 33300000
|
|
local cfg = self.view_cfg[base_type]
|
|
if cfg and cfg.type and cfg.type == 2 then
|
|
sub_base_type = 1033300000
|
|
end
|
|
if server_data and server_data.end_show_time and self.view_cfg[base_type] and level >= self.view_cfg[base_type].lv then
|
|
is_open = server_data.end_show_time - TimeUtil:getServerTime()
|
|
is_open2 = server_data.end_time - TimeUtil:getServerTime()
|
|
print("huangcong:CompetingListModel [317]: ",sub_base_type+base_type)
|
|
if is_open > 0 then
|
|
if is_open2 > 0 then
|
|
ActivityIconManager:getInstance():addIcon(sub_base_type+base_type, is_open2)
|
|
else
|
|
ActivityIconManager:getInstance():addIcon(sub_base_type+base_type, is_open, "已截止")
|
|
end
|
|
else
|
|
ActivityIconManager:getInstance():deleteIcon(sub_base_type+base_type)
|
|
end
|
|
else
|
|
ActivityIconManager:getInstance():deleteIcon(sub_base_type+base_type)
|
|
end
|
|
end
|
|
|
|
--检查竞榜和许愿池图标红点
|
|
function CompetingListModel:CheckMainIconRedDot(base_type)
|
|
local bool = false
|
|
if base_type then
|
|
local server_data = self.view_info[base_type]
|
|
local sub_base_type = 33300000
|
|
if server_data then
|
|
if server_data.type and server_data.type == 2 then
|
|
sub_base_type = 1033300000
|
|
end
|
|
local is_open = server_data.end_time - TimeUtil:getServerTime()
|
|
if is_open and is_open > 0 and server_data.type == 1 and server_data.free_times and server_data.free_times > 0 then
|
|
bool = true
|
|
end
|
|
if server_data.gold_coin and server_data.gold_coin >= 1 then
|
|
bool = true
|
|
end
|
|
if server_data.award_list then
|
|
for k,v in pairs(server_data.award_list) do
|
|
if v.state == 1 then
|
|
bool = true
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
-- print("huangcong:CompetingListModel [start:373] :", self.red_info_list)
|
|
-- PrintTable(self.red_info_list)
|
|
-- print("huangcong:CompetingListModel [end]")
|
|
self.red_info_list[base_type] = bool
|
|
KfActivityModel:getInstance():IsNeedRed(KfActivityModel.TabID.Competing,nil,base_type)--竞榜
|
|
GlobalEventSystem:Fire(ActivityIconManager.UPDATE_ICON_TIPS, sub_base_type+base_type, bool)
|
|
return
|
|
end
|
|
end
|
|
|
|
function CompetingListModel:SetViewInfoOne( v )
|
|
if not self.view_info[v.base_type] then
|
|
print("huangcong:CompetingListModel [237]竞榜活动数据有问题: ",v.base_type)
|
|
return
|
|
end
|
|
local new_data = {}
|
|
for kk,vv in pairs(v.award_list) do
|
|
new_data[vv.id] = vv
|
|
end
|
|
v.reward_list = new_data
|
|
local record_data = {}
|
|
for kk,vv in pairs(v.rank_list) do
|
|
record_data[vv.rank] = vv
|
|
end
|
|
v.rank_list = record_data
|
|
self.view_info[v.base_type].buy_times = v.buy_times
|
|
self.view_info[v.base_type].free_times = v.free_times
|
|
self.view_info[v.base_type].sum_score = v.sum_score
|
|
self.view_info[v.base_type].award_list = new_data
|
|
self.view_info[v.base_type].times = times
|
|
self.view_info[v.base_type].rank_list = record_data
|
|
self:CheckMainIconRedDot(v.base_type)
|
|
end
|
|
|
|
function CompetingListModel:SetViewInfoBase( v )
|
|
local new_data = {}
|
|
if not self.view_info[v.base_type] then
|
|
self.view_info[v.base_type] = {}
|
|
end
|
|
self.view_info[v.base_type].end_time = v.end_time
|
|
self.view_info[v.base_type].end_show_time = v.end_show_time
|
|
self.view_info[v.base_type].world_stage = v.world_stage
|
|
local is_open = v.end_show_time - TimeUtil:getServerTime() > 0
|
|
-- print("huangcong:CompetingListModel [264]is_open: ",v.base_type,is_open)
|
|
local cfg = self.view_cfg[v.base_type]
|
|
if is_open and cfg then
|
|
if cfg.type == 1 then
|
|
local function callback( ... )
|
|
CompetingListModel:getInstance():Fire(CompetingListModel.REQUEST_INFO,33301,v.base_type)
|
|
end
|
|
setTimeout(callback,0.05)
|
|
elseif cfg.type == 2 then
|
|
local function callback( ... )
|
|
CompetingListModel:getInstance():Fire(CompetingListModel.REQUEST_INFO,33305,v.base_type)
|
|
end
|
|
setTimeout(callback,0.05)
|
|
end
|
|
end
|
|
-- self:CheckIconBoolOpen(v.base_type)--20200831--这里要合到开服活动页签里去 所以屏蔽图标检查
|
|
end
|
|
|
|
--设置抽奖结果
|
|
function CompetingListModel:SetResult( vo )
|
|
if not vo or not vo.base_type then return end
|
|
if not self.result_info[vo.base_type] then
|
|
self.result_info[vo.base_type] = {}
|
|
end
|
|
self.result_info[vo.base_type] = vo
|
|
local new_award_list = {}
|
|
for k,v in ipairs(vo.reward_list) do
|
|
if self.award_cfg[vo.base_type] and self.award_cfg[vo.base_type][vo.stage] and self.award_cfg[vo.base_type][vo.stage][v.award_id] then
|
|
local data = self.award_cfg[vo.base_type][vo.stage][v.award_id]
|
|
if data then
|
|
new_award_list[#new_award_list + 1] = data
|
|
end
|
|
end
|
|
end
|
|
local data = {}
|
|
data.award = new_award_list
|
|
data.col_num = 5
|
|
-- GlobalEventSystem:Fire(EventName.OPEN_COM_AWARD_RESULT_VIEW, data)
|
|
GiftModel:getInstance():Fire(GiftModel.OPEN_SHOW_ACT_GOODS_VIEW, new_award_list)
|
|
self.result_info[vo.base_type].reward_list = new_award_list
|
|
-- print("huangcong:CompetingListModel [448]vo: ",vo)
|
|
-- PrintTable(vo)
|
|
end
|
|
|
|
|
|
|
|
--获取打开界面状态
|
|
function CompetingListModel:getIsOpenView()
|
|
return self.is_open_view
|
|
end
|
|
|
|
--是否进入打折期
|
|
function CompetingListModel:IsDiscountOpen( base_type )
|
|
do return false end
|
|
local open_day = ServerTimeModel:getInstance():GetOpenServerDay()
|
|
local has_discount = true
|
|
if self.view_info[base_type] and TableSize(self.view_info[base_type]) > 0 then
|
|
local max_num = self.discount_times
|
|
if self.view_info[base_type].buy_times and self.view_info[base_type].buy_times >= max_num then
|
|
has_discount = false
|
|
end
|
|
end
|
|
return false
|
|
-- return open_day >= (self.discount_opday or 1) and has_discount
|
|
end
|
|
|
|
function CompetingListModel:GetIsNoShowAskView( )
|
|
return self.is_no_show_ask_view
|
|
end
|
|
|
|
function CompetingListModel:SetIsNoShowAskView( value )
|
|
self.is_no_show_ask_view = value
|
|
end
|
|
|
|
function CompetingListModel:GetDiscount( buy_time,base_type )
|
|
local discount = 1
|
|
local has_discount = self:IsDiscountOpen(base_type)
|
|
if has_discount then
|
|
for k,v in pairs(Config.Racerankdiscount) do
|
|
if buy_time >= v.times_min and buy_time <= v.times_max then
|
|
local goods_list = stringtotable(v.cost_list)
|
|
if goods_list and goods_list[1] then
|
|
discount = goods_list[1][3]
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
return discount
|
|
end
|
|
|
|
--获得购买次数
|
|
function CompetingListModel:GetBuyNum( base_type )
|
|
return self.view_info[base_type] and self.view_info[base_type].buy_times or 0
|
|
end
|
|
|
|
--计算需要的道具材料
|
|
function CompetingListModel:MathNeedCost( use_type,base_type )
|
|
local one_price = GoodsModel:getInstance():GetGoodsPrice(self.cost_id) or 60
|
|
local good_num = GoodsModel:getInstance():GetTypeGoodsNum(self.cost_id)
|
|
local need_cost = 0
|
|
local sum_need_cost = self:GetDiscount(1+self:GetBuyNum(base_type),base_type)
|
|
if good_num >= sum_need_cost then
|
|
need_cost = 0
|
|
else
|
|
need_cost = (sum_need_cost - good_num)
|
|
end
|
|
return need_cost,sum_need_cost
|
|
end
|
|
|
|
function CompetingListModel:NeedPrice( jin,one_price,num,good_name,good_num,times,base_type)
|
|
local cur_view_cfg = self.view_cfg[base_type]
|
|
if not base_type or not cur_view_cfg then return end
|
|
|
|
local function ok( ... )
|
|
if jin >= one_price*(num - good_num) then
|
|
self:Fire(CompetingListModel.REQUEST_INFO, 33302, base_type, times, 1)
|
|
else
|
|
local qc_data = {
|
|
price = one_price*(num - good_num),
|
|
}
|
|
GlobalEventSystem:Fire(EventName.OPEN_RECHARGE_TIP_VIEW, true, qc_data)
|
|
end
|
|
end
|
|
|
|
if self.competing_buy_toggle[base_type] then
|
|
ok()
|
|
else
|
|
local need_cost,max_need_cost = self:MathNeedCost(times,base_type)
|
|
local lucky_type = 1
|
|
if times == 1 then
|
|
lucky_type = 1
|
|
elseif times == 10 then
|
|
lucky_type = 2
|
|
end
|
|
local has_discount = self:IsDiscountOpen(base_type)
|
|
if has_discount and times == 10 then--只有10连才增加判断
|
|
if self:GetIsNoShowAskView() then
|
|
ok()
|
|
else
|
|
CompetingListAskView.New():Open({max_need_cost = max_need_cost, need_cost=need_cost, use_type=lucky_type, base_type = base_type})
|
|
end
|
|
else
|
|
local need_price = one_price*(num - good_num)
|
|
local need_num = math.ceil(need_price/one_price)
|
|
local cur_type_str = string.format("抽奖 %s 次", times)
|
|
if cur_view_cfg then
|
|
cur_type_str = cur_type_str
|
|
end
|
|
local function toggle_function( flag )
|
|
self.competing_buy_toggle[base_type] = flag
|
|
end
|
|
local asset, source = WordManager:GetCommonMoneyIcon(1)
|
|
local toggle_tip_data = {
|
|
gold_ab_res = asset,
|
|
gold_res = source,
|
|
price = need_price,
|
|
insufficientText = "",
|
|
priceText = string.format("<color=#fdffc2> %s </color> 补齐所需的 %s\n%s",need_price,good_name,cur_type_str),
|
|
titleText = "提示",
|
|
ok_callback = ok,
|
|
toggle_function = toggle_function,
|
|
is_complex_ok_callback = true,
|
|
}
|
|
GlobalEventSystem:Fire(EventName.OPEN_COM_TOGGLE_TIP_VIEW, toggle_tip_data)
|
|
end
|
|
end
|
|
end
|
|
|
|
--获得界面数据
|
|
function CompetingListModel:GetCompetingInfoList( )
|
|
return self.view_info
|
|
end
|
|
|
|
--获得界面数据
|
|
function CompetingListModel:GetCompetingCfg( base_type )
|
|
return self.view_cfg[base_type]
|
|
end
|
|
|
|
--获得竞榜活动开启列表
|
|
function CompetingListModel:GetCompetingOpenActList( act_type )
|
|
local my_level = RoleManager.Instance.mainRoleInfo.level
|
|
local is_open = false
|
|
local end_time = 0
|
|
local competing_server_data = self:GetCompetingInfoList()
|
|
local open_list = {}
|
|
if competing_server_data and TableSize(competing_server_data) > 0 then
|
|
for n,l in pairs(competing_server_data) do
|
|
local server_data = l
|
|
local sub_base_type = 33300000
|
|
local competing_cfg = self:GetCompetingCfg(n)
|
|
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
|
|
icon_act_type = tonumber(v[2])
|
|
break
|
|
end
|
|
end
|
|
if icon_act_type == act_type then
|
|
if competing_cfg.type and competing_cfg.type == 2 then
|
|
sub_base_type = 1033300000
|
|
end
|
|
if server_data and server_data.end_show_time and my_level >= competing_cfg.lv then
|
|
is_open = server_data.end_show_time - TimeUtil:getServerTime()
|
|
is_open2 = server_data.end_time - TimeUtil:getServerTime()
|
|
if is_open > 0 then
|
|
if is_open2 > 0 then
|
|
local data = DeepCopy(competing_cfg)
|
|
data.sub_type = sub_base_type+n
|
|
data.id = KfActivityModel.TabID.Competing
|
|
data.base_type = CustomActivityModel.CustomActBaseType.COPETING
|
|
data.sort_id = 11
|
|
open_list[#open_list + 1] = data
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
return open_list
|
|
end
|
|
|
|
--获得竞榜红点列表
|
|
function CompetingListModel:GetComtingRedList( )
|
|
return self.red_info_list
|
|
end
|
|
|
|
------------------------------------------------许愿池相关
|
|
function CompetingListModel:SetFontaniResult( vo )--设置抽奖结果
|
|
if not vo or not vo.base_type then return end
|
|
if not self.result_info[vo.base_type] then
|
|
self.result_info[vo.base_type] = {}
|
|
end
|
|
self.result_info[vo.base_type] = vo
|
|
local new_award_list = {}
|
|
for k,v in ipairs(vo.reward_list) do
|
|
if self.fontani_award_cfg[vo.base_type] and self.fontani_award_cfg[vo.base_type][vo.opty]
|
|
and self.fontani_award_cfg[vo.base_type][vo.opty][vo.stage]
|
|
and self.fontani_award_cfg[vo.base_type][vo.opty][vo.stage][v.award_id] then
|
|
local data = self.fontani_award_cfg[vo.base_type][vo.opty][vo.stage][v.award_id]
|
|
new_award_list[#new_award_list + 1] = data
|
|
end
|
|
end
|
|
self.result_info[vo.base_type].reward_list = new_award_list
|
|
-- print("huangcong:CompetingListModel [468]vo: ",vo)
|
|
-- PrintTable(vo)
|
|
end
|
|
|
|
function CompetingListModel:GetFonTaniRuneTimeCfg( rune_times )
|
|
for k,v in pairsByKeys(Config.Racerunecost) do
|
|
if v.id >= rune_times then
|
|
return v
|
|
end
|
|
end
|
|
end
|
|
|
|
function CompetingListModel:GetFonTaniCoinCfg( coin )
|
|
for k,v in pairsByKeys(Config.Racewishcoin) do
|
|
if coin >= v.min_gold and coin <= v.max_gold then
|
|
return v
|
|
end
|
|
end
|
|
if coin == 0 then
|
|
return Config.Racewishcoin[1]
|
|
end
|
|
end
|
|
|
|
--得到许愿池奖励数据
|
|
function CompetingListModel:GetFontaniAwardCfg( base_type,stage,type )
|
|
if self.fontani_award_cfg[base_type] and self.fontani_award_cfg[base_type][type] and self.fontani_award_cfg[base_type][type][stage] then
|
|
return self.fontani_award_cfg[base_type][type][stage]
|
|
end
|
|
return nil
|
|
end
|
|
|
|
--设置许愿池界面数据
|
|
function CompetingListModel:SetFontaniViewInfoOne( v )
|
|
if not self.view_info[v.base_type] then
|
|
print("huangcong:CompetingListModel [348]许愿池数据有问题: ",v.base_type)
|
|
return
|
|
end
|
|
local new_data = {}
|
|
for kk,vv in pairs(v.award_list) do
|
|
new_data[vv.id] = vv
|
|
end
|
|
v.reward_list = new_data
|
|
self.view_info[v.base_type].type = v.type
|
|
self.view_info[v.base_type].gold_coin = v.gold_coin
|
|
self.view_info[v.base_type].total = v.total
|
|
self.view_info[v.base_type].sum_score = v.score
|
|
self.view_info[v.base_type].rune_times = v.rune_times
|
|
self.view_info[v.base_type].award_list = new_data
|
|
self.view_info[v.base_type].base_type = v.base_type
|
|
-- print("huangcong:CompetingListModel [390]: ",self.view_info[v.base_type])
|
|
-- PrintTable(self.view_info[v.base_type])
|
|
self:CheckMainIconRedDot(v.base_type)
|
|
end
|
|
|
|
--得到展示战力
|
|
function CompetingListModel:GetCompetingShowFight( vo )
|
|
if not vo or #vo < 3 then return end
|
|
if vo[1] == 146 then--如果是进阶
|
|
return FosterModel:getInstance():GetMinStageAttrFight(vo[3],1,0) or 0
|
|
elseif vo[1] == 163 then--如果是宠物
|
|
return PetModel:getInstance():GetPetBaseFightCfg(vo[3],1,1) or 0
|
|
end
|
|
end
|
|
|
|
--获取货币ID
|
|
function CompetingListModel:GetCompetingCostId( )
|
|
local one_data = CompetingListModel:getInstance().one_cost_data[1]
|
|
return one_data[2]
|
|
end
|