]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - common.c
added linux timing code to SDL client for more accurate r_speeds reports
[xonotic/darkplaces.git] / common.c
index c8ee1ca66f34e76b4fce41858aab3beee581c0a3..ad5f5abb686fc4348cbf1666f09da73e8623dfd1 100644 (file)
--- a/common.c
+++ b/common.c
@@ -20,7 +20,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 // common.c -- misc functions used in client and server
 
 #include "quakedef.h"
-#include "utf8lib.h"
 
 #include <stdlib.h>
 #include <fcntl.h>
@@ -105,6 +104,26 @@ void StoreBigLong (unsigned char *buffer, unsigned int i)
        buffer[3] = i         & 0xFF;
 }
 
+void StoreBigShort (unsigned char *buffer, unsigned short i)
+{
+       buffer[0] = (i >>  8) & 0xFF;
+       buffer[1] = i         & 0xFF;
+}
+
+void StoreLittleLong (unsigned char *buffer, unsigned int i)
+{
+       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;
+}
+
 /*
 ============================================================================
 
@@ -671,6 +690,9 @@ would be good for any more. At the beginning of the string, it will be called
 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.
@@ -697,7 +719,6 @@ int COM_Wordwrap(const char *string, size_t length, float continuationWidth, flo
        int result = 0;
        size_t wordLen;
        size_t dummy;
-       size_t wordChars;
 
        dummy = 0;
        wordWidth(passthroughCW, NULL, &dummy, -1);
@@ -710,12 +731,11 @@ int COM_Wordwrap(const char *string, size_t length, float continuationWidth, flo
                switch(ch)
                {
                        case 0: // end of string
-                               result += processLine(passthroughPL, startOfLine, u8_strnlen(startOfLine, cursor - startOfLine), spaceUsedInLine, isContinuation);
+                               result += processLine(passthroughPL, startOfLine, cursor - startOfLine, spaceUsedInLine, isContinuation);
                                isContinuation = false;
                                goto out;
-                               break;
                        case '\n': // end of line
-                               result += processLine(passthroughPL, startOfLine, u8_strnlen(startOfLine, cursor - startOfLine), spaceUsedInLine, isContinuation);
+                               result += processLine(passthroughPL, startOfLine, cursor - startOfLine, spaceUsedInLine, isContinuation);
                                isContinuation = false;
                                ++cursor;
                                startOfLine = cursor;
@@ -740,13 +760,8 @@ int COM_Wordwrap(const char *string, size_t length, float continuationWidth, flo
                                        }
                                }
                                out_inner:
-                               /*
-                               wordChars = strlen(cursor);
-                               if (wordChars > wordLen)
-                               */
-                               wordChars = wordLen;
-                               spaceUsedForWord = wordWidth(passthroughCW, cursor, &wordChars, 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(wordChars < 1)
+                               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) // cannot happen according to current spec of wordWidth
                                {
                                        wordLen = 1;
                                        spaceUsedForWord = maxWidth + 1; // too high, forces it in a line of itself
@@ -760,7 +775,7 @@ int COM_Wordwrap(const char *string, size_t length, float continuationWidth, flo
                                else
                                {
                                        // output current line
-                                       result += processLine(passthroughPL, startOfLine, u8_strnlen(startOfLine, cursor - startOfLine), spaceUsedInLine, isContinuation);
+                                       result += processLine(passthroughPL, startOfLine, cursor - startOfLine, spaceUsedInLine, isContinuation);
                                        isContinuation = true;
                                        startOfLine = cursor;
                                        cursor += wordLen;
@@ -1483,15 +1498,15 @@ static const gamemode_info_t gamemode_info [GAME_COUNT] =
 // GAME_EDU2P
 // COMMANDLINEOPTION: Game: -edu2p runs the game Edu2 prototype
 { "edu2p", "-edu2p", "EDU2 Prototype", "id1", "edu2", "edu2_p", "edu2prototype" },
-// GAME_BLADEMASTER
-// COMMANDLINEOPTION: Game: -blademaster runs the game Prophecy: Return of the BladeMaster
-{ "blademaster", "-blademaster", "Prophecy: Return of the BladeMaster", "basebm", NULL, "blademaster", "blademaster" },
 // GAME_PROPHECY
-// COMMANDLINEOPTION: Game: -prophecy runs the game Quake (default)
+// COMMANDLINEOPTION: Game: -prophecy runs the game Prophecy
 { "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" },
+// GAME_STEELSTORM
+// COMMANDLINEOPTION: Game: -steelstorm runs the game Steel Storm
+{ "steelstorm",                                "-steelstorm",          "Steel-Storm",          "gamedata",             NULL,                   "ss",                   "steelstorm" },
 };
 
 void COM_InitGameType (void)