|
|
- 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
|