using System.Collections.Generic; using System.Linq; using ClusterVR.CreatorKit.World; namespace ClusterVR.CreatorKit.Editor.Preview.World { public sealed class RankingScreenPresenter { readonly IList rankingScreenViews; public RankingScreenPresenter(IEnumerable rankingScreenViews) { this.rankingScreenViews = rankingScreenViews.ToList(); foreach (var rankingScreenView in rankingScreenViews) { rankingScreenView.OnDestroyed += () => this.rankingScreenViews.Remove(rankingScreenView); } } public void SetRanking(int playerCount) { var rankingData = GenerateRankingData(playerCount); foreach (var rankingScreenView in rankingScreenViews) { rankingScreenView.UpdateCells(rankingData.rankings, rankingData.selfRanking); } } static RankingData GenerateRankingData(int playerCount) { var rankingData = new RankingData { rankings = new List() }; for (var i = 0; i < playerCount; i++) { var user = new User("displayName" + i, "userName" + i, _ => { }); var ranking = new Ranking(i, user); if (i == 0) { rankingData.selfRanking = ranking; } rankingData.rankings.Add(ranking); } return rankingData; } struct RankingData { public List rankings; public Ranking selfRanking; } } }