Beispiel #1
0
        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();
        }
Beispiel #2
0
        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
                 );
            }
        }
Beispiel #3
0
        /* 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);
        }