r4425 - in trunk/data/qcsrc: common menu menu/item menu/nexuiz server

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Tue Sep 9 02:46:06 EDT 2008


Author: div0
Date: 2008-09-09 02:46:06 -0400 (Tue, 09 Sep 2008)
New Revision: 4425

Modified:
   trunk/data/qcsrc/common/util.qc
   trunk/data/qcsrc/common/util.qh
   trunk/data/qcsrc/menu/classes.c
   trunk/data/qcsrc/menu/item/listbox.c
   trunk/data/qcsrc/menu/nexuiz/dialog_multiplayer_playersetup.c
   trunk/data/qcsrc/menu/nexuiz/mainwindow.c
   trunk/data/qcsrc/menu/skin-customizables.inc
   trunk/data/qcsrc/server/cl_weapons.qc
Log:
Add a weapon priority menu item


Modified: trunk/data/qcsrc/common/util.qc
===================================================================
--- trunk/data/qcsrc/common/util.qc	2008-09-09 05:43:19 UTC (rev 4424)
+++ trunk/data/qcsrc/common/util.qc	2008-09-09 06:46:06 UTC (rev 4425)
@@ -640,3 +640,57 @@
 	makevectors(a);
 }
 #endif
+
+string fixPriorityList(string order, float from, float to, float complete)
+{
+	string neworder;
+	float i, n, w;
+
+	n = tokenize(order);
+	for(i = 0; i < n; ++i)
+	{
+		w = stof(argv(i));
+		if(w >= from && w <= to && w == floor(w))
+			neworder = strcat(neworder, ftos(w), " ");
+	}
+
+	if(complete)
+	{
+		n = tokenize(neworder);
+		for(w = to; w >= from; --w)
+		{
+			for(i = 0; i < n; ++i)
+				if(stof(argv(i)) == w)
+					break;
+			if(i == n) // not found
+				neworder = strcat(neworder, ftos(w), " ");
+		}
+	}
+	
+	return substring(neworder, 0, strlen(neworder) - 1);
+}
+
+string swapInPriorityList(string order, float i, float j)
+{
+	string s;
+	float w, n;
+
+	n = tokenize(order);
+
+	if(i >= 0 && i < n && j >= 0 && j < n && i != j)
+	{
+		s = "";
+		for(w = 0; w < n; ++w)
+		{
+			if(w == i)
+				s = strcat(s, argv(j), " ");
+			else if(w == j)
+				s = strcat(s, argv(i), " ");
+			else
+				s = strcat(s, argv(w), " ");
+		}
+		return substring(s, 0, strlen(s) - 1);
+	}
+	
+	return order;
+}

Modified: trunk/data/qcsrc/common/util.qh
===================================================================
--- trunk/data/qcsrc/common/util.qh	2008-09-09 05:43:19 UTC (rev 4424)
+++ trunk/data/qcsrc/common/util.qh	2008-09-09 06:46:06 UTC (rev 4425)
@@ -73,3 +73,6 @@
 #define fixedvectoangles2 vectoangles2
 #define fixedvectoangles vectoangles
 #endif
+
+string fixPriorityList(string pl, float from, float to, float complete);
+string swapInPriorityList(string order, float i, float j);

Modified: trunk/data/qcsrc/menu/classes.c
===================================================================
--- trunk/data/qcsrc/menu/classes.c	2008-09-09 05:43:19 UTC (rev 4424)
+++ trunk/data/qcsrc/menu/classes.c	2008-09-09 06:46:06 UTC (rev 4425)
@@ -65,3 +65,5 @@
 #include "nexuiz/dialog_singleplayer_winner.c"
 #include "nexuiz/dialog_credits.c"
 #include "nexuiz/credits.c"
+#include "nexuiz/dialog_multiplayer_playersetup_weapons.c"
+#include "nexuiz/weaponslist.c"

Modified: trunk/data/qcsrc/menu/item/listbox.c
===================================================================
--- trunk/data/qcsrc/menu/item/listbox.c	2008-09-09 05:43:19 UTC (rev 4424)
+++ trunk/data/qcsrc/menu/item/listbox.c	2008-09-09 06:46:06 UTC (rev 4425)
@@ -243,18 +243,21 @@
 	if(me.pressed == 2)
 		me.mouseDrag(me, me.dragScrollPos); // simulate mouseDrag event
 	me.updateControlTopBottom(me);
