r3921 - in trunk/data/qcsrc: client common server

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Sat Jul 26 02:57:31 EDT 2008


Author: div0
Date: 2008-07-26 02:57:31 -0400 (Sat, 26 Jul 2008)
New Revision: 3921

Modified:
   trunk/data/qcsrc/client/sbar.qc
   trunk/data/qcsrc/common/constants.qh
   trunk/data/qcsrc/server/cl_client.qc
   trunk/data/qcsrc/server/keyhunt.qc
   trunk/data/qcsrc/server/scores.qc
   trunk/data/qcsrc/server/teamplay.qc
Log:
LMS works now as game mode, but somehow sorting is broken... ???


Modified: trunk/data/qcsrc/client/sbar.qc
===================================================================
--- trunk/data/qcsrc/client/sbar.qc	2008-07-26 06:14:53 UTC (rev 3920)
+++ trunk/data/qcsrc/client/sbar.qc	2008-07-26 06:57:31 UTC (rev 3921)
@@ -136,27 +136,28 @@
 {
 	float i, f, primary_prio, secondary_prio;
 
-	primary_prio = secondary_prio = -1;
+	ps_primary = ps_secondary = ts_primary = ts_secondary = -1;
 	for(i = 0; i < MAX_SCORE; ++i)
 	{
 		f = (scores_flags[i] & SFL_SORT_PRIO_MASK);
-		if(f > primary_prio) {
-			ps_secondary = ps_primary;
+		if(f == SFL_SORT_PRIO_PRIMARY)
 			ps_primary = i;
-		} else if(f > secondary_prio)
+		if(f == SFL_SORT_PRIO_SECONDARY)
 			ps_secondary = i;
 	}
+	if(ps_secondary == -1)
+		ps_secondary = ps_primary;
 	
-	primary_prio = secondary_prio = -1;
 	for(i = 0; i < MAX_TEAMSCORE; ++i)
 	{
 		f = (teamscores_flags[i] & SFL_SORT_PRIO_MASK);
-		if(f > primary_prio) {
-			ts_secondary = ts_primary;
+		if(f == SFL_SORT_PRIO_PRIMARY)
 			ts_primary = i;
-		} else if(f > secondary_prio)
+		if(f == SFL_SORT_PRIO_SECONDARY)
 			ts_secondary = i;
 	}
+	if(ts_secondary == -1)
+		ts_secondary = ts_primary;
 
 	Cmd_Sbar_SetFields(0);
 }
@@ -394,7 +395,7 @@
 vector sbar_field_rgb;
 string Sbar_GetField(entity pl, float field)
 {
-	float tmp, num, denom;
+	float tmp, num, denom, f;
 	string str;
 	sbar_field_rgb = '1 1 1';
 	switch(field)
@@ -427,7 +428,18 @@
 			return str;
 			
 		default:
-			return ftos(pl.(scores[field]));
+			tmp = pl.(scores[field]);
+			f = scores_flags[field];
+			if(field == ps_primary)
+				sbar_field_rgb = '1 1 0';
+			else if(field == ps_secondary)
+				sbar_field_rgb = '1 0 1';
+			else
+				sbar_field_rgb = '1 1 1';
+			if(!tmp)
+				if(f & SFL_HIDE_ZERO)
+					return "";
+			return ftos(tmp);
 	}
 	//return "error";
 }

Modified: trunk/data/qcsrc/common/constants.qh
===================================================================
--- trunk/data/qcsrc/common/constants.qh	2008-07-26 06:14:53 UTC (rev 3920)
+++ trunk/data/qcsrc/common/constants.qh	2008-07-26 06:57:31 UTC (rev 3921)
@@ -197,16 +197,19 @@
 /**
  * Lower scores are better (e.g. deaths)
  */
-#define SFL_DECREASING         1
+#define SFL_DECREASING          1
 
 /**
+ * Don't show zero values as scores
+ */
+#define SFL_HIDE_ZERO           2
+
+/**
  * Scoring priority (NOTE: PRIMARY is used for fraglimit)
  */
-#define SFL_SORT_PRIO_LOW      2
-#define SFL_SORT_PRIO_MED      4
-#define SFL_SORT_PRIO_HIGH     8
-#define SFL_SORT_PRIO_PRIMARY 14
-#define SFL_SORT_PRIO_MASK    14
+#define SFL_SORT_PRIO_SECONDARY 4
+#define SFL_SORT_PRIO_PRIMARY   8
+#define SFL_SORT_PRIO_MASK     12
 
 /**
  * Score indices

Modified: trunk/data/qcsrc/server/cl_client.qc
===================================================================
--- trunk/data/qcsrc/server/cl_client.qc	2008-07-26 06:14:53 UTC (rev 3920)
+++ trunk/data/qcsrc/server/cl_client.qc	2008-07-26 06:57:31 UTC (rev 3921)
@@ -462,6 +462,14 @@
 			Spawnqueue_Remove(self);
 		}
 	}
+	else if(g_lms)
+	{
+		// Only if the player cannot play at all
+		if(PlayerScore_Add(self, SP_LMS_PLACE, 0) == 666)
+			self.frags = -666;
+		else
+			self.frags = -667;
+	}
 	else
 		self.frags = -666;
 	

Modified: trunk/data/qcsrc/server/keyhunt.qc
===================================================================
--- trunk/data/qcsrc/server/keyhunt.qc	2008-07-26 06:14:53 UTC (rev 3920)
+++ trunk/data/qcsrc/server/keyhunt.qc	2008-07-26 06:57:31 UTC (rev 3921)
@@ -975,14 +975,14 @@
 
 	ScoreInfo_Init(kh_teams);
 	ScoreInfo_SetLabel_TeamScore  (ST_SCORE,        "score",     SFL_SORT_PRIO_PRIMARY);
-	ScoreInfo_SetLabel_TeamScore  (ST_KH_CAPS,      "caps",      SFL_SORT_PRIO_HIGH);
+	ScoreInfo_SetLabel_TeamScore  (ST_KH_CAPS,      "caps",      SFL_SORT_PRIO_SECONDARY);
 	ScoreInfo_SetLabel_PlayerScore(SP_KILLS,        "kills",     0);
 	ScoreInfo_SetLabel_PlayerScore(SP_DEATHS,       "deaths",    0);
 	ScoreInfo_SetLabel_PlayerScore(SP_SUICIDES,     "suicides",  SFL_DECREASING);
 	ScoreInfo_SetLabel_PlayerScore(SP_SCORE,        "score",     SFL_SORT_PRIO_PRIMARY);
 	ScoreInfo_SetLabel_PlayerScore(SP_KH_COLLECT,   "collect",   0);
 	ScoreInfo_SetLabel_PlayerScore(SP_KH_LOSEKEY,   "losekey",   SFL_DECREASING);
-	ScoreInfo_SetLabel_PlayerScore(SP_KH_CAPS,      "caps",      SFL_SORT_PRIO_HIGH);
+	ScoreInfo_SetLabel_PlayerScore(SP_KH_CAPS,      "caps",      SFL_SORT_PRIO_SECONDARY);
 	ScoreInfo_SetLabel_PlayerScore(SP_KH_PUSH,      "push",      0);
 	ScoreInfo_SetLabel_PlayerScore(SP_KH_DESTROYED, "destroyed", SFL_DECREASING);
 	ScoreInfo_SetLabel_PlayerScore(SP_KH_KCFRAG,    "kcfrag",    0);

Modified: trunk/data/qcsrc/server/scores.qc
===================================================================
--- trunk/data/qcsrc/server/scores.qc	2008-07-26 06:14:53 UTC (rev 3920)
+++ trunk/data/qcsrc/server/scores.qc	2008-07-26 06:57:31 UTC (rev 3921)
@@ -30,9 +30,9 @@
 	previous_y = fieldflags & SFL_SORT_PRIO_MASK;
 
 	if(fieldflags & SFL_DECREASING)
+		previous_x = (t2.field - t1.field);
+	else
 		previous_x = (t1.field - t2.field);
-	else
-		previous_x = (t2.field - t1.field);
 
 	return previous;
 }
@@ -177,13 +177,15 @@
 	entity sk;
 	float i;
 
-	if(!teamscores_entities_count)
-	{
-		sk = player.scorekeeper;
-		for(i = 0; i < MAX_SCORE; ++i)
-			sk.(scores[i]) = 0;
-		sk.Version += 1;
-	}
+	if(teamscores_entities_count)
+		return;
+	if(g_lms)
+		return;
+
+	sk = player.scorekeeper;
+	for(i = 0; i < MAX_SCORE; ++i)
+		sk.(scores[i]) = 0;
+	sk.Version += 1;
 }
 
 void Score_ClearAll()

Modified: trunk/data/qcsrc/server/teamplay.qc
===================================================================
--- trunk/data/qcsrc/server/teamplay.qc	2008-07-26 06:14:53 UTC (rev 3920)
+++ trunk/data/qcsrc/server/teamplay.qc	2008-07-26 06:57:31 UTC (rev 3921)
@@ -224,8 +224,8 @@
 		ScoreInfo_SetLabel_PlayerScore(SP_DEATHS,       "deaths",    0);
 		ScoreInfo_SetLabel_PlayerScore(SP_SUICIDES,     "suicides",  SFL_DECREASING);
 		// do not define SP_SCORE for LMS
-		ScoreInfo_SetLabel_PlayerScore(SP_LMS_LIVES,    "lives",     SFL_SORT_PRIO_MED);
-		ScoreInfo_SetLabel_PlayerScore(SP_LMS_PLACE,    "place",     SFL_SORT_PRIO_PRIMARY);
+		ScoreInfo_SetLabel_PlayerScore(SP_LMS_LIVES,    "lives",     SFL_SORT_PRIO_SECONDARY);
+		ScoreInfo_SetLabel_PlayerScore(SP_LMS_PLACE,    "place",     SFL_DECREASING | SFL_HIDE_ZERO | SFL_SORT_PRIO_PRIMARY);
 	}
 	else if(game == GAME_ARENA || cvar("g_arena"))
 	{




More information about the nexuiz-commits mailing list