#include "lock.h"
#include "san.h"
#include "search.h"
+#include "timeman.h"
#include "thread.h"
#include "tt.h"
#include "ucioption.h"
int myIncrement = increment[pos.side_to_move()];
if (UseTimeManagement)
{
- if (!movesToGo) // Sudden death time control
- {
- if (myIncrement)
- {
- MaxSearchTime = myTime / 30 + myIncrement;
- AbsoluteMaxSearchTime = Max(myTime / 4, myIncrement - 100);
- }
- else // Blitz game without increment
- {
- MaxSearchTime = myTime / 30;
- AbsoluteMaxSearchTime = myTime / 8;
- }
- }
- else // (x moves) / (y minutes)
- {
- if (movesToGo == 1)
- {
- MaxSearchTime = myTime / 2;
- AbsoluteMaxSearchTime = (myTime > 3000)? (myTime - 500) : ((myTime * 3) / 4);
- }
- else
- {
- MaxSearchTime = myTime / Min(movesToGo, 20);
- AbsoluteMaxSearchTime = Min((4 * myTime) / movesToGo, myTime / 3);
- }
- }
+ get_search_times(myTime, myIncrement, movesToGo, pos.startpos_ply_counter(),
+ &MaxSearchTime, &AbsoluteMaxSearchTime);
if (get_option_value_bool("Ponder"))
{
// Refresh tte entry to avoid aging
TT.store(posKey, tte->value(), tte->type(), tte->depth(), ttMove, tte->static_value(), tte->king_danger());
- ss->currentMove = ttMove; // Can be MOVE_NONE
+ ss->bestMove = ttMove; // Can be MOVE_NONE
return value_from_tt(tte->value(), ply);
}
if (nullValue == value_mated_in(ply + 2))
mateThreat = true;
- threatMove = (ss+1)->currentMove;
+ threatMove = (ss+1)->bestMove;
if ( depth < ThreatDepth
&& (ss-1)->reduction
&& connected_moves(pos, (ss-1)->currentMove, threatMove))
if (!PvNode && tte && ok_to_use_TT(tte, depth, beta, ply))
{
- ss->currentMove = ttMove; // Can be MOVE_NONE
+ ss->bestMove = ttMove; // Can be MOVE_NONE
return value_from_tt(tte->value(), ply);
}