Ejemplo n.º 1
0
void Hand::HandValueToString(char* str)
{
	HandVal_toString(hand_value, str);

	return;
}
void COpenHoldemStatusbar::ComputeCurrentStatus() {
	CardMask	Cards;
	CString		temp; 
	int userchair = p_symbol_engine_userchair->userchair();
	// Player cards
	CardMask_RESET(Cards);
	int nCards = 0;
	_status_plcards = "";
	if (p_table_state->User()->HasKnownCards()) {
		for (int i=0; i<k_number_of_cards_per_player; i++) {	
			// This condition got already checked: "playing"
      Card card = p_table_state->User()->_hole_cards[i];
      // Assertion removeed, because the scraper runs in a different thread.
			// assert(card.IsKnownCard()); 
		  _status_plcards.Append(card.ToString());
      CardMask_SET(Cards, card.GetValue());
			nCards++;
		}
		_status_nopp.Format("%d", p_symbol_engine_prwin->nopponents_for_prwin());
	}	else 	{
		for (int i=0; i<k_number_of_cards_per_player; i++) {
			if (p_table_state->User()->HasKnownCards())	{
				Card card = p_table_state->User()->_hole_cards[i];
				_status_plcards.Append(card.ToString());
        CardMask_SET(Cards, card.GetValue());
				nCards++;
			}
		}
		// Not playing, therefore no opponents to be considered for prwin.
		_status_nopp = "";
	}

	// Common cards
	_status_comcards = "";
	for (int i=0; i<k_number_of_community_cards; i++) {
    Card card = p_table_state->_common_cards[i];
		if (card.IsKnownCard())	{
			_status_comcards.Append(card.ToString());
			CardMask_SET(Cards, card.GetValue());
			nCards++;
		}
	}

	// poker hand
	HandVal hv = Hand_EVAL_N(Cards, nCards);
	char hvstring[100] = {0};
	HandVal_toString(hv, hvstring);
	_status_pokerhand = hvstring;
	_status_pokerhand = _status_pokerhand.Mid(0, _status_pokerhand.Find(" "));

	// Always use handrank169 here
	_status_handrank.Format("%.0f/169", p_symbol_engine_handrank->handrank169());

	// Always update prwin/nit
	if (p_symbol_engine_userchair->userchair_confirmed() 
		  && p_table_state->User()->HasKnownCards()) {
		_status_prwin.Format("%d/%d/%d", 
			(int) (p_iterator_thread->prwin()*1000), 
			(int) (p_iterator_thread->prtie()*1000),
			(int) (p_iterator_thread->prlos()*1000));
		double iterations;
		p_engine_container->EvaluateSymbol("f$prwin_number_of_iterations", &iterations);
		_status_nit.Format("%d/%s", 
			p_iterator_thread->IteratorThreadProgress(),
			Number2CString(iterations));
	}	else {
		_status_prwin = "0/0/0";
		// No iteratrions without userchair or cards
		_status_nit.Format("0");
	}
}