|
|
- FuliModel = FuliModel or BaseClass(BaseVo)
- local table_insert = table.insert
-
- function FuliModel:__init()
- FuliModel.Instance = self
- self:Reset()
- self:InitFuliSignCFG()
- self:InitFuliLevelCFG()
- self:InitFuliAICFG()
- self:InitFuliAITalkCFG()
- self:InitFuliTotalSignCFG()
- end
-
- function FuliModel:Reset()
- self.fuli_sign_info = {}--签到数据
- self.fuli_level_info = {}--冲级数据
- self.fuli_sign_cfg = {}--福利签到配置表
- self.fuli_level_cfg = {}--福利冲级配置表
- self.fuli_ai_cfg = {}--在线奖励配置表
- self.fuli_ai_talk_cfg = {}--在线奖励ai娘说话配置表
- self.fuli_ai_info = {}--在线奖励数据
- self.fuli_red_dot_info = {}--红点
- self.fuli_sign_round_cfg = {}--福利累积签到配置表
- self.callback_table = {}
- self.fuli_limit_package_info = false --开服限时礼包
- self.fuli_download_state = 0
- self.count_down_time = 9999999
- self:DeleteFuncCallBack("FuliModel:SetFuliAITime")
- end
-
- function FuliModel.GetInstance()
- if FuliModel.Instance == nil then
- FuliModel.Instance = FuliModel.New()
- end
- return FuliModel.Instance
- end
-
- function FuliModel.getInstance()
- if FuliModel.Instance == nil then
- FuliModel.Instance = FuliModel.New()
- end
- return FuliModel.Instance
- end
-
- function FuliModel:SetFuliSignInfo( vo )
- self.fuli_sign_info = vo
- self:ChangeVar("fuli_sign_info", self.fuli_sign_info, false, true)
- end
-
- function FuliModel:GetFuliSignInfo( )
- return self.fuli_sign_info
- end
-
- function FuliModel:InitFuliSignCFG( )
- local cfg = Config.Welfaresigninaward
- for i,v in pairs(cfg) do
- if not self.fuli_sign_cfg[v.round] then
- self.fuli_sign_cfg[v.round] = {}
- end
- self.fuli_sign_cfg[v.round][v.day] = v
- self.fuli_sign_cfg[v.round][v.day].award_list = stringtotable(v.award)
- end
- end
-
- function FuliModel:GetFuliSignCFGByRound( round )
- if round and self.fuli_sign_cfg[round] then
- return self.fuli_sign_cfg[round]
- else
- return self.fuli_sign_cfg[1]--做个容错
- end
- end
-
- function FuliModel:InitFuliLevelCFG( )
- local cfg = Config.Welfarelevelaward
- for k,v in pairs(cfg) do
- if not self.fuli_level_cfg[v.career] then
- self.fuli_level_cfg[v.career] = {}
- end
- self.fuli_level_cfg[v.career][v.id] = v
- self.fuli_level_cfg[v.career][v.id].award_list = stringtotable(v.award)
- if v.limit_num > 0 then
- self.fuli_level_cfg[v.career][v.id].award_limit_list = stringtotable(v.limit_award)
- --先给限定的奖励一个标记位
- for kk,vv in ipairs(self.fuli_level_cfg[v.career][v.id].award_limit_list) do
- vv.is_limit = true
- end
- for ii,vv in ipairs(self.fuli_level_cfg[v.career][v.id].award_list) do
- table_insert(self.fuli_level_cfg[v.career][v.id].award_limit_list, vv)
- end
- end
- end
- end
-
- function FuliModel:GetFuliLevelCFG(career )
- if career and self.fuli_level_cfg[career] then
- return self.fuli_level_cfg[career]
- else
- return {}--做个容错
- end
- end
-
- function FuliModel:GetFuliLevelReceiveInfo( level )
- local mainVo = RoleManager.Instance.mainRoleInfo
- local cfg = self:GetFuliLevelCFG(mainVo.career)
- local level = level or mainVo.level
- local info = {}
- for i,v in ipairs(cfg) do
- local item = {level = 0, is_get = false, can_get = false, limit_num = 0}
- item.level = v.level
- item.is_get = self:IsFuliLevelGet(v.id)
- item.can_get = level >= v.level
- item.limit_num = v.limit_num
- info[#info+1] = item
- end
- return info
- end
-
- function FuliModel:InitFuliAICFG( )
- local cfg = Config.Welfareonlineaward
- for k,v in pairs(cfg) do
- if not self.fuli_ai_cfg[v.type] then
- self.fuli_ai_cfg[v.type] = {}
- end
- self.fuli_ai_cfg[v.type][v.id] = v
- end
- end
-
- function FuliModel:GetFuliAICFG( type )
- if type and self.fuli_ai_cfg[type] then
- return self.fuli_ai_cfg[type]
- else
- return self.fuli_ai_cfg[1]--做个容错
- end
- end
-
- function FuliModel:GetFuliAICountTimeIndex( )
- local info = self:GetFuliAIInfo()
- if IsTableEmpty(info) then
- return
- end
- local online_time = info and info.duration_time or 0
- local cfg = self:GetFuliAICFG(info.type)
- local index = 1
- for i,v in ipairs(cfg) do
- if online_time < v.duration then
- index = v.id
- break
- end
- end
- return index
- end
-
- function FuliModel:InitFuliAITalkCFG( )
- local cfg = Config.Welfareonlinewords
- for k,v in pairs(cfg) do
- if not self.fuli_ai_talk_cfg[v.type] then
- self.fuli_ai_talk_cfg[v.type] = {}
- end
- self.fuli_ai_talk_cfg[v.type][v.id] = v
- end
- end
-
- function FuliModel:GetFuliAITalkCFG( type )
- if type and self.fuli_ai_talk_cfg[type] then
- return self.fuli_ai_talk_cfg[type]
- else
- return self.fuli_ai_talk_cfg[1]--做个容错
- end
- end
-
- function FuliModel:IsFuliLevelGet( id )
- local server_data = self:GetFuliLevelInfo()
- if TableSize(server_data) > 0 then
- return server_data.my_receive[id] == 1
- end
- return false
- end
- --获取限量礼包的被领取的值
- function FuliModel:GetFuliLevelLimitGetNum( id )
- local server_data = self:GetFuliLevelInfo()
- if TableSize(server_data) > 0 and server_data.limit_state[id] then
- return server_data.limit_state[id]
- else
- return 0
- end
- end
-
- function FuliModel:SetFuliLevelInfo( vo )
- self.fuli_level_info = vo
- self:ChangeVar("fuli_level_info", self.fuli_level_info, false, true)
- end
-
- function FuliModel:GetFuliLevelInfo( vo )
- return self.fuli_level_info
- end
-
- function FuliModel:SetFuliDownState( state )
- self.fuli_download_state = state
- self:ChangeVar("fuli_download_state", self.fuli_download_state, false, true)
- end
-
- function FuliModel:GetFuliDownState( )
- return self.fuli_download_state
- end
-
- function FuliModel:SetFuliAIInfo( vo )
- self.fuli_ai_info = vo
- self:SetFuliAITime()
- self:Fire(FuliConst.UPDATE_FULI_AI_INFO)
- end
-
- function FuliModel:GetFuliAIInfo( )
- return self.fuli_ai_info
- end
-
- function FuliModel:IsReceiveFuliDownReward( )
-
- end
-
-
- function FuliModel:IsFuliNeedRedAll( )
- for k,v in pairs(FuliConst.TAB_ID) do
- self:IsFuliNeedRed(v)
- end
- -------------------------
- --万物宝典
- local temp_list = CustomActivityModel:getInstance():getAllActListByBaseType(CustomActivityModel.CustomActBaseType.CONTRACT)
- for i,v in pairs(temp_list or {}) do
- self:IsFuliNeedRed(33100000 + CustomActivityModel.CustomActBaseType.CONTRACT * 1000 + v.sub_type)
- end
- end
-
- function FuliModel:IsFuliNeedRed( tab_id )
- local contract_start_num = 33100000 + CustomActivityModel.CustomActBaseType.CONTRACT * 1000
- -------------------------
- local bool = false
- if tab_id == FuliConst.TAB_ID.SIGN then
- bool = self:IsFuliSignNeedRed()
- elseif tab_id == FuliConst.TAB_ID.AI then
- bool = self:IsFuliAINeedRed()
- elseif tab_id == FuliConst.TAB_ID.LEVEL then
- bool = self:IsFuliLevelNeedRed()
- elseif tab_id == FuliConst.TAB_ID.DOWNLOAD then
- bool = self:IsFuliDownloadNeedRed()
- elseif tab_id > contract_start_num and tab_id <= contract_start_num+999 then
- --万物宝典
- local open_day = ServerTimeModel:getInstance():GetOpenServerDay()
- local role_lv = RoleManager.Instance.mainRoleInfo.level
- if role_lv >= Config.Modulesub["331@74"].open_lv and open_day>=Config.Modulesub["331@74"].open_day then
- bool = ContractModel:getInstance():GetAllRedBySubType(false,tab_id-contract_start_num)
- end
- else
- bool = false
- end
- self.fuli_red_dot_info[tab_id] = bool
- self:Fire(FuliConst.ANS_UPDATE_FULI_RED_DOT,tab_id,bool)
- end
-
- function FuliModel:GetAllFuliRedDot( )
- return self.fuli_red_dot_info
- end
-
- function FuliModel:IsFuliSignNeedRed( )
- local server_data = self:GetFuliSignInfo()
- local bool = false
- if TableSize(server_data) > 0 then
- if server_data.sign_in_status == 0 then
- bool = true
- elseif server_data.sign_in_status == 1 then--签到了第一次看看vip
- local cfg = self:GetFuliSignCFGByRound(server_data.round)
- local vip = RoleManager.Instance.mainRoleInfo.vip_flag or 0
- if cfg and cfg[server_data.days] and cfg[server_data.days].vip_lv > 0 then
- bool = vip >= cfg[server_data.days].vip_lv
- end
- end
- if not bool then--上面都不满足 那看看能不能领累积签到奖励吧
- local total_state = server_data.total_state
- local total_cfg = self:GetFuliTotalSignCFGByRound(server_data.round)
- for i,v in ipairs(total_cfg) do
- if v[2] <= server_data.days and total_state[i] ~= 1 then
- bool = true
- break
- end
- end
- end
- end
- return bool
- end
-
- function FuliModel:IsFuliLevelNeedRed( )
- local cfg = self:GetFuliLevelCFG(RoleManager.Instance.mainRoleInfo.career)
- local server_data = self:GetFuliLevelInfo()
- local level = RoleManager.Instance.mainRoleInfo.level
- local bool = false
- for i,v in ipairs(cfg) do
- if not self:IsFuliLevelGet(v.id) and level >= v.level then--可以领且没有领
- bool = true
- break
- end
- end
- GlobalEventSystem:Fire(ActivityIconManager.UPDATE_ICON_TIPS, 16003, bool)
- return bool
- end
-
- function FuliModel:IsFuliAINeedRed( )
- local server_data = self:GetFuliAIInfo()
- local bool = false
- local cfg = self:GetFuliAICFG(server_data.type)
- for i,v in ipairs(cfg) do
- if server_data.duration_time >= v.duration and server_data.my_receive[i] ~= 1 then
- bool = true
- break
- end
- end
- return bool
- end
-
- function FuliModel:IsFuliDownloadNeedRed( )
- local is_support = StepPackModule:getInstance():IsSupport()
- local down_state = StepPackModule:getInstance():CurrentPackState()
- local bool = false
- if is_support then
- local get_state = self:GetFuliDownState()
- if get_state == 0 and down_state == 3 then
- bool = true
- end
- end
- return bool
- end
-
- function FuliModel:SetFuliAITime( )
- local server_data = self:GetFuliAIInfo()
- local bool = false
- local cfg = self:GetFuliAICFG(server_data.type)
- local time = {}
- for i,v in ipairs(cfg) do
- time[v.duration] = true
- end
- local function callback( ... )
- self.fuli_ai_info.duration_time = self.fuli_ai_info.duration_time + 1
- if time[self.fuli_ai_info.duration_time] then
- self:Fire(FuliConst.UPDATE_FULI_RED_DOT, FuliConst.TAB_ID.AI)--触发红点
- self:Fire(FuliConst.START_HAND_ACTION)--触发手的特效
- end
- end
- self:SetFuncCallBack(callback, "FuliModel:SetFuliAITime")
- end
-
- function FuliModel:TimeLater()
- local function on_answer_time( )
- if self.count_down_time <= 0 or TableSize(self.callback_table) <=0 then
- if self.question_time_id then
- GlobalTimerQuest:CancelQuest(self.question_time_id)
- self.question_time_id = nil
- self.count_down_time = 9999999
- end
- else
- self.count_down_time = self.count_down_time - 1
- for k,v in pairs(self.callback_table) do
- if type(v) == "function" then
- v()
- end
- end
- end
- end
- if not self.question_time_id then
- self.question_time_id = GlobalTimerQuest:AddPeriodQuest(on_answer_time, 1, -1)
- end
- end
-
- function FuliModel:DeleteFuncCallBack( index )--删除计时器方法列表里面的方法
- self.callback_table[index] = nil
- end
-
- function FuliModel:SetFuncCallBack( func,index )--添加计时器方法列表里面的方法
- if type(func) == "function" then
- self.callback_table[index] = func
- self:TimeLater()
- end
- end
-
- function FuliModel:InitFuliTotalSignCFG( )
- local cfg = Config.Welfaresigninround
- for i,v in ipairs(cfg) do
- self.fuli_sign_round_cfg[i] = {}
- local month_award = stringtotable(cfg[i].month_award)
- for ii,vv in ipairs(month_award) do
- self.fuli_sign_round_cfg[i][vv[1]] = vv
- end
- end
- end
-
- function FuliModel:GetFuliTotalSignCFGByRound( round )
- return self.fuli_sign_round_cfg[round]
- end
-
-
- --福利等级获得ICON
- function FuliModel:UpdateFuliLevelActIcon( level )
- if not GetModuleIsOpen(160,3) then
- return
- end
- local open_day = ServerTimeModel:getInstance():GetOpenServerDay()
- if open_day > 9999 then--开服前9999天才显示
- ActivityIconManager:getInstance():deleteIcon(16003)
- return
- end
- local award_vo = self:GetFuliLevelReceiveInfo(level)
- if award_vo and award_vo[#award_vo] and award_vo[#award_vo].is_get then
- ActivityIconManager:getInstance():deleteIcon(16003)
- return
- end
-
- local icon_cfg = FuliConst.LEVEL_ICON_CFG
- local cur_choose_cfg = nil
- local max_cfg = nil
- for k,v in pairsByKeys(icon_cfg) do
- if k >= level then
- for ii,vv in ipairs(award_vo) do
- if k == vv.level then
- if not vv.is_get then
- cur_choose_cfg = v
- break
- end
- end
- end
- if cur_choose_cfg then
- break
- end
- end
- max_cfg = v
- end
-
- if not cur_choose_cfg then--如果还没找到就看最后一个是否领取
- local max_choose_cfg = max_cfg[RoleManager.Instance.mainRoleInfo.career] or max_cfg[0]
- for i,v in ipairs(award_vo) do
- if v.level == max_choose_cfg.lv_need then
- if v.can_get and not v.is_get then
- cur_choose_cfg = max_cfg
- end
- break
- end
- end
- end
- if cur_choose_cfg then--如果找到当前配置
- local cur_career_cfg = cur_choose_cfg[RoleManager.Instance.mainRoleInfo.career] or cur_choose_cfg[0]
- if cur_career_cfg then
- if self.cur_career_cfg and self.cur_career_cfg.lv_need ~= cur_career_cfg.lv_need then--不相等就删除免得状态残留
- ActivityIconManager:getInstance():deleteIcon(16003)
- end
- self.cur_career_cfg = cur_career_cfg
- local icon_cfg = ActivityIconManager:getInstance().icon_cfg_new_list[16003]
- if icon_cfg then
- icon_cfg.icon_name = cur_career_cfg.icon_id
- ActivityIconManager:getInstance():addIcon(16003, -1, cur_career_cfg.content)
- else
- ActivityIconManager:getInstance():deleteIcon(16003)
- end
- else
- ActivityIconManager:getInstance():deleteIcon(16003)
- end
- else
- ActivityIconManager:getInstance():deleteIcon(16003)
- end
- end
|