| 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 | |
| 7 | enum |
| 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 |
| 17 | enum |
| 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 | |
| 25 | class CTeamsCore |
| 26 | { |
| 27 | int m_aTeam[MAX_CLIENTS]; |
| 28 | bool m_aIsSolo[MAX_CLIENTS]; |
| 29 | |
| 30 | public: |
| 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 | |