PowerTurnTableModel = PowerTurnTableModel or BaseClass(BaseVo, true) local PowerTurnTableModel = PowerTurnTableModel PowerTurnTableModel.REQUEST_INFO = "PowerTurnTableModel.REQUEST_INFO" PowerTurnTableModel.UPDATE_VIEW_INFO = "PowerTurnTableModel.UPDATE_VIEW_INFO" -- 更新源能转盘红点 PowerTurnTableModel.OPEN_MAIN_VIEW = "PowerTurnTableModel.OPEN_MAIN_VIEW" -- 打开源能转盘界面 PowerTurnTableModel.OPEN_EXCHANGE_VIEW = "PowerTurnTableModel.OPEN_EXCHANGE_VIEW"--打开积分兑换界面 PowerTurnTableModel.START_TURN_ACTION = "PowerTurnTableModel.START_TURN_ACTION"--开始转盘动画 PowerTurnTableModel.UPDATE_RECORD_INFO = "PowerTurnTableModel.UPDATE_RECORD_INFO"--更新日志 PowerTurnTableModel.UPDATE_EXCHANGE_VIEW = "PowerTurnTableModel.UPDATE_EXCHANGE_VIEW"--刷新兑换界面 PowerTurnTableModel.OPEN_EXCHANGE_REQ_VIEW = "PowerTurnTableModel.OPEN_EXCHANGE_REQ_VIEW"--打开兑换请求界面 function PowerTurnTableModel:__init() PowerTurnTableModel.Instance = self self:Reset() end function PowerTurnTableModel:Reset() self.is_skip_turn_table_action = false self.server_award_info = {}--界面信息 self.record_info_list = {}--日志信息 self.exchange_info = {}--兑换界面信息 self.buy_toggle = {}--购买确认 self.login_red_list = {} self.time_id_list = {} self.time_red_list = {}--倒计时五小时有积分可以兑换就有红点 self.can_exchange_red_list = {}--可以兑换的红点列表 end function PowerTurnTableModel:getInstance() if self.Instance == nil then self.Instance = PowerTurnTableModel.New() end return self.Instance end --检查源能转盘开启 function PowerTurnTableModel:CheckPowerTurnTableIconBoolOpen( sub_type ) local base_type = CustomActivityModel.CustomActBaseType.POWER_TURNTABLE local sub_type = sub_type or CustomActivityModel:getInstance():getActMinSubType(base_type) local level = RoleManager.Instance.mainRoleInfo.level local act_list = CustomActivityModel:getInstance():getActList(base_type, sub_type) local is_open = false local end_time = 0 local open_level = 1 local icon_sub_type = base_type*1000 + sub_type if sub_type >= 10001 then icon_sub_type = base_type*100000 + sub_type end if act_list and act_list.etime then for l,w in pairs(act_list.condition_list) do if type(w) == "table" and w[1] == "role_lv" then open_level = tonumber(w[2]) break end end local have_time = TimeUtil:getServerTime( ) - act_list.stime end_time = act_list.etime - TimeUtil:getServerTime() is_open = have_time > 0 and end_time > 0 and open_level <= RoleManager.Instance.mainRoleInfo.level if GetModuleIsOpen(331,base_type) then if is_open then self:SetDelayTimeList(sub_type) ActivityIconManager:getInstance():addIcon(icon_sub_type, end_time) else ActivityIconManager:getInstance():deleteIcon(icon_sub_type) end else -- print("huangcong:KfActivityModel [62]: ",key) end else ActivityIconManager:getInstance():deleteIcon(icon_sub_type) end end function PowerTurnTableModel:SetDelayTimeList( sub_type ) if self.time_id_list[sub_type] then GlobalTimerQuest:CancelQuest(self.time_id_list[sub_type]) self.time_id_list[sub_type] = nil end if self.time_red_list[sub_type] then return end local base_type = CustomActivityModel.CustomActBaseType.POWER_TURNTABLE local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type) or {} if not act_list then return end local end_time = act_list.etime local haly_hour = 3600*5 local sec = end_time - TimeUtil:getServerTime() if sec > 0 then local function onTimer() sec = end_time - TimeUtil:getServerTime() if sec < haly_hour then--五小时有可以兑换的要给予红点且所有奖励有未购买完的 if self.time_id_list[sub_type] then GlobalTimerQuest:CancelQuest(self.time_id_list[sub_type]) self.time_id_list[sub_type] = nil end self.time_red_list[sub_type] = true self:CheckPowerTurnTableMainRedDot(sub_type) self:Fire(PowerTurnTableModel.UPDATE_VIEW_INFO,sub_type) end end onTimer() if not self.time_id_list[sub_type] then self.time_id_list[sub_type] = GlobalTimerQuest:AddPeriodQuest(onTimer, 1, -1) end end end --源能转盘信息 function PowerTurnTableModel:SetPowerTurnTableInfo( vo ) local sort_func = function ( a, b ) return a.id < b.id end table.sort(vo.pool_list, sort_func) for i,v in ipairs(vo.pool_list) do v.reward = stringtotable(v.reward)[1] end self.server_award_info[vo.sub_type] = vo self:Fire(PowerTurnTableModel.UPDATE_VIEW_INFO,vo.sub_type) self:CheckPowerTurnTableMainRedDot(vo.sub_type) end function PowerTurnTableModel:GetPowerTurnTableInfo( sub_type ) return self.server_award_info[sub_type] end function PowerTurnTableModel:CheckPowerTurnTableMainRedDot( sub_type ) local bool = false local base_type = CustomActivityModel.CustomActBaseType.POWER_TURNTABLE if not sub_type then return end local icon_sub_type = base_type*1000 + sub_type if sub_type >= 10001 then icon_sub_type = base_type*100000 + sub_type end local act_list = CustomActivityModel:getInstance():getActList(base_type, sub_type) if not act_list then return else local server_award_info = self:GetPowerTurnTableInfo(sub_type) if server_award_info and server_award_info.free_time and server_award_info.free_time > 0 then--免费红点 bool = true end if not bool and not self.login_red_list[sub_type] then--每次登陆给一次红点 bool = true end if not bool and self.time_red_list[sub_type] and self.can_exchange_red_list[sub_type] then--倒计时5小时兑换红点 bool = true end if not bool then local last_time_list = self:GetPowerTTScoreCookie()--积分按钮每日首次红点 local score = self.server_award_info[sub_type] and self.server_award_info[sub_type].score or 0 if not last_time_list[sub_type] then bool = score > 0 end end GlobalEventSystem:Fire(ActivityIconManager.UPDATE_ICON_TIPS, icon_sub_type, bool) end end --设置抽奖记录数据 function PowerTurnTableModel:SetRecordInfo( scmd ) self.record_info_list[scmd.sub_type] = scmd.list end function PowerTurnTableModel:GetRecordInfo( sub_type ) return self.record_info_list[sub_type] end --设置兑换界面数据 function PowerTurnTableModel:SetExchangeInfoList( scmd ) self.can_exchange_red_list[scmd.sub_type] = false for i,v in ipairs(scmd.swap_list) do v.reward = stringtotable(v.reward)[1] v.sort_id = v.id + (v.left_times == 0 and 1000 or 0)--兑换完置底 if v.left_times > 0 and scmd.cur_score >= v.score and not self.can_exchange_red_list[scmd.sub_type] then self.can_exchange_red_list[scmd.sub_type] = true end end local sort_func = function ( a, b ) return a.sort_id < b.sort_id end table.sort(scmd.swap_list, sort_func) self.exchange_info[scmd.sub_type] = scmd.swap_list self:CheckPowerTurnTableMainRedDot(scmd.sub_type) end --获得源能转盘兑换界面信息 function PowerTurnTableModel:GetExchangeInfoList( sub_type ) return self.exchange_info[sub_type] end --设置源能转盘红点cookie function PowerTurnTableModel:SetPowerTTScoreCookie( sub_type,time ) local list = self:GetPowerTTScoreCookie() or {} list[sub_type] = time CookieWrapper.Instance:SaveCookie(CookieLevelType.Account,CookieTimeType.TYPE_DAY2,CookieKey.POWER_TURN_TABLE_SCORE_RED,list) CookieWrapper.Instance:WriteAll() end --获得源能转盘红点cookie function PowerTurnTableModel:GetPowerTTScoreCookie( ) local bool = CookieWrapper.Instance:GetCookie(CookieLevelType.Account,CookieKey.POWER_TURN_TABLE_SCORE_RED) or {} return bool end