public ViewModelMenuServers()
        {
#if !GAME
            if (IsDesignTime)
            {
                // design-time data
                this.allServersLists = new ViewModelServersList[0];
                this.SelectedServer  = new ViewModelServerInfoListEntry();
                return;
            }
#endif

            Instance?.Dispose();
            Instance = this;

            this.serverViewModelsProvider = ServerViewModelsProvider.Instance;
            var serversProvider = Client.MasterServer.ServersProvider;

            this.PublicServers =
                new ViewModelServersList(
                    new MultiplayerMenuServersPublicController(
                        this.serverViewModelsProvider,
                        specialCondition: info => info.IsOfficial),
                    this.OnSelectedServerChanged)
            {
                IsActive = true
            };

            this.CommunityServers =
                new ViewModelServersList(
                    new MultiplayerMenuServersPublicController(
                        this.serverViewModelsProvider,
                        specialCondition: info => !info.IsOfficial && !info.IsModded),
                    this.OnSelectedServerChanged);

            this.ModdedServers =
                new ViewModelServersList(
                    new MultiplayerMenuServersPublicController(
                        this.serverViewModelsProvider,
                        specialCondition: info => !info.IsOfficial && info.IsModded),
                    this.OnSelectedServerChanged);

            this.CustomServers =
                new ViewModelServersList(
                    new MultiplayerMenuServersController(serversProvider.Custom, this.serverViewModelsProvider),
                    this.OnSelectedServerChanged);

            this.FavoriteServers =
                new ViewModelServersList(
                    new MultiplayerMenuServersController(serversProvider.Favorite, this.serverViewModelsProvider),
                    this.OnSelectedServerChanged);

            this.HistoryServers =
                new ViewModelServersList(
                    new MultiplayerMenuServersController(serversProvider.History, this.serverViewModelsProvider),
                    this.OnSelectedServerChanged);

            this.allServersLists = new[]
            {
                this.PublicServers,
                this.CommunityServers,
                this.ModdedServers,
                this.CustomServers,
                this.FavoriteServers,
                this.HistoryServers
            };

            RequestPublicServersList();
        }
Пример #2
0
        public ViewModelMenuServers()
        {
#if !GAME
            if (IsDesignTime)
            {
                // design-time data
                this.allServersLists = new ViewModelServersList[0];
                this.SelectedServer  = new ViewModelServerInfoListEntry();
                return;
            }
#endif

            Instance?.Dispose();
            Instance = this;

            this.serverViewModelsProvider = ServerViewModelsProvider.Instance;

            // ensure the localhost is always present in the custom servers list (for local server)
            this.serversProvider.Custom.SetFirstOrAdd(new ServerAddress("localhost"));
            this.CustomServers =
                new ViewModelServersList(
                    new MultiplayerMenuServersController(this.serversProvider.Custom, this.serverViewModelsProvider),
                    this.OnSelectedServerChanged);

            this.FavoriteServers =
                new ViewModelServersList(
                    new MultiplayerMenuServersController(this.serversProvider.Favorite, this.serverViewModelsProvider),
                    this.OnSelectedServerChanged);

            this.FeaturedServers =
                new ViewModelServersList(
                    new MultiplayerMenuServersPublicController(
                        this.serverViewModelsProvider,
                        specialCondition: info => info.IsOfficial ||
                        info.IsFeatured)
            {
                DefaultSortType = ServersListSortType.Ping
            },
                    this.OnSelectedServerChanged);
            this.FeaturedServers.IsActive = true;

            this.CommunityServers =
                new ViewModelServersList(
                    new MultiplayerMenuServersPublicController(
                        this.serverViewModelsProvider,
                        specialCondition: info => !info.IsOfficial &&
                        !info.IsFeatured &&
                        !info.IsModded)
            {
                DefaultSortType = ServersListSortType.Ping
            },
                    this.OnSelectedServerChanged);

            this.ModdedServers =
                new ViewModelServersList(
                    new MultiplayerMenuServersPublicController(
                        this.serverViewModelsProvider,
                        specialCondition: info => !info.IsOfficial &&
                        !info.IsFeatured &&
                        info.IsModded)
            {
                DefaultSortType = ServersListSortType.Ping
            },
                    this.OnSelectedServerChanged);

            this.HistoryServers =
                new ViewModelServersList(
                    new MultiplayerMenuServersController(this.serversProvider.History, this.serverViewModelsProvider),
                    this.OnSelectedServerChanged);

            this.allServersLists = new[]
            {
                this.FeaturedServers,
                this.CommunityServers,
                this.ModdedServers,
                this.CustomServers,
                this.FavoriteServers,
                this.HistoryServers
            };

            RequestPublicServersList();

            this.serversProvider.ServerPingUpdated         += this.ServerPingUpdatedHandled;
            this.serversProvider.ServerInfoReceived        += this.ServerInfoReceivedHandler;
            Api.Client.MasterServer.ConnectionStateChanged += MasterServerConnectionStateChangedHandler;
        }
Пример #3
0
        public ViewModelMenuServers()
        {
#if !GAME
            if (IsDesignTime)
            {
                // design-time data
                this.allServersLists = new ViewModelServersList[0];
                this.SelectedServer  = new ViewModelServerInfoListEntry();
                return;
            }
#endif

            Instance?.Dispose();
            Instance = this;

            this.serverViewModelsProvider = ServerViewModelsProvider.Instance;

            this.FeaturedServers =
                new ViewModelServersList(
                    new MultiplayerMenuServersPublicController(
                        this.serverViewModelsProvider,
                        specialCondition: info => info.IsOfficial ||
                        (info.IsFeatured && !info.IsModded))
            {
                DefaultSortType = ServersListSortType.Featured
            },
                    this.OnSelectedServerChanged);
            this.FeaturedServers.IsActive = true;

            this.CommunityServers =
                new ViewModelServersList(
                    new MultiplayerMenuServersPublicController(
                        this.serverViewModelsProvider,
                        specialCondition: info => !info.IsOfficial &&
                        !info.IsFeatured &&
                        !info.IsModded)
            {
                DefaultSortType = ServersListSortType.OnlinePlayersCount
            },
                    this.OnSelectedServerChanged);

            this.ModdedServers =
                new ViewModelServersList(
                    new MultiplayerMenuServersPublicController(
                        this.serverViewModelsProvider,
                        specialCondition: info => !info.IsOfficial &&
                        info.IsModded)
            {
                DefaultSortType = ServersListSortType.OnlinePlayersCount
            },
                    this.OnSelectedServerChanged);

            this.CustomServers =
                new ViewModelServersList(
                    new MultiplayerMenuServersController(this.serversProvider.Custom, this.serverViewModelsProvider),
                    this.OnSelectedServerChanged);

            this.FavoriteServers =
                new ViewModelServersList(
                    new MultiplayerMenuServersController(this.serversProvider.Favorite, this.serverViewModelsProvider)
            {
                DefaultSortType = ServersListSortType.OnlinePlayersCount
            },
                    this.OnSelectedServerChanged);

            this.HistoryServers =
                new ViewModelServersList(
                    new MultiplayerMenuServersController(this.serversProvider.History, this.serverViewModelsProvider),
                    this.OnSelectedServerChanged);

            this.allServersLists = new[]
            {
                this.FeaturedServers,
                this.CommunityServers,
                this.ModdedServers,
                this.CustomServers,
                this.FavoriteServers,
                this.HistoryServers
            };

            RequestPublicServersList();

            this.serversProvider.ServerPingUpdated  += this.ServerPingUpdatedHandled;
            this.serversProvider.ServerInfoReceived += this.ServerInfoReceivedHandler;
        }