TreasureHouseModel = TreasureHouseModel or BaseClass(BaseVo)
|
|
local table_insert = table.insert
|
|
local table_sort = table.sort
|
|
|
|
function TreasureHouseModel:__init()
|
|
TreasureHouseModel.Instance = self
|
|
self.treasure_house_count_cfg = {}--保底次数奖励配置表
|
|
self:InitTreasureHouseCFG()
|
|
self:Reset()
|
|
end
|
|
function TreasureHouseModel:Reset()
|
|
self.treasure_house_base_info = {}--珍宝阁基础信息
|
|
self.treasure_house_task_info = {}--珍宝阁任务信息
|
|
self.treasure_house_record_info = {}--珍宝阁记录信息
|
|
self.not_show_treasure_house_tip = false
|
|
end
|
|
|
|
function TreasureHouseModel:GetInstance()
|
|
if TreasureHouseModel.Instance == nil then
|
|
TreasureHouseModel.Instance = TreasureHouseModel.New()
|
|
end
|
|
return TreasureHouseModel.Instance
|
|
end
|
|
|
|
function TreasureHouseModel:getInstance()
|
|
if TreasureHouseModel.Instance == nil then
|
|
TreasureHouseModel.Instance = TreasureHouseModel.New()
|
|
end
|
|
return TreasureHouseModel.Instance
|
|
end
|
|
|
|
function TreasureHouseModel:InitTreasureHouseCFG( )
|
|
local cfg = Config.Treasurehousecount
|
|
for k,v in pairsByKeys(cfg) do
|
|
if not self.treasure_house_count_cfg[v.period] then
|
|
self.treasure_house_count_cfg[v.period] = {}
|
|
end
|
|
if not self.treasure_house_count_cfg[v.period][v.round] then
|
|
self.treasure_house_count_cfg[v.period][v.round] = {}
|
|
end
|
|
table.insert(self.treasure_house_count_cfg[v.period][v.round], v)
|
|
end
|
|
local function sort_func( a,b)
|
|
return a.count < b.count
|
|
end
|
|
for i,v in ipairs(self.treasure_house_count_cfg) do
|
|
for ii,vv in ipairs(v) do
|
|
table_sort(vv, sort_func)
|
|
end
|
|
end
|
|
end
|
|
|
|
function TreasureHouseModel:GetTreasureHouseCFG(period, round)
|
|
if period and round and self.treasure_house_count_cfg[period] then
|
|
return self.treasure_house_count_cfg[period][round]
|
|
elseif period and self.treasure_house_count_cfg[period] then
|
|
return self.treasure_house_count_cfg[period]
|
|
end
|
|
return {}
|
|
end
|
|
|
|
function TreasureHouseModel:SetTreasureHouseBaseInfo( vo )
|
|
self.treasure_house_base_info = vo
|
|
self:ChangeVar("treasure_house_base_info", self.treasure_house_base_info, false, true)
|
|
end
|
|
|
|
function TreasureHouseModel:GetTreasureHouseBaseInfo( )
|
|
return self.treasure_house_base_info
|
|
end
|
|
|
|
function TreasureHouseModel:GetTreasureHouseRewardList( )
|
|
local data = self:GetTreasureHouseBaseInfo()
|
|
local period = 1
|
|
if TableSize(data) > 0 then
|
|
local period = data.curr_period
|
|
end
|
|
local reward_list = {}
|
|
local cfg = Config.Treasurehouseitems
|
|
local data = {[0] = {}, [1] = {}, [2]= {}}--构造数据开始
|
|
for i,v in ipairs(cfg) do
|
|
if v.period <= period then--只有符合期数的才要加进来
|
|
table_insert(data[v.is_rare], v)
|
|
end
|
|
end
|
|
for i=0,2 do
|
|
local sort_func = function ( a, b )
|
|
return a.show_index > b.show_index
|
|
end
|
|
table.sort(data[i], sort_func)
|
|
end
|
|
local rare = 2--从大奖开始拿起
|
|
local temp = {}
|
|
for i=1,15 do
|
|
if i >= 4 and i <= 6 then
|
|
rare = 1
|
|
elseif i > 6 then
|
|
rare = 0
|
|
else
|
|
rare = 2
|
|
end
|
|
temp = table.remove(data[rare],1) or temp
|
|
table_insert(reward_list, temp)
|
|
end
|
|
return reward_list
|
|
end
|
|
|
|
function TreasureHouseModel:SetTreasureHouseTaskInfo( vo )
|
|
local data = {}
|
|
for i,v in ipairs(vo.task_list) do
|
|
data[v.id] = v
|
|
end
|
|
self.treasure_house_task_info = data
|
|
self:ChangeVar("treasure_house_task_info", self.treasure_house_task_info, false, true)
|
|
end
|
|
|
|
function TreasureHouseModel:GetTreasureHouseTaskInfo( )
|
|
return self.treasure_house_task_info
|
|
end
|
|
|
|
function TreasureHouseModel:SetTreasureHouseRecordInfo( vo )
|
|
self.treasure_house_record_info = vo
|
|
self:ChangeVar("treasure_house_record_info", self.treasure_house_record_info, false, true)
|
|
end
|
|
|
|
function TreasureHouseModel:AddTreasureHouseRecordInfo( vo )
|
|
local data = DeepCopy(self.treasure_house_record_info)
|
|
for i,v in ipairs(vo) do
|
|
table_insert(data, v)
|
|
end
|
|
self:ChangeVar("treasure_house_record_info", data, false, true)
|
|
end
|
|
|
|
function TreasureHouseModel:GetTreasureHouseRecordInfo( )
|
|
return self.treasure_house_record_info
|
|
end
|
|
--根据期数和轮次获取该轮最大的保底次数
|
|
function TreasureHouseModel:GetMaxNumByPeriodAndRound( period, round )
|
|
local cfg = self:GetTreasureHouseCFG(period, round)
|
|
return cfg[#cfg].count or 0
|
|
end
|
|
--根据期数获取最大轮次
|
|
function TreasureHouseModel:GetMaxRoundByPeriod( period )
|
|
local cfg = self:GetTreasureHouseCFG(period)
|
|
return TableSize(cfg)
|
|
end
|
|
--是否是概率up期
|
|
function TreasureHouseModel:IsTreasureHouseUpRatio( )
|
|
local bool = false
|
|
local openDay = ServerTimeModel:getInstance():GetOpenServerDay()
|
|
if 7 < openDay then--开服后7天
|
|
local cfg = stringtotable(Config.Treasurehousekv["week_days"].value)
|
|
-- 今天是星期几,映射到周一~周日 = 1~7
|
|
local cur_wday = os.date("*t", TimeUtil:getServerTime()).wday - 1
|
|
if cur_wday > 7 then
|
|
cur_wday = cur_wday - 7
|
|
elseif cur_wday < 1 then
|
|
cur_wday = cur_wday + 7
|
|
end
|
|
for i,v in ipairs(cfg) do
|
|
if cur_wday == v then
|
|
bool = true
|
|
break
|
|
end
|
|
end
|
|
else
|
|
local cfg = stringtotable(Config.Treasurehousekv["open_days"].value)
|
|
for i,v in ipairs(cfg) do
|
|
if openDay == v then
|
|
bool = true
|
|
break
|
|
end
|
|
end
|
|
end
|
|
return bool
|
|
end
|
|
|
|
function TreasureHouseModel:IsTreasureHouseNeedRed( )
|
|
local bool = false
|
|
local server_data = self:GetTreasureHouseTaskInfo()
|
|
for i,v in pairs(server_data) do
|
|
if v.state == 1 then
|
|
bool = true
|
|
break
|
|
end
|
|
end
|
|
local base_info = self:GetTreasureHouseBaseInfo()
|
|
if TableSize(base_info) > 0 and base_info.award_round ~= base_info.real_round then--如果有轮次没领的
|
|
bool = true
|
|
elseif TableSize(base_info) > 0 then
|
|
local data = base_info.count_awards
|
|
for i,v in ipairs(data) do
|
|
if v.stage == 1 then
|
|
bool = true
|
|
break
|
|
end
|
|
end
|
|
end
|
|
return bool
|
|
end
|
|
--获取珍宝阁本期时间
|
|
function TreasureHouseModel:GetTreasureTime( )
|
|
local base_info = self:GetTreasureHouseBaseInfo()
|
|
local period = 1
|
|
if TableSize(base_info) > 0 then
|
|
period = base_info.curr_period
|
|
end
|
|
local cfg = Config.Treasurehouseperiod
|
|
if cfg[period] then
|
|
local start_time = ServerTimeModel:getInstance():GetOpenServerTime() + (cfg[period].open_day_min-1) * 60 * 60 * 24
|
|
local end_time = ServerTimeModel:getInstance():GetOpenServerTime() + (cfg[period].open_day_max-1) * 60 * 60 * 24
|
|
local start_time_date = TimeUtil:timeConversion(start_time,"yyyy.mm.dd")
|
|
local end_time_date = "-"..HtmlColorTxt(TimeUtil:timeConversion(end_time,"yyyy.mm.dd"), ColorUtil.GREEN_DARK)
|
|
if period == TableSize(cfg) then
|
|
end_time_date = "起持续开放"
|
|
end
|
|
local str = string.format("本期时间: %s%s", HtmlColorTxt(start_time_date, ColorUtil.GREEN_DARK), end_time_date)
|
|
return str
|
|
end
|
|
return ""
|
|
end
|