about summary refs log tree commit diff
path: root/src/tools/crapnet.cpp
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2009-01-21 19:12:09 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2009-01-21 19:12:09 +0000
commitf0760ac0d374460b23eab0650dfadc8f20d72010 (patch)
tree8ff48fe3a22e7f6ac33fc058dfca46bcd79fb57b /src/tools/crapnet.cpp
parent38a9e32efd470660257ef4e74de8fed9b1a50eb3 (diff)
downloadzcatch-f0760ac0d374460b23eab0650dfadc8f20d72010.tar.gz
zcatch-f0760ac0d374460b23eab0650dfadc8f20d72010.zip
improved crapnet so it changes between different ping configurations. improved the game timer
Diffstat (limited to 'src/tools/crapnet.cpp')
-rw-r--r--src/tools/crapnet.cpp37
1 files changed, 29 insertions, 8 deletions
diff --git a/src/tools/crapnet.cpp b/src/tools/crapnet.cpp
index 2b86755e..cc7d8e56 100644
--- a/src/tools/crapnet.cpp
+++ b/src/tools/crapnet.cpp
@@ -19,11 +19,24 @@ static PACKET *first = (PACKET *)0;
 static PACKET *last = (PACKET *)0;
 static int current_latency = 0;
 
+struct PINGCONFIG
+{
+	int base;
+	int flux;
+	int spike;
+	int loss;
+};
+
+static PINGCONFIG config_pings[] = {
+//		base	flux	spike	loss
+		{0,		0,		0,		0},
+		{40,	20,		0,		0},
+		{140,	40,		0,		0},
+};
+
+static int config_numpingconfs = sizeof(config_pings)/sizeof(PINGCONFIG);
+static int config_interval = 10; /* seconds between different pingconfigs */
 static int config_log = 0;
-static int config_ping = 40;
-static int config_pingflux = 20;
-static int config_pingspike = 0;
-static int config_packetloss = 1; // in percent
 static int config_reorder = 0;
 
 int run(int port, NETADDR dest)
@@ -36,6 +49,14 @@ int run(int port, NETADDR dest)
 	
 	while(1)
 	{
+		static int lastcfg = 0;
+		int n = ((time_get()/time_freq())/config_interval) % config_numpingconfs;
+		PINGCONFIG ping = config_pings[n];
+		
+		if(n != lastcfg)
+			dbg_msg("crapnet", "cfg = %d", n);
+		lastcfg = n;
+		
 		// handle incomming packets
 		while(1)
 		{
@@ -46,7 +67,7 @@ int run(int port, NETADDR dest)
 			if(bytes <= 0)
 				break;
 				
-			if((rand()%100) < config_packetloss) // drop the packet
+			if((rand()%100) < ping.loss) // drop the packet
 			{
 				if(config_log)
 					dbg_msg("crapnet", "dropped packet");
@@ -134,9 +155,9 @@ int run(int port, NETADDR dest)
 				
 				// update lag
 				double flux = rand()/(double)RAND_MAX;
-				int ms_spike = config_pingspike;
-				int ms_flux = config_pingflux;
-				int ms_ping = config_ping;
+				int ms_spike = ping.spike;
+				int ms_flux = ping.flux;
+				int ms_ping = ping.base;
 				current_latency = ((time_freq()*ms_ping)/1000) + (int64)(((time_freq()*ms_flux)/1000)*flux); // 50ms
 				
 				if(ms_spike && (p->id%100) == 0)