public string GetIndividualStats(string individual) { string result = null; if (nhlStats != null) { individual = nhlStats.GetGoalieNameAlias(individual); individual = nhlStats.GetPlayerNameAlias(individual); } JackedStatsSet.PlayerStatsRow statsRow; JackedStatsSet.PlayersRow[] rows = (JackedStatsSet.PlayersRow[])stats.Players.Select(String.Format("Name LIKE '%{0}%'", individual)); if (rows.Length > 0) { if (rows[0].GetChildRows("PlayerStats_Players").Length > 0) { statsRow = (JackedStatsSet.PlayerStatsRow)rows[0].GetChildRows("PlayerStats_Players")[0]; if (statsRow != null) { if (rows[0].Position.CompareTo("Goaltender") == 0) { if (!statsRow.IsSavePercentNull() && !statsRow.IsSavesNull() && !statsRow.IsShotsFacedNull()) { result = string.Format("[{0}/{1}] {2} [Shots:{3}] [Saves:{4}] [Save %:{5}]", NHLGame.FixCase(homeTeamName), NHLGame.FixCase(awayTeamName), rows[0].Name, statsRow.ShotsFaced, statsRow.Saves, statsRow.SavePercent); } else { result = string.Format("No game stats available for {0}", rows[0].Name); } } else { result = string.Format("[{0}/{1}] {2} [Goals:{3}] [Assists:{4}] [Shots: {9}] [Hits:{5}] " + "[+/-:{6}] [PIM:{7}] [FOW:{8}]", NHLGame.FixCase(homeTeamName), NHLGame.FixCase(awayTeamName), rows[0].Name, statsRow.Goals, statsRow.Assists, statsRow.Hits, statsRow.PlusMinus, statsRow.PIM, statsRow.FOW, statsRow.SOG); } } else { result = string.Format("No game stats available yet for {0}", rows[0].Name); } } else { result = string.Format("No game stats available yet for {0}", rows[0].Name); } } return(result); }
public string GetGameStats() { string result; string topGoalsPlayer = String.Empty, topAssistsPlayer = String.Empty, topHitsPlayer = String.Empty, topPlusMinusPlayer = String.Empty, botPlusMinusPlayer = String.Empty, topPIMPlayer = String.Empty, topFOWPlayer = String.Empty, topSOGPlayer = String.Empty; int topGoals = 0, topAssists = 0, topHits = 0, topPlusMinus = 0, botPlusMinus = 0, topPIM = 0, topFOW = 0, topSOG = 0; lock (stats) { GetInfoForStat(ref topGoalsPlayer, ref topGoals, stats.PlayerStats.GoalsColumn, true); GetInfoForStat(ref topAssistsPlayer, ref topAssists, stats.PlayerStats.AssistsColumn, true); GetInfoForStat(ref topHitsPlayer, ref topHits, stats.PlayerStats.HitsColumn, true); GetInfoForStat(ref topPlusMinusPlayer, ref topPlusMinus, stats.PlayerStats.PlusMinusColumn, true); GetInfoForStat(ref botPlusMinusPlayer, ref botPlusMinus, stats.PlayerStats.PlusMinusColumn, false); GetInfoForStat(ref topPIMPlayer, ref topPIM, stats.PlayerStats.PIMColumn, true); GetInfoForStat(ref topFOWPlayer, ref topFOW, stats.PlayerStats.FOWColumn, true); GetInfoForStat(ref topSOGPlayer, ref topSOG, stats.PlayerStats.SOGColumn, true); } result = String.Format("[{0}/{1}] [Most Goals: {2}] [Most Assists: {3}] [Most SOG: {9}] [Most Hits: {4}] " + "[Top +/-: {5}] [Bot +/-: {6}] [Most PIM: {7}] [Most FOW: {8}]", NHLGame.FixCase(homeTeamName), NHLGame.FixCase(awayTeamName), topGoals == 0 ? "--" : String.Format("{0}, {1}", topGoalsPlayer, topGoals), topAssists == 0 ? "--" : String.Format("{0}, {1}", topAssistsPlayer, topAssists), topHits == 0 ? "--" : String.Format("{0}, {1}", topHitsPlayer, topHits), topPlusMinus == 0 ? "--" : String.Format("{0}, {1}", topPlusMinusPlayer, topPlusMinus), botPlusMinus == 0 ? "--" : String.Format("{0}, {1}", botPlusMinusPlayer, botPlusMinus), topPIM == 0 ? "--" : String.Format("{0}, {1}", topPIMPlayer, topPIM), topFOW == 0 ? "--" : String.Format("{0}, {1}", topFOWPlayer, topFOW), topSOG == 0 ? "--" : String.Format("{0}, {1}", topSOGPlayer, topSOG)); return(result); }
static void LoopThread(object _game) { NHLGame game = (NHLGame)_game; String timeString, scoreString; bool wasOver; game.nhlFetch = new NHLDotComFetch(); NHLGameEvent gameEvent; for (; ;) { timeString = game.nhlFetch.FetchGameTimeString(game.GameId); scoreString = game.nhlFetch.FetchGameScoreString(game.GameId); int sleepTime = SLEEPY_UPDATE_DELAY; lock (game.mutex) { if (game.stopMonitoringStatsDelay > 0) { game.stopMonitoringStatsDelay--; if (game.stopMonitoringStatsDelay == 0) { System.Console.WriteLine("Stopped monitoring stats for: " + game.HomeTeamName + "/" + game.AwayTeamName); game.nhlGameStats.StopMonitoring(); break; } } else if (scoreString != null && timeString != null) { wasOver = game.final; game.ParseNHLDotComTimeString(timeString); gameEvent = game.ParseNHLDotComScoreString(scoreString); if (game.nhlGameStats == null) { game.nhlGameStats = new NHLGameStats(game.NhlSeasonStats, game.GameId, game.HomeTeamName, game.AwayTeamName, false); } if (game.final && !wasOver) { game.ParseNHLDotComScoreString(scoreString); gameEvent = new NHLGameEvent("Game Over.", NHLGameEvent.EventType.EVENT_GAMEOVER, String.Empty); game.AddEvent(gameEvent); System.Console.WriteLine("Game over: " + game.HomeTeamName + "/" + game.AwayTeamName); game.stopMonitoringStatsDelay = STOP_MONITORING_STATS_DELAY; } else { game.HandleGameEvent(gameEvent); } } NHLGameStatus status = game.GetStatus(); if (status == NHLGameStatus.GAME_NODATA || status == NHLGameStatus.GAME_PREVIEWDATA) { sleepTime = SLEEPY_UPDATE_DELAY; } else { sleepTime = GAMETIME_UPDATE_DELAY; } } if (game.nhlGameStats != null) { // an attempt to get quicker goal events NHLGameEvent lastGoalEventFromStats = game.nhlGameStats.getAndClearLastGoalEvent(); if (lastGoalEventFromStats != null) { game.HandleGameEvent(lastGoalEventFromStats); } } Thread.Sleep(sleepTime); if (!game.IsRunning()) { if (game.nhlGameStats != null) { game.nhlGameStats.StopMonitoring(); } break; } } }
private void FetchGameList() { if ((DateTime.Now.Hour > 1 && DateTime.Now.Hour < 9) && games.Count > 0) { System.Console.WriteLine("Flushing games and downloading new schedule..."); foreach (NHLGame game in games) { game.Shutdown(); } games.Clear(); stats.UpdateSchedule(); } else { NHLDotComFetch fetch = new NHLDotComFetch(); DateTime cStart = DateTime.Now; List<int> gameIds = fetch.FetchGameIndex(DateTime.Now); TimeSpan cDiff = DateTime.Now - cStart; System.Console.WriteLine(String.Format("Took {0} s for FetchGameIndex download", cDiff.TotalSeconds)); foreach (int i in gameIds) { NHLGame game = null; bool gameAlreadyExists = false; foreach (NHLGame existingGame in games) { if (existingGame.GameId == i) { gameAlreadyExists = true; break; } } if (!gameAlreadyExists) { game = new NHLGame(i); games.Add(game); game.StartMonitoring(stats); System.Console.WriteLine("Adding game {0}", i); } } } }