From: black <black@d7cf8633-e32d-0410-b094-e92efae38249>
Date: Wed, 22 Dec 2004 23:10:20 +0000 (+0000)
Subject: -Fixed a wrong parameter type in netconn.
X-Git-Tag: xonotic-v0.1.0preview~5256
X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=cdb529ba4871c881a01c7e162fde68e8999bcbe5;p=xonotic%2Fdarkplaces.git

-Fixed a wrong parameter type in netconn.
-Made hostcache_cachecount public again.
-Added altstr_set to the new VM.
-Started work on the new hostcache interface for the menu qc.


git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@4886 d7cf8633-e32d-0410-b094-e92efae38249
---

diff --git a/netconn.c b/netconn.c
index 09c69084..3174d045 100755
--- a/netconn.c
+++ b/netconn.c
@@ -164,7 +164,7 @@ static qboolean _HostCache_SortTest( hostcache_t *A, hostcache_t *B )
 	return result < 0;
 }
 
-static qboolean _hc_testint( int A, hostcache_infofield_t op, int B )
+static qboolean _hc_testint( int A, hostcache_maskop_t op, int B )
 {
 	int diff;
 
diff --git a/netconn.h b/netconn.h
index 17f57221..7bb3c53c 100755
--- a/netconn.h
+++ b/netconn.h
@@ -229,6 +229,8 @@ extern qboolean					hostcache_sortdescending;
 extern int			hostcache_viewcount;
 extern hostcache_t	*hostcache_viewset[HOSTCACHE_VIEWCACHESIZE];
 
+extern int			hostcache_cachecount; 
+
 extern qboolean		hostcache_consoleoutput;
 
 #if !defined(_WIN32 ) && !defined (__linux__) && !defined (__sun__)
diff --git a/prvm_cmds.c b/prvm_cmds.c
index e79bfce5..5079cdbf 100644
--- a/prvm_cmds.c
+++ b/prvm_cmds.c
@@ -103,6 +103,7 @@ intt	ftoi(float num)
 float	altstr_count(string)
 string	altstr_prepare(string)
 string	altstr_get(string,float)
+string	altstr_set(string altstr, float num, string set)
 		
 perhaps only : Menu : WriteMsg 
 ===============================
@@ -151,7 +152,7 @@ float	isfunction(string function_name)
 vector	getresolution(float number)
 string	keynumtostring(float keynum)
 string	findkeysforcommand(string command)
-float	gethostcachevalue(float type)
+float	gethostcachestat(float type)
 string	gethostcachestring(float type, float hostnr)
 
 		parseentitydata(entity ent, string data)
@@ -1144,7 +1145,7 @@ void VM_precache_sound (void)
 	PRVM_G_INT(OFS_RETURN) = PRVM_G_INT(OFS_PARM0);
 	VM_CheckEmptyString (s);
 
-	if(!S_PrecacheSound (s,true, true))
+	if(snd_initialized.integer && !S_PrecacheSound (s,true, true))
 		Con_Printf("VM_precache_sound: Failed to load %s for %s\n", s, PRVM_NAME);
 }
 
@@ -3054,6 +3055,57 @@ void VM_altstr_get( void )
 	PRVM_G_INT( OFS_RETURN ) = PRVM_SetString( outstr );
 }
 
