about summary refs log tree commit diff
path: root/src/game/client/components/controls.cpp
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2008-08-27 20:04:07 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2008-08-27 20:04:07 +0000
commit72ec4f1a9da63ae6364cf72cd10cd5a0966e3f1f (patch)
treeb7df6647844c9d763e4a24ba3fda7b287f139d30 /src/game/client/components/controls.cpp
parentae364d4d295f93b42ccdbd5f9e91bd26227cf9f1 (diff)
downloadzcatch-72ec4f1a9da63ae6364cf72cd10cd5a0966e3f1f.tar.gz
zcatch-72ec4f1a9da63ae6364cf72cd10cd5a0966e3f1f.zip
fixed weapon switching
Diffstat (limited to 'src/game/client/components/controls.cpp')
-rw-r--r--src/game/client/components/controls.cpp41
1 files changed, 24 insertions, 17 deletions
diff --git a/src/game/client/components/controls.cpp b/src/game/client/components/controls.cpp
index 886542e2..15bb1388 100644
--- a/src/game/client/components/controls.cpp
+++ b/src/game/client/components/controls.cpp
@@ -22,19 +22,27 @@ static void con_key_input_counter(void *result, void *user_data)
 		(*v)++;
 	*v &= INPUT_STATE_MASK;
 }
-/*
-static void con_key_input_weapon(void *result, void *user_data)
+
+struct INPUTSET
+{
+	CONTROLS *controls;
+	int *variable;
+	int value;
+};
+
+static void con_key_input_set(void *result, void *user_data)
 {
-	int w = (char *)user_data - (char *)0;
+	INPUTSET *set = (INPUTSET *)user_data;
 	if(console_arg_int(result, 0))
-		input_data.wanted_weapon = w;
+		*set->variable = set->value;
 }
 
 static void con_key_input_nextprev_weapon(void *result, void *user_data)
 {
-	con_key_input_counter(result, user_data);
-	input_data.wanted_weapon = 0;
-}*/
+	INPUTSET *set = (INPUTSET *)user_data;
+	con_key_input_counter(result, set->variable);
+	set->controls->input_data.wanted_weapon = 0;
+}
 
 void CONTROLS::on_init()
 {
@@ -44,16 +52,15 @@ void CONTROLS::on_init()
 	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);
-	/*
-	MACRO_REGISTER_COMMAND("+weapon1", "", con_key_input_weapon, (void *)1);
-	MACRO_REGISTER_COMMAND("+weapon2", "", con_key_input_weapon, (void *)2);
-	MACRO_REGISTER_COMMAND("+weapon3", "", con_key_input_weapon, (void *)3);
-	MACRO_REGISTER_COMMAND("+weapon4", "", con_key_input_weapon, (void *)4);
-	MACRO_REGISTER_COMMAND("+weapon5", "", con_key_input_weapon, (void *)5);
-
-	MACRO_REGISTER_COMMAND("+nextweapon", "", con_key_input_nextprev_weapon, &input_data.next_weapon);
-	MACRO_REGISTER_COMMAND("+prevweapon", "", con_key_input_nextprev_weapon, &input_data.prev_weapon);
-	*/
+
+	{ static INPUTSET set = {this, &input_data.wanted_weapon, 1};  MACRO_REGISTER_COMMAND("+weapon1", "", con_key_input_set, (void *)&set); }
+	{ static INPUTSET set = {this, &input_data.wanted_weapon, 2};  MACRO_REGISTER_COMMAND("+weapon2", "", con_key_input_set, (void *)&set); }
+	{ static INPUTSET set = {this, &input_data.wanted_weapon, 3};  MACRO_REGISTER_COMMAND("+weapon3", "", con_key_input_set, (void *)&set); }
+	{ static INPUTSET set = {this, &input_data.wanted_weapon, 4};  MACRO_REGISTER_COMMAND("+weapon4", "", con_key_input_set, (void *)&set); }
+	{ static INPUTSET set = {this, &input_data.wanted_weapon, 5};  MACRO_REGISTER_COMMAND("+weapon5", "", con_key_input_set, (void *)&set); }
+
+	{ static INPUTSET set = {this, &input_data.next_weapon, 0};  MACRO_REGISTER_COMMAND("+nextweapon", "", con_key_input_nextprev_weapon, (void *)&set); }
+	{ static INPUTSET set = {this, &input_data.prev_weapon, 0};  MACRO_REGISTER_COMMAND("+prevweapon", "", con_key_input_nextprev_weapon, (void *)&set); }
 }
 
 int CONTROLS::snapinput(int *data)