/// <summary> Creates an instance of the main window. </summary>
        /// <param name="guiLoadingWindowPresenter"> An instance of a presenter to communicate with the GUI loading window. </param>
        /// <returns></returns>
        public IMainWindow CreateMainWindow(IGuiLoadingWindowPresenter guiLoadingWindowPresenter)
        {
            var strategy  = new MainWindowStrategy();
            var presenter = new MainWindowPresenter(strategy);
            var window    = new MainWindow(presenter, guiLoadingWindowPresenter);

            return(window);
        }
Example #2
0
        /// <summary> Creates a new main window. </summary>
        /// <param name="presenter"> The presenter to attach. </param>
        /// <param name="guiLoadingWindowPresenter"> An instance of a presenter to communicate with the GUI loading window. </param>
        public MainWindow(IMainWindowPresenter presenter, IGuiLoadingWindowPresenter guiLoadingWindowPresenter)
            : base(EWpfClientLogCategory.MainWindow, null, presenter)
        {
            _initializationStatus = EInitializationStatus.Initializing;
            {
                Log.Trace(ECoreLogMessage.Initialising);

                _loadingTracker = guiLoadingWindowPresenter;
Example #3
0
        /// <summary> Populates the <see cref="_grid"/> with content cells. </summary>
        /// <param name="branch"> The research tree branch to create cells with. </param>
        /// <param name="enabledVehicleGaijinIds"> Gaijin IDs of vehicles enabled by dafault. </param>
        /// <param name="loadingTracker"> An instance of a presenter to communicate with the GUI loading window. </param>
        internal void Populate(ResearchTreeBranch branch, IEnumerable <string> enabledVehicleGaijinIds, IGuiLoadingWindowPresenter loadingTracker)
        {
            if (branch is null || IsPopulated)
            {
                return;
            }

            _researchTreeBranch = branch;

            loadingTracker.RanksPopulated  = EInteger.Number.Zero;
            loadingTracker.RanksToPopulate = _researchTreeBranch.Count;

            foreach (var rankKeyValuePair in _researchTreeBranch)
            {
                var rankKey = rankKeyValuePair.Key;
                var rank    = rankKeyValuePair.Value;

                loadingTracker.CurrentlyPopulatedRank = rankKey.ToString();
                loadingTracker.RowsPopulated          = EInteger.Number.Zero;
                loadingTracker.RowsToPopulate         = rank.MaximumRowNumber - rank.StartingRowNumber.Value + EInteger.Number.One;

                PopulateRankHeader(rankKey, rank);

                for (var rowNumber = rank.StartingRowNumber.Value; rowNumber <= rank.MaximumRowNumber; rowNumber++)
                {
                    var rowIndex = rowNumber - EInteger.Number.One;

                    loadingTracker.ColumnsPopulated  = EInteger.Number.Zero;
                    loadingTracker.ColumnsToPopulate = _researchTreeBranch.ColumnCount;

                    for (var columnNumber = EInteger.Number.One; columnNumber <= _researchTreeBranch.ColumnCount; columnNumber++)
                    {
                        var rowNumberRelativeToRank = rowNumber - rank.StartingRowNumber.Value + EInteger.Number.One;
                        var columnIndex             = columnNumber;
                        var cell = new ResearchTreeCellControl()
                        {
                            Style = this.GetStyle(_styleKeys[rankKey]),
                        }.With(_presenter);

                        var cellVehicles = rank
                                           .GetVehicles(columnNumber, rowNumberRelativeToRank)
                                           .OrderBy(vehicle => vehicle.ResearchTreeData.FolderIndex)
                        ;

                        loadingTracker.CurrentlyProcessedVehicle = cellVehicles.FirstOrDefault()?.ResearchTreeName?.GetLocalisation(WpfSettings.LocalizationLanguage);

                        foreach (var vehicle in cellVehicles)
                        {
                            cell.AddVehicle(vehicle, vehicle.GaijinId.IsIn(enabledVehicleGaijinIds));
                        }

                        AttachEventHandlers(cell);
                        AddCell(cell, rank, rowIndex, columnIndex);

                        _cells.Add(new Tuple <int, int>(columnIndex, rowIndex), cell);

                        loadingTracker.ColumnsPopulated++;
                    }
                    loadingTracker.RowsPopulated++;
                }
                loadingTracker.CurrentlyProcessedVehicle = string.Empty;
                loadingTracker.CurrentlyPopulatedRank    = string.Empty;
                loadingTracker.RanksPopulated++;
            }

            _grid.ColumnDefinitions.First().Width = new GridLength(EInteger.Number.Thirty, GridUnitType.Pixel);

            InitialiseButtons();
        }