{ "td", ArgFloat, (void *) &appData.timeDelay, FALSE, INVALID },
{ "timeControl", ArgString, (void *) &appData.timeControl, TRUE, (ArgIniType) TIME_CONTROL },
{ "tc", ArgString, (void *) &appData.timeControl, FALSE, INVALID },
- { "timeIncrement", ArgInt, (void *) &appData.timeIncrement, TRUE, (ArgIniType) TIME_INCREMENT },
- { "inc", ArgInt, (void *) &appData.timeIncrement, FALSE, INVALID },
+ { "timeIncrement", ArgFloat, (void *) &appData.timeIncrement, TRUE, INVALID },
+ { "inc", ArgFloat, (void *) &appData.timeIncrement, FALSE, INVALID },
{ "internetChessServerMode", ArgBoolean, (void *) &appData.icsActive, FALSE, INVALID },
{ "ics", ArgTrue, (void *) &appData.icsActive, FALSE, (ArgIniType) FALSE },
{ "xics", ArgFalse, (void *) &appData.icsActive, FALSE, INVALID },
// float: casting to int is not harmless, so default cannot be contained in table
appData.timeDelay = TIME_DELAY;
+ appData.timeIncrement = TIME_INCREMENT;
// some complex, platform-dependent stuff that could not be handled from table
SetDefaultTextAttribs();
if(**str == '!') type = *(*str)++; // Bronstein TC
if(result = NextIntegerFromString( str, &temp2)) return -1;
*inc = temp2 * 1000;
+ if(**str == '.') { // read fraction of increment
+ char *start = ++(*str);
+ if(result = NextIntegerFromString( str, &temp2)) return -1;
+ temp2 *= 1000;
+ while(start++ < *str) temp2 /= 10;
+ *inc += temp2;
+ }
} else *inc = 0;
*moves = 0; *tc = temp * 1000; *incType = type;
return 0;
int
ParseTimeControl(tc, ti, mps)
char *tc;
- int ti;
+ float ti;
int mps;
{
long tc1;
if(ti > 0) {
if(mps)
- snprintf(buf, MSG_SIZ, ":%d/%s+%d", mps, mytc, ti);
+ snprintf(buf, MSG_SIZ, ":%d/%s+%g", mps, mytc, ti);
else
- snprintf(buf, MSG_SIZ, ":%s+%d", mytc, ti);
+ snprintf(buf, MSG_SIZ, ":%s+%g", mytc, ti);
} else {
if(mps)
snprintf(buf, MSG_SIZ, ":%d/%s", mps, mytc);
/* Note old gnuchess bug -- minutes:seconds used to not work.
Fixed in later versions, but still avoid :seconds
when seconds is 0. */
- snprintf(buf, MSG_SIZ, "level %d %ld %d\n", mps, tc/60000, inc/1000);
+ snprintf(buf, MSG_SIZ, "level %d %ld %g\n", mps, tc/60000, inc/1000);
} else {
- snprintf(buf, MSG_SIZ, "level %d %ld:%02d %d\n", mps, tc/60000,
+ snprintf(buf, MSG_SIZ, "level %d %ld:%02d %g\n", mps, tc/60000,
seconds, inc/1000);
}
}
void DisplayBothClocks P((void));
void EditPositionMenuEvent P((ChessSquare selection, int x, int y));
void DropMenuEvent P((ChessSquare selection, int x, int y));
-int ParseTimeControl P((char *tc, int ti, int mps));
+int ParseTimeControl P((char *tc, float ti, int mps));
void EscapeExpand(char *p, char *q);
void ProcessICSInitScript P((FILE * f));
void EditCommentEvent P((void));
int premoveHighlightColor;
#endif
int movesPerSession;
- int timeIncrement;
+ float timeIncrement;
char *initString;
char *secondInitString;
char *firstComputerString;