============================================================================
*/
-short ShortSwap (short l)
-{
- unsigned char b1,b2;
-
- b1 = l&255;
- b2 = (l>>8)&255;
- return (b1<<8) + b2;
+float BuffBigFloat (const unsigned char *buffer)
+{
+ union
+ {
+ float f;
+ unsigned int i;
+ }
+ u;
+ u.i = (buffer[0] << 24) | (buffer[1] << 16) | (buffer[2] << 8) | buffer[3];
+ return u.f;
}
-int LongSwap (int l)
+int BuffBigLong (const unsigned char *buffer)
{
- unsigned char b1,b2,b3,b4;
-
- b1 = l&255;
- b2 = (l>>8)&255;
- b3 = (l>>16)&255;
- b4 = (l>>24)&255;
+ return (buffer[0] << 24) | (buffer[1] << 16) | (buffer[2] << 8) | buffer[3];
+}
- return ((int)b1<<24) + ((int)b2<<16) + ((int)b3<<8) + b4;
+short BuffBigShort (const unsigned char *buffer)
+{
+ return (buffer[0] << 8) | buffer[1];
}
-float FloatSwap (float f)
+float BuffLittleFloat (const unsigned char *buffer)
{
union
{
- float f;
- unsigned char b[4];
- } dat1, dat2;
-
-
- dat1.f = f;
- dat2.b[0] = dat1.b[3];
- dat2.b[1] = dat1.b[2];
- dat2.b[2] = dat1.b[1];
- dat2.b[3] = dat1.b[0];
- return dat2.f;
+ float f;
+ unsigned int i;
+ }
+ u;
+ u.i = (buffer[3] << 24) | (buffer[2] << 16) | (buffer[1] << 8) | buffer[0];
+ return u.f;
}
+int BuffLittleLong (const unsigned char *buffer)
+{
+ return (buffer[3] << 24) | (buffer[2] << 16) | (buffer[1] << 8) | buffer[0];
+}
-// Extract integers from buffers
-
-unsigned int BuffBigLong (const unsigned char *buffer)
+short BuffLittleShort (const unsigned char *buffer)
{
- return (buffer[0] << 24) | (buffer[1] << 16) | (buffer[2] << 8) | buffer[3];
+ return (buffer[1] << 8) | buffer[0];
}
-unsigned short BuffBigShort (const unsigned char *buffer)
+void StoreBigLong (unsigned char *buffer, unsigned int i)
{
- return (buffer[0] << 8) | buffer[1];
+ buffer[0] = (i >> 24) & 0xFF;
+ buffer[1] = (i >> 16) & 0xFF;
+ buffer[2] = (i >> 8) & 0xFF;
+ buffer[3] = i & 0xFF;
}
-unsigned int BuffLittleLong (const unsigned char *buffer)
+void StoreBigShort (unsigned char *buffer, unsigned short i)
{
- return (buffer[3] << 24) | (buffer[2] << 16) | (buffer[1] << 8) | buffer[0];
+ buffer[0] = (i >> 8) & 0xFF;
+ buffer[1] = i & 0xFF;
}
-unsigned short BuffLittleShort (const unsigned char *buffer)
+void StoreLittleLong (unsigned char *buffer, unsigned int i)
{
- return (buffer[1] << 8) | buffer[0];
+ buffer[0] = i & 0xFF;
+ buffer[1] = (i >> 8) & 0xFF;
+ buffer[2] = (i >> 16) & 0xFF;
+ buffer[3] = (i >> 24) & 0xFF;
}
+void StoreLittleShort (unsigned char *buffer, unsigned short i)
+{
+ buffer[0] = i & 0xFF;
+ buffer[1] = (i >> 8) & 0xFF;
+}
/*
============================================================================
for the char 0 to initialize a clean state, and then once with the string " "
(a space) so the routine knows how long a space is.
+In case no single character fits into the given width, the wordWidth function
+must return the width of exactly one character.
+
Wrapped lines get the isContinuation flag set and are continuationWidth less wide.
The sum of the return values of the processLine function will be returned.
}
out_inner:
spaceUsedForWord = wordWidth(passthroughCW, cursor, &wordLen, maxWidth - continuationWidth); // this may have reduced wordLen when it won't fit - but this is GOOD. TODO fix words that do fit in a non-continuation line
- if(wordLen < 1)
+ if(wordLen < 1) // cannot happen according to current spec of wordWidth
{
wordLen = 1;
spaceUsedForWord = maxWidth + 1; // too high, forces it in a line of itself
// 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