public Table(String handHistoryFilePath, Window window, PokerClient pokerClient, PlayerDatabase playerDatabase) { this.handHistoryFilePath = handHistoryFilePath; this.window = window; this.pokerClient = pokerClient; this.playerDatabase = playerDatabase; this.Game = PokerGame.Unknown; this.maxSeatingCapacity = 0; // We don't know yet this.TableId = String.Empty; // We don't know yet this.GameID = String.Empty; // We don't know yet this.currentHeroName = String.Empty; this.currentHeroSeat = 0; this.gameType = pokerClient.GetPokerGameTypeFromWindowTitle(WindowTitle); this.statistics = new TableStatistics(this); // We don't know what specific kind this.Hud = new Hud(this); this.visualRecognitionManager = null; // Not all tables have a visual recognition manager this.displayWindow = DaCMain.TableDisplayWindow.CreateForTable(this); // By default we use the universal parser handHistoryParser = new UniversalHHParser(pokerClient, System.IO.Path.GetFileName(handHistoryFilePath)); // But as soon as we find what kind of game we're using, we're going to update our parser */ ((UniversalHHParser)handHistoryParser).GameDiscovered += new UniversalHHParser.GameDiscoveredHandler(handHistoryParser_GameDiscovered); playerList = new List<Player>(10); //Usually no more than 10 players per table // Init hand history monitor hhMonitor = new HHMonitor(handHistoryFilePath, this); hhMonitor.StartMonitoring(); }
private void handHistoryParser_GameDiscovered(string game) { Trace.WriteLine(String.Format("Game discovered! {0}", game)); // Find to what game this game string corresponds Game = pokerClient.GetPokerGameFromGameDescription(game); bool foundParser = false; // Holdem? if (foundParser = (Game == PokerGame.Holdem)) { handHistoryParser = new HoldemHHParser(pokerClient, System.IO.Path.GetFileName(handHistoryFilePath)); statistics = new HoldemTableStatistics(this); } else if (Game == PokerGame.Unknown) { Trace.WriteLine("We weren't able to find a better parser for this Game"); } // If we replaced our parser, we need to register the event handlers if (foundParser) { // Generic handlers (all game types) handHistoryParser.PlayerIsSeated += new HHParser.PlayerIsSeatedHandler(handHistoryParser_PlayerIsSeated); handHistoryParser.RoundHasTerminated += new HHParser.RoundHasTerminatedHandler(handHistoryParser_RoundHasTerminated); handHistoryParser.NewTableHasBeenCreated += new HHParser.NewTableHasBeenCreatedHandler(handHistoryParser_NewTableHasBeenCreated); handHistoryParser.FoundTableMaxSeatingCapacity += new HHParser.FoundTableMaxSeatingCapacityHandler(handHistoryParser_FoundTableMaxSeatingCapacity); handHistoryParser.HeroNameFound += new HHParser.HeroNameFoundHandler(handHistoryParser_HeroNameFound); // Game specific handlers if (Game == PokerGame.Holdem) { ((HoldemHHParser)handHistoryParser).FinalBoardAvailable += new HoldemHHParser.FinalBoardAvailableHandler(handHistoryParser_FinalBoardAvailable); statistics.RegisterParserHandlers(handHistoryParser); } // Also, resend the last line to the new parser! hhMonitor.ResendLastLine(); } if (Game != PokerGame.Unknown) { // Close temporary window if (displayWindow != null) displayWindow.Dispose(); Globals.Director.RunFromGUIThread( (Action)delegate () { if (displayWindow != null) { displayWindow = TableDisplayWindow.CreateForTable(this); displayWindow.Show(); } }, false ); } }
/* We are done with this table */ public void Terminate() { PlayerList.Clear(); if (hhMonitor != null) hhMonitor.StopMonitoring(); if (visualRecognitionManager != null) visualRecognitionManager.Cleanup(); Globals.Director.RunFromGUIThread((Action)delegate () { if (DisplayWindow != null) { displayWindow.Close(); displayWindow = null; } }, false); Globals.Director.RunFromGUIThread((Action)delegate () { if (Hud != null) { Hud.RemoveHud(); Hud = null; } }, false); }