public async void RequestWorldList(LoginConnection connection) { if (_gameServers.Values.Any(x => x.Active)) { var gameServers = _gameServers.Values.ToList(); var(requestIds, task) = RequestController.Instance.Create(gameServers.Count, 20000); // TODO Request 20s for (var i = 0; i < gameServers.Count; i++) { var value = gameServers[i]; if (!value.Active) { continue; } var chars = !connection.Characters.ContainsKey(value.Id); value.SendPacket( new LGRequestInfoPacket(connection.Id, requestIds[i], chars ? connection.AccountId : 0)); } await task; connection.SendPacket(new ACWorldListPacket(gameServers, connection.GetCharacters())); } else { var gsList = new List <GameServer>(_gameServers.Values); connection.SendPacket(new ACWorldListPacket(gsList, connection.GetCharacters())); } }
public void RequestWorldList(LoginConnection connection) { var gsList = new List <GameServer>(_gameServers.Values); connection.SendPacket(new ACWorldListPacket(gsList, connection.GetCharacters())); }