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]) }) }