map_msg.go 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  1. package msg
  2. import (
  3. "rocommon"
  4. "rocommon/util"
  5. "roserver/baseserver/model"
  6. model2 "roserver/game/model"
  7. "roserver/serverproto"
  8. )
  9. //todo...
  10. // 后续会拆分成一个服务器来处理
  11. func init() {
  12. //角色进入地图
  13. //serverproto.Handle_GAME_CSPlayerEnterMapReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  14. // msg := ev.Msg().(*serverproto.CSPlayerEnterMapReq)
  15. // util.DebugF("receive CSPlayerEnterMapReq msg=%v", msg)
  16. // role := model2.RoleMag.GetRoleOrKick(cliId, ev)
  17. // if role == nil {
  18. // return
  19. // }
  20. //
  21. // role.(model2.RoleMapOuter).PlayerEnterMap(msg)
  22. //})
  23. ////角色离开地图
  24. //serverproto.Handle_GAME_CSPlayerLeaveMapReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  25. // msg := ev.Msg().(*serverproto.CSPlayerLeaveMapReq)
  26. // util.DebugF("receive CSPlayerLeaveMapReq msg=%v", msg)
  27. // role := model2.RoleMag.GetRoleOrKick(cliId, ev)
  28. // if role == nil {
  29. // return
  30. // }
  31. //
  32. // //role.(model2.RoleMapOuter).PlayerLeave(msg.Pos)
  33. //})
  34. //
  35. ////移动
  36. //serverproto.Handle_GAME_CSPlayerMoveReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  37. // msg := ev.Msg().(*serverproto.CSPlayerMoveReq)
  38. // //util.DebugF("receive CSPlayerMoveReq msg=%v", msg)
  39. // role := model2.RoleMag.GetRoleOrKick(cliId, ev)
  40. // if role == nil {
  41. // return
  42. // }
  43. //
  44. // //role.(model2.RoleMapOuter).PlayerMove(msg)
  45. //})
  46. //
  47. ////获取其他玩家角色信息(地图AOI像是使用)
  48. //serverproto.Handle_GAME_CSMapGetOtherPlayersInfoReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  49. // msg := ev.Msg().(*serverproto.CSMapGetOtherPlayersInfoReq)
  50. // util.DebugF("receive CSMapGetOtherPlayersInfoReq msg=%v", msg)
  51. // role := model2.RoleMag.GetRoleOrKick(cliId, ev)
  52. // if role == nil {
  53. // return
  54. // }
  55. //
  56. // //超过获取数据上限
  57. // if len(msg.PlayerList) > 30 {
  58. // util.WarnF("uid=%v CSGetOtherPlayersInfoReq player beyond limit len=%v", role.GetUUid(), len(msg.PlayerList))
  59. // return
  60. // }
  61. //
  62. // //获取昵称,外观等
  63. // reqMsg := &serverproto.CSMapGetOtherPlayersInfoReq{}
  64. // reqMsg.PlayerList = msg.PlayerList
  65. // //发送给Aoi Server获取信息
  66. // if len(reqMsg.PlayerList) > 0 {
  67. // //role.(*model2.Role).SendAoi(reqMsg)
  68. // }
  69. //})
  70. ////消息来自Aoi
  71. //serverproto.Handle_GAME_SCMapOtherPlayersInfoNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  72. // msg := ev.Msg().(*serverproto.SCMapOtherPlayersInfoNtf)
  73. // util.DebugF("receive SCOtherPlayersInfoNtf msg=%v", msg)
  74. //
  75. // role := model2.RoleMag.GetRole(cliId)
  76. // if role == nil {
  77. // return
  78. // }
  79. //
  80. // role.ReplayGate(msg, true)
  81. //})
  82. ////客户端播放动作请求
  83. //serverproto.Handle_GAME_CSPlayerActionReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  84. // msg := ev.Msg().(*serverproto.CSPlayerActionReq)
  85. // util.DebugF("receive CSPlayerActionReq msg=%v", msg)
  86. // role := model2.RoleMag.GetRoleOrKick(cliId, ev)
  87. // if role == nil {
  88. // return
  89. // }
  90. //
  91. // //判断是否存在该动作
  92. // ackMsg := &serverproto.SCPlayerActionAck{
  93. // Error: int32(serverproto.ErrorCode_ERROR_OK),
  94. // ActionId: msg.ActionId,
  95. // Pos: msg.Pos,
  96. // }
  97. // if msg.ActionId <= 0 {
  98. // ackMsg.Error = int32(serverproto.ErrorCode_ERROR_FAIL)
  99. // } else {
  100. // ackMsg.Error = int32(role.(model2.RoleMapOuter).MapDoAction(msg.ActionId, msg.Pos))
  101. // }
  102. // //返回错误,否则发送给BattleBoss预处理boss召唤
  103. // if ackMsg.Error != int32(serverproto.ErrorCode_ERROR_OK) {
  104. // role.ReplayGate(ackMsg, true)
  105. // }
  106. //})
  107. ///////////////////////////////WorldBoss
  108. //挑战WorldBoss
  109. serverproto.Handle_GAME_CSPlayerChallengeSummonReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  110. msg := ev.Msg().(*serverproto.CSPlayerChallengeSummonReq)
  111. role := model2.RoleMag.GetRoleOrKick(cliId, ev)
  112. if role == nil {
  113. return
  114. }
  115. util.DebugF("uid=%v receive CSPlayerChallengeSummonReq msg=%v", role.GetUUid(), msg)
  116. role.(model2.RoleMapOuter).MapPlayerChallengeWorldBoss(msg.ChallengeBossUid, msg.BossSummonIdx, "NOAOI")
  117. })
  118. //from battle boss
  119. serverproto.Handle_GAME_SCPlayerChallengeSummonAck = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  120. msg := ev.Msg().(*serverproto.SCPlayerChallengeSummonAck)
  121. role := model2.RoleMag.GetRole(cliId)
  122. if role == nil {
  123. return
  124. }
  125. util.DebugF("uid=%v receive SCPlayerChallengeSummonAck msg=%v", role.GetUUid(), msg)
  126. if msg.Error == int32(serverproto.ErrorCode_ERROR_OK) &&
  127. msg.BossInfo != nil {
  128. role.(model2.RoleMapOuter).DoMapPlayerChallengeWorldBoss(msg.BossInfo.BossId)
  129. }
  130. role.ReplayGate(msg, true)
  131. })
  132. //离开boss场景req
  133. serverproto.Handle_GAME_CSPlayerLeaveChallengeReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  134. msg := ev.Msg().(*serverproto.CSPlayerLeaveChallengeReq)
  135. role := model2.RoleMag.GetRoleOrKick(cliId, ev)
  136. if role == nil {
  137. return
  138. }
  139. util.DebugF("uid=%v receive CSPlayerLeaveChallengeReq msg=%v", role.GetUUid(), msg)
  140. role.(*model2.Role).PlayerBattleBossOffline()
  141. })
  142. //离开boss场景(from battle boss server)
  143. serverproto.Handle_GAME_SSPlayerLeaveChallengeNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  144. msg := ev.Msg().(*serverproto.SSPlayerLeaveChallengeNtf)
  145. util.DebugF("receive SSPlayerLeaveChallengeNtf msg=%v", msg)
  146. ntfMsg := &serverproto.SCPlayerLeaveChallengeNtf{
  147. Uid: msg.LeaveUid,
  148. }
  149. for idx := range msg.NotifyList {
  150. role := model2.RoleMag.GetRoleFromUUid(msg.NotifyList[idx])
  151. if role == nil {
  152. continue
  153. }
  154. role.ReplayGate(ntfMsg, true)
  155. }
  156. })
  157. //进入boss场景
  158. serverproto.Handle_GAME_SSPlayerEnterChallengeNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  159. msg := ev.Msg().(*serverproto.SSPlayerEnterChallengeNtf)
  160. util.DebugF("receive SSPlayerEnterChallengeNtf msg=%v", msg)
  161. ntfMsg := &serverproto.SCPlayerChallengeSummonNtf{
  162. BossUid: msg.BossUid,
  163. SelfUid: msg.EnterUid,
  164. SelfChangePlayId: msg.SelfChangePlayId,
  165. SummonBossType: msg.SummonBossType,
  166. }
  167. ntfMsg.FightList = append(msg.FightList)
  168. //通知自己
  169. if len(msg.NotifyList) <= 0 {
  170. role := model2.RoleMag.GetRoleFromUUid(msg.EnterUid)
  171. if role == nil {
  172. return
  173. }
  174. role.(*model2.Role).GetRoleMap().ChallengeBossId = msg.BossUid
  175. role.ReplayGate(ntfMsg, true)
  176. } else {
  177. for idx := range msg.NotifyList {
  178. role := model2.RoleMag.GetRoleFromUUid(msg.NotifyList[idx])
  179. if role == nil {
  180. continue
  181. }
  182. role.ReplayGate(ntfMsg, true)
  183. }
  184. }
  185. })
  186. //血量上报
  187. serverproto.Handle_GAME_CSPlayerChallengeHpReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  188. msg := ev.Msg().(*serverproto.CSPlayerChallengeHpReq)
  189. role := model2.RoleMag.GetRoleOrKick(cliId, ev)
  190. if role == nil {
  191. return
  192. }
  193. util.DebugF("uid=%v receive CSPlayerChallengeHpReq msg=%v", role.GetUUid(), msg)
  194. role.(model2.RoleMapOuter).MapWorldBossHp(msg.DamageHp)
  195. })
  196. //bossHP通知(from battle boss server)
  197. serverproto.Handle_GAME_SSPlayerChallengeHpNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  198. msg := ev.Msg().(*serverproto.SSPlayerChallengeHpNtf)
  199. util.DebugF("receive SSPlayerChallengeHpNtf msg:=%v", msg)
  200. ntfMsg := &serverproto.SCPlayerChallengeHpNtf{
  201. CurBossHp: msg.CurBossHp,
  202. }
  203. for idx := range msg.NotifyList {
  204. role := model2.RoleMag.GetRoleFromUUid(msg.NotifyList[idx])
  205. if role == nil {
  206. continue
  207. }
  208. role.ReplayGate(ntfMsg, true)
  209. }
  210. })
  211. //挑战结果通知(from battle boss server)
  212. serverproto.Handle_GAME_SSPlayerChallengeResultNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  213. msg := ev.Msg().(*serverproto.SSPlayerChallengeResultNtf)
  214. util.DebugF("receive SSPlayerChallengeResultNtf msg=%v", msg)
  215. ntfMsg := &serverproto.SCPlayerChallengeResultNtf{
  216. Result: msg.Result,
  217. }
  218. for idx := range msg.NotifyList {
  219. role := model2.RoleMag.GetRoleFromUUid(msg.NotifyList[idx])
  220. if role == nil {
  221. continue
  222. }
  223. role.(*model2.Role).GetRoleMap().ChallengeBossId = 0
  224. role.ReplayGate(ntfMsg, true)
  225. }
  226. })
  227. //获取WorldBoss列表
  228. serverproto.Handle_GAME_CSPlayerWorldBossListReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  229. msg := ev.Msg().(*serverproto.CSPlayerWorldBossListReq)
  230. role := model2.RoleMag.GetRoleOrKick(cliId, ev)
  231. if role == nil {
  232. return
  233. }
  234. util.DebugF("uid=%v receive CSPlayerWorldBossListReq msg=%v", role.GetUUid(), msg)
  235. role.(model2.RoleMapOuter).GetWorldBossList()
  236. })
  237. //获取WorldBoss列表 from battle boss
  238. serverproto.Handle_GAME_SCPlayerWorldBossListAck = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  239. msg := ev.Msg().(*serverproto.SCPlayerWorldBossListAck)
  240. util.DebugF("receive CSPlayerWorldBossListAck msg=%v", msg)
  241. role := model2.RoleMag.GetRole(cliId)
  242. if role == nil {
  243. return
  244. }
  245. role.(model2.RoleMapOuter).GetWorldBossListAckFilter(msg)
  246. role.ReplayGate(msg, true)
  247. })
  248. //from battle boss
  249. serverproto.Handle_GAME_SCPlayerWorldBossRandNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  250. msg := ev.Msg().(*serverproto.SCPlayerWorldBossRandNtf)
  251. role := model2.RoleMag.GetRoleFromUUid(cliId.SessID)
  252. if role == nil {
  253. role = model2.RoleMag.GetRoleFromOffline(cliId.SessID)
  254. if role == nil {
  255. return
  256. }
  257. }
  258. util.DebugF("uid=%v receive SCPlayerWorldBossRandNtf msg=%v", role.GetUUid(), msg)
  259. // 获取rand点奖励
  260. if msg.Error == int32(serverproto.ErrorCode_ERROR_OK) && msg.PointInfo != nil {
  261. msg.Error = int32(role.(model2.RoleMapOuter).GenWorldBossRandReward(msg.PointInfo))
  262. }
  263. role.ReplayGate(msg, true)
  264. })
  265. }