require("game.proto.190.Require190") require("game.mail.MailModel") require("game.mail.MailEvent") require("game.mail.MailItem") require("game.mail.MailAwardItem") MailController = MailController or BaseClass(BaseController) function MailController:__init() MailController.Instance = self self.model = MailModel:getInstance() self:RegisterAllProtocals() self:InitEvent() end function MailController:GetInstance() if MailController.Instance == nil then MailController.New() end return MailController.Instance end function MailController:RegisterAllProtocals() self:RegisterProtocal(19000, "Handler19000") --错误码 self:RegisterProtocal(19001, "Handler19001") --获得邮件列表 self:RegisterProtocal(19002, "Handler19002") --获得邮件详细信息 self:RegisterProtocal(19003, "Handler19003") --删除 self:RegisterProtocal(19004, "Handler19004") --增加邮件 self:RegisterProtocal(19005, "Handler19005") --收取附件 self:RegisterProtocal(19007, "Handler19007") --获得邮件基本信息 self:RegisterProtocal(19008, "Handler19008") --信件通知 -- self:RegisterProtocal(19010, "Handler19010") --处理玩家反馈信息 --self:RegisterProtocal(19006, "Handler19006") --发送社团邮件 --self:RegisterProtocal(19009, "Handler19009") --社团邮件发送次数 end function MailController:InitEvent() --绑定游戏开始后的回调方法 local function game_start_func() local delay_callback = function() self:SendFmtToGame(19001,"c",1) --获得邮件基本信息列表 -- self:SendFmtToGame(19001,"c",5) --获取交易邮件基本信息列表 self:SendFmtToGame(19008) --邮件通知 end setTimeout(delay_callback, 3) end GlobalEventSystem:Bind(EventName.GAME_START, game_start_func) --绑定获取邮件详细信息的请求 local request_19002_fun = function(mail_id) self:SendFmtToGame(19002, "l", mail_id) end self.model:Bind(MailEvent.GET_MAIL_DETAIL, request_19002_fun) --绑定删除邮件的请求 local request_19003_fun = function(mail_ids,type) local len = #mail_ids self:WriteBegin(19003) self:WriteFMT("h", len) for i, v in ipairs(mail_ids) do self:WriteFMT("l", v) end self:WriteFMT("c",type) self:SendToGame() end self.model:Bind(MailEvent.DELETE_MAIL, request_19003_fun) --绑定增加邮件的请求 local request_19004_fun = function() self:SendFmtToGame(19004) end self.model:Bind(MailEvent.ADD_MAIL, request_19004_fun) --绑定收取附件的请求 local request_19005_fun = function(mail_ids,type) local len = #mail_ids self:WriteBegin(19005) self:WriteFMT("h", len) if len > 0 then for i, v in ipairs(mail_ids) do self:WriteFMT("l", v) end end self:WriteFMT("c",type) self:SendToGame() end self.model:Bind(MailEvent.GET_MAIL_ATTACHMENT, request_19005_fun) --绑定获取邮件基本信息的请求 local request_19007_fun = function(mail_id) self:SendFmtToGame(19007, "l", mail_id) end self.model:Bind(MailEvent.GET_MAIL_ITEM, request_19007_fun) --绑定获取邮件通知的请求 local request_19008_fun = function() self:SendFmtToGame(19008) end self.model:Bind(MailEvent.GET_MAIL_INFORM, request_19008_fun) -- 绑定发送意见反馈的请求 local request_19010_fun = function (content) self:SendFmtToGame(19010, "s", content) end self.model:Bind(MailEvent.REQUEST_19010, request_19010_fun) end --处理错误码 function MailController:Handler19000() local scmd = SCMD19000.New(true) ErrorCodeShow(scmd.error_code) end --处理邮件基本信息列表的获取 function MailController:Handler19001() local scmd = SCMD19001.New(true) self.model:SetAllMailList(scmd.mail_list) self.model:Fire(MailEvent.UPDATE_MAIL_LIST) self.model:Fire(MailEvent.UPDATE_TOP_BAR_RED)--刷新邮件界面topbar的红点 end --处理邮件详细信息的获取 function MailController:Handler19002() local scmd = SCMD19002.New(true) -- local vo = self.model:HandleMailDetail(scmd) self.model:Fire(MailEvent.UPDATE_MAIL_DETAIL, scmd) self.model:Fire(MailEvent.GET_MAIL_ITEM, scmd.mail_id) end --处理邮件的删除 function MailController:Handler19003() local scmd = SCMD19003.New(true) if scmd.error_code == 1 then Message.show("邮件删除成功") self.model:DeleteMail(scmd.mail_ids) self.model:Fire(MailEvent.GET_MAIL_INFORM) self.model:Fire(MailEvent.UPDATE_TOP_BAR_RED)--刷新邮件界面topbar的红点 self:SendFmtToGame(19001,"c",1) --获得邮件基本信息列表 else ErrorCodeShow(scmd.error_code) end end --处理邮件的增加 function MailController:Handler19004() local scmd = SCMD19004.New(true) -- if ClientConfig.alpha_mode then return end --审核状态屏蔽邮件 暂时不需要屏蔽 self.model:AddMailList(scmd.mail_list) --增加邮件图标 MsgManager:getInstance():Add({type=Config.ConfigMainIcon.TipType.mail}) ------------------------------------------------------------ end --处理邮件附件的提取 function MailController:Handler19005() local scmd = SCMD19005.New(true) if scmd.error_code == 1 then Message.show("附件领取成功","award") else ErrorCodeShow(scmd.error_code) end if scmd.mail_ids and #scmd.mail_ids > 0 then for i, v in ipairs(scmd.mail_ids) do self.model:Fire(MailEvent.GET_MAIL_DETAIL, v.mail_id) end end self.model:Fire(MailEvent.UPDATE_TOP_BAR_RED)--刷新邮件界面topbar的红点 end --处理邮件基本信息的获取 function MailController:Handler19007() local scmd = SCMD19007.New(true) self.model:UpdateMailData(scmd) end --处理邮件的通知 function MailController:Handler19008() local scmd = SCMD19008.New(true) -- if ClientConfig.alpha_mode then return end --审核状态屏蔽邮件 暂时不需要屏蔽 -----------------屏蔽这里的邮件通知------------------- -- 0 - 无未读邮件,1 - 有未读邮件 self.model.show_mail_icon = scmd.is_unread_mail == 1 if self.model.show_mail_icon then --没有图标才增加图标 local bool = MsgManager:getInstance():IsMsgTypeShow(Config.ConfigMainIcon.TipType.mail) -- if not bool then MsgManager:getInstance():Add({type=Config.ConfigMainIcon.TipType.mail}) -- end else MsgManager:getInstance():Remove(Config.ConfigMainIcon.TipType.mail) end ---------------------------------------------------------- GlobalEventSystem:Fire(EventName.REFRESH_SOCIAL_RED_DOT) self.model:Fire(MailEvent.UPDATE_BTN_GRAY_BY_SELECTALL) self.model:Fire(MailEvent.UPDATE_TOP_BAR_RED)--刷新邮件界面topbar的红点 self.model:SortMailEffectTime() end -- -- 处理意见反馈的返回信息 -- function MailController:Handler19010() -- local vo = SCMD19010.New(true) -- if vo then -- if vo.error_code == 1 then -- GlobalEventSystem:Fire(GameSettingModel.FEEDBACK_SUCCESS) -- else -- ErrorCodeShow(vo.error_code) -- end -- end -- end