-	draw_VertButtonPicture(eX * (1 - me.controlWidth), strcat(me.src, "_s"), eX * me.controlWidth + eY, me.color2, 1);
-	if(me.nItems * me.itemHeight > 1)
+	if(me.controlWidth)
 	{
-		vector o, s;
-		o = eX * (1 - me.controlWidth) + eY * me.controlTop;
-		s = eX * me.controlWidth + eY * (me.controlBottom - me.controlTop);
-		if(me.pressed == 1)
-			draw_VertButtonPicture(o, strcat(me.src, "_c"), s, me.colorC, 1);
-		else if(me.focused)
-			draw_VertButtonPicture(o, strcat(me.src, "_f"), s, me.colorF, 1);
-		else
-			draw_VertButtonPicture(o, strcat(me.src, "_n"), s, me.color, 1);
+		draw_VertButtonPicture(eX * (1 - me.controlWidth), strcat(me.src, "_s"), eX * me.controlWidth + eY, me.color2, 1);
+		if(me.nItems * me.itemHeight > 1)
+		{
+			vector o, s;
+			o = eX * (1 - me.controlWidth) + eY * me.controlTop;
+			s = eX * me.controlWidth + eY * (me.controlBottom - me.controlTop);
+			if(me.pressed == 1)
+				draw_VertButtonPicture(o, strcat(me.src, "_c"), s, me.colorC, 1);
+			else if(me.focused)
+				draw_VertButtonPicture(o, strcat(me.src, "_f"), s, me.colorF, 1);
+			else
+				draw_VertButtonPicture(o, strcat(me.src, "_n"), s, me.color, 1);
+		}
 	}
 	draw_SetClip();
 	oldshift = draw_shift;

Modified: trunk/data/qcsrc/menu/nexuiz/dialog_multiplayer_playersetup.c
===================================================================
--- trunk/data/qcsrc/menu/nexuiz/dialog_multiplayer_playersetup.c	2008-09-09 05:43:19 UTC (rev 4424)
+++ trunk/data/qcsrc/menu/nexuiz/dialog_multiplayer_playersetup.c	2008-09-09 06:46:06 UTC (rev 4425)
@@ -30,7 +30,7 @@
 }
 void fillNexuizPlayerSettingsTab(entity me)
 {
-	entity e, pms, sl;
+	entity e, pms, sl, e0;
 	float i, n;
 
 	me.TR(me);
@@ -78,7 +78,14 @@
 	me.TR(me);
 		me.TD(me, 1, 3, e = makeNexuizCheckBox(0, "cl_autoswitch", "Auto switch weapons on pickup"));
 	me.TR(me);
+		me.TD(me, 1, 1, e = makeNexuizButton("Weapon priority...", '0 0 0'));
+			e.onClick = DialogOpenButton_Click;
+			e.onClickEntity = main.weaponsDialog;
+		me.TD(me, 1, 2, e0 = makeNexuizTextLabel(0, string_null));
+			e0.textEntity = main.weaponsDialog;
+			e0.allowCut = 1;
 	me.TR(me);
+	me.TR(me);
 		me.TD(me, 1, 1, e = makeNexuizTextLabel(0, "Crosshair:"));
 		n = 11;
 		for(i = 1; i <= n; ++i)
@@ -125,7 +132,6 @@
 			e.addValue(e, "All", "0");
 			e.configureNexuizTextSliderValues(e);
 	me.TR(me);
-	me.TR(me);
 		me.TD(me, 1, 1, e = makeNexuizTextLabel(0, "Network speed:"));
 		me.TD(me, 1, 2, e = makeNexuizTextSlider("_cl_rate"));
 			e.addValue(e, "56k", "4000");
@@ -139,6 +145,6 @@
 		me.TD(me, 1, 0.64, e = makeNexuizInputBox(0, "cl_port"));
 
 	me.gotoRC(me, me.rows - 1, 0);
-		me.TD(me, 1, me.columns, makeNexuizCommandButton("Apply immediately", '0 0 0', "color -1 -1;name \"$_cl_name\";sendcvar cl_zoomfactor;sendcvar cl_zoomspeed;sendcvar cl_autoswitch;sendcvar cl_hidewaypoints;sendcvar cl_shownames;rate $_cl_rate", COMMANDBUTTON_APPLY));
+		me.TD(me, 1, me.columns, makeNexuizCommandButton("Apply immediately", '0 0 0', "color -1 -1;name \"$_cl_name\";sendcvar cl_weaponpriority;sendcvar cl_zoomfactor;sendcvar cl_zoomspeed;sendcvar cl_autoswitch;sendcvar cl_hidewaypoints;sendcvar cl_shownames;rate $_cl_rate", COMMANDBUTTON_APPLY));
 }
 #endif

