Downloads should be working again.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@779 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
78e798722b
commit
94e1cf50ea
3 changed files with 140 additions and 56 deletions
|
@ -973,6 +973,8 @@ void CL_SendCmd (void)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CL_SendDownloadReq();
|
||||||
|
|
||||||
if (msecstouse > 255)
|
if (msecstouse > 255)
|
||||||
msecstouse = 255;
|
msecstouse = 255;
|
||||||
|
|
||||||
|
|
|
@ -610,6 +610,62 @@ void CL_Connect_f (void)
|
||||||
CL_BeginServerConnect();
|
CL_BeginServerConnect();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CL_Join_f (void)
|
||||||
|
{
|
||||||
|
char *server;
|
||||||
|
|
||||||
|
if (Cmd_Argc() != 2)
|
||||||
|
{
|
||||||
|
if (cls.state)
|
||||||
|
{ //Hmm. This server sucks.
|
||||||
|
if (cls.z_ext & Z_EXT_JOIN_OBSERVE)
|
||||||
|
Cmd_ForwardToServer();
|
||||||
|
else
|
||||||
|
Cbuf_AddText("\nspectator 0;reconnect\n", RESTRICT_LOCAL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Con_Printf ("join requires a connection or servername/ip\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
server = Cmd_Argv (1);
|
||||||
|
|
||||||
|
CL_Disconnect_f ();
|
||||||
|
|
||||||
|
Cvar_Set(&spectator, "0");
|
||||||
|
|
||||||
|
Q_strncpyz (cls.servername, server, sizeof(cls.servername));
|
||||||
|
CL_BeginServerConnect();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CL_Observe_f (void)
|
||||||
|
{
|
||||||
|
char *server;
|
||||||
|
|
||||||
|
if (Cmd_Argc() != 2)
|
||||||
|
{
|
||||||
|
if (cls.state)
|
||||||
|
{ //Hmm. This server sucks.
|
||||||
|
if (cls.z_ext & Z_EXT_JOIN_OBSERVE)
|
||||||
|
Cmd_ForwardToServer();
|
||||||
|
else
|
||||||
|
Cbuf_AddText("\nspectator 1;reconnect\n", RESTRICT_LOCAL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Con_Printf ("observe requires a connection or servername/ip\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
server = Cmd_Argv (1);
|
||||||
|
|
||||||
|
CL_Disconnect_f ();
|
||||||
|
|
||||||
|
Cvar_Set(&spectator, "1");
|
||||||
|
|
||||||
|
Q_strncpyz (cls.servername, server, sizeof(cls.servername));
|
||||||
|
CL_BeginServerConnect();
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef NQPROT
|
#ifdef NQPROT
|
||||||
void CLNQ_Connect_f (void)
|
void CLNQ_Connect_f (void)
|
||||||
{
|
{
|
||||||
|
@ -847,12 +903,12 @@ void CL_Disconnect (void)
|
||||||
cl.worldmodel=NULL;
|
cl.worldmodel=NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (cls.downloadmethod <= DL_QWPENDING)
|
||||||
|
cls.downloadmethod = DL_NONE;
|
||||||
if (cls.downloadqw)
|
if (cls.downloadqw)
|
||||||
{
|
{
|
||||||
fclose(cls.downloadqw);
|
fclose(cls.downloadqw);
|
||||||
cls.downloadqw = NULL;
|
cls.downloadqw = NULL;
|
||||||
if (cls.downloadmethod == DL_QW)
|
|
||||||
cls.downloadmethod = DL_NONE;
|
|
||||||
}
|
}
|
||||||
if (!cls.downloadmethod)
|
if (!cls.downloadmethod)
|
||||||
*cls.downloadname = '\0';
|
*cls.downloadname = '\0';
|
||||||
|
@ -2269,6 +2325,8 @@ void CL_Init (void)
|
||||||
Cmd_AddCommand ("nqconnect", CLNQ_Connect_f);
|
Cmd_AddCommand ("nqconnect", CLNQ_Connect_f);
|
||||||
#endif
|
#endif
|
||||||
Cmd_AddCommand ("reconnect", CL_Reconnect_f);
|
Cmd_AddCommand ("reconnect", CL_Reconnect_f);
|
||||||
|
Cmd_AddCommand ("join", CL_Join_f);
|
||||||
|
Cmd_AddCommand ("observe", CL_Observe_f);
|
||||||
|
|
||||||
Cmd_AddCommand ("rcon", CL_Rcon_f);
|
Cmd_AddCommand ("rcon", CL_Rcon_f);
|
||||||
Cmd_AddCommand ("packet", CL_Packet_f);
|
Cmd_AddCommand ("packet", CL_Packet_f);
|
||||||
|
|
|
@ -569,6 +569,24 @@ qboolean CL_EnqueDownload(char *filename, qboolean verbose, qboolean ignorefaile
|
||||||
void CL_SendDownloadRequest(char *filename)
|
void CL_SendDownloadRequest(char *filename)
|
||||||
{
|
{
|
||||||
downloadlist_t *dl, *nxt;
|
downloadlist_t *dl, *nxt;
|
||||||
|
|
||||||
|
strcpy (cls.downloadname, filename);
|
||||||
|
Con_TPrintf (TL_DOWNLOADINGFILE, cls.downloadname);
|
||||||
|
|
||||||
|
// download to a temp name, and only rename
|
||||||
|
// to the real name when done, so if interrupted
|
||||||
|
// a runt file wont be left
|
||||||
|
COM_StripExtension (cls.downloadname, cls.downloadtempname);
|
||||||
|
strcat (cls.downloadtempname, ".tmp");
|
||||||
|
|
||||||
|
MSG_WriteByte (&cls.netchan.message, clc_stringcmd);
|
||||||
|
MSG_WriteString (&cls.netchan.message, va("download %s", cls.downloadname));
|
||||||
|
|
||||||
|
//prevent ftp/http from changing stuff
|
||||||
|
cls.downloadmethod = DL_QWPENDING;
|
||||||
|
cls.downloadpercent = 0;
|
||||||
|
|
||||||
|
|
||||||
if(cl.downloadlist) //remove from enqued download list
|
if(cl.downloadlist) //remove from enqued download list
|
||||||
{
|
{
|
||||||
if (!strcmp(cl.downloadlist->name, filename))
|
if (!strcmp(cl.downloadlist->name, filename))
|
||||||
|
@ -591,22 +609,31 @@ void CL_SendDownloadRequest(char *filename)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
strcpy (cls.downloadname, filename);
|
//Do any reloading for the file that just reloaded.
|
||||||
Con_TPrintf (TL_DOWNLOADINGFILE, cls.downloadname);
|
void CL_FinishDownload(char *filename)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
extern int mod_numknown;
|
||||||
|
extern model_t mod_known[];
|
||||||
|
|
||||||
// download to a temp name, and only rename
|
if (!strcmp(filename, "gfx/palette.lmp"))
|
||||||
// to the real name when done, so if interrupted
|
{
|
||||||
// a runt file wont be left
|
Cbuf_AddText("vid_restart\n", RESTRICT_LOCAL);
|
||||||
COM_StripExtension (cls.downloadname, cls.downloadtempname);
|
}
|
||||||
strcat (cls.downloadtempname, ".tmp");
|
else
|
||||||
|
{
|
||||||
MSG_WriteByte (&cls.netchan.message, clc_stringcmd);
|
for (i = 0; i < mod_numknown; i++) //go and load this model now.
|
||||||
MSG_WriteString (&cls.netchan.message, va("download %s", cls.downloadname));
|
{
|
||||||
|
if (!strcmp(mod_known[i].name, filename))
|
||||||
//prevent ftp/http from changing stuff
|
{
|
||||||
cls.downloadtype = DL_QWPENDING;
|
Mod_ForName(mod_known[i].name, false); //throw away result.
|
||||||
cls.downloadpercent = 0;
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Skin_FlushSkin(filename);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -642,14 +669,12 @@ qboolean CL_CheckOrDownloadFile (char *filename, int nodelay)
|
||||||
if (cls.demoplayback)
|
if (cls.demoplayback)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (!nodelay)
|
|
||||||
return !CL_EnqueDownload(filename, false, false);
|
|
||||||
|
|
||||||
CL_SendDownloadRequest(filename);
|
|
||||||
|
|
||||||
SCR_EndLoadingPlaque(); //release console.
|
SCR_EndLoadingPlaque(); //release console.
|
||||||
|
|
||||||
return false;
|
if (CL_EnqueDownload(filename, false, false))
|
||||||
|
return !nodelay;
|
||||||
|
else
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -898,35 +923,8 @@ void CL_RequestNextDownload (void)
|
||||||
{
|
{
|
||||||
if (cl.downloadlist)
|
if (cl.downloadlist)
|
||||||
{
|
{
|
||||||
extern int mod_numknown;
|
if (!COM_FCheckExists (cl.downloadlist->name))
|
||||||
extern model_t mod_known[];
|
CL_SendDownloadRequest(cl.downloadlist->name);
|
||||||
int i;
|
|
||||||
downloadlist_t *next;
|
|
||||||
|
|
||||||
if (CL_CheckOrDownloadFile(cl.downloadlist->name, true))
|
|
||||||
{
|
|
||||||
if (!strcmp(cl.downloadlist->name, "gfx/palette.lmp"))
|
|
||||||
{
|
|
||||||
Cbuf_AddText("vid_restart\n", RESTRICT_LOCAL);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for (i = 0; i < mod_numknown; i++) //go and load this model now.
|
|
||||||
{
|
|
||||||
if (!strcmp(mod_known[i].name, cl.downloadlist->name))
|
|
||||||
{
|
|
||||||
Mod_ForName(mod_known[i].name, false); //throw away result.
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Skin_FlushSkin(cl.downloadlist->name);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
next = cl.downloadlist->next;
|
|
||||||
Z_Free(cl.downloadlist);
|
|
||||||
cl.downloadlist = next;
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
switch (cls.downloadtype)
|
switch (cls.downloadtype)
|
||||||
|
@ -949,6 +947,24 @@ void CL_RequestNextDownload (void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CL_RequestADownloadChunk(void);
|
||||||
|
void CL_SendDownloadReq(void)
|
||||||
|
{
|
||||||
|
if (cl.downloadlist && !cls.downloadmethod)
|
||||||
|
{
|
||||||
|
CL_RequestNextDownload();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef PEXT_CHUNKEDDOWNLOADS
|
||||||
|
if (cls.downloadmethod == DL_QWCHUNKS)
|
||||||
|
{
|
||||||
|
CL_RequestADownloadChunk();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef PEXT_ZLIBDL
|
#ifdef PEXT_ZLIBDL
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#define ZEXPORT VARGS
|
#define ZEXPORT VARGS
|
||||||
|
@ -998,6 +1014,9 @@ char *ZLibDownloadDecode(int *messagesize, char *input, int finalsize)
|
||||||
void CL_DownloadFailed(void);
|
void CL_DownloadFailed(void);
|
||||||
|
|
||||||
#ifdef PEXT_CHUNKEDDOWNLOADS
|
#ifdef PEXT_CHUNKEDDOWNLOADS
|
||||||
|
#define MAXBLOCKS 64
|
||||||
|
int downloadblock;
|
||||||
|
int recievedblock[MAXBLOCKS];
|
||||||
void CL_ParseChunkedDownload(void)
|
void CL_ParseChunkedDownload(void)
|
||||||
{
|
{
|
||||||
qbyte *name;
|
qbyte *name;
|
||||||
|
@ -1045,6 +1064,14 @@ void CL_ParseChunkedDownload(void)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CL_RequestADownloadChunk(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void CL_RequestDownloadPacket(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1153,7 +1180,7 @@ void CL_ParseDownload (void)
|
||||||
msg_readcount += size;
|
msg_readcount += size;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cls.downloadmethod == DL_NONE)
|
if (cls.downloadmethod == DL_QWPENDING)
|
||||||
cls.downloadmethod = DL_QW;
|
cls.downloadmethod = DL_QW;
|
||||||
|
|
||||||
if (percent != 100)
|
if (percent != 100)
|
||||||
|
@ -1190,10 +1217,7 @@ void CL_ParseDownload (void)
|
||||||
|
|
||||||
cls.downloadmethod = DL_NONE;
|
cls.downloadmethod = DL_NONE;
|
||||||
|
|
||||||
if (!strcmp(cls.downloadname, "gfx/palette.lmp"))
|
CL_FinishDownload(cls.downloadname);
|
||||||
{
|
|
||||||
Cbuf_AddText("vid_restart\n", RESTRICT_LOCAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
*cls.downloadname = '\0';
|
*cls.downloadname = '\0';
|
||||||
cls.downloadqw = NULL;
|
cls.downloadqw = NULL;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue