/// <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); }
/// <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;
/// <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(); }