// Should be called
// * when a hand is over
// * when it is my turn (summary in the log)
void CHandHistoryWriter::WriteHistory() {
  write_log_separator(true, "Summary (might be not accurate)");
  for (int i=0; i<_lines_collected; ++i) {
     write_log(true, (char*)(LPCTSTR)_handhistory_data[i]); 
  }
  write_log_separator(true, "");
  _lines_collected = 0;
}
void CAutoplayerTrace::LogAutoPlayerTrace() {
  if (!preferences.trace_enabled() 
      || (_symboltrace_collection.GetSize() <= 0)) {
    return;
  }
  write_log_separator(true, "Autoplayer Trace");
  for (int i=0; i<_symboltrace_collection.GetSize(); ++i) {
	  write_log_nostamp(true, "%s\n", _symboltrace_collection.GetAt(i));
  }
  write_log_separator(true, "");
}
Example #3
0
void start_log(void) {
	if (log_fp!=NULL)
		return;

	CSLock lock(log_critsec);

	CString fn = p_filenames->LogFilename();
	// Check, if file exists and size is too large
	struct stat file_stats = { 0 };
	if (stat(fn.GetString(), &file_stats) == 0)
	{
		unsigned long int max_file_size = 1E06 * preferences.log_max_logsize();
		size_t file_size = file_stats.st_size;
		if (file_size > max_file_size)
		{
			remove(fn.GetString());
		}
	}

	// Append (or create) log
	if ((log_fp = _fsopen(fn.GetString(), "a", _SH_DENYWR)) != 0) {
		write_log_separator(k_always_log_basic_information, "LOG FILE OPEN");
		fflush(log_fp);
	}

}
Example #4
0
void stop_log(void) {
  write_footer_if_necessary();
  if (log_fp == NULL) return;

  write_log_separator(k_always_log_basic_information, "LOG FILE CLOSED");
  fclose(log_fp);
  log_fp = NULL;
}
void CAutoplayerTrace::LogSecondaryAction(const char *action_taken) {
  write_log_separator(true, "Secondary Action");
  write_log(k_always_log_basic_information, "  Action taken:  %s\n", action_taken);
  write_log_separator(true, "");
}
void CAutoplayerTrace::LogBasicInfo(const char *action_taken) {
  CString	pcards, comcards, temp, rank, pokerhand;
  CString	fcra_formula_status;
  int		userchair = p_symbol_engine_userchair->userchair();
  int		betround  = p_betround_calculator->betround();

  // player cards
  if (p_symbol_engine_userchair->userchair_confirmed()) {
    for (int i=0; i<=1; i++) {
      Card card = p_table_state->User()->_hole_cards[i];
      pcards.Append(card.ToString());
    }
  } else {
	pcards = "....";
  }
  // common cards
  comcards = "";
  if (betround >= kBetroundFlop) {
    for (int i=0; i<kNumberOfFlopCards; i++) {
      if (p_table_state->_common_cards[i].IsKnownCard()) {
        comcards.Append(p_table_state->_common_cards[i].ToString());
      }
    }
  }
  if (betround >= kBetroundTurn) {
    comcards.Append(p_table_state->_common_cards[3].ToString());
  }
  if (betround >= kBetroundRiver) {
    comcards.Append(p_table_state->_common_cards[4].ToString());
  }
  comcards.Append("..........");
  comcards = comcards.Left(10);
  // Always use handrank169 here
  rank.Format("%.0f", p_symbol_engine_handrank->handrank169());
  // poker hand
  pokerhand = p_symbol_engine_pokerval->HandType();
  // fcra_seen
  CString fcra_seen = p_symbol_engine_autoplayer->GetFCKRAString();
  // fcra formula status
  fcra_formula_status.Format("%s%s%s%s%s",
	p_function_collection->EvaluateAutoplayerFunction(k_autoplayer_function_fold)  ? "F" : ".",
	p_function_collection->EvaluateAutoplayerFunction(k_autoplayer_function_call)  ? "C" : ".",
	p_function_collection->EvaluateAutoplayerFunction(k_autoplayer_function_check) ? "K" : ".",
	p_function_collection->EvaluateAutoplayerFunction(k_autoplayer_function_raise) ? "R" : ".",
	p_function_collection->EvaluateAutoplayerFunction(k_autoplayer_function_allin) ? "A" : ".");
  // More verbose summary in the log
  // The old WinHoldem format was a complete mess
  write_log_separator(true, "Basic Info");
  write_log(k_always_log_basic_information, "  Version:       %s\n",    VERSION_TEXT); 
  write_log(k_always_log_basic_information, "  Chairs:        %5d\n",   p_tablemap->nchairs());
  write_log(k_always_log_basic_information, "  Userchair:     %5d\n",   userchair);
  write_log(k_always_log_basic_information, "  Holecards:     %s\n",    pcards.GetString());
  write_log(k_always_log_basic_information, "  Community:     %s\n",    comcards.GetString());
  write_log(k_always_log_basic_information, "  Handrank:      %s\n",    rank.GetString());
  write_log(k_always_log_basic_information, "  Hand:          %s\n",    pokerhand.GetString());
  write_log(k_always_log_basic_information, "  My balance:    %9.2f\n", p_table_state->User()->_balance);
  write_log(k_always_log_basic_information, "  My currentbet: %9.2f\n", p_table_state->User()->_bet); 
  write_log(k_always_log_basic_information, "  To call:       %9.2f\n", p_symbol_engine_chip_amounts->call());
  write_log(k_always_log_basic_information, "  Pot:           %9.2f\n", p_symbol_engine_chip_amounts->pot());
  write_log(k_always_log_basic_information, "  Big blind:     %9.2f\n", p_symbol_engine_tablelimits->bblind());
  write_log(k_always_log_basic_information, "  Big bet (FL):  %9.2f\n", p_symbol_engine_tablelimits->bigbet());
  write_log(k_always_log_basic_information, "  f$betsize:     %9.2f\n", p_function_collection->EvaluateAutoplayerFunction(k_autoplayer_function_betsize));
  write_log(k_always_log_basic_information, "  Formulas:      %s\n",    fcra_formula_status.GetString());
  write_log(k_always_log_basic_information, "  Buttons:       %s\n",    fcra_seen.GetString());
  write_log(k_always_log_basic_information, "  Best action:   %s\n",    BestAction().GetString());
  write_log(k_always_log_basic_information, "  Action taken:  %s\n",    action_taken);
  write_log_separator(true, "");
  // Also show "BestAction" in the statusbar.
  // This needs to be set exactly once to avoid multiple evaluations 
  // of the autoplayer functions
  p_openholdem_statusbar->SetLastAction(BestAction());
}