+#include "scores.qh"
+#include "_all.qh"
+
+#include "command/common.qh"
+#include "mutators/mutators_include.qh"
+#include "../common/playerstats.qh"
+#include "../common/teams.qh"
+
.entity scorekeeper;
entity teamscorekeepers[16];
string scores_label[MAX_SCORE];
{
if(!strict && !(fieldflags & SFL_SORT_PRIO_MASK)) // column does not sort
return previous;
- if((fieldflags & SFL_SORT_PRIO_MASK) < previous_y)
+ if((fieldflags & SFL_SORT_PRIO_MASK) < previous.y)
return previous;
- if(t1.field == t2.field)
+ if (t1.(field) == t2.(field))
return previous;
- previous_y = fieldflags & SFL_SORT_PRIO_MASK;
+ previous.y = fieldflags & SFL_SORT_PRIO_MASK;
if(fieldflags & SFL_ZERO_IS_WORST)
{
- if(t1.field == 0)
+ if (t1.(field) == 0)
{
- previous_x = -1;
+ previous.x = -1;
return previous;
}
- else if(t2.field == 0)
+ else if (t2.(field) == 0)
{
- previous_x = +1;
+ previous.x = +1;
return previous;
}
}
- if(fieldflags & SFL_LOWER_IS_BETTER)
- previous_x = (t2.field - t1.field);
+ if (fieldflags & SFL_LOWER_IS_BETTER)
+ previous.x = (t2.(field) - t1.(field));
else
- previous_x = (t1.field - t2.field);
+ previous.x = (t1.(field) - t2.(field));
return previous;
}
WriteChar(MSG_ENTITY, self.(teamscores[i]));
}
- return TRUE;
+ return true;
}
void TeamScore_Spawn(float t, string name)
ts.classname = "csqc_score_team";
ts.netname = name; // not used yet, FIXME
ts.team = t;
- Net_LinkEntity(ts, FALSE, 0, TeamScore_SendEntity);
+ Net_LinkEntity(ts, false, 0, TeamScore_SendEntity);
teamscorekeepers[t - 1] = ts;
++teamscores_entities_count;
- PlayerStats_AddTeam(t);
+ PlayerStats_GameReport_AddTeam(t);
}
float TeamScore_AddToTeam(float t, float scorefield, float score)
result = ScoreField_Compare(t1, t2, f, teamscores_flags[i], result, strict);
}
- if (result_x == 0 && strict)
- result_x = t1.team - t2.team;
+ if (result.x == 0 && strict)
+ result.x = t1.team - t2.team;
- return result_x;
+ return result.x;
}
/*
}
if(label != "")
{
- PlayerStats_AddEvent(strcat(PLAYERSTATS_TOTAL, label));
- PlayerStats_AddEvent(strcat(PLAYERSTATS_SCOREBOARD, label));
+ PlayerStats_GameReport_AddEvent(strcat(PLAYERSTATS_TOTAL, label));
+ PlayerStats_GameReport_AddEvent(strcat(PLAYERSTATS_SCOREBOARD, label));
}
}
}
if(label != "")
{
- PlayerStats_AddEvent(strcat(PLAYERSTATS_TOTAL, label));
- PlayerStats_AddEvent(strcat(PLAYERSTATS_SCOREBOARD, label));
+ PlayerStats_GameReport_AddEvent(strcat(PLAYERSTATS_TOTAL, label));
+ PlayerStats_GameReport_AddEvent(strcat(PLAYERSTATS_SCOREBOARD, label));
}
}
-float ScoreInfo_SendEntity(entity to, float sf)
+float ScoreInfo_SendEntity(entity to, int sf)
{
float i;
WriteByte(MSG_ENTITY, ENT_CLIENT_SCORES_INFO);
WriteString(MSG_ENTITY, teamscores_label[i]);
WriteByte(MSG_ENTITY, teamscores_flags[i]);
}
- return TRUE;
+ return true;
}
void ScoreInfo_Init(float teams)
{
scores_initialized = spawn();
scores_initialized.classname = "ent_client_scoreinfo";
- Net_LinkEntity(scores_initialized, FALSE, 0, ScoreInfo_SendEntity);
+ Net_LinkEntity(scores_initialized, false, 0, ScoreInfo_SendEntity);
}
if(teams >= 1)
TeamScore_Spawn(NUM_TEAM_1, "Red");
WriteChar(MSG_ENTITY, self.(scores[i]));
}
- return TRUE;
+ return true;
}
float PlayerScore_Clear(entity player)
if(MUTATOR_CALLHOOK(ForbidPlayerScore_Clear)) return 0;
- if(g_cts) return 0; // in CTS, you don't lose score by observing
- if(g_race && g_race_qualifying) return 0; // in qualifying, you don't lose score by observing
-
sk = player.scorekeeper;
for(i = 0; i < MAX_SCORE; ++i)
{
error("player already has a scorekeeper");
sk = spawn();
sk.owner = player;
- Net_LinkEntity(sk, FALSE, 0, PlayerScore_SendEntity);
+ Net_LinkEntity(sk, false, 0, PlayerScore_SendEntity);
player.scorekeeper = sk;
}
entity s;
if(gameover)
- if not(g_lms && scorefield == SP_LMS_RANK) // allow writing to this field in intermission as it is needed for newly joining players
+ if(!(g_lms && scorefield == SP_LMS_RANK)) // allow writing to this field in intermission as it is needed for newly joining players
score = 0;
if(!scores_initialized) return 0; // FIXME remove this when everything uses this system
if(scores_label[scorefield] != "")
s.SendFlags |= pow(2, scorefield);
if(!warmup_stage)
- PlayerStats_Event(s.owner, strcat(PLAYERSTATS_TOTAL, scores_label[scorefield]), score);
+ PS_GR_P_ADDVAL(s.owner, strcat(PLAYERSTATS_TOTAL, scores_label[scorefield]), score);
return (s.(scores[scorefield]) += score);
}
result = ScoreField_Compare(t1, t2, f, scores_flags[i], result, strict);
}
- if (result_x == 0 && strict)
- result_x = num_for_edict(t1.owner) - num_for_edict(t2.owner);
+ if (result.x == 0 && strict)
+ result.x = num_for_edict(t1.owner) - num_for_edict(t2.owner);
- return result_x;
+ return result.x;
}
void WinningConditionHelper()
s = strcat(s, ":human");
else
s = strcat(s, ":bot");
- if(!IS_PLAYER(p) && !g_arena && p.caplayer != 1 && !g_lms)
+ if(!IS_PLAYER(p) && p.caplayer != 1 && !g_lms)
s = strcat(s, ":spectator");
}
else
{
- if(IS_PLAYER(p) || g_arena || p.caplayer == 1 || g_lms)
+ if(IS_PLAYER(p) || p.caplayer == 1 || g_lms)
s = GetPlayerScoreString(p, 2);
else
s = "-666";
if(teams < 0)
return 0;
}
-
+
return PlayerScore_Compare(p1.scorekeeper, p2.scorekeeper, strict);
}
plist = world;
FOR_EACH_CLIENT(p)
- p.field = 0;
+ p.(field) = 0;
FOR_EACH_CLIENT(p) if(p.scorekeeper)
{
plist = p;
}
// Now plist points to the whole list.
-
+
pfirst = plast = world;
i = j = 0;
if(!plast || PlayerTeamScore_Compare(plast, pbest, teams, 0))
j = i;
- pbest.field = j;
+ pbest.(field) = j;
- if not(pfirst)
+ if (!pfirst)
pfirst = pbest;
if(plast)
plast.chain = pbest;
}
sk = teamscorekeepers[t - 1];
- if not(sk)
+ if (!sk)
return -999999999;
s = sk.teamscores_primary;
if(teamscores_flags_primary & SFL_ZERO_IS_WORST)
return s;
}
-#define NAMEWIDTH 22
-#define SCORESWIDTH 58
+const float NAMEWIDTH = 22;
+const float SCORESWIDTH = 58;
// TODO put this somewhere in common?
string Score_NicePrint_ItemColor(float vflags)
{
s = "Scores:";
s = strcat(s, strpad(max(0, NAMEWIDTH - strlennocol(s)), ""));
-
+
for(i = 0; i < MAX_SCORE; ++i)
if(scores_label[i] != "")
{
sk = p.scorekeeper;
s = strcat(s, p.netname);
- for(;;)
+ for (;;)
{
i = strlennocol(s) - NAMEWIDTH;
if(i > 0)
break;
}
}
-
+
for(i = 0; i < MAX_SCORE; ++i)
if(scores_label[i] != "")
{
t = p.team;
p = p.chain;
}
-
+
t = 0;
FOR_EACH_CLIENT(p)
- if not(IS_PLAYER(p))
+ if (!IS_PLAYER(p))
{
- if not(t)
+ if (!t)
Score_NicePrint_Spectators(to);
Score_NicePrint_Spectator(to, p);
t = 1;
for(i = 0; i < MAX_SCORE; ++i)
if(s.(scores[i]) != 0)
if(scores_label[i] != "")
- PlayerStats_Event(s.owner, strcat(PLAYERSTATS_SCOREBOARD, scores_label[i]), s.(scores[i]));
+ PS_GR_P_ADDVAL(s.owner, strcat(PLAYERSTATS_SCOREBOARD, scores_label[i]), s.(scores[i]));
}
void PlayerScore_TeamStats(void)
if(sk.(teamscores[i]) != 0)
if(teamscores_label[i] != "")
// the +1 is important here!
- PlayerStats_TeamScore(t+1, strcat(PLAYERSTATS_SCOREBOARD, teamscores_label[i]), sk.(teamscores[i]));
+ PS_GR_T_ADDVAL(t+1, strcat(PLAYERSTATS_SCOREBOARD, teamscores_label[i]), sk.(teamscores[i]));
}
}