downloads use vfs.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@1777 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
03acc70202
commit
df331445ad
1 changed files with 20 additions and 10 deletions
|
@ -639,6 +639,8 @@ void Model_NextDownload (void)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
// done with modellist, request first of static signon messages
|
// done with modellist, request first of static signon messages
|
||||||
|
if (CL_RemoveClientCommands("prespawn"))
|
||||||
|
Con_Printf("Multiple prespawns\n");
|
||||||
// CL_SendClientCommand("prespawn %i 0 %i", cl.servercount, cl.worldmodel->checksum2);
|
// CL_SendClientCommand("prespawn %i 0 %i", cl.servercount, cl.worldmodel->checksum2);
|
||||||
CL_SendClientCommand(true, prespawn_name, cl.servercount, LittleLong(cl.worldmodel->checksum2));
|
CL_SendClientCommand(true, prespawn_name, cl.servercount, LittleLong(cl.worldmodel->checksum2));
|
||||||
}
|
}
|
||||||
|
@ -773,6 +775,8 @@ void CL_RequestNextDownload (void)
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (!requiredownloads.value)
|
||||||
|
return;
|
||||||
switch (cls.downloadtype)
|
switch (cls.downloadtype)
|
||||||
{
|
{
|
||||||
case dl_single:
|
case dl_single:
|
||||||
|
@ -937,7 +941,7 @@ void CL_ParseChunkedDownload(void)
|
||||||
else
|
else
|
||||||
sprintf (osname, "%s/%s", com_gamedir, cls.downloadtempname);
|
sprintf (osname, "%s/%s", com_gamedir, cls.downloadtempname);
|
||||||
COM_CreatePath (osname);
|
COM_CreatePath (osname);
|
||||||
cls.downloadqw = fopen (osname, "wb");
|
cls.downloadqw = FS_OpenVFS (osname, "wb", FS_GAME);
|
||||||
|
|
||||||
if (!cls.downloadqw)
|
if (!cls.downloadqw)
|
||||||
{
|
{
|
||||||
|
@ -986,11 +990,11 @@ void CL_ParseChunkedDownload(void)
|
||||||
firstblock++;
|
firstblock++;
|
||||||
}
|
}
|
||||||
|
|
||||||
fseek(cls.downloadqw, chunknum*DLBLOCKSIZE, SEEK_SET);
|
VFS_SEEK(cls.downloadqw, chunknum*DLBLOCKSIZE);
|
||||||
if (downloadsize - chunknum*DLBLOCKSIZE < DLBLOCKSIZE) //final block is actually meant to be smaller than we recieve.
|
if (downloadsize - chunknum*DLBLOCKSIZE < DLBLOCKSIZE) //final block is actually meant to be smaller than we recieve.
|
||||||
fwrite(data, 1, downloadsize - chunknum*DLBLOCKSIZE, cls.downloadqw);
|
VFS_WRITE(cls.downloadqw, data, downloadsize - chunknum*DLBLOCKSIZE);
|
||||||
else
|
else
|
||||||
fwrite(data, 1, DLBLOCKSIZE, cls.downloadqw);
|
VFS_WRITE(cls.downloadqw, data, DLBLOCKSIZE);
|
||||||
|
|
||||||
cls.downloadpercent = receivedbytes/(float)downloadsize*100;
|
cls.downloadpercent = receivedbytes/(float)downloadsize*100;
|
||||||
}
|
}
|
||||||
|
@ -1022,7 +1026,7 @@ int CL_RequestADownloadChunk(void)
|
||||||
|
|
||||||
// Con_Printf("^1 EOF?\n");
|
// Con_Printf("^1 EOF?\n");
|
||||||
|
|
||||||
fclose(cls.downloadqw);
|
VFS_CLOSE(cls.downloadqw);
|
||||||
CL_FinishDownload(cls.downloadname, cls.downloadtempname);
|
CL_FinishDownload(cls.downloadname, cls.downloadtempname);
|
||||||
|
|
||||||
Con_Printf("Download took %i seconds\n", (int)(Sys_DoubleTime() - downloadstarttime));
|
Con_Printf("Download took %i seconds\n", (int)(Sys_DoubleTime() - downloadstarttime));
|
||||||
|
@ -1080,7 +1084,7 @@ void CL_ParseDownload (void)
|
||||||
if (cls.downloadqw)
|
if (cls.downloadqw)
|
||||||
{
|
{
|
||||||
Con_TPrintf (TL_CLS_DOWNLOAD_ISSET);
|
Con_TPrintf (TL_CLS_DOWNLOAD_ISSET);
|
||||||
fclose (cls.downloadqw);
|
VFS_CLOSE (cls.downloadqw);
|
||||||
cls.downloadqw = NULL;
|
cls.downloadqw = NULL;
|
||||||
}
|
}
|
||||||
if (cl.downloadlist && !strcmp(cl.downloadlist->name, cls.downloadname))
|
if (cl.downloadlist && !strcmp(cl.downloadlist->name, cls.downloadname))
|
||||||
|
@ -1107,7 +1111,7 @@ void CL_ParseDownload (void)
|
||||||
|
|
||||||
COM_CreatePath (name);
|
COM_CreatePath (name);
|
||||||
|
|
||||||
cls.downloadqw = fopen (name, "wb");
|
cls.downloadqw = FS_OpenVFS (name, "wb", FS_GAME);
|
||||||
if (!cls.downloadqw)
|
if (!cls.downloadqw)
|
||||||
{
|
{
|
||||||
msg_readcount += size;
|
msg_readcount += size;
|
||||||
|
@ -1127,14 +1131,14 @@ void CL_ParseDownload (void)
|
||||||
|
|
||||||
percent = percent - 101;
|
percent = percent - 101;
|
||||||
|
|
||||||
fwrite (ZLibDownloadDecode(&compsize, net_message.data + msg_readcount, size), 1, size, cls.download);
|
VFS_WRITE (cls.download, ZLibDownloadDecode(&compsize, net_message.data + msg_readcount, size), size);
|
||||||
|
|
||||||
msg_readcount += compsize;
|
msg_readcount += compsize;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
fwrite (net_message.data + msg_readcount, 1, size, cls.downloadqw);
|
VFS_WRITE (cls.downloadqw, net_message.data + msg_readcount, size);
|
||||||
msg_readcount += size;
|
msg_readcount += size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1151,7 +1155,7 @@ void CL_ParseDownload (void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
fclose (cls.downloadqw);
|
VFS_CLOSE (cls.downloadqw);
|
||||||
|
|
||||||
CL_FinishDownload(cls.downloadname, cls.downloadtempname);
|
CL_FinishDownload(cls.downloadname, cls.downloadtempname);
|
||||||
*cls.downloadname = '\0';
|
*cls.downloadname = '\0';
|
||||||
|
@ -1420,11 +1424,15 @@ void CL_ParseServerData (void)
|
||||||
#ifdef PEXT_PK3DOWNLOADS
|
#ifdef PEXT_PK3DOWNLOADS
|
||||||
if (cls.fteprotocolextensions & PEXT_PK3DOWNLOADS) //instead of going for a soundlist, go for the pk3 list instead. The server will make us go for the soundlist after.
|
if (cls.fteprotocolextensions & PEXT_PK3DOWNLOADS) //instead of going for a soundlist, go for the pk3 list instead. The server will make us go for the soundlist after.
|
||||||
{
|
{
|
||||||
|
if (CL_RemoveClientCommands("pk3list"))
|
||||||
|
Con_Printf("Multiple pk3lists\n");
|
||||||
CL_SendClientCommand ("pk3list %i 0", cl.servercount, 0);
|
CL_SendClientCommand ("pk3list %i 0", cl.servercount, 0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
|
if (CL_RemoveClientCommands("soundlist"))
|
||||||
|
Con_Printf("Multiple soundlists\n");
|
||||||
// ask for the sound list next
|
// ask for the sound list next
|
||||||
// CL_SendClientCommand ("soundlist %i 0", cl.servercount);
|
// CL_SendClientCommand ("soundlist %i 0", cl.servercount);
|
||||||
CL_SendClientCommand (true, soundlist_name, cl.servercount, 0);
|
CL_SendClientCommand (true, soundlist_name, cl.servercount, 0);
|
||||||
|
@ -1987,6 +1995,8 @@ void CL_ParseModellist (qboolean lots)
|
||||||
|
|
||||||
if (n)
|
if (n)
|
||||||
{
|
{
|
||||||
|
if (CL_RemoveClientCommands("modellist"))
|
||||||
|
Con_Printf("Multiple modellists\n");
|
||||||
// CL_SendClientCommand("modellist %i %i", cl.servercount, n);
|
// CL_SendClientCommand("modellist %i %i", cl.servercount, n);
|
||||||
CL_SendClientCommand(true, modellist_name, cl.servercount, (nummodels&0xff00) + n);
|
CL_SendClientCommand(true, modellist_name, cl.servercount, (nummodels&0xff00) + n);
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Reference in a new issue