From 414c2ee5ffc827b17a075ecad3e7f6fa1c38a924 Mon Sep 17 00:00:00 2001 From: havoc Date: Sun, 17 Jun 2007 07:19:59 +0000 Subject: [PATCH] patch from Spike which makes getstati accept 3 parameters to extract a shifted bit range from a stat git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@7438 d7cf8633-e32d-0410-b094-e92efae38249 --- clvm_cmds.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/clvm_cmds.c b/clvm_cmds.c index c40d668f..9d7d73dd 100644 --- a/clvm_cmds.c +++ b/clvm_cmds.c @@ -850,8 +850,24 @@ static void VM_CL_getstatf (void) static void VM_CL_getstati (void) { int i, index; - VM_SAFEPARMCOUNT(1, VM_CL_getstati); + int firstbit, bitcount; + + VM_SAFEPARMCOUNTRANGE(1, 3, VM_CL_getstati); + index = (int)PRVM_G_FLOAT(OFS_PARM0); + if (prog->argc > 1) + { + firstbit = (int)PRVM_G_FLOAT(OFS_PARM1); + if (prog->argc > 2) + bitcount = (int)PRVM_G_FLOAT(OFS_PARM2); + else + bitcount = 1; + } + else + { + firstbit = 0; + bitcount = 32; + } if(index < 0 || index >= MAX_CL_STATS) { @@ -859,6 +875,8 @@ static void VM_CL_getstati (void) return; } i = cl.stats[index]; + if (bitcount != 32) //32 causes the mask to overflow, so there's nothing to subtract from. + i = (((unsigned int)i)&(((1<>firstbit; PRVM_G_FLOAT(OFS_RETURN) = i; } -- 2.39.2