+/*
+========================
+VM_altstr_set
+
+string altstr_set(string altstr, float num, string set)
+========================
+*/
+void VM_altstr_set( void )
+{
+    int num;
+	char *altstr, *str;
+	char *in;
+	char *outstr, *out;
+
+	VM_SAFEPARMCOUNT( 3, VM_altstr_set );
+
+	altstr = PRVM_G_STRING( OFS_PARM0 );
+	VM_CheckEmptyString( altstr );
+
+	num = PRVM_G_FLOAT( OFS_PARM1 );
+
+	str = PRVM_G_STRING( OFS_PARM2 );
+	VM_CheckEmptyString( str );
+
+	outstr = out = VM_GetTempString();
+	for( num = num * 2 + 1, in = altstr; *in && num; *out++ = *in++ )
+		if( *in == '\\' && !*++in )
+			break;
+		else if( *in == '\'' )
+			num--;
+
+	if( !in ) {
+		PRVM_G_INT( OFS_RETURN ) = PRVM_SetString( "" );
+		return;
+	}
+	// copy set in
+	for( ; *str; *out++ = *str++ );
+	// now jump over the old contents
+	for( ; *in; *out++ = *in++ )
+		if( *in == '\'' || *in == '\\' && !*++in )
+			break;
+	
+	if( !in ) {
+		PRVM_G_INT( OFS_RETURN ) = PRVM_SetString( "" );
+		return;
+	}
+
+	strcpy( out, in );
+	PRVM_G_INT( OFS_RETURN ) = PRVM_SetString( outstr );
+}
+
 void VM_Cmd_Init(void)
 {
 	// only init the stuff for the current prog
@@ -3418,49 +3470,61 @@ void VM_M_findkeysforcommand(void)
 
 /*
 =========
-VM_M_gethostcachecount
+VM_M_gethostcachestat
 
-float	gethostcachevalue(float type)
+float	gethostcachestat(float type)
 =========
 */
 /*
 	type:
-0	hostcachecount
-1	masterquerycount
-2	masterreplycount
-3	serverquerycount
-4	serverreplycount
+0	hostcache_viewcount
+1   hostcache_totalcount
+2	masterquerycount
+3	masterreplycount
+4	serverquerycount
+5	serverreplycount
 */
-void VM_M_gethostcachevalue( void )
+void VM_M_gethostcachestat( void )
 {
 	int type;
-	VM_SAFEPARMCOUNT ( 1, VM_M_gethostcachevalue );
+	VM_SAFEPARMCOUNT ( 1, VM_M_gethostcachestat );
 
 	PRVM_G_FLOAT( OFS_RETURN ) = 0;
 
 	type = PRVM_G_FLOAT( OFS_PARM0 );
 	if( type < 0 || type > 4 )
-		Con_Printf( "VM_M_gethostcachevalue: bad type %i!\n", type );
+		Con_Printf( "VM_M_gethostcachestat: bad type %i!\n", type );
 	else switch(type)
 	{
 	case 0:
 		PRVM_G_FLOAT ( OFS_RETURN ) = hostcache_viewcount;
 		return;
 	case 1:
+		PRVM_G_FLOAT ( OFS_RETURN ) = hostcache_cachecount; 
+	case 2:
 		PRVM_G_FLOAT ( OFS_RETURN ) = masterquerycount;
 		return;
-	case 2:
+	case 3:
 		PRVM_G_FLOAT ( OFS_RETURN ) = masterreplycount;
 		return;
-	case 3:
+	case 4:
 		PRVM_G_FLOAT ( OFS_RETURN ) = serverquerycount;
 		return;
-	case 4:
+	case 5:
 		PRVM_G_FLOAT ( OFS_RETURN ) = serverreplycount;
 		return;
 	}
 }
 
+/*
+========================
+VM_M_sethostcachemask
+
+sethostcachemask( string map, string mod, string name, 
+========================
+*/
+
+
 /*
 =========
 VM_M_gethostcachestring
@@ -3592,8 +3656,9 @@ prvm_builtin_t vm_m_builtins[] = {
 	VM_itof,		// isString
 	VM_altstr_count,
 	VM_altstr_prepare,
-	VM_altstr_get,	// 84
-	0,0,0,0,0,0,	// 90
+	VM_altstr_get,
+	VM_altstr_set,  // 85
+	0,0,0,0,0,	// 90
 	e10,			// 100
 	e100,			// 200
 	e100,			// 300
@@ -3645,7 +3710,7 @@ prvm_builtin_t vm_m_builtins[] = {
 	VM_M_getresolution,
 	VM_M_keynumtostring,
 	VM_M_findkeysforcommand,// 610
-	VM_M_gethostcachevalue,
+	VM_M_gethostcachestat,
 	VM_M_gethostcachestring,
 	VM_M_parseentitydata	// 613
 };