bool CPokerTrackerThread::SkipUpdateForChair(int chair) { int userchair = p_symbol_engine_userchair->userchair(); bool confirmed = p_symbol_engine_userchair->userchair_confirmed(); if (userchair == chair && confirmed) { write_log(preferences.debug_pokertracker(), "[PokerTracker] GetStatsForChair for chair [%d] had been skipped. Reason: [User sits in this chair]\n", chair); return true; } int hands = (int)PT_DLL_GetStat("pt_hands", chair); if (hands > _m_min_hands_for_slower_update) { if (UpdateAllStats(chair)) return false; else { write_log(preferences.debug_pokertracker(), "[PokerTracker] GetStatsForChair for chair [%d] had been skipped. Reason: [User has lots of hands]\n", chair); return true; } } return false; }
bool CSymbolEnginePokerTracker::EvaluateSymbol(const char *name, double *result, bool log /* = false */) { FAST_EXIT_ON_OPENPPL_SYMBOLS(name); if (memcmp(name,"pt_",3)!=0) { // Symbol of a different symbol-engine return false; } CString s = name; CheckForChangedPlayersOncePerHeartbeatAndSymbolLookup(); if (IsOldStylePTSymbol(s)) { CString error_message; error_message.Format( "Old style PokerTracker symbol detected: %s.\n" "\n" "PokerTracker symbol start with \"pt_\".\n" "Possible postfixes:\n" " * chair number (0..9)\n" " * _raischair\n" " * _headsup\n" " * _smallblind\n" " * _bigblind\n" " * _dealer\n" " * _cutoff\n" " * _user\n" " * _firstraiser\n" " * _firstcaller\n" " * _lastcaller\n", s); OH_MessageBox_Formula_Error( error_message, "ERROR: Invalid PokerTracker Symbol"); *result = kUndefined; return true; } if (!PT_DLL_IsValidSymbol(CString(s))) { // Invalid PokerTracker symbol WarnAboutInvalidPTSymbol(s); *result = kUndefined; return true; } int chair = 0; if (!p_pokertracker_thread->IsConnected()) { if (!p_symbol_engine_userchair->userchair_confirmed() || p_formula_parser->IsParsing()) { // We are not yet seated or formula is getting parsed. // Symbol-lookup happens, because of Formula-validation. // Not a problem, if we do not yet have a DB-connection. // Don't throw a warning here. write_log(preferences.debug_pokertracker(), "[PokerTracker] Not yet seated or formula parsing.\n"); } else { // We are seated and playing. // Serious problem, if we do not have a DB-connection. OH_MessageBox_Error_Warning("Not connected to PokerTracker database.\n" "Can't use PokerTracker symbols."); } *result = kUndefined; return true; } CString standard_symbol_name; assert(StringAIsPrefixOfStringB("pt_", s)); // PokerTracker symbols for the raise-chair if (s.Right(10) == "_raischair") { chair = p_symbol_engine_raisers->raischair(); } // PokerTracker symbols for the opponent headsup chair else if (s.Right(8) == "_headsup") { chair = p_symbol_engine_chairs->opponent_headsup_chair(); } // PokerTracker symbols for the smallblind chair else if (s.Right(11) == "_smallblind") { chair = p_symbol_engine_chairs->smallblind_chair(); } // PokerTracker symbols for the bigblind chair else if (s.Right(9) == "_bigblind") { chair = p_symbol_engine_chairs->bigblind_chair(); } // PokerTracker symbols for the cutoff chair else if (s.Right(7) == "_cutoff") { chair = p_symbol_engine_chairs->cutoff_chair(); } // PokerTracker symbols for the firstcaller chair else if (s.Right(12) == "_firstcaller") { chair = p_symbol_engine_callers->firstcaller_chair(); } // PokerTracker symbols for the lastcaller chair else if (s.Right(11) == "_lastcaller") { chair = p_symbol_engine_callers->lastcaller_chair(); } // PokerTracker symbols for the firstraiser chair else if (s.Right(12) == "_firstraiser") { chair = p_symbol_engine_raisers->firstraiser_chair(); } // PokerTracker symbols for the dealerchair chair else if (s.Right(7) == "_dealer") { chair = p_symbol_engine_dealerchair->dealerchair(); } // PokerTracker symbols for the chair else if (s.Right(5) == "_user") { chair = p_symbol_engine_userchair->userchair(); } // PokerTracker symbols for chair X else { CString symbol = s; CString last_character = symbol.Right(1); if (!isdigit(last_character[0])) { CString error_message; error_message.Format("Invalid PokerTracker Symbol: &s", symbol); OH_MessageBox_Formula_Error(error_message, "ERROR"); *result = kUndefined; return false; } chair = atoi(last_character); } // Catch undefined chair (e.g. pt_r_-symbol without raisee) if (chair < 0) { *result = kUndefined; return true; } AssertRange(chair, kFirstChair, kLastChair); *result = PT_DLL_GetStat(s, chair); return true; }
int CSymbolEnginePokerTracker::PlayerIcon(const int chair) { assert(chair >= 0); assert(chair <= kLastChair); return PT_DLL_GetStat("icon", chair); }