short rtf = in_opening_stage ? 8 : 2;
short tcq = in_opening_stage ? 2 : 4;
- TimeControl.clock[side] += TCadd;
+ if(!xboard) /* no pre-add of increment in XBoard mode */
+ TimeControl.clock[side] += TCadd;
ResponseTime = (TimeControl.clock[side])
/ (((TimeControl.moves[side]) * rtf) + 1);
TCleft = (long)ResponseTime / tcq;
else
{
/* calculate avg time per move remaining */
- TimeControl.clock[side] += TCadd;
+
+ if(!xboard) /* no pre-add of increment in XBoard mode */
+ TimeControl.clock[side] += TCadd;
ResponseTime = (TimeControl.clock[side])
/ (((TimeControl.moves[side]) * 2) + 1);
TCcount = MAXTCCOUNTX;
}
#endif
-
+printf("# %2d. moves=%d,%d time=%d,%d ResponseTime=%d+%d\n",GameCnt,TimeControl.moves[computer],TimeControl.moves[opponent],TimeControl.clock[computer],TimeControl.clock[opponent],ResponseTime,TCleft);
assert(TCcount <= MAXTCCOUNTX);
}
#endif
if (flag.timeout)
- ShowMessage("timeout");
+ dsp->ShowMessage("timeout");
}
struct timeval tv;
#endif
- PollForInput();
+ dsp->PollForInput();
#ifdef HAVE_GETTIMEOFDAY
gettimeofday(&tv, NULL);
#ifdef QUIETBACKGROUND
if (!background)
#endif
- UpdateClocks();
+ dsp->UpdateClocks();
+ }
+}
+
+
+void
+SetTimeControl(void)
+{
+ if (TCflag)
+ {
+ TimeControl.moves[black] = TimeControl.moves[white] = TCmoves;
+ TimeControl.clock[black] += 6000L * TCminutes + TCseconds * 100;
+ TimeControl.clock[white] += 6000L * TCminutes + TCseconds * 100;
+ }
+ else
+ {
+ TimeControl.moves[black] = TimeControl.moves[white] = 0;
+ TimeControl.clock[black] = TimeControl.clock[white] = 0;
+ }
+
+ flag.onemove = (TCmoves == 1);
+ et = 0;
+ ElapsedTime(COMPUTE_AND_INIT_MODE);
+}
+
+void
+RenewTimeControl(int side, int TCadd)
+{
+ if (flag.gamein || TCadd)
+ {
+ TimeCalc();
+ }
+ else if (TimeControl.moves[side] == 0)
+ {
+ if (XC)
+ {
+ if (XCmore < XC)
+ {
+ TCmoves = XCmoves[XCmore];
+ TCminutes = XCminutes[XCmore];
+ TCseconds = XCseconds[XCmore];
+ XCmore++;
+ }
+ }
+
+ SetTimeControl();
}
}