]> icculus.org git repositories - divverent/nexuiz.git/blob - data/qcsrc/server/scores.qh
CSQC part for the new score system (not really finished yet, needs cleaning)
[divverent/nexuiz.git] / data / qcsrc / server / scores.qh
1 /**
2  * Attaches a PlayerScore entity to a player. Use that in ClientConnect.
3  * Remember to detach it in ClientDisconnect!
4  */
5 void PlayerScore_Attach(entity player);
6
7 /**
8  * Detaches a PlayerScore entity from the player. Use that in ClientDisconnect.
9  */
10 void PlayerScore_Detach(entity player);
11
12 /**
13  * Adds a score to the player's scores.
14  * NEVER call this if PlayerScore_Attach has not been called yet!
15  * Means: FIXME make players unable to join the game when not called ClientConnect yet.
16  */
17 void PlayerScore_Add(entity player, float scorefield, float score);
18
19 /**
20  * Check if the player can have scores.
21  * This is needed for example in keyhunt, when the carrier disconnects.
22  * The key-losing happens too late... which should probably be fixed
23  * but I'm just not in the mood to do that now as I'm busy making the
24  * csqc part work <.<
25  */
26 float PlayerScore_IsValid(entity player);
27
28 /**
29  * Initialize the score of this player if needed.
30  * Does nothing in teamplay.
31  * Use that when a spectator becomes a player.
32  */
33 void PlayerScore_Clear(entity player);
34
35 /**
36  * Adds a score to the player's team's scores.
37  * NEVER call this if team has not been set yet!
38  */
39 void TeamScore_Add(entity player, float scorefield, float score);
40
41 /**
42  * Adds a score to both the player and the team.
43  */
44 void PlayerTeamScore_Add(entity player, float pscorefield, float tscorefield, float score);
45
46 /**
47  * Adds to the generic score fields for both the player and the team.
48  */
49 #define PlayerTeamScore_AddScore(p,s) PlayerTeamScore_Add(p, SP_SCORE, ST_SCORE, s)
50
51 /**
52  * Initialize the scores info for the given number of teams.
53  * Immediately set all labels afterwards.
54  */
55 void ScoreInfo_Init(float teams);
56
57 /**
58  * Set the label of a team score item, as well as the scoring flags.
59  */
60 void ScoreInfo_SetLabel_TeamScore(float i, string label, float scoreflags);
61
62 /**
63  * Set the label of a player score item, as well as the scoring flags.
64  */
65 void ScoreInfo_SetLabel_PlayerScore(float i, string label, float scoreflags);
66
67 /**
68  * Clear ALL scores (for ready-restart).
69  */
70 void Score_ClearAll();
71
72 /**
73  * Prints the scores (ugly!) to the console.
74  */
75 void Score_DebugPrint();
76
77 /**
78  * Sets the following results for the current scores entities.
79  */
80 void WinningConditionHelper();
81 float WinningConditionHelper_topscore;   ///< highest score
82 float WinningConditionHelper_equality;   ///< 1 if and only if the top two have equal scores
83 float WinningConditionHelper_winnerteam; ///< the color of the winning team, or -1 if none
84 entity WinningConditionHelper_winner;    ///< the winning player, or world if none