1/* (c) Shereef Marzouk. See "licence DDRace.txt" and the readme.txt in the root of the distribution for more information. */
2#ifndef GAME_TEAMSCORE_H
3#define GAME_TEAMSCORE_H
4
5#include <engine/shared/protocol.h>
6
7enum
8{
9 TEAM_FLOCK = 0,
10 TEAM_SUPER = MAX_CLIENTS,
11 NUM_DDRACE_TEAMS = TEAM_SUPER + 1,
12 LEGACY_TEAM_SUPER = LEGACY_MAX_CLIENTS,
13 VANILLA_TEAM_SUPER = VANILLA_MAX_CLIENTS
14};
15
16// do not change the values of the following enum
17enum
18{
19 SV_TEAM_FORBIDDEN = 0, // teams are disabled on the map
20 SV_TEAM_ALLOWED = 1, // teams are enabled on the map, but optional
21 SV_TEAM_MANDATORY = 2, // map must be played with a team
22 SV_TEAM_FORCED_SOLO = 3 // map forces a random team for each individual player
23};
24
25class CTeamsCore
26{
27 int m_aTeam[MAX_CLIENTS];
28 bool m_aIsSolo[MAX_CLIENTS];
29
30public:
31 bool m_IsDDRace16;
32 bool m_IsDDRace64;
33
34 CTeamsCore();
35
36 int TeamSuper() const { return m_IsDDRace16 ? VANILLA_TEAM_SUPER : (m_IsDDRace64 ? LEGACY_TEAM_SUPER : TEAM_SUPER); }
37
38 bool SameTeam(int ClientId1, int ClientId2) const;
39
40 bool CanKeepHook(int ClientId1, int ClientId2) const;
41 bool CanCollide(int ClientId1, int ClientId2) const;
42
43 int Team(int ClientId) const;
44 void Team(int ClientId, int Team);
45
46 void Reset();
47 void SetSolo(int ClientId, bool Value);
48 bool GetSolo(int ClientId) const;
49};
50
51#endif
52