源战役客户端
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 
 
 
 

217 líneas
6.7 KiB

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