| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- package msg
- import (
- "rocommon"
- "rocommon/util"
- "roserver/baseserver/model"
- model2 "roserver/globalcross_map/model"
- "roserver/serverproto"
- )
- func init() {
- serverproto.Handle_GCROSSMAP_Default = func(ev rocommon.ProcEvent) {
- ////todo...
- //switch msg := ev.Msg().(type) {
- //case *serverproto.ClientClosedACK:
- // //处理客户端断开连接操作
- // uid, _ := model2.RoleMapMag.Leave(msg.Id, msg.ServiceId)
- // baseutil.InfoF("receive ClientClosedACK uid=%v cliId=%v leave map", uid, msg.Id)
- //
- // //直接回复可以使用ServiceReplay,后续通过其他服务器处理的话需要调用接口ReplayGate
- // //model.ServiceReplay(ev, ack)
- //}
- }
- //跨服聊天
- serverproto.Handle_GCROSSMAP_SSGCrossChatMessageReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
- msg := ev.Msg().(*serverproto.SSGCrossChatMessageReq)
- tmpEv := ev.(*model.RecvRouterServiceMsgEvent)
- if tmpEv == nil {
- return
- }
- util.InfoF("receive SSGCrossChatMessageReq msg=%v master=%v", msg, tmpEv.IsMaster)
- leaveSpace := model2.GetSpaceMag().FindEntitySpace(cliId.SessID)
- if leaveSpace == nil {
- return
- }
- leaveSpace.ChatMessageNtf(msg)
- })
- //角色进入地图(消息来自game)
- serverproto.Handle_GCROSSMAP_SSGCrossMapEnterReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
- msg := ev.Msg().(*serverproto.SSGCrossMapEnterReq)
- tmpEv := ev.(*model.RecvRouterServiceMsgEvent)
- if tmpEv == nil {
- return
- }
- util.InfoF("uid=%v receive SSGCrossMapEnterReq msg=%v master=%v", cliId.SessID, msg, tmpEv.IsMaster)
- space := model2.GetSpaceMag().GetSpaceByLineNum(msg.AoiLine)
- if space == nil || space.IsFull() {
- ssAckMsg := &serverproto.SSGCrossMapEnterAck{
- Error: int32(serverproto.ErrorCode_ERROR_CROSS_MAP_NOAOILINEFIND),
- LineNum: msg.AoiLine,
- }
- model.ServiceReplay(ev, ssAckMsg)
- return
- }
- space.CreateEntityFromMsg(cliId.SessID, tmpEv.IsMaster, tmpEv.FromZone, msg)
- })
- //角色离开地图
- serverproto.Handle_GCROSSMAP_SSGCrossMapLeaveReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
- msg := ev.Msg().(*serverproto.SSGCrossMapLeaveReq)
- tmpEv := ev.(*model.RecvRouterServiceMsgEvent)
- if tmpEv == nil {
- return
- }
- util.InfoF("uid=%v receive SSGCrossMapLeaveReq msg=%v master=%v", cliId.SessID, msg, tmpEv.IsMaster)
- leaveSpace := model2.GetSpaceMag().FindEntitySpace(cliId.SessID)
- if leaveSpace == nil {
- return
- }
- leaveSpace.RemoveEntity(cliId.SessID)
- })
- //移动(pos,dir)
- serverproto.Handle_GCROSSMAP_SSGCrossMapSyncPosReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
- msg := ev.Msg().(*serverproto.SSGCrossMapSyncPosReq)
- tmpEv := ev.(*model.RecvRouterServiceMsgEvent)
- if tmpEv == nil {
- return
- }
- //util.InfoF("uid=%v receive SSGCrossMapSyncPosReq msg=%v master=%v", cliId.SessID, msg, tmpEv.IsMaster)
- moveEntity := model2.GetSpaceMag().FindEntity(cliId.SessID, msg.CurSpaceId)
- if moveEntity == nil {
- return
- }
- moveEntity.OnUpdateDataFromClient(msg)
- })
- serverproto.Handle_GCROSSMAP_SSGCrossMapSyncParamReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
- msg := ev.Msg().(*serverproto.SSGCrossMapSyncParamReq)
- tmpEv := ev.(*model.RecvRouterServiceMsgEvent)
- if tmpEv == nil {
- return
- }
- //util.InfoF("uid=%v receive SSGCrossMapSyncParamReq msg=%v master=%v", cliId.SessID, msg, tmpEv.IsMaster)
- moveEntity := model2.GetSpaceMag().FindEntity(cliId.SessID, msg.CurSpaceId)
- if moveEntity == nil {
- return
- }
- moveEntity.UpdateEntityParamFromClient(msg)
- })
- //获取其他玩家角色信息
- serverproto.Handle_GCROSSMAP_SSGCrossMapOtherUnitShowInfoReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
- msg := ev.Msg().(*serverproto.SSGCrossMapOtherUnitShowInfoReq)
- tmpEv := ev.(*model.RecvRouterServiceMsgEvent)
- if tmpEv == nil {
- return
- }
- util.InfoF("uid=%v receive SSGCrossMapOtherUnitShowInfoReq msg=%v master=%v", cliId.SessID, msg, tmpEv.IsMaster)
- space := model2.GetSpaceMag().GetSpaceByLineNum(msg.CurSpaceId)
- if space == nil {
- ssAckMsg := &serverproto.SSGCrossMapOtherUnitShowInfoNtf{}
- model.ServiceReplay(ev, ssAckMsg)
- return
- }
- ssAckMsg := &serverproto.SSGCrossMapOtherUnitShowInfoNtf{}
- for _, data := range msg.ShowUidList {
- findEntity := space.GetEntity(data)
- if findEntity == nil {
- continue
- }
- info := &serverproto.PlayerShowInfo{Uid: data}
- findEntity.FillShowInfo(info)
- ssAckMsg.ShowInfoList = append(ssAckMsg.ShowInfoList, info)
- }
- model.ServiceReplay(ev, ssAckMsg)
- })
- //avatar信息同步等数据相关消息(//玩家显示变更通知) 定时更新
- serverproto.Handle_GCROSSMAP_SSGCrossMapUnitShowUpdateNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
- msg := ev.Msg().(*serverproto.SSGCrossMapUnitShowUpdateNtf)
- tmpEv := ev.(*model.RecvRouterServiceMsgEvent)
- if tmpEv == nil {
- return
- }
- util.InfoF("receive SSGCrossMapUnitShowUpdateNtf msg=%v master=%v", msg, tmpEv.IsMaster)
- moveEntity := model2.GetSpaceMag().FindEntity(cliId.SessID, msg.CurSpaceId)
- if moveEntity == nil {
- return
- }
- moveEntity.ShowChange(msg.ShowInfoList[0])
- })
- }
|