Modified: trunk/data/qcsrc/menu/nexuiz/mainwindow.c
===================================================================
--- trunk/data/qcsrc/menu/nexuiz/mainwindow.c	2008-09-09 05:43:19 UTC (rev 4424)
+++ trunk/data/qcsrc/menu/nexuiz/mainwindow.c	2008-09-09 06:46:06 UTC (rev 4425)
@@ -2,6 +2,7 @@
 CLASS(MainWindow) EXTENDS(ModalController)
 	METHOD(MainWindow, configureMainWindow, void(entity))
 	ATTRIB(MainWindow, mutatorsDialog, entity, NULL)
+	ATTRIB(MainWindow, weaponsDialog, entity, NULL)
 	ATTRIB(MainWindow, mapInfoDialog, entity, NULL)
 	ATTRIB(MainWindow, userbindEditDialog, entity, NULL)
 	ATTRIB(MainWindow, winnerDialog, entity, NULL)
@@ -43,6 +44,10 @@
 	i.configureDialog(i);
 	me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
 
+	me.weaponsDialog = i = spawnNexuizWeaponsDialog();
+	i.configureDialog(i);
+	me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
+
 	n = spawnNexuizNexposee();
 	/*
 		if(checkextension("DP_GECKO_SUPPORT"))

Modified: trunk/data/qcsrc/menu/skin-customizables.inc
===================================================================
--- trunk/data/qcsrc/menu/skin-customizables.inc	2008-09-09 05:43:19 UTC (rev 4424)
+++ trunk/data/qcsrc/menu/skin-customizables.inc	2008-09-09 06:46:06 UTC (rev 4425)
@@ -47,6 +47,7 @@
 	SKINVECTOR(COLOR_DIALOG_USERBIND, '0.7 0.7 1');
 	SKINVECTOR(COLOR_DIALOG_SINGLEPLAYER, '1 1 0.7');
 	SKINVECTOR(COLOR_DIALOG_CREDITS, '0.7 0.7 1');
+	SKINVECTOR(COLOR_DIALOG_WEAPONS, '1 0.7 0.7');
 
 	// nexposee positions of windows (they are the scale transformation
 	// centers, NOT the actual positions of the windows!)

Modified: trunk/data/qcsrc/server/cl_weapons.qc
===================================================================
--- trunk/data/qcsrc/server/cl_weapons.qc	2008-09-09 05:43:19 UTC (rev 4424)
+++ trunk/data/qcsrc/server/cl_weapons.qc	2008-09-09 06:46:06 UTC (rev 4425)
@@ -104,31 +104,7 @@
 
 string W_FixWeaponOrder(string order, float complete)
 {
-	string neworder;
-	float i, n, w;
-
-	n = tokenize(order);
-	for(i = 0; i < n; ++i)
-	{
-		w = stof(argv(i));
-		if(w >= WEP_FIRST && w <= WEP_LAST && w == floor(w))
-			neworder = strcat(neworder, ftos(w), " ");
-	}
-
-	if(complete)
-	{
-		n = tokenize(neworder);
-		for(w = WEP_LAST; w >= WEP_FIRST; --w)
-		{
-			for(i = 0; i < n; ++i)
-				if(stof(argv(i)) == w)
-					break;
-			if(i == n) // not found
-				neworder = strcat(neworder, ftos(w), " ");
-		}
-	}
-	
-	return substring(neworder, 0, strlen(neworder) - 1);
+	return fixPriorityList(order, WEP_FIRST, WEP_LAST, complete);
 }
 
 string W_FixWeaponOrder_AllowIncomplete(string order)




More information about the nexuiz-commits mailing list