源战役客户端
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 
 

220 строки
6.5 KiB

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