public static LevelAnalysis Analyse(int levelID, Progress[] users) { var analysis = new LevelAnalysis(levelID); var playtimes = new List <float>(); foreach (var user in users) { if (user.IsLevelCompleted(levelID)) { playtimes.Add(user.GetPlaytime(levelID)); } } if (playtimes.Count > 0) { playtimes.Sort(); analysis.PercentCompleted = ((float)playtimes.Count / (float)users.Length) * 100.0f; analysis.MinPlaytime = playtimes[0]; analysis.MaxPlaytime = playtimes[playtimes.Count - 1]; analysis.MedianPlaytime = playtimes[playtimes.Count / 2]; } return(analysis); }
public static CampaignAnalysis Analyse(Campaign campaign, Progress[] users) { var results = new List <LevelAnalysis>(); for (int i = 0; i < campaign.Levels.Count; ++i) { var levelPath = campaign.Levels[i]; var levelData = LevelData.Get(levelPath); var id = levelData.ID; results.Add(LevelAnalysis.Analyse(id, users)); } return(new CampaignAnalysis(campaign.ID, results.ToArray())); }