private static void UPLOAD_MAP_REPLY(byte[] bytes) { UploadMapReply input = UploadMapReply.Parser.ParseFrom(bytes); if (!input.Ret) { string msg = "上传地图失败!"; UIManager.Instance.SystemTips(msg, PanelSystemTips.MessageType.Error); GameRoomManager.Instance.Log("MSG: UPLOAD_MAP_REPLY Error - " + msg); return; } if (input.IsLastPackage) { GameRoomManager.Instance.Log($"MSG: UPLOAD_MAP_REPLY OK - 上传地图成功!RoomID:{input.RoomId}"); // 发出EnterRoom消息,进入房间 EnterRoom output = new EnterRoom() { RoomId = input.RoomId, }; GameRoomManager.Instance.SendMsg(ROOM.EnterRoom, output.ToByteArray()); GameRoomManager.Instance.Log($"MSG: UPLOAD_MAP_REPLY OK - 申请进入战场:{input.RoomName}"); } }
private static void UPLOAD_MAP(byte[] bytes) { // 这个消息会有好多组 UploadMap input = UploadMap.Parser.ParseFrom(bytes); if (input.PackageIndex == 0) { // 第一条此类消息 mapDataBuffers.Clear(); ServerRoomManager.Instance.Log($"MSG:UPLOAD_MAP - Begin upload map data! MapName:{input.RoomName}"); // 开始上传地图数据!地图名 } mapDataBuffers.Add(input.MapData.ToByteArray()); bool ret = true; long roomId = 0; if (input.IsLastPackage) {// 最后一条此类消息了 // 生成唯一ID roomId = Utils.GuidToLongId(); int totalSize = 0; foreach (var package in mapDataBuffers) { totalSize += package.Length; } byte[] totalMapData = new byte[totalSize]; int position = 0; foreach (var package in mapDataBuffers) { Array.Copy(package, 0, totalMapData, position, package.Length); position += package.Length; } PlayerInfo pi = ServerRoomManager.Instance.GetPlayer(_args); if (pi == null) { ServerRoomManager.Instance.Log($"MSG:UPLOAD_MAP Error - Save map data failed! Creator not found! MapName:{input.RoomName}"); // 保存地图数据失败!创建者没有找到!地图名 ret = false; } else { ret = true; string tableName = $"MAP:{roomId}"; ServerRoomManager.Instance.Redis.CSRedis.HSet(tableName, "Creator", pi.Enter.TokenId); ServerRoomManager.Instance.Redis.CSRedis.HSet(tableName, "RoomId", roomId); ServerRoomManager.Instance.Redis.CSRedis.HSet(tableName, "RoomName", input.RoomName); ServerRoomManager.Instance.Redis.CSRedis.HSet(tableName, "MaxPlayerCount", input.MaxPlayerCount); ServerRoomManager.Instance.Redis.CSRedis.HSet(tableName, "MapData", totalMapData); ServerRoomManager.Instance.Redis.CSRedis.HSet(tableName, "MapDataSize", totalSize); ServerRoomManager.Instance.Redis.CSRedis.HSet(tableName, "CreateTime", DateTime.Now); ServerRoomManager.Instance.Log($"MSG: UPLOAD_MAP OK - Upload map data and save to redis succeeded! MapName:{input.RoomName} - Total Size:{totalSize}"); // 上传地图数据,并保存到Redis成功!地图名 } } UploadMapReply output = new UploadMapReply() { Ret = ret, IsLastPackage = input.IsLastPackage, RoomId = roomId, RoomName = input.RoomName, }; ServerRoomManager.Instance.SendMsg(_args, ROOM_REPLY.UploadMapReply, output.ToByteArray()); }