Ejemplo n.º 1
0
        public static List <int> GetRoomServerAllRoomId(MatchServerConfig config, int roomServerId)
        {
            if (config == null || config.RoomServers.Length == 0)
            {
                return(null);
            }

            var index = -1;

            for (int i = 0; i < config.RoomServers.Length; i++)
            {
                if (config.RoomServers[i] == roomServerId)
                {
                    index = i;
                    break;
                }
            }
            if (index == -1)
            {
                return(null);
            }

            var allRooms = new List <int>();

            for (int i = 0; i < config.RoomCount; i++)
            {
                var roomId   = i + 1;
                var serverId = GetRoomServerId(config, roomId);
                if (serverId == roomServerId)
                {
                    allRooms.Add(roomId);
                }
            }
            return(allRooms);
        }
Ejemplo n.º 2
0
        private bool InitRoom()
        {
            var config = ConfigService.MatchConfig.Value;

            _matchServerConfig = config.GetMatchServerConfigByRoomServerId(Host.ServerId, out int areaId);
            if (_matchServerConfig == null)
            {
                Logger.LogError($"[Room][Init Room][Failed][Match Server Config Is Invalid [{Host.ServerId}]]");
                return(false);
            }

            _areaId = areaId;

            var allRoomIds = GetRoomServerAllRoomId(_matchServerConfig, Host.ServerId);

            if (allRoomIds == null)
            {
                Logger.LogError($"[Room][Init Room][Failed][Empty Room Id List [{Host.ServerId}]]");
                return(false);
            }

            // 初始化所有房间
            foreach (var roomId in allRoomIds)
            {
                var room = new Room(roomId);
                _roomMap.Add(roomId, room);
            }

            Logger.LogDebug($"[Room][Init Room][Success][Server[{Host.ServerId}] RoomCount[{_roomMap.Count}]]");

            return(true);
        }
Ejemplo n.º 3
0
        public static int GetRoomServerId(MatchServerConfig config, int roomId)
        {
            if (config == null || config.RoomServers.Length == 0)
            {
                return(0);
            }

            int index        = (roomId - 1) % config.RoomServers.Length;
            int roomServerId = config.RoomServers[index];

            return(roomServerId);
        }