about summary refs log tree commit diff
path: root/src/game
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2008-04-06 14:32:56 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2008-04-06 14:32:56 +0000
commit6ecc2efaecdf70ed6a754bc089c7e0e4606df398 (patch)
treede81f3402de0c924acf10c2f71e4dbc721444890 /src/game
parentd15bef7ede6b07dbbc2f6b6a3e23b1ed83e6b6ea (diff)
downloadzcatch-6ecc2efaecdf70ed6a754bc089c7e0e4606df398.tar.gz
zcatch-6ecc2efaecdf70ed6a754bc089c7e0e4606df398.zip
more loads of changes for 0.5.0
Diffstat (limited to 'src/game')
-rw-r--r--src/game/client/gc_client.cpp2
-rw-r--r--src/game/client/gc_client.h2
-rw-r--r--src/game/client/gc_console.cpp4
-rw-r--r--src/game/client/gc_hooks.cpp18
-rw-r--r--src/game/g_game.cpp8
-rw-r--r--src/game/g_protocol.def6
-rw-r--r--src/game/server/gs_server.cpp5
7 files changed, 24 insertions, 21 deletions
diff --git a/src/game/client/gc_client.cpp b/src/game/client/gc_client.cpp
index 005e9026..2aeb28b9 100644
--- a/src/game/client/gc_client.cpp
+++ b/src/game/client/gc_client.cpp
@@ -29,6 +29,8 @@ int64 debug_firedelay = 0;
 
 NETOBJ_PLAYER_INPUT input_data = {0};
 int input_target_lock = 0;
+int input_direction_left = 0;
+int input_direction_right = 0;
 
 int chat_mode = CHATMODE_NONE;
 bool menu_active = false;
diff --git a/src/game/client/gc_client.h b/src/game/client/gc_client.h
index 2ab558f3..15df5dc2 100644
--- a/src/game/client/gc_client.h
+++ b/src/game/client/gc_client.h
@@ -51,6 +51,8 @@ extern player_core predicted_player;
 
 // input
 extern NETOBJ_PLAYER_INPUT input_data;
+extern int input_direction_left;
+extern int input_direction_right;
 
 // debug
 extern int64 debug_firedelay;
diff --git a/src/game/client/gc_console.cpp b/src/game/client/gc_console.cpp
index 935aac91..76bf7218 100644
--- a/src/game/client/gc_console.cpp
+++ b/src/game/client/gc_console.cpp
@@ -424,8 +424,8 @@ void client_console_init()
 	MACRO_REGISTER_COMMAND("emote", "i", con_emote, 0);
 
 	// game commands
-	MACRO_REGISTER_COMMAND("+left", "", con_key_input_state, &input_data.left);
-	MACRO_REGISTER_COMMAND("+right", "", con_key_input_state, &input_data.right);
+	MACRO_REGISTER_COMMAND("+left", "", con_key_input_state, &input_direction_left);
+	MACRO_REGISTER_COMMAND("+right", "", con_key_input_state, &input_direction_right);
 	MACRO_REGISTER_COMMAND("+jump", "", con_key_input_state, &input_data.jump);
 	MACRO_REGISTER_COMMAND("+hook", "", con_key_input_state, &input_data.hook);
 	MACRO_REGISTER_COMMAND("+fire", "", con_key_input_counter, &input_data.fire);
diff --git a/src/game/client/gc_hooks.cpp b/src/game/client/gc_hooks.cpp
index 81090ca4..36e166d4 100644
--- a/src/game/client/gc_hooks.cpp
+++ b/src/game/client/gc_hooks.cpp
@@ -375,8 +375,7 @@ extern "C" int modc_snap_input(int *data)
 	// we freeze the input if chat or menu is activated
 	if(menu_active || chat_mode != CHATMODE_NONE || console_active())
 	{
-		last_data.left = 0;
-		last_data.right = 0;
+		last_data.direction = 0;
 		last_data.hook = 0;
 		last_data.jump = 0;
 		
@@ -390,7 +389,13 @@ extern "C" int modc_snap_input(int *data)
 	input_data.target_y = (int)mouse_pos.y;
 	if(!input_data.target_x && !input_data.target_y)
 		input_data.target_y = 1;
-	
+		
+	// set direction
+	input_data.direction = 0;
+	if(input_direction_left && !input_direction_right)
+		input_data.direction = -1;
+	if(!input_direction_left && input_direction_right)
+		input_data.direction = 1;
 
 	// stress testing
 	if(config.dbg_stress)
@@ -398,8 +403,7 @@ extern "C" int modc_snap_input(int *data)
 		float t = client_localtime();
 		mem_zero(&input_data, sizeof(input_data));
 
-		input_data.left = ((int)t/2)&1;
-		input_data.right = ((int)t/2+1)&1;
+		input_data.direction = ((int)t/2)&1;
 		input_data.jump = ((int)t);
 		input_data.fire = ((int)(t*10));
 		input_data.hook = ((int)(t*2))&1;
@@ -410,9 +414,7 @@ extern "C" int modc_snap_input(int *data)
 
 	// check if we need to send input
 	bool send = false;
-	if(input_data.left != last_data.left) send = true;
-	else if(input_data.left != last_data.left) send = true;
-	else if(input_data.right != last_data.right) send = true;
+	if(input_data.direction != last_data.direction) send = true;
 	else if(input_data.jump != last_data.jump) send = true;
 	else if(input_data.fire != last_data.fire) send = true;
 	else if(input_data.hook != last_data.hook) send = true;
diff --git a/src/game/g_game.cpp b/src/game/g_game.cpp
index 747b832a..71ddc1a2 100644
--- a/src/game/g_game.cpp
+++ b/src/game/g_game.cpp
@@ -199,12 +199,12 @@ void player_core::tick()
 	float friction = grounded ? world->tuning.ground_friction : world->tuning.air_friction;
 	
 	// handle movement
-	if(input.left)
+	if(input.direction < 0)
 		vel.x = saturated_add(-max_speed, max_speed, vel.x, -accel);
-	if(input.right)
+	if(input.direction > 0)
 		vel.x = saturated_add(-max_speed, max_speed, vel.x, accel);
 		
-	if(!input.left && !input.right)
+	if(input.direction == 0)
 		vel.x *= friction;
 	
 	// handle jumping
@@ -339,7 +339,7 @@ void player_core::tick()
 			
 			// the hook will boost it's power if the player wants to move
 			// in that direction. otherwise it will dampen everything abit
-			if((hookvel.x < 0 && input.left) || (hookvel.x > 0 && input.right)) 
+			if((hookvel.x < 0 && input.direction < 0) || (hookvel.x > 0 && input.direction > 0)) 
 				hookvel.x *= 0.95f;
 			else
 				hookvel.x *= 0.75f;
diff --git a/src/game/g_protocol.def b/src/game/g_protocol.def
index 363795f2..590dc603 100644
--- a/src/game/g_protocol.def
+++ b/src/game/g_protocol.def
@@ -40,11 +40,8 @@ raw_header
 	
 end
 
-
-
 object player_input
-	any left
-	any right
+	any direction
 
 	any target_x
 	any target_y
@@ -52,7 +49,6 @@ object player_input
 	any jump
 	any fire
 	any hook
-	any blink
 
 	any player_state
 
diff --git a/src/game/server/gs_server.cpp b/src/game/server/gs_server.cpp
index 78ad3f9f..5550f1a6 100644
--- a/src/game/server/gs_server.cpp
+++ b/src/game/server/gs_server.cpp
@@ -1653,11 +1653,12 @@ void player::snap(int snaping_client)
 		character->weapon = active_weapon;
 		character->attacktick = attack_tick;
 
-		character->wanted_direction = 0;
+		character->wanted_direction = input.direction;
+		/*
 		if(input.left && !input.right)
 			character->wanted_direction = -1;
 		else if(!input.left && input.right)
-			character->wanted_direction = 1;
+			character->wanted_direction = 1;*/
 
 
 		if(client_id == snaping_client)