require("sysinfo.MessageItem") require("sysinfo.ChuanwenItem") require("game.chat.HornTv") require("sysinfo.SysInfoMiniView") require("sysinfo.MessageItemNew") require("sysinfo.SysInfoNoticeView") require("sysinfo.ExpMessageItem") require("sysinfo.SysInfoExpView") require("sysinfo.SysInfoHornView") require("sysinfo.MiniMessageView") SysInfoCtrl = SysInfoCtrl or BaseClass() SysInfoCtrl.SysInfoType = { MINI = 1, NOTICE = 2, EXP = 3, HORN = 4, } function SysInfoCtrl:__init() if SysInfoCtrl.Instance ~= nil then LogError("SysInfoCtrl is a singleton class") end SysInfoCtrl.Instance = self self.callback_table = {} --回调列表 self.mini_view = MiniMessageView.New() self.mini_view:Open() self.notice_view = SysInfoNoticeView.New() self.horn_view = SysInfoHornView.New() self.exp_view = SysInfoExpView.New() self.count_down_time = 9999999 --倒计时时间 self.down_time_id = false self.msg_handle_map = { [SysInfoCtrl.SysInfoType.MINI] = SysInfoCtrl.AppendMiniMsg, [SysInfoCtrl.SysInfoType.NOTICE] = SysInfoCtrl.AppendNoticeMsg, [SysInfoCtrl.SysInfoType.HORN] = SysInfoCtrl.AppendHornMsg, [SysInfoCtrl.SysInfoType.EXP] = SysInfoCtrl.AppendExpMsg, } end function SysInfoCtrl:__delete() self.mini_view:DeleteMe() self.notice_view:DeleteMe() self.horn_view:DeleteMe() self.exp_view:DeleteMe() end function SysInfoCtrl:AppendMsg(msg_type, ...) local handle_func = self.msg_handle_map[msg_type] if not handle_func then print ("Error!SystemInfo Type Error!", msg_type) return end handle_func(self, ...) end function SysInfoCtrl:AppendMiniMsg(content) if content == nil or content == "" then return end if self.mini_view.can_show then self.mini_view:AppendMessage(content) end end function SysInfoCtrl:AppendNoticeMsg(content) if SceneManager:getInstance():IsNoonQuizScene() then return end self.notice_view:AppendMessage(content) end function SysInfoCtrl:AppendHornMsg(content) if SceneManager:getInstance():IsNoonQuizScene() then return end self.horn_view:AppendMessage(content) end function SysInfoCtrl:AppendExpMsg( content, percent, is_normal, is_score ) if not lua_viewM.main_cancas_last_visible then return end if content == nil or content == "" then return end self.exp_view:AppendMessage(content, percent, is_normal, is_score) end function SysInfoCtrl:HideHornView(bool) if self.horn_view then self.horn_view:SetHide(bool) end end function SysInfoCtrl:HideNoticeView(bool) if self.notice_view then self.notice_view:SetHide(bool) end end function SysInfoCtrl:HideMiniView(bool) if self.mini_view then self.mini_view:SetHide(bool) end end function SysInfoCtrl:ShowMiniView() if self.mini_view then self.mini_view.can_show = true end end function SysInfoCtrl:TimeLater() local function on_time_down( ) if self.count_down_time <= 0 or TableSize(self.callback_table) <=0 then if self.down_time_id then GlobalTimerQuest:CancelQuest(self.down_time_id) self.down_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.down_time_id then self.down_time_id = GlobalTimerQuest:AddPeriodQuest(on_time_down, 1, -1) end end function SysInfoCtrl:DeleteFuncCallBack( index )--删除计时器方法列表里面的方法 self.callback_table[index] = nil end function SysInfoCtrl:SetFuncCallBack( func,index )--添加计时器方法列表里面的方法 if type(func) == "function" then self.callback_table[index] = func self:TimeLater() end end