源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

217 lines
6.7 KiB

  1. require("game.proto.190.Require190")
  2. require("game.mail.MailModel")
  3. require("game.mail.MailEvent")
  4. require("game.mail.MailItem")
  5. require("game.mail.MailAwardItem")
  6. MailController = MailController or BaseClass(BaseController)
  7. function MailController:__init()
  8. MailController.Instance = self
  9. self.model = MailModel:getInstance()
  10. self:RegisterAllProtocals()
  11. self:InitEvent()
  12. end
  13. function MailController:GetInstance()
  14. if MailController.Instance == nil then
  15. MailController.New()
  16. end
  17. return MailController.Instance
  18. end
  19. function MailController:RegisterAllProtocals()
  20. self:RegisterProtocal(19000, "Handler19000") --错误码
  21. self:RegisterProtocal(19001, "Handler19001") --获得邮件列表
  22. self:RegisterProtocal(19002, "Handler19002") --获得邮件详细信息
  23. self:RegisterProtocal(19003, "Handler19003") --删除
  24. self:RegisterProtocal(19004, "Handler19004") --增加邮件
  25. self:RegisterProtocal(19005, "Handler19005") --收取附件
  26. self:RegisterProtocal(19007, "Handler19007") --获得邮件基本信息
  27. self:RegisterProtocal(19008, "Handler19008") --信件通知
  28. -- self:RegisterProtocal(19010, "Handler19010") --处理玩家反馈信息
  29. --self:RegisterProtocal(19006, "Handler19006") --发送社团邮件
  30. --self:RegisterProtocal(19009, "Handler19009") --社团邮件发送次数
  31. end
  32. function MailController:InitEvent()
  33. --绑定游戏开始后的回调方法
  34. local function game_start_func()
  35. local delay_callback = function()
  36. self:SendFmtToGame(19001,"c",1) --获得邮件基本信息列表
  37. -- self:SendFmtToGame(19001,"c",5) --获取交易邮件基本信息列表
  38. self:SendFmtToGame(19008) --邮件通知
  39. end
  40. setTimeout(delay_callback, 3)
  41. end
  42. GlobalEventSystem:Bind(EventName.GAME_START, game_start_func)
  43. --绑定获取邮件详细信息的请求
  44. local request_19002_fun = function(mail_id)
  45. self:SendFmtToGame(19002, "l", mail_id)
  46. end
  47. self.model:Bind(MailEvent.GET_MAIL_DETAIL, request_19002_fun)
  48. --绑定删除邮件的请求
  49. local request_19003_fun = function(mail_ids,type)
  50. local len = #mail_ids
  51. self:WriteBegin(19003)
  52. self:WriteFMT("h", len)
  53. for i, v in ipairs(mail_ids) do
  54. self:WriteFMT("l", v)
  55. end
  56. self:WriteFMT("c",type)
  57. self:SendToGame()
  58. end
  59. self.model:Bind(MailEvent.DELETE_MAIL, request_19003_fun)
  60. --绑定增加邮件的请求
  61. local request_19004_fun = function()
  62. self:SendFmtToGame(19004)
  63. end
  64. self.model:Bind(MailEvent.ADD_MAIL, request_19004_fun)
  65. --绑定收取附件的请求
  66. local request_19005_fun = function(mail_ids,type)
  67. local len = #mail_ids
  68. self:WriteBegin(19005)
  69. self:WriteFMT("h", len)
  70. if len > 0 then
  71. for i, v in ipairs(mail_ids) do
  72. self:WriteFMT("l", v)
  73. end
  74. end
  75. self:WriteFMT("c",type)
  76. self:SendToGame()
  77. end
  78. self.model:Bind(MailEvent.GET_MAIL_ATTACHMENT, request_19005_fun)
  79. --绑定获取邮件基本信息的请求
  80. local request_19007_fun = function(mail_id)
  81. self:SendFmtToGame(19007, "l", mail_id)
  82. end
  83. self.model:Bind(MailEvent.GET_MAIL_ITEM, request_19007_fun)
  84. --绑定获取邮件通知的请求
  85. local request_19008_fun = function()
  86. self:SendFmtToGame(19008)
  87. end
  88. self.model:Bind(MailEvent.GET_MAIL_INFORM, request_19008_fun)
  89. -- 绑定发送意见反馈的请求
  90. local request_19010_fun = function (content)
  91. self:SendFmtToGame(19010, "s", content)
  92. end
  93. self.model:Bind(MailEvent.REQUEST_19010, request_19010_fun)
  94. end
  95. --处理错误码
  96. function MailController:Handler19000()
  97. local scmd = SCMD19000.New(true)
  98. ErrorCodeShow(scmd.error_code)
  99. end
  100. --处理邮件基本信息列表的获取
  101. function MailController:Handler19001()
  102. local scmd = SCMD19001.New(true)
  103. self.model:SetAllMailList(scmd.mail_list)
  104. self.model:Fire(MailEvent.UPDATE_MAIL_LIST)
  105. self.model:Fire(MailEvent.UPDATE_TOP_BAR_RED)--刷新邮件界面topbar的红点
  106. end
  107. --处理邮件详细信息的获取
  108. function MailController:Handler19002()
  109. local scmd = SCMD19002.New(true)
  110. -- local vo = self.model:HandleMailDetail(scmd)
  111. self.model:Fire(MailEvent.UPDATE_MAIL_DETAIL, scmd)
  112. self.model:Fire(MailEvent.GET_MAIL_ITEM, scmd.mail_id)
  113. end
  114. --处理邮件的删除
  115. function MailController:Handler19003()
  116. local scmd = SCMD19003.New(true)
  117. if scmd.error_code == 1 then
  118. Message.show("邮件删除成功")
  119. self.model:DeleteMail(scmd.mail_ids)
  120. self.model:Fire(MailEvent.GET_MAIL_INFORM)
  121. self.model:Fire(MailEvent.UPDATE_TOP_BAR_RED)--刷新邮件界面topbar的红点
  122. self:SendFmtToGame(19001,"c",1) --获得邮件基本信息列表
  123. else
  124. ErrorCodeShow(scmd.error_code)
  125. end
  126. end
  127. --处理邮件的增加
  128. function MailController:Handler19004()
  129. local scmd = SCMD19004.New(true)
  130. -- if ClientConfig.alpha_mode then return end --审核状态屏蔽邮件 暂时不需要屏蔽
  131. self.model:AddMailList(scmd.mail_list)
  132. --增加邮件图标
  133. MsgManager:getInstance():Add({type=Config.ConfigMainIcon.TipType.mail})
  134. ------------------------------------------------------------
  135. end
  136. --处理邮件附件的提取
  137. function MailController:Handler19005()
  138. local scmd = SCMD19005.New(true)
  139. if scmd.error_code == 1 then
  140. Message.show("附件领取成功","award")
  141. else
  142. ErrorCodeShow(scmd.error_code)
  143. end
  144. if scmd.mail_ids and #scmd.mail_ids > 0 then
  145. for i, v in ipairs(scmd.mail_ids) do
  146. self.model:Fire(MailEvent.GET_MAIL_DETAIL, v.mail_id)
  147. end
  148. end
  149. self.model:Fire(MailEvent.UPDATE_TOP_BAR_RED)--刷新邮件界面topbar的红点
  150. end
  151. --处理邮件基本信息的获取
  152. function MailController:Handler19007()
  153. local scmd = SCMD19007.New(true)
  154. self.model:UpdateMailData(scmd)
  155. end
  156. --处理邮件的通知
  157. function MailController:Handler19008()
  158. local scmd = SCMD19008.New(true)
  159. -- if ClientConfig.alpha_mode then return end --审核状态屏蔽邮件 暂时不需要屏蔽
  160. -----------------屏蔽这里的邮件通知-------------------
  161. -- 0 - 无未读邮件,1 - 有未读邮件
  162. self.model.show_mail_icon = scmd.is_unread_mail == 1
  163. if self.model.show_mail_icon then
  164. --没有图标才增加图标
  165. local bool = MsgManager:getInstance():IsMsgTypeShow(Config.ConfigMainIcon.TipType.mail)
  166. -- if not bool then
  167. MsgManager:getInstance():Add({type=Config.ConfigMainIcon.TipType.mail})
  168. -- end
  169. else
  170. MsgManager:getInstance():Remove(Config.ConfigMainIcon.TipType.mail)
  171. end
  172. ----------------------------------------------------------
  173. GlobalEventSystem:Fire(EventName.REFRESH_SOCIAL_RED_DOT)
  174. self.model:Fire(MailEvent.UPDATE_BTN_GRAY_BY_SELECTALL)
  175. self.model:Fire(MailEvent.UPDATE_TOP_BAR_RED)--刷新邮件界面topbar的红点
  176. self.model:SortMailEffectTime()
  177. end
  178. -- -- 处理意见反馈的返回信息
  179. -- function MailController:Handler19010()
  180. -- local vo = SCMD19010.New(true)
  181. -- if vo then
  182. -- if vo.error_code == 1 then
  183. -- GlobalEventSystem:Fire(GameSettingModel.FEEDBACK_SUCCESS)
  184. -- else
  185. -- ErrorCodeShow(vo.error_code)
  186. -- end
  187. -- end
  188. -- end