diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2008-04-06 14:32:56 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2008-04-06 14:32:56 +0000 |
| commit | 6ecc2efaecdf70ed6a754bc089c7e0e4606df398 (patch) | |
| tree | de81f3402de0c924acf10c2f71e4dbc721444890 /src/game | |
| parent | d15bef7ede6b07dbbc2f6b6a3e23b1ed83e6b6ea (diff) | |
| download | zcatch-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.cpp | 2 | ||||
| -rw-r--r-- | src/game/client/gc_client.h | 2 | ||||
| -rw-r--r-- | src/game/client/gc_console.cpp | 4 | ||||
| -rw-r--r-- | src/game/client/gc_hooks.cpp | 18 | ||||
| -rw-r--r-- | src/game/g_game.cpp | 8 | ||||
| -rw-r--r-- | src/game/g_protocol.def | 6 | ||||
| -rw-r--r-- | src/game/server/gs_server.cpp | 5 |
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) |