CapsuleEggModel = CapsuleEggModel or BaseClass(BaseVo, true)
|
|
local CapsuleEggModel = CapsuleEggModel
|
|
|
|
function CapsuleEggModel:__init()
|
|
CapsuleEggModel.Instance = self
|
|
self:Reset()
|
|
end
|
|
|
|
function CapsuleEggModel:Reset()
|
|
self.stick_record_max_count = 0--1类记录最大条数(1、2档)
|
|
self.normal_record_max_count = 0--2类记录最大条数(3档)
|
|
self.max_record_count = 0--全服记录最大条数
|
|
|
|
self.score_gtype_id = 100012--积分物品id
|
|
|
|
self.ten_ticket_type_id = 102306
|
|
|
|
self.is_show_warehouse_view = false --是否在临时仓库界面
|
|
self.can_take_out_flag = false--物品tips是否展示取出按钮
|
|
|
|
self.capsule_egg_kv_cfg = {}--扭蛋常量配置
|
|
self.capsule_egg_reward_cfg = {}--扭蛋物品配置
|
|
self.capsule_egg_score_shop_cfg = {}--扭蛋积分商城配置
|
|
self.capsule_egg_time_reward_cfg = {}--扭蛋次数奖励配置
|
|
|
|
self.capsule_egg_free_data = {}--免费抽奖信息
|
|
self.capsule_egg_time_reward_data = false--次数抽奖信息
|
|
|
|
self.normal_record_list = {}--普通记录
|
|
self.stick_record_list = {}--置顶的两条极品记录
|
|
self.all_record_list = {}--记录总表
|
|
|
|
self.server_lucky = {}--全服幸运值列表
|
|
|
|
self.score = 0--积分
|
|
|
|
self.score_shop_data = {}--商城商品购买数据
|
|
|
|
self.warehouse_data = {}--仓库物品数据
|
|
|
|
self.now_reward_list = {}--当前抽奖的奖励列表
|
|
|
|
self.now_choose_goods_id = nil--当前选中的仓库物品唯一id
|
|
|
|
self.capsule_egg_red_dot_info = {}
|
|
self.capsule_egg_timereward_red_dot_info = {}
|
|
self.draw_btn_red_list = {}--pool_type|
|
|
self.have_see_red_dot = false --单抽券的红点,只显示一次
|
|
|
|
self:InitCapsuleEggCfg()
|
|
end
|
|
|
|
function CapsuleEggModel:getInstance()
|
|
if CapsuleEggModel.Instance == nil then
|
|
CapsuleEggModel.Instance = CapsuleEggModel.New()
|
|
end
|
|
return CapsuleEggModel.Instance
|
|
end
|
|
|
|
-------配置相关--------------------S
|
|
--初始化配置信息
|
|
function CapsuleEggModel:InitCapsuleEggCfg( )
|
|
--常量配置
|
|
for k,v in pairs(Config.Capsuleeggkv) do
|
|
self.capsule_egg_kv_cfg[Trim(v.key)] = v
|
|
end
|
|
|
|
--奖品配置 奖池类型|奖品位置
|
|
local t = {}
|
|
for k,v in pairs(Config.Capsuleeggreward) do
|
|
t[v.pool_type] = t[v.pool_type] or {}
|
|
|
|
if v.client_pos ~= 0 then
|
|
t[v.pool_type][v.client_pos] = v
|
|
end
|
|
end
|
|
for i,v in ipairs(t) do
|
|
self.capsule_egg_reward_cfg[i] = self.capsule_egg_reward_cfg[i] or {}
|
|
for ii,vv in ipairs(v) do
|
|
local reward_list = stringtotable(vv.reward)
|
|
for iii,vvv in ipairs(reward_list) do
|
|
table.insert(self.capsule_egg_reward_cfg[i], vvv)
|
|
end
|
|
end
|
|
end
|
|
--附属奖励配置特殊处理
|
|
if self.capsule_egg_reward_cfg[1] then
|
|
local cfg = self.capsule_egg_kv_cfg["giving_reward"]
|
|
if cfg then
|
|
local reward = stringtotable(Trim(cfg.value))
|
|
table.insert(self.capsule_egg_reward_cfg[1], 2, reward[1])
|
|
end
|
|
end
|
|
|
|
--积分商城配置
|
|
for k,v in pairs(Config.Capsuleeggexchange) do
|
|
self.capsule_egg_score_shop_cfg[v.id] = v
|
|
end
|
|
|
|
--次数奖励配置
|
|
for k,v in pairs(Config.Capsuleeggtimesreward) do
|
|
self.capsule_egg_time_reward_cfg[v.pool_type] = self.capsule_egg_time_reward_cfg[v.pool_type] or {}
|
|
table.insert(self.capsule_egg_time_reward_cfg[v.pool_type], v)
|
|
end
|
|
for i,v in ipairs(self.capsule_egg_time_reward_cfg) do
|
|
table.sort( v, function( a, b)
|
|
return a.draw_times < b.draw_times
|
|
end )
|
|
end
|
|
|
|
self.stick_record_max_count = self.capsule_egg_kv_cfg["show_num_one"].value
|
|
self.normal_record_max_count = self.capsule_egg_kv_cfg["show_num_two"].value
|
|
self.max_record_count = self.stick_record_max_count + self.normal_record_max_count
|
|
end
|
|
|
|
--根据池子类型和抽的次数获取代币券id
|
|
function CapsuleEggModel:GetCostTicketGTypeId(pool_type,nums)
|
|
local id = 0
|
|
if nums == 1 then
|
|
id = self:GetOneCostData(pool_type)
|
|
elseif nums == 10 then
|
|
id = self:GetTenCostData(pool_type)
|
|
elseif nums == 50 then
|
|
id = self:GetFiftyCostData(pool_type)
|
|
end
|
|
return id
|
|
end
|
|
|
|
--获取代币券数量列表
|
|
function CapsuleEggModel:GetCostTicketNumList( )
|
|
local ticket_num_list = {}
|
|
for i=1,3 do
|
|
ticket_num_list[i] = ticket_num_list[i] or {}
|
|
ticket_num_list[i][1] = GoodsModel:getInstance():GetGoodsNumFromType(0,self:GetCostTicketGTypeId(i,1))
|
|
ticket_num_list[i][2] = GoodsModel:getInstance():GetGoodsNumFromType(0,self:GetCostTicketGTypeId(i,10))
|
|
ticket_num_list[i][3] = GoodsModel:getInstance():GetGoodsNumFromType(0,self:GetCostTicketGTypeId(i,50))
|
|
end
|
|
return ticket_num_list
|
|
end
|
|
|
|
--获取单抽的消耗
|
|
function CapsuleEggModel:GetOneCostData(pool_type)
|
|
if pool_type == 1 then
|
|
return stringtotable(self.capsule_egg_kv_cfg["long_one_cost_ticket"].value)[1][2]
|
|
elseif pool_type == 2 then
|
|
return stringtotable(self.capsule_egg_kv_cfg["xuan_one_cost_ticket"].value)[1][2]
|
|
elseif pool_type == 3 then
|
|
return stringtotable(self.capsule_egg_kv_cfg["hua_one_cost_ticket"].value)[1][2]
|
|
end
|
|
end
|
|
|
|
--获取十连的消耗
|
|
function CapsuleEggModel:GetTenCostData(pool_type)
|
|
if pool_type == 1 then
|
|
return stringtotable(self.capsule_egg_kv_cfg["long_ten_cost_ticket"].value)[1][2]
|
|
elseif pool_type == 2 then
|
|
return stringtotable(self.capsule_egg_kv_cfg["xuan_ten_cost_ticket"].value)[1][2]
|
|
elseif pool_type == 3 then
|
|
return stringtotable(self.capsule_egg_kv_cfg["hua_ten_cost_ticket"].value)[1][2]
|
|
end
|
|
end
|
|
|
|
--获取五十连的消耗
|
|
function CapsuleEggModel:GetFiftyCostData(pool_type)
|
|
if pool_type == 1 then
|
|
return stringtotable(self.capsule_egg_kv_cfg["long_fifty_cost_ticket"].value)[1][2]
|
|
elseif pool_type == 2 then
|
|
return stringtotable(self.capsule_egg_kv_cfg["xuan_fifty_cost_ticket"].value)[1][2]
|
|
elseif pool_type == 3 then
|
|
return stringtotable(self.capsule_egg_kv_cfg["hua_fifty_cost_ticket"].value)[1][2]
|
|
end
|
|
end
|
|
|
|
--根据奖品配置id获取其配置
|
|
function CapsuleEggModel:GetCfgByRewardCfgId(reward_cfg_id)
|
|
if Config.Capsuleeggreward[reward_cfg_id] then
|
|
return Config.Capsuleeggreward[reward_cfg_id]
|
|
else
|
|
return nil
|
|
end
|
|
end
|
|
|
|
--获取pooltype类型奖池的奖品配置
|
|
function CapsuleEggModel:GetRewardCfg(pool_type)
|
|
if self.capsule_egg_reward_cfg[pool_type] then
|
|
return self.capsule_egg_reward_cfg[pool_type]
|
|
else
|
|
return nil
|
|
end
|
|
end
|
|
|
|
--获取pooltype类型奖池的次数奖励配置
|
|
function CapsuleEggModel:GetTimeRewardCfg(pool_type)
|
|
if self.capsule_egg_time_reward_cfg[pool_type] then
|
|
return self.capsule_egg_time_reward_cfg[pool_type]
|
|
else
|
|
return nil
|
|
end
|
|
end
|
|
|
|
--获取pooltype类型奖池的次数奖励展示配置
|
|
function CapsuleEggModel:GetShowTimeRewardCfg()
|
|
local cfg = self.capsule_egg_kv_cfg["show_reward"]
|
|
local reward_list = {}
|
|
if cfg then
|
|
reward_list = stringtotable(Trim(cfg.value))
|
|
end
|
|
return reward_list
|
|
end
|
|
|
|
--获取pooltype类型奖池的pos位置的奖品配置
|
|
function CapsuleEggModel:GetRewardCfgByPos(pool_type,pos)
|
|
if self.capsule_egg_reward_cfg[pool_type] and self.capsule_egg_reward_cfg[pool_type][pos] then
|
|
return self.capsule_egg_reward_cfg[pool_type][pos]
|
|
else
|
|
return nil
|
|
end
|
|
end
|
|
|
|
--获取积分商城配置
|
|
function CapsuleEggModel:GetScoreShopCfg( )
|
|
return self.capsule_egg_score_shop_cfg
|
|
end
|
|
-------配置相关--------------------E
|
|
|
|
|
|
--设置扭蛋免费信息 17000\17003
|
|
function CapsuleEggModel:SetCapsuleEggFreeDrawData(vo)
|
|
-- print('Cat:CapsuleEggModel.lua[217] SetCapsuleEggFreeDrawData')
|
|
-- PrintTable(vo)
|
|
self.capsule_egg_free_data[vo.pool_type] = {}
|
|
self.capsule_egg_free_data[vo.pool_type].pool_type = vo.pool_type
|
|
self.capsule_egg_free_data[vo.pool_type].free_times = vo.free_times
|
|
self.capsule_egg_free_data[vo.pool_type].next_free_draw = vo.next_free_draw
|
|
self.capsule_egg_free_data[vo.pool_type].sum_draw_times = vo.sum_draw_times
|
|
self:CountDownFreeTime(vo.pool_type)
|
|
self:UpdateTimeRewardRedDot(vo.pool_type)
|
|
self:Fire(CapsuleEggConst.UPDATE_CAPSULE_EGG_FREE_COUNT_DOWN,vo.pool_type)
|
|
|
|
self:Fire(CapsuleEggConst.UPDATE_RED_DOT, vo.pool_type)
|
|
end
|
|
|
|
--获取免费抽奖次数
|
|
function CapsuleEggModel:GetFreeDrawTimesByPoolType(pool_type)
|
|
if self.capsule_egg_free_data[pool_type] then
|
|
return self.capsule_egg_free_data[pool_type].free_times
|
|
else
|
|
return 0
|
|
end
|
|
end
|
|
|
|
--获取下一次抽奖的时间戳
|
|
function CapsuleEggModel:GetNextFreeDrawTimeByPoolType(pool_type)
|
|
if self.capsule_egg_free_data[pool_type] then
|
|
return self.capsule_egg_free_data[pool_type].next_free_draw
|
|
else
|
|
return 0
|
|
end
|
|
end
|
|
|
|
--获取抽奖次数
|
|
function CapsuleEggModel:GetSumDrawTimesByPoolType(pool_type)
|
|
if self.capsule_egg_free_data[pool_type] then
|
|
return self.capsule_egg_free_data[pool_type].sum_draw_times
|
|
else
|
|
return 0
|
|
end
|
|
end
|
|
|
|
--判断该记录是否是需要置顶的|2档以上
|
|
function CapsuleEggModel:IsRecordNeedStick(reward_cfg_id)
|
|
return self:GetCfgByRewardCfgId(reward_cfg_id).color <= 2
|
|
end
|
|
|
|
--判断该记录是否需要筛选掉 4档的记录前端不需要,但是需要通过17002协议来刷新全服幸运值
|
|
function CapsuleEggModel:IsRecordNeedIgnore(reward_cfg_id)
|
|
return self:GetCfgByRewardCfgId(reward_cfg_id).color >= 4
|
|
end
|
|
|
|
--设置全服记录 17001
|
|
function CapsuleEggModel:SetRecord(vo)--1|龙神扭蛋 2|炫武扭蛋 3|华裳扭蛋
|
|
--记录全服幸运值
|
|
self:SetServerlucky(vo.pool_type,vo.server_lucky)
|
|
|
|
self.normal_record_list[vo.pool_type] = {}
|
|
self.stick_record_list[vo.pool_type] = {}
|
|
self.all_record_list[vo.pool_type] = {}
|
|
--分类记录
|
|
for k,v in pairs(vo.draw_log) do
|
|
v.pool_type = vo.pool_type
|
|
if v.is_stick == 1 then
|
|
table.insert(self.stick_record_list[vo.pool_type],v)
|
|
else
|
|
table.insert(self.normal_record_list[vo.pool_type],v)
|
|
end
|
|
table.insert(self.all_record_list[vo.pool_type],v)
|
|
end
|
|
--排序记录
|
|
local function sort(a, b)
|
|
return a.record_time < b.record_time
|
|
end
|
|
table.sort(self.stick_record_list[vo.pool_type], sort)
|
|
table.sort(self.normal_record_list[vo.pool_type], sort)
|
|
table.sort(self.all_record_list[vo.pool_type], sort)
|
|
end
|
|
|
|
--添加全服记录 17002
|
|
function CapsuleEggModel:AddRecord(vo)
|
|
--记录全服幸运值
|
|
self:SetServerlucky(vo.pool_type,vo.server_lucky)
|
|
|
|
self.normal_record_list[vo.pool_type] = self.normal_record_list[vo.pool_type] or {}
|
|
self.stick_record_list[vo.pool_type] = self.stick_record_list[vo.pool_type] or {}
|
|
|
|
if vo.is_stick == 1 then
|
|
table.insert(self.stick_record_list[vo.pool_type], vo)
|
|
if #self.stick_record_list[vo.pool_type] > self.stick_record_max_count then
|
|
table.remove(self.stick_record_list[vo.pool_type], 1)
|
|
end
|
|
else
|
|
table.insert(self.normal_record_list[vo.pool_type], vo)
|
|
if #self.normal_record_list[vo.pool_type] > self.normal_record_max_count then
|
|
table.remove(self.normal_record_list[vo.pool_type], 1)
|
|
end
|
|
end
|
|
|
|
self.all_record_list[vo.pool_type] = {}
|
|
for i,v in ipairs(self.stick_record_list[vo.pool_type]) do
|
|
self.all_record_list[vo.pool_type][#self.all_record_list[vo.pool_type]+1] = v
|
|
end
|
|
for i,v in ipairs(self.normal_record_list[vo.pool_type]) do
|
|
self.all_record_list[vo.pool_type][#self.all_record_list[vo.pool_type]+1] = v
|
|
end
|
|
local function sort(a, b)
|
|
return a.record_time < b.record_time
|
|
end
|
|
table.sort(self.all_record_list[vo.pool_type], sort)
|
|
end
|
|
|
|
--获取置顶记录列表
|
|
function CapsuleEggModel:GetStickRecordList(pool_type)
|
|
return self.stick_record_list[pool_type] and self.stick_record_list[pool_type] or {}
|
|
end
|
|
|
|
--获取普通记录列表
|
|
function CapsuleEggModel:GetNormalRecordList(pool_type)
|
|
return self.normal_record_list[pool_type] and self.normal_record_list[pool_type] or {}
|
|
end
|
|
|
|
--获取全服记录总列表
|
|
function CapsuleEggModel:GetAllRecordList(pool_type)
|
|
return self.all_record_list[pool_type] or {}
|
|
end
|
|
|
|
--设置全服幸运值 17001\17002\17010
|
|
function CapsuleEggModel:SetServerlucky(pool_type,lucky)
|
|
self.server_lucky[pool_type] = lucky
|
|
self:Fire(CapsuleEggConst.UPDATE_CAPSULE_SERVER_LUCKY)
|
|
end
|
|
|
|
--获取全服幸运值
|
|
function CapsuleEggModel:GetServerlucky(pool_type)
|
|
return self.server_lucky[pool_type] and self.server_lucky[pool_type] or 0
|
|
end
|
|
|
|
--设置积分 17004
|
|
function CapsuleEggModel:SetCapsuleEggScore(score)
|
|
self.score = score
|
|
self:Fire(CapsuleEggConst.UPDATE_CAPSULE_EGG_SCORE)
|
|
end
|
|
|
|
--获取积分
|
|
function CapsuleEggModel:GetCapsuleEggScore( )
|
|
return self.score
|
|
end
|
|
|
|
--设置商城商品购买信息 17005 |pos:商品位置|gtype_id:商品类型Id|type:兑换类型|num:剩余兑换的次数
|
|
function CapsuleEggModel:SetCapsuleEggScoreShopData(vo)
|
|
for k,v in pairs(vo.goods_list) do
|
|
self.score_shop_data[v.pos] = {}
|
|
self.score_shop_data[v.pos].pos = v.pos
|
|
self.score_shop_data[v.pos].gtype_id = v.gtype_id
|
|
self.score_shop_data[v.pos].num = v.num
|
|
end
|
|
end
|
|
|
|
--兑换商品后刷新数据 17006
|
|
function CapsuleEggModel:UpdateCapsuleEggScoreShopData(vo)
|
|
self.score_shop_data[vo.pos] = {}
|
|
self.score_shop_data[vo.pos].pos = vo.pos
|
|
self.score_shop_data[vo.pos].gtype_id = vo.gtype_id
|
|
self.score_shop_data[vo.pos].num = vo.num
|
|
end
|
|
|
|
--根据pos位置获取商品购买信息
|
|
function CapsuleEggModel:GetCapsuleEggScoreShopDataByPos(pos)
|
|
return self.score_shop_data[pos] and self.score_shop_data[pos] or nil
|
|
end
|
|
|
|
--设置仓库物品数据 17007
|
|
function CapsuleEggModel:SetWarehouseData(vo)
|
|
self.warehouse_data = {}
|
|
for k,v in pairs(vo.goods_list) do
|
|
table.insert(self.warehouse_data,v)
|
|
end
|
|
local function sort(a, b)
|
|
return a.create_time < b.create_time
|
|
end
|
|
table.sort(self.warehouse_data, sort)
|
|
self:SetWarehouseRed(#self.warehouse_data > 0)
|
|
end
|
|
|
|
--获取仓库物品列表
|
|
function CapsuleEggModel:GetWarehouseData( )
|
|
return self.warehouse_data
|
|
end
|
|
|
|
--清空仓库物品列表
|
|
function CapsuleEggModel:ClearWarehouseData( )
|
|
self.warehouse_data = {}
|
|
self:SetWarehouseRed(false)
|
|
end
|
|
|
|
--物品tips是否展示“取出”按钮
|
|
function CapsuleEggModel:IsShowCapsuleEggTakeOutBtn( )
|
|
return self.is_show_warehouse_view and self.can_take_out_flag
|
|
end
|
|
|
|
--获取当前选中的仓库物品唯一id
|
|
function CapsuleEggModel:GetWarehouseNowSelectedGoodsId( )
|
|
return self.now_choose_goods_id
|
|
end
|
|
|
|
--重置选中的仓库物品唯一id
|
|
function CapsuleEggModel:ResetWarehouseNowSelectedGoodsId( )
|
|
self.now_choose_goods_id = nil
|
|
self.can_take_out_flag = false
|
|
end
|
|
|
|
--返回奖励列表中的最高档位
|
|
function CapsuleEggModel:GetRewardMaxGear(reward_list)
|
|
local max_gear = 4
|
|
local reward_cfg = {}
|
|
for k,v in pairs(reward_list) do
|
|
reward_cfg = self:GetCfgByRewardCfgId(v.reward_cfg_id)
|
|
if reward_cfg.color < max_gear then
|
|
max_gear = reward_cfg.color
|
|
end
|
|
end
|
|
return max_gear
|
|
end
|
|
|
|
--保存当前抽奖的奖励列表
|
|
function CapsuleEggModel:SetNowRewardList(reward_list)
|
|
self.now_reward_list = reward_list
|
|
self:SetWarehouseRed(#self.now_reward_list > 0)
|
|
end
|
|
|
|
--获取当前抽奖的奖励列表
|
|
function CapsuleEggModel:GetNowRewardList()
|
|
return self.now_reward_list
|
|
end
|
|
|
|
--是否能免费单抽
|
|
function CapsuleEggModel:CanFreeDraw(pool_type)
|
|
return self:GetFreeDrawTimesByPoolType(pool_type) > 0
|
|
end
|
|
|
|
--免费单抽倒计时
|
|
function CapsuleEggModel:CountDownFreeTime(pool_type)
|
|
self:CancelTimer(pool_type)
|
|
local timer_func = function()
|
|
self:CancelTimer(pool_type)
|
|
self:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17000,pool_type)
|
|
end
|
|
if self:GetNextFreeDrawTimeByPoolType(pool_type) ~= 0 then
|
|
self["timer_id"..pool_type] = GlobalTimerQuest:AddPeriodQuest(timer_func, self:GetNextFreeDrawTimeByPoolType(pool_type)+1)
|
|
end
|
|
end
|
|
|
|
function CapsuleEggModel:CancelTimer(pool_type)
|
|
if self["timer_id"..pool_type] then
|
|
GlobalTimerQuest:CancelQuest(self["timer_id"..pool_type])
|
|
self["timer_id"..pool_type] = nil
|
|
end
|
|
end
|
|
|
|
--该奖池是否开放
|
|
function CapsuleEggModel:IsPoolOpen(pool_type)
|
|
-- if not GetModuleIsOpen(170) then
|
|
-- return false
|
|
-- else
|
|
-- if pool_type == 1 then
|
|
-- return true
|
|
-- elseif pool_type == 2 then
|
|
-- return RoleManager.Instance.mainRoleInfo.level >= self.capsule_egg_kv_cfg["open_lv"].value
|
|
-- elseif pool_type == 3 then
|
|
-- return ServerTimeModel:getInstance():GetOpenServerDay() >= self.capsule_egg_kv_cfg["open_day"].value
|
|
-- end
|
|
-- -- return GetModuleIsOpen(170,pool_type)
|
|
-- end
|
|
local is_open = GetModuleIsOpen(170,pool_type)
|
|
return is_open
|
|
end
|
|
|
|
--红点
|
|
function CapsuleEggModel:IsNeedRedAll( )
|
|
for k,v in pairs(CapsuleEggConst.RedType) do
|
|
self:IsNeedRed(v)
|
|
end
|
|
end
|
|
|
|
function CapsuleEggModel:IsNeedRed( tab_id )
|
|
local bool = false
|
|
if tab_id == CapsuleEggConst.RedType.Dragon then
|
|
bool = self:CheckCapsuleEggRed(1)
|
|
elseif tab_id == CapsuleEggConst.RedType.Weapon then
|
|
bool = self:CheckCapsuleEggRed(2)
|
|
elseif tab_id == CapsuleEggConst.RedType.Clothes then
|
|
bool = self:CheckCapsuleEggRed(3)
|
|
-- elseif tab_id == CapsuleEggConst.RedType.Warehouse then
|
|
-- bool = self:CheckWarehouseRed()
|
|
end
|
|
self.capsule_egg_red_dot_info[tab_id] = bool
|
|
self:Fire(CapsuleEggConst.ANS_UPDATE_RED_DOT,tab_id,bool)
|
|
end
|
|
|
|
function CapsuleEggModel:GetAllRedDot( )
|
|
return self.capsule_egg_red_dot_info
|
|
end
|
|
|
|
function CapsuleEggModel:CheckCapsuleEggRed(pool_type)
|
|
if not self:IsPoolOpen(pool_type) then return false end
|
|
local cost_ticket_num_list = self:GetCostTicketNumList()
|
|
local is_ticket_enough = false
|
|
|
|
for i,v in ipairs(cost_ticket_num_list[pool_type]) do
|
|
self.draw_btn_red_list[pool_type] = self.draw_btn_red_list[pool_type] or {}
|
|
self.draw_btn_red_list[pool_type][i] = false
|
|
--优化文档需求:如果是单抽券 大于6张或以上给红点,如果是十连五十连券 大于1张或以上就给红点
|
|
if i == 1 then
|
|
if v >= 6 then
|
|
is_ticket_enough = true
|
|
self.draw_btn_red_list[pool_type][i] = true
|
|
end
|
|
elseif i == 3 then--50连屏蔽
|
|
self.draw_btn_red_list[pool_type][i] = false
|
|
else
|
|
if v > 0 then
|
|
is_ticket_enough = true
|
|
self.draw_btn_red_list[pool_type][i] = true
|
|
end
|
|
end
|
|
end
|
|
|
|
local can_free = self:GetFreeDrawTimesByPoolType(pool_type) > 0
|
|
|
|
return can_free or is_ticket_enough
|
|
end
|
|
|
|
--获取抽奖按钮红点 btn_type: 1|单抽 2|十连 3|五十连
|
|
function CapsuleEggModel:GetDrawBtnRed(pool_type,btn_type)
|
|
if not self:IsPoolOpen(pool_type) then return false end
|
|
if self.draw_btn_red_list[pool_type] then
|
|
return self.draw_btn_red_list[pool_type][btn_type]
|
|
else
|
|
return false
|
|
end
|
|
end
|
|
|
|
function CapsuleEggModel:SetWarehouseRed(bool)
|
|
self.warehouse_red = bool
|
|
self:Fire(CapsuleEggConst.UPDATE_RED_DOT,CapsuleEggConst.RedType.Warehouse)
|
|
end
|
|
|
|
function CapsuleEggModel:CheckWarehouseRed( )
|
|
return self.warehouse_red
|
|
end
|
|
|
|
function CapsuleEggModel:GetRedByRedType(RedType)
|
|
return self.capsule_egg_red_dot_info[RedType] or false
|
|
end
|
|
|
|
--代币券数量刷新
|
|
function CapsuleEggModel:UpdateCostTicketNum( )
|
|
self:Fire(CapsuleEggConst.UPDATE_CPASULE_EGG_GOODS_NUM)
|
|
-- self:Fire(CapsuleEggConst.UPDATE_RED_DOT,CapsuleEggConst.RedType.Dragon)
|
|
-- self:Fire(CapsuleEggConst.UPDATE_RED_DOT,CapsuleEggConst.RedType.Weapon)
|
|
-- self:Fire(CapsuleEggConst.UPDATE_RED_DOT,CapsuleEggConst.RedType.Clothes)
|
|
self:Fire(CapsuleEggConst.UPDATE_RED_DOT)
|
|
end
|
|
|
|
--设置次数奖励信息
|
|
function CapsuleEggModel:SetTimesRewardInfo(vo)
|
|
self.capsule_egg_time_reward_data = self.capsule_egg_time_reward_data or {}
|
|
self.capsule_egg_time_reward_data[vo.pool_type] = vo.reward_status_list
|
|
self:UpdateTimeRewardRedDot(vo.pool_type)
|
|
self:Fire(CapsuleEggConst.OPEN_CAPSULE_EGG_REWARD_UPDATE, vo.pool_type)
|
|
self:Fire(CapsuleEggConst.UPDATE_RED_DOT)
|
|
end
|
|
|
|
--更新次数奖励红点
|
|
function CapsuleEggModel:UpdateTimeRewardRedDot(pool_type)
|
|
local cfg = self:GetTimeRewardCfg(pool_type)
|
|
if cfg then
|
|
local draw_times = self:GetSumDrawTimesByPoolType(pool_type)
|
|
self.capsule_egg_timereward_red_dot_info[pool_type] = {}
|
|
for k,v in pairs(cfg) do
|
|
local status = self:GetTimesRewardStatusByTimes(pool_type, v.draw_times)
|
|
if status == false and draw_times >= v.draw_times then
|
|
self.capsule_egg_timereward_red_dot_info[pool_type] = true
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
--获取次数奖励红点
|
|
function CapsuleEggModel:GetTimeRewardRedDot()
|
|
local b = false
|
|
for k,v in pairs(self.capsule_egg_timereward_red_dot_info) do
|
|
if v == true then
|
|
b = true
|
|
break
|
|
end
|
|
end
|
|
return b
|
|
end
|
|
|
|
--获取次数奖励状态
|
|
function CapsuleEggModel:GetTimesRewardStatusByTimes(pool_type, times)
|
|
local b = false
|
|
if not self.capsule_egg_time_reward_data then
|
|
b = nil
|
|
else
|
|
if self.capsule_egg_time_reward_data[pool_type] then
|
|
for k,v in pairs(self.capsule_egg_time_reward_data[pool_type]) do
|
|
if times == v.times then
|
|
b = v.status == 1
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
return b
|
|
end
|
|
|
|
--获取次数奖励时间戳
|
|
function CapsuleEggModel:GetTimesRewarResetTime()
|
|
local openDay = ServerTimeModel:getInstance():GetOpenServerDay()
|
|
local current_week = tonumber(TimeUtil:GetCurrentWeekDay())
|
|
current_week = current_week == 0 and 7 or current_week
|
|
local next_monday = 7 - current_week + 1
|
|
--如果开服是 周 5,6,7则下周1才算奖励
|
|
if openDay <= 3 then
|
|
local week = tonumber(TimeUtil:GetWeekStrByOpenDay(1))
|
|
if week and week >= 5 and next_monday < 7 then
|
|
next_monday = next_monday + 7
|
|
end
|
|
end
|
|
local next_monday_time_stamp = TimeUtil:GetFutureZeroStampServer(next_monday)
|
|
return next_monday_time_stamp
|
|
end
|
|
|
|
--单抽券的红点,只显示一次
|
|
function CapsuleEggModel:CheckHaveSeeRedDot()
|
|
self.have_see_red_dot = true
|
|
self:Fire(CapsuleEggConst.UPDATE_RED_DOT)
|
|
end
|
|
|
|
--获取列表中需要展示的ssr,usr,大奖附赠列表
|
|
function CapsuleEggModel:GetBigRewardList(reward_list)
|
|
|
|
-- reward_list = {
|
|
-- [1] = {gtype_id = 330902},
|
|
-- [2] = {gtype_id = 330903},
|
|
-- [3] = {gtype_id = 330213},
|
|
-- [4] = {gtype_id = 330309},
|
|
-- [5] = {gtype_id = 330310},
|
|
-- [6] = {gtype_id = 330107},
|
|
-- [7] = {gtype_id = 330107},
|
|
-- [8] = {gtype_id = 330107},
|
|
-- [9] = {gtype_id = 330107},
|
|
-- [10] = {gtype_id = 330107},
|
|
-- }
|
|
|
|
-- gtype_id = 330310
|
|
-- goods_num = 1
|
|
-- reward_cfg_id = 43
|
|
local show_reward_list = {}
|
|
-- local dragon_reward_cfg = self:GetRewardCfgByPos(1,1)[2]
|
|
local dragon_reward_type_id = self:GetRewardCfgByPos(1,1)[2]
|
|
for k,v in pairs(reward_list) do
|
|
local war_soul_cfg = WarSoulModel:getInstance():GetWarSoulCfg(v.gtype_id)
|
|
if war_soul_cfg and war_soul_cfg.color >= 4 and war_soul_cfg.type ~= 999 then
|
|
local temp_data = {}
|
|
temp_data.gtype_id = v.gtype_id
|
|
temp_data.cfg_war_soul = war_soul_cfg
|
|
if dragon_reward_type_id == v.gtype_id then--获得了超级大奖
|
|
temp_data.sort_id = 2
|
|
temp_data.is_war_soul = 1
|
|
table.insert(show_reward_list,temp_data)
|
|
local dargon_temp_data = {
|
|
gtype_id = stringtotable(Config.Capsuleeggkv[29].value)[1][2],
|
|
sort_id = 2,
|
|
is_war_soul = 2,
|
|
cfg_war_soul = nil,
|
|
}
|
|
table.insert(show_reward_list,dargon_temp_data)
|
|
else--其他的战魂
|
|
if war_soul_cfg.color >= 5 then
|
|
temp_data.sort_id = 3
|
|
temp_data.is_war_soul = 1
|
|
else
|
|
temp_data.sort_id = 1
|
|
temp_data.is_war_soul = 1
|
|
end
|
|
table.insert(show_reward_list,temp_data)
|
|
end
|
|
end
|
|
end
|
|
|
|
local arg = {"sort_id","is_war_soul"}
|
|
local condition = {Array.UPPER,Array.UPPER}
|
|
SortTools.MoreKeysSorter(show_reward_list, arg, condition)
|
|
|
|
return show_reward_list
|
|
end
|