r3926 - trunk/data/qcsrc/client

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Sat Jul 26 12:48:40 EDT 2008


Author: div0
Date: 2008-07-26 12:48:40 -0400 (Sat, 26 Jul 2008)
New Revision: 3926

Modified:
   trunk/data/qcsrc/client/sbar.qc
Log:
automatically fix missing "name", "separator", primary and secondary fields in the sbar columns cvar


Modified: trunk/data/qcsrc/client/sbar.qc
===================================================================
--- trunk/data/qcsrc/client/sbar.qc	2008-07-26 16:30:49 UTC (rev 3925)
+++ trunk/data/qcsrc/client/sbar.qc	2008-07-26 16:48:40 UTC (rev 3926)
@@ -329,6 +329,8 @@
 	float i, j, slash;
 	string str, pattern, subpattern;
 	float digit;
+	float have_name, have_primary, have_secondary, have_separator;
+	float missing;
 
 	// TODO: re enable with gametype dependant cvars?
 	if(argc < 2) // no arguments provided
@@ -404,8 +406,10 @@
 		} else if(str == "name" || str == "nick") {
 			sbar_field[sbar_num_fields] = SP_NAME;
 			sbar_size[sbar_num_fields] = MIN_NAMELEN; // minimum size? any use?
+			have_name = 1;
 		} else if(str == "|") {
 			sbar_field[sbar_num_fields] = SP_SEPARATOR;
+			have_separator = 1;
 		} else {
 			for(j = 0; j < MAX_SCORE; ++j)
 				if(str == strtolower(scores_label[j]))
@@ -415,9 +419,82 @@
 			continue;
 :found
 			sbar_field[sbar_num_fields] = j;
+			if(j == ps_primary)
+				have_primary = 1;
+			if(j == ps_secondary)
+				have_secondary = 1;
 		}
 		++sbar_num_fields;
 	}
+
+	if(ps_primary == ps_secondary)
+		have_secondary = 1;
+	missing = !have_primary + !have_secondary + !have_separator + !have_name;
+
+	if(sbar_num_fields+missing < MAX_SBAR_FIELDS)
+	{
+		if(!have_name)
+		{
+			strunzone(sbar_title[sbar_num_fields]);
+			for(i = sbar_num_fields; i > 0; --i)
+			{
+				sbar_title[i] = sbar_title[i-1];
+				sbar_size[i] = sbar_size[i-1];
+				sbar_field[i] = sbar_field[i-1];
+			}
+			sbar_title[0] = strzone("name");
+			sbar_field[0] = SP_NAME;
+			sbar_size[0] = MIN_NAMELEN; // minimum size? any use?
+			++sbar_num_fields;
+			print("fixed missing field 'name'\n");
+
+			if(!have_separator)
+			{
+				strunzone(sbar_title[sbar_num_fields]);
+				for(i = sbar_num_fields; i > 1; --i)
+				{
+					sbar_title[i] = sbar_title[i-1];
+					sbar_size[i] = sbar_size[i-1];
+					sbar_field[i] = sbar_field[i-1];
+				}
+				sbar_title[1] = strzone("|");
+				sbar_field[1] = SP_SEPARATOR;
+				sbar_size[1] = stringwidth("|", FALSE);
+				++sbar_num_fields;
+				print("fixed missing field '|'\n");
+			}
+		}
+		else if(!have_separator)
+		{
+			strunzone(sbar_title[sbar_num_fields]);
+			sbar_title[sbar_num_fields] = strzone("|");
+			sbar_size[sbar_num_fields] = stringwidth("|", FALSE);
+			sbar_field[sbar_num_fields] = SP_SEPARATOR;
+			++sbar_num_fields;
+			print("fixed missing field '|'\n");
+		}
+
+		if(!have_secondary)
+		{
+			strunzone(sbar_title[sbar_num_fields]);
+			sbar_title[sbar_num_fields] = strzone(scores_label[ps_secondary]);
+			sbar_size[sbar_num_fields] = stringwidth(sbar_title[sbar_num_fields], FALSE);
+			sbar_field[sbar_num_fields] = ps_secondary;
+			++sbar_num_fields;
+			print("fixed missing field '", scores_label[ps_secondary], "'\n");
+		}
+
+		if(!have_primary)
+		{
+			strunzone(sbar_title[sbar_num_fields]);
+			sbar_title[sbar_num_fields] = strzone(scores_label[ps_primary]);
+			sbar_size[sbar_num_fields] = stringwidth(sbar_title[sbar_num_fields], FALSE);
+			sbar_field[sbar_num_fields] = ps_primary;
+			++sbar_num_fields;
+			print("fixed missing field '", scores_label[ps_primary], "'\n");
+		}
+	}
+
 	sbar_field[sbar_num_fields] = SP_END;
 }
 




More information about the nexuiz-commits mailing list