コード例 #1
0
        private void CreateTableFromPokerWindow(string windowTitle, IntPtr windowHandle)
        {
            /* We ignore any event that is caused by a window titled "HudWindow"
             * because the user might be simply interacting with our hud.
             * Same for "TableDisplayWindow" */
            if (windowTitle == "HudWindow" || windowTitle == "TableDisplayWindow")
            {
                return;
            }

            // Make sure the hand history directory is set (otherwise we cannot create a table)
            //TODO: Part of making a manual training game will be to make this optional
            if (!System.IO.Directory.Exists(Globals.UserSettings.StoredHandHistoryDirectory))
            {
                WriteDebug(WRITE_DEBUG, "A valid game is available on window " + windowTitle + ", but the hand history path is invalid. Fix the hand history path in your settings");
                return;
            }

            WriteDebug(WRITE_DEBUG, String.Format("Window title: {0}", windowTitle));

            String pattern = pokerClient.GetHandHistoryFilenameRegexPatternFromWindowTitle(windowTitle);

            if (pattern != String.Empty)
            {
                // If multiple events call this function while a table is added, multiple (non-expected) copies of a table will appear
                lock (createTableLock)
                {
                    // Valid poker window

                    pokerClient.DoPregameProcessing(Globals.UserSettings.StoredHandHistoryDirectory);

                    // We need to monitor this window for when it closes...
                    windowsListener.AddToMonitorList(windowTitle);

                    // Do we have a filename matching this window?
                    String filename = HHDirectoryParser.GetHandHistoryFilenameFromRegexPattern(Globals.UserSettings.HandHistoryDirectory, pattern);

                    if (filename != String.Empty)
                    {
                        String filePath = Globals.UserSettings.HandHistoryDirectory + @"\" + filename;

                        // A valid filename was found to be associated with a window title, see if we have a table already
                        Table table = FindTableByHHFilePath(filePath);

                        // Is there a game associated with this filename?
                        if (table == null)
                        {
                            // First time we see it, we need to create a table for this request
                            WriteDebug(WRITE_DEBUG, "--- we have a window, do we have a windowHandle? " + windowHandle.ToString());
                            Window window = null;
                            if (IntPtr.Zero == windowHandle)
                            {
                                WriteDebug(WRITE_DEBUG, "--- creating Window From Title: " + windowTitle);
                                window = new Window(windowTitle);
                            }
                            else
                            {
                                WriteDebug(WRITE_DEBUG, "--- creating Window From Handle: " + windowHandle.ToString());
                                window = new Window(windowHandle);
                                window.latestValidWindowTitle = windowTitle;
                            }
                            Table newTable = new Table(filePath, window, pokerClient, playerDatabase);

                            // and add it to our list
                            tables.Add(newTable);

                            WriteDebug(WRITE_DEBUG, "Created new table: " + newTable.WindowTitle + "(" + windowHandle.ToString() + ")" + " on " + newTable.HandHistoryFilePath);

                            OnDisplayStatus("Parsing for the first time... please wait.");

                            // Check for changes, now!
                            newTable.ParseHandHistoryNow();
                        }
                        else
                        {
                            // Inform the UI that we might need to shift the hud
                            ShiftHud(table);
                        }

                        OnDisplayStatus("Focus is on the table associated with " + filename);
                        WriteDebug(WRITE_DEBUG, String.Format("Valid window title match with {0}", filename));
                    }
                    else
                    {
                        OnDisplayStatus("New game started on window: " + windowTitle);
                        WriteDebug(WRITE_DEBUG, String.Format("A valid window title was found ({0}) but no filename associated with the window could be found using pattern {1}. Is this our first hand at the table and no hand history is available?", windowTitle, pattern));
                    }
                }
            }
            else
            {
                // The window is not a poker window... do what?
            }
        }