package msg import ( "rocommon" "rocommon/util" "roserver/baseserver/model" model2 "roserver/game/model" "roserver/serverproto" ) //todo... // 后续会拆分成一个服务器来处理 func init() { //角色进入地图 //serverproto.Handle_GAME_CSPlayerEnterMapReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { // msg := ev.Msg().(*serverproto.CSPlayerEnterMapReq) // util.DebugF("receive CSPlayerEnterMapReq msg=%v", msg) // role := model2.RoleMag.GetRoleOrKick(cliId, ev) // if role == nil { // return // } // // role.(model2.RoleMapOuter).PlayerEnterMap(msg) //}) ////角色离开地图 //serverproto.Handle_GAME_CSPlayerLeaveMapReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { // msg := ev.Msg().(*serverproto.CSPlayerLeaveMapReq) // util.DebugF("receive CSPlayerLeaveMapReq msg=%v", msg) // role := model2.RoleMag.GetRoleOrKick(cliId, ev) // if role == nil { // return // } // // //role.(model2.RoleMapOuter).PlayerLeave(msg.Pos) //}) // ////移动 //serverproto.Handle_GAME_CSPlayerMoveReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { // msg := ev.Msg().(*serverproto.CSPlayerMoveReq) // //util.DebugF("receive CSPlayerMoveReq msg=%v", msg) // role := model2.RoleMag.GetRoleOrKick(cliId, ev) // if role == nil { // return // } // // //role.(model2.RoleMapOuter).PlayerMove(msg) //}) // ////获取其他玩家角色信息(地图AOI像是使用) //serverproto.Handle_GAME_CSMapGetOtherPlayersInfoReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { // msg := ev.Msg().(*serverproto.CSMapGetOtherPlayersInfoReq) // util.DebugF("receive CSMapGetOtherPlayersInfoReq msg=%v", msg) // role := model2.RoleMag.GetRoleOrKick(cliId, ev) // if role == nil { // return // } // // //超过获取数据上限 // if len(msg.PlayerList) > 30 { // util.WarnF("uid=%v CSGetOtherPlayersInfoReq player beyond limit len=%v", role.GetUUid(), len(msg.PlayerList)) // return // } // // //获取昵称,外观等 // reqMsg := &serverproto.CSMapGetOtherPlayersInfoReq{} // reqMsg.PlayerList = msg.PlayerList // //发送给Aoi Server获取信息 // if len(reqMsg.PlayerList) > 0 { // //role.(*model2.Role).SendAoi(reqMsg) // } //}) ////消息来自Aoi //serverproto.Handle_GAME_SCMapOtherPlayersInfoNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { // msg := ev.Msg().(*serverproto.SCMapOtherPlayersInfoNtf) // util.DebugF("receive SCOtherPlayersInfoNtf msg=%v", msg) // // role := model2.RoleMag.GetRole(cliId) // if role == nil { // return // } // // role.ReplayGate(msg, true) //}) ////客户端播放动作请求 //serverproto.Handle_GAME_CSPlayerActionReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { // msg := ev.Msg().(*serverproto.CSPlayerActionReq) // util.DebugF("receive CSPlayerActionReq msg=%v", msg) // role := model2.RoleMag.GetRoleOrKick(cliId, ev) // if role == nil { // return // } // // //判断是否存在该动作 // ackMsg := &serverproto.SCPlayerActionAck{ // Error: int32(serverproto.ErrorCode_ERROR_OK), // ActionId: msg.ActionId, // Pos: msg.Pos, // } // if msg.ActionId <= 0 { // ackMsg.Error = int32(serverproto.ErrorCode_ERROR_FAIL) // } else { // ackMsg.Error = int32(role.(model2.RoleMapOuter).MapDoAction(msg.ActionId, msg.Pos)) // } // //返回错误,否则发送给BattleBoss预处理boss召唤 // if ackMsg.Error != int32(serverproto.ErrorCode_ERROR_OK) { // role.ReplayGate(ackMsg, true) // } //}) ///////////////////////////////WorldBoss //挑战WorldBoss serverproto.Handle_GAME_CSPlayerChallengeSummonReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.CSPlayerChallengeSummonReq) role := model2.RoleMag.GetRoleOrKick(cliId, ev) if role == nil { return } util.DebugF("uid=%v receive CSPlayerChallengeSummonReq msg=%v", role.GetUUid(), msg) role.(model2.RoleMapOuter).MapPlayerChallengeWorldBoss(msg.ChallengeBossUid, msg.BossSummonIdx, "NOAOI") }) //from battle boss serverproto.Handle_GAME_SCPlayerChallengeSummonAck = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.SCPlayerChallengeSummonAck) role := model2.RoleMag.GetRole(cliId) if role == nil { return } util.DebugF("uid=%v receive SCPlayerChallengeSummonAck msg=%v", role.GetUUid(), msg) if msg.Error == int32(serverproto.ErrorCode_ERROR_OK) && msg.BossInfo != nil { role.(model2.RoleMapOuter).DoMapPlayerChallengeWorldBoss(msg.BossInfo.BossId) } role.ReplayGate(msg, true) }) //离开boss场景req serverproto.Handle_GAME_CSPlayerLeaveChallengeReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.CSPlayerLeaveChallengeReq) role := model2.RoleMag.GetRoleOrKick(cliId, ev) if role == nil { return } util.DebugF("uid=%v receive CSPlayerLeaveChallengeReq msg=%v", role.GetUUid(), msg) role.(*model2.Role).PlayerBattleBossOffline() }) //离开boss场景(from battle boss server) serverproto.Handle_GAME_SSPlayerLeaveChallengeNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.SSPlayerLeaveChallengeNtf) util.DebugF("receive SSPlayerLeaveChallengeNtf msg=%v", msg) ntfMsg := &serverproto.SCPlayerLeaveChallengeNtf{ Uid: msg.LeaveUid, } for idx := range msg.NotifyList { role := model2.RoleMag.GetRoleFromUUid(msg.NotifyList[idx]) if role == nil { continue } role.ReplayGate(ntfMsg, true) } }) //进入boss场景 serverproto.Handle_GAME_SSPlayerEnterChallengeNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.SSPlayerEnterChallengeNtf) util.DebugF("receive SSPlayerEnterChallengeNtf msg=%v", msg) ntfMsg := &serverproto.SCPlayerChallengeSummonNtf{ BossUid: msg.BossUid, SelfUid: msg.EnterUid, SelfChangePlayId: msg.SelfChangePlayId, SummonBossType: msg.SummonBossType, } ntfMsg.FightList = append(msg.FightList) //通知自己 if len(msg.NotifyList) <= 0 { role := model2.RoleMag.GetRoleFromUUid(msg.EnterUid) if role == nil { return } role.(*model2.Role).GetRoleMap().ChallengeBossId = msg.BossUid role.ReplayGate(ntfMsg, true) } else { for idx := range msg.NotifyList { role := model2.RoleMag.GetRoleFromUUid(msg.NotifyList[idx]) if role == nil { continue } role.ReplayGate(ntfMsg, true) } } }) //血量上报 serverproto.Handle_GAME_CSPlayerChallengeHpReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.CSPlayerChallengeHpReq) role := model2.RoleMag.GetRoleOrKick(cliId, ev) if role == nil { return } util.DebugF("uid=%v receive CSPlayerChallengeHpReq msg=%v", role.GetUUid(), msg) role.(model2.RoleMapOuter).MapWorldBossHp(msg.DamageHp) }) //bossHP通知(from battle boss server) serverproto.Handle_GAME_SSPlayerChallengeHpNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.SSPlayerChallengeHpNtf) util.DebugF("receive SSPlayerChallengeHpNtf msg:=%v", msg) ntfMsg := &serverproto.SCPlayerChallengeHpNtf{ CurBossHp: msg.CurBossHp, } for idx := range msg.NotifyList { role := model2.RoleMag.GetRoleFromUUid(msg.NotifyList[idx]) if role == nil { continue } role.ReplayGate(ntfMsg, true) } }) //挑战结果通知(from battle boss server) serverproto.Handle_GAME_SSPlayerChallengeResultNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.SSPlayerChallengeResultNtf) util.DebugF("receive SSPlayerChallengeResultNtf msg=%v", msg) ntfMsg := &serverproto.SCPlayerChallengeResultNtf{ Result: msg.Result, } for idx := range msg.NotifyList { role := model2.RoleMag.GetRoleFromUUid(msg.NotifyList[idx]) if role == nil { continue } role.(*model2.Role).GetRoleMap().ChallengeBossId = 0 role.ReplayGate(ntfMsg, true) } }) //获取WorldBoss列表 serverproto.Handle_GAME_CSPlayerWorldBossListReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.CSPlayerWorldBossListReq) role := model2.RoleMag.GetRoleOrKick(cliId, ev) if role == nil { return } util.DebugF("uid=%v receive CSPlayerWorldBossListReq msg=%v", role.GetUUid(), msg) role.(model2.RoleMapOuter).GetWorldBossList() }) //获取WorldBoss列表 from battle boss serverproto.Handle_GAME_SCPlayerWorldBossListAck = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.SCPlayerWorldBossListAck) util.DebugF("receive CSPlayerWorldBossListAck msg=%v", msg) role := model2.RoleMag.GetRole(cliId) if role == nil { return } role.(model2.RoleMapOuter).GetWorldBossListAckFilter(msg) role.ReplayGate(msg, true) }) //from battle boss serverproto.Handle_GAME_SCPlayerWorldBossRandNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) { msg := ev.Msg().(*serverproto.SCPlayerWorldBossRandNtf) role := model2.RoleMag.GetRoleFromUUid(cliId.SessID) if role == nil { role = model2.RoleMag.GetRoleFromOffline(cliId.SessID) if role == nil { return } } util.DebugF("uid=%v receive SCPlayerWorldBossRandNtf msg=%v", role.GetUUid(), msg) // 获取rand点奖励 if msg.Error == int32(serverproto.ErrorCode_ERROR_OK) && msg.PointInfo != nil { msg.Error = int32(role.(model2.RoleMapOuter).GenWorldBossRandReward(msg.PointInfo)) } role.ReplayGate(msg, true) }) }