// GAME_PROPHECY
// COMMANDLINEOPTION: Game: -prophecy runs the game Quake (default)
{ "prophecy", "-prophecy", "Prophecy", "data", NULL, "prophecy", "prophecy" },
+// GAME_BLOODOMNICIDE
+// COMMANDLINEOPTION: Game: -omnicide runs the game Blood Omnicide
+{ "omnicide", "-omnicide", "Blood Omnicide", "kain", NULL, "omnicide", "omnicide" },
};
void COM_InitGameType (void)
++s;
switch((s == end) ? 0 : *s)
{
- case STRING_COLOR_RGB_DEFAULT:
+ case STRING_COLOR_RGB_TAG_CHAR:
if (s+1 != end && isxdigit(s[1]) &&
s+2 != end && isxdigit(s[2]) &&
s+3 != end && isxdigit(s[3]) )
break;
}
++len; // STRING_COLOR_TAG
- ++len; // STRING_COLOR_RGB_DEFAULT
+ ++len; // STRING_COLOR_RGB_TAG_CHAR
break;
- /*case 'a':
- if ( s+1 != end && ( isxdigit(s[1]) || (s[1] == '+' || s[1] == '-') ) )
- {
- s++;
- break;
- }
- ++len; // STRING_COLOR_TAG
- ++len; // STRING_COLOR_RGB_DEFAULT
- break;*/
case 0: // ends with unfinished color code!
++len;
if(valid)
++in;
switch((in == end) ? 0 : *in)
{
- case STRING_COLOR_RGB_DEFAULT:
+ case STRING_COLOR_RGB_TAG_CHAR:
if (in+1 != end && isxdigit(in[1]) &&
in+2 != end && isxdigit(in[2]) &&
in+3 != end && isxdigit(in[3]) )
APPEND(STRING_COLOR_TAG);
if(escape_carets)
APPEND(STRING_COLOR_TAG);
- APPEND(STRING_COLOR_RGB_DEFAULT);
+ APPEND(STRING_COLOR_RGB_TAG_CHAR);
break;
- /*case 'a':
- if ( in+1 != end && ( isxdigit(in[1]) || (in[1] == '+' || in[1] == '-') ) )
- {
- in++;
- break;
- }*/
case 0: // ends with unfinished color code!
APPEND(STRING_COLOR_TAG);
// finish the code by appending another caret when escaping
}
#endif // #ifndef HAVE_STRLCPY
+
+void FindFraction(double val, int *num, int *denom, int denomMax)
+{
+ int i;
+ double bestdiff;
+ // initialize
+ bestdiff = fabs(val);
+ *num = 0;
+ *denom = 1;
+
+ for(i = 1; i <= denomMax; ++i)
+ {
+ int inum = (int) floor(0.5 + val * i);
+ double diff = fabs(val - inum / (double)i);
+ if(diff < bestdiff)
+ {
+ bestdiff = diff;
+ *num = inum;
+ *denom = i;
+ }
+ }
+}