From 8ecfe8e3aa1e42f6c300dc9badbf8c48ec784a0a Mon Sep 17 00:00:00 2001 From: havoc Date: Tue, 10 Jan 2006 14:11:51 +0000 Subject: [PATCH] added button9-16 git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@5891 d7cf8633-e32d-0410-b094-e92efae38249 --- cl_input.c | 47 ++++++++++++++++++++++++++++++++++++++++++++++- progs.h | 8 ++++++++ sv_main.c | 26 +++++++++++++++++++++++++- sv_user.c | 8 ++++++++ 4 files changed, 87 insertions(+), 2 deletions(-) diff --git a/cl_input.c b/cl_input.c index 18b4cfa9..1ea050da 100644 --- a/cl_input.c +++ b/cl_input.c @@ -53,9 +53,13 @@ kbutton_t in_strafe, in_speed, in_jump, in_attack, in_use; kbutton_t in_up, in_down; // LordHavoc: added 6 new buttons kbutton_t in_button3, in_button4, in_button5, in_button6, in_button7, in_button8; +//even more +kbutton_t in_button9, in_button10, in_button11, in_button12, in_button13, in_button14, in_button15, in_button16; int in_impulse; +extern cvar_t sys_ticrate; + void KeyDown (kbutton_t *b) { @@ -171,6 +175,23 @@ void IN_Button7Up(void) {KeyUp(&in_button7);} void IN_Button8Down(void) {KeyDown(&in_button8);} void IN_Button8Up(void) {KeyUp(&in_button8);} +void IN_Button9Down(void) {KeyDown(&in_button9);} +void IN_Button9Up(void) {KeyUp(&in_button9);} +void IN_Button10Down(void) {KeyDown(&in_button10);} +void IN_Button10Up(void) {KeyUp(&in_button10);} +void IN_Button11Down(void) {KeyDown(&in_button11);} +void IN_Button11Up(void) {KeyUp(&in_button11);} +void IN_Button12Down(void) {KeyDown(&in_button12);} +void IN_Button12Up(void) {KeyUp(&in_button12);} +void IN_Button13Down(void) {KeyDown(&in_button13);} +void IN_Button13Up(void) {KeyUp(&in_button13);} +void IN_Button14Down(void) {KeyDown(&in_button14);} +void IN_Button14Up(void) {KeyUp(&in_button14);} +void IN_Button15Down(void) {KeyDown(&in_button15);} +void IN_Button15Up(void) {KeyUp(&in_button15);} +void IN_Button16Down(void) {KeyDown(&in_button16);} +void IN_Button16Up(void) {KeyUp(&in_button16);} + void IN_JumpDown (void) {KeyDown(&in_jump);} void IN_JumpUp (void) {KeyUp(&in_jump);} @@ -833,7 +854,15 @@ void CL_SendMove(void) if (in_use.state & 3) bits |= 256;in_use.state &= ~2; if (key_dest != key_game || key_consoleactive) bits |= 512; if (cl_prydoncursor.integer) bits |= 1024; - // button bits 11-31 unused currently + if (in_button9.state & 3) bits |= 2048;in_button9.state &= ~2; + if (in_button10.state & 3) bits |= 4096;in_button10.state &= ~2; + if (in_button11.state & 3) bits |= 8192;in_button11.state &= ~2; + if (in_button12.state & 3) bits |= 16384;in_button12.state &= ~2; + if (in_button13.state & 3) bits |= 32768;in_button13.state &= ~2; + if (in_button14.state & 3) bits |= 65536;in_button14.state &= ~2; + if (in_button15.state & 3) bits |= 131072;in_button15.state &= ~2; + if (in_button16.state & 3) bits |= 262144;in_button16.state &= ~2; + // button bits 19-31 unused currently // rotate/zoom view serverside if PRYDON_CLIENTCURSOR cursor is at edge of screen if (cl.cmd.cursor_screen[0] <= -1) bits |= 8; if (cl.cmd.cursor_screen[0] >= 1) bits |= 16; @@ -1039,6 +1068,22 @@ void CL_InitInput (void) Cmd_AddCommand ("-button7", IN_Button7Up); Cmd_AddCommand ("+button8", IN_Button8Down); Cmd_AddCommand ("-button8", IN_Button8Up); + Cmd_AddCommand ("+button9", IN_Button9Down); + Cmd_AddCommand ("-button9", IN_Button9Up); + Cmd_AddCommand ("+button10", IN_Button10Down); + Cmd_AddCommand ("-button10", IN_Button10Up); + Cmd_AddCommand ("+button11", IN_Button11Down); + Cmd_AddCommand ("-button11", IN_Button11Up); + Cmd_AddCommand ("+button12", IN_Button12Down); + Cmd_AddCommand ("-button12", IN_Button12Up); + Cmd_AddCommand ("+button13", IN_Button13Down); + Cmd_AddCommand ("-button13", IN_Button13Up); + Cmd_AddCommand ("+button14", IN_Button14Down); + Cmd_AddCommand ("-button14", IN_Button14Up); + Cmd_AddCommand ("+button15", IN_Button15Down); + Cmd_AddCommand ("-button15", IN_Button15Up); + Cmd_AddCommand ("+button16", IN_Button16Down); + Cmd_AddCommand ("-button16", IN_Button16Up); Cvar_RegisterVariable(&cl_movement); Cvar_RegisterVariable(&cl_movement_latency); diff --git a/progs.h b/progs.h index 56cecb90..7991ed28 100644 --- a/progs.h +++ b/progs.h @@ -71,6 +71,14 @@ extern int eval_button5; extern int eval_button6; extern int eval_button7; extern int eval_button8; +extern int eval_button9; +extern int eval_button10; +extern int eval_button11; +extern int eval_button12; +extern int eval_button13; +extern int eval_button14; +extern int eval_button15; +extern int eval_button16; extern int eval_buttonuse; extern int eval_buttonchat; extern int eval_glow_size; diff --git a/sv_main.c b/sv_main.c index bb18539c..60e222ab 100644 --- a/sv_main.c +++ b/sv_main.c @@ -959,7 +959,7 @@ void SV_WriteClientdataToMessage (client_t *client, prvm_edict_t *ent, sizebuf_t if ((val = PRVM_GETEDICTFIELDVALUE(ent, eval_punchvector))) VectorCopy(val->vector, punchvector); - // FIXME: cache weapon model name and index in client struct to save time + // cache weapon model name and index in client struct to save time // (this search can be almost 1% of cpu time!) s = PRVM_GetString(ent->fields.server->weaponmodel); if (strcmp(s, client->weaponmodel)) @@ -2110,6 +2110,14 @@ int eval_button5; int eval_button6; int eval_button7; int eval_button8; +int eval_button9; +int eval_button10; +int eval_button11; +int eval_button12; +int eval_button13; +int eval_button14; +int eval_button15; +int eval_button16; int eval_buttonuse; int eval_buttonchat; int eval_glow_size; @@ -2169,6 +2177,14 @@ void SV_VM_FindEdictFieldOffsets(void) eval_button6 = PRVM_ED_FindFieldOffset("button6"); eval_button7 = PRVM_ED_FindFieldOffset("button7"); eval_button8 = PRVM_ED_FindFieldOffset("button8"); + eval_button9 = PRVM_ED_FindFieldOffset("button9"); + eval_button10 = PRVM_ED_FindFieldOffset("button10"); + eval_button11 = PRVM_ED_FindFieldOffset("button11"); + eval_button12 = PRVM_ED_FindFieldOffset("button12"); + eval_button13 = PRVM_ED_FindFieldOffset("button13"); + eval_button14 = PRVM_ED_FindFieldOffset("button14"); + eval_button15 = PRVM_ED_FindFieldOffset("button15"); + eval_button16 = PRVM_ED_FindFieldOffset("button16"); eval_buttonuse = PRVM_ED_FindFieldOffset("buttonuse"); eval_buttonchat = PRVM_ED_FindFieldOffset("buttonchat"); eval_glow_size = PRVM_ED_FindFieldOffset("glow_size"); @@ -2246,6 +2262,14 @@ prvm_required_field_t reqfields[] = {ev_float, "button6"}, {ev_float, "button7"}, {ev_float, "button8"}, + {ev_float, "button9"}, + {ev_float, "button10"}, + {ev_float, "button11"}, + {ev_float, "button12"}, + {ev_float, "button13"}, + {ev_float, "button14"}, + {ev_float, "button15"}, + {ev_float, "button16"}, {ev_float, "buttonchat"}, {ev_float, "buttonuse"}, {ev_float, "clientcolors"}, diff --git a/sv_user.c b/sv_user.c index 66f26938..ff4ee735 100644 --- a/sv_user.c +++ b/sv_user.c @@ -729,6 +729,14 @@ void SV_ApplyClientMove (void) if ((val = PRVM_GETEDICTFIELDVALUE(host_client->edict, eval_button6))) val->_float = ((move->buttons >> 5) & 1); if ((val = PRVM_GETEDICTFIELDVALUE(host_client->edict, eval_button7))) val->_float = ((move->buttons >> 6) & 1); if ((val = PRVM_GETEDICTFIELDVALUE(host_client->edict, eval_button8))) val->_float = ((move->buttons >> 7) & 1); + if ((val = PRVM_GETEDICTFIELDVALUE(host_client->edict, eval_button9))) val->_float = ((move->buttons >> 11) & 1); + if ((val = PRVM_GETEDICTFIELDVALUE(host_client->edict, eval_button10))) val->_float = ((move->buttons >> 12) & 1); + if ((val = PRVM_GETEDICTFIELDVALUE(host_client->edict, eval_button11))) val->_float = ((move->buttons >> 13) & 1); + if ((val = PRVM_GETEDICTFIELDVALUE(host_client->edict, eval_button12))) val->_float = ((move->buttons >> 14) & 1); + if ((val = PRVM_GETEDICTFIELDVALUE(host_client->edict, eval_button13))) val->_float = ((move->buttons >> 15) & 1); + if ((val = PRVM_GETEDICTFIELDVALUE(host_client->edict, eval_button14))) val->_float = ((move->buttons >> 16) & 1); + if ((val = PRVM_GETEDICTFIELDVALUE(host_client->edict, eval_button15))) val->_float = ((move->buttons >> 17) & 1); + if ((val = PRVM_GETEDICTFIELDVALUE(host_client->edict, eval_button16))) val->_float = ((move->buttons >> 18) & 1); if ((val = PRVM_GETEDICTFIELDVALUE(host_client->edict, eval_buttonuse))) val->_float = ((move->buttons >> 8) & 1); if ((val = PRVM_GETEDICTFIELDVALUE(host_client->edict, eval_buttonchat))) val->_float = ((move->buttons >> 9) & 1); if ((val = PRVM_GETEDICTFIELDVALUE(host_client->edict, eval_cursor_active))) val->_float = ((move->buttons >> 10) & 1); -- 2.39.2