public StatsForm() { InitializeComponent(); lbl_stats_display.Size = new Size(panel1.Width, 1200); SneezeDatabase database = SneezeClientListener.Database; streakMap = database.FindLongestStreaks(); streakCountToUserMap = database.FindAllStreaks(); userStats = database.FindUserStats(); font = lbl_stats_display.Font; headingFont = new Font(lbl_stats_display.Font.FontFamily, lbl_stats_display.Font.Size * 1.5f, FontStyle.Bold); subheadingFont = new Font(lbl_stats_display.Font, FontStyle.Bold); }
private string GetLongestStreak() { SneezeDatabase database = SneezeClientListener.Database; if (database.Sneezes.Count == 0 || CurrentUser.UserGuid == CommonInfo.UnknownUserId) { return(""); } Dictionary <Guid, int> streaks = database.FindLongestStreaks(); int longestStreak = 0; Guid streakWinnerId = database.Sneezes[0].UserId; //The first person to reach the longest streak is the winner if there is a tie foreach (KeyValuePair <Guid, int> streak in streaks) { if (streak.Value > longestStreak) { longestStreak = streak.Value; streakWinnerId = streak.Key; } } int currentStreak = 1; int index = 1; while (index <= database.Sneezes.Count && database.Sneezes[database.Sneezes.Count - index].UserId == CurrentUser.UserGuid) { index++; currentStreak++; } int sneezesToVictory = longestStreak + 1 - currentStreak; //I definitely need to calculate the current streak rather than using 1 string retStr = ""; if (currentStreak == 3 && CurrentUser.UserGuid != streakWinnerId && sneezesToVictory > 1) { retStr = String.Format("The person with the longest streak is {0} with {1} sneezes.\nYou need to sneeze {2} times in order to beat {0}.", database.IdToUser[streakWinnerId].Name, longestStreak, sneezesToVictory); } else if (sneezesToVictory == 1) { retStr = String.Format("Way to go!\nYou are only ONE sneeze away from breaking the sneeze streak record which is currently held by {0}.", database.IdToUser[streakWinnerId].Name); } else if (sneezesToVictory == 0) { if (CurrentUser.UserGuid != streakWinnerId) { retStr = String.Format("!!! Congratulations {0} !!! \nYou set a new record for the longest sneeze streak!\nYour {1} sneeze streak beat {2}'s {3} sneeze streak.", CurrentUser.Name, currentStreak, SneezeClientListener.Database.IdToUser[streakWinnerId].Name, longestStreak); if (!String.IsNullOrEmpty(txtbx_commentary.Text)) { txtbx_commentary.Text += "\n"; } txtbx_commentary.Text += String.Format("{0} beat {1}'s sneeze streak record.", CurrentUser.Name, database.IdToUser[streakWinnerId].Name); } else { retStr = String.Format("!!! Congratulations {0} !!! \nYou have become a sneezing legend!\nYou have increased your lead and set a new sneeze streak record!", CurrentUser.Name); if (!String.IsNullOrEmpty(txtbx_commentary.Text)) { txtbx_commentary.Text += "\n"; } txtbx_commentary.Text += "The legend continues!"; } } return(retStr); }