]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - sv_main.c
make DP compile with C++ again
[xonotic/darkplaces.git] / sv_main.c
index e0fd7e764d53ddfbfaf74007b7bce692e672b552..75d43359ef19e3c295f5b74cb541c6f27c6b06c4 100644 (file)
--- a/sv_main.c
+++ b/sv_main.c
@@ -792,7 +792,7 @@ void SV_SendServerinfo (client_t *client)
                        char buf[NET_MAXMESSAGE];
                        sizebuf_t sb;
 
-                       sb.data = (void *) buf;
+                       sb.data = (unsigned char *) buf;
                        sb.maxsize = sizeof(buf);
                        i = 0;
                        while(MakeDownloadPacket(sv.csqc_progname, sv.csqc_progdata, sv.csqc_progsize, sv.csqc_progcrc, i++, &sb, sv.protocol))
@@ -1401,6 +1401,7 @@ void SV_MarkWriteEntityStateToClient(entity_state_t *s)
 
 void SV_WriteEntitiesToClient(client_t *client, prvm_edict_t *clent, sizebuf_t *msg, int maxsize)
 {
+       qboolean need_empty = false;
        int i, numsendstates;
        entity_state_t *s;
        prvm_edict_t *camera;
@@ -1448,12 +1449,12 @@ void SV_WriteEntitiesToClient(client_t *client, prvm_edict_t *clent, sizebuf_t *
                Con_Printf("client \"%s\" entities: %d total, %d visible, %d culled by: %d pvs %d trace\n", client->name, sv.writeentitiestoclient_stats_totalentities, sv.writeentitiestoclient_stats_visibleentities, sv.writeentitiestoclient_stats_culled_pvs + sv.writeentitiestoclient_stats_culled_trace, sv.writeentitiestoclient_stats_culled_pvs, sv.writeentitiestoclient_stats_culled_trace);
 
        if(client->entitydatabase5)
-               EntityFrameCSQC_WriteFrame(msg, maxsize, numsendstates, sv.writeentitiestoclient_sendstates, client->entitydatabase5->latestframenum + 1);
+               need_empty = EntityFrameCSQC_WriteFrame(msg, maxsize, numsendstates, sv.writeentitiestoclient_sendstates, client->entitydatabase5->latestframenum + 1);
        else
                EntityFrameCSQC_WriteFrame(msg, maxsize, numsendstates, sv.writeentitiestoclient_sendstates, 0);
 
        if (client->entitydatabase5)
-               EntityFrame5_WriteFrame(msg, maxsize, client->entitydatabase5, numsendstates, sv.writeentitiestoclient_sendstates, client - svs.clients + 1, client->movesequence);
+               EntityFrame5_WriteFrame(msg, maxsize, client->entitydatabase5, numsendstates, sv.writeentitiestoclient_sendstates, client - svs.clients + 1, client->movesequence, need_empty);
        else if (client->entitydatabase4)
        {
                EntityFrame4_WriteFrame(msg, maxsize, client->entitydatabase4, numsendstates, sv.writeentitiestoclient_sendstates);
@@ -1607,8 +1608,8 @@ void SV_WriteClientdataToMessage (client_t *client, prvm_edict_t *ent, sizebuf_t
        stats[STAT_CELLS] = (int)ent->fields.server->ammo_cells;
        stats[STAT_ACTIVEWEAPON] = (int)ent->fields.server->weapon;
        stats[STAT_VIEWZOOM] = viewzoom;
-       stats[STAT_TOTALSECRETS] = prog->globals.server->total_secrets;
-       stats[STAT_TOTALMONSTERS] = prog->globals.server->total_monsters;
+       stats[STAT_TOTALSECRETS] = (int)prog->globals.server->total_secrets;
+       stats[STAT_TOTALMONSTERS] = (int)prog->globals.server->total_monsters;
        // the QC bumps these itself by sending svc_'s, so we have to keep them
        // zero or they'll be corrected by the engine
        //stats[STAT_SECRETS] = prog->globals.server->found_secrets;
@@ -2121,6 +2122,31 @@ static void SV_StartDownload_f(void)
                host_client->download_started = true;
 }
 
+/*
+ * Compression extension negotiation:
+ *
+ * Server to client:
+ *   cl_serverextension_download 2
+ *
+ * Client to server:
+ *   download <filename> <list of zero or more suppported compressions in order of preference>
+ * e.g.
+ *   download maps/map1.bsp lzo deflate huffman
+ *
+ * Server to client:
+ *   cl_downloadbegin <compressed size> <filename> <compression method actually used>
+ * e.g.
+ *   cl_downloadbegin 123456 maps/map1.bsp deflate
+ *
+ * The server may choose not to compress the file by sending no compression name, like:
+ *   cl_downloadbegin 345678 maps/map1.bsp
+ *
+ * NOTE: the "download" command may only specify compression algorithms if
+ *       cl_serverextension_download is 2!
+ *       If cl_serverextension_download has a different value, the client must
+ *       assume this extension is not supported!
+ */
+
 static void Download_CheckExtensions(void)
 {
        int i;
@@ -3079,7 +3105,6 @@ static qboolean SV_VM_CB_LoadEdict(prvm_edict_t *ent)
 
 static void SV_VM_Setup(void)
 {
-       extern cvar_t csqc_progname;    //[515]: csqc crc check and right csprogs name according to progs.dat
        PRVM_Begin;
        PRVM_InitProg( PRVM_SERVERPROG );