DDraceNetwork Documentation
Loading...
Searching...
No Matches
gamecontroller.h
Go to the documentation of this file.
1/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */
2/* If you are missing that file, acquire a complete release at teeworlds.com. */
3#ifndef GAME_SERVER_GAMECONTROLLER_H
4#define GAME_SERVER_GAMECONTROLLER_H
5
6#include <base/vmath.h>
7#include <engine/map.h>
9#include <game/server/teams.h>
10
12
13/*
14 Class: Game Controller
15 Controls the main game logic. Keeping track of team and player score,
16 winning conditions and specific game logic.
17*/
19{
20 friend class CSaveTeam; // need access to GameServer() and Server()
21
22 std::vector<vec2> m_avSpawnPoints[3];
23
27
29
30protected:
32 CConfig *Config() { return m_pConfig; }
33 IServer *Server() const { return m_pServer; }
34
35 void DoActivityCheck();
36
38 {
40 {
41 m_Got = false;
42 m_FriendlyTeam = -1;
43 m_Pos = vec2(100, 100);
44 }
45
47 bool m_Got;
49 float m_Score;
50 };
51
53 void EvaluateSpawnType(CSpawnEval *pEval, int Type, int DDTeam);
54
55 void ResetGame();
56
58
62
65
67
68public:
69 const char *m_pGameType;
70
73
74 // event
75 /*
76 Function: OnCharacterDeath
77 Called when a CCharacter in the world dies.
78
79 Arguments:
80 victim - The CCharacter that died.
81 killer - The player that killed it.
82 weapon - What weapon that killed it. Can be -1 for undefined
83 weapon when switching team or player suicides.
84 */
85 virtual int OnCharacterDeath(class CCharacter *pVictim, class CPlayer *pKiller, int Weapon);
86 /*
87 Function: OnCharacterSpawn
88 Called when a CCharacter spawns into the game world.
89
90 Arguments:
91 chr - The CCharacter that was spawned.
92 */
93 virtual void OnCharacterSpawn(class CCharacter *pChr);
94
95 virtual void HandleCharacterTiles(class CCharacter *pChr, int MapIndex);
96 virtual void SetArmorProgress(CCharacter *pCharacter, int Progress){};
97
98 /*
99 Function: OnEntity
100 Called when the map is loaded to process an entity
101 in the map.
102
103 Arguments:
104 index - Entity index.
105 pos - Where the entity is located in the world.
106
107 Returns:
108 bool?
109 */
110 virtual bool OnEntity(int Index, int x, int y, int Layer, int Flags, bool Initial, int Number = 0);
111
112 virtual void OnPlayerConnect(class CPlayer *pPlayer);
113 virtual void OnPlayerDisconnect(class CPlayer *pPlayer, const char *pReason);
114
115 virtual void OnReset();
116
117 // game
118 virtual void DoWarmup(int Seconds);
119
120 void StartRound();
121 void EndRound();
122 void ChangeMap(const char *pToMap);
123
124 /*
125
126 */
127 virtual void Tick();
128
129 virtual void Snap(int SnappingClient);
130
131 //spawn
132 virtual bool CanSpawn(int Team, vec2 *pOutPos, int DDTeam);
133
134 virtual void DoTeamChange(class CPlayer *pPlayer, int Team, bool DoChatMsg = true);
135
136 int TileFlagsToPickupFlags(int TileFlags) const;
137
138 /*
139
140 */
141 virtual const char *GetTeamName(int Team);
142 virtual int GetAutoTeam(int NotThisId);
143 virtual bool CanJoinTeam(int Team, int NotThisId, char *pErrorReason, int ErrorReasonSize);
144 virtual int ClampTeam(int Team);
145
147
148 bool IsTeamPlay() const { return m_GameFlags & GAMEFLAG_TEAMS; }
149 // DDRace
150
152 CGameTeams &Teams() { return m_Teams; }
153 std::shared_ptr<CScoreLoadBestTimeResult> m_pLoadBestTimeResult;
154};
155
156#endif
Definition character.h:24
Definition config.h:25
Definition gamecontext.h:106
Definition teams.h:16
Definition player.h:24
Definition save.h:173
Definition gamecontroller.h:19
virtual void Snap(int SnappingClient)
Definition gamecontroller.cpp:567
void EndRound()
Definition gamecontroller.cpp:448
virtual void OnPlayerConnect(class CPlayer *pPlayer)
Definition gamecontroller.cpp:397
CGameTeams m_Teams
Definition gamecontroller.h:28
virtual void OnPlayerDisconnect(class CPlayer *pPlayer, const char *pReason)
Definition gamecontroller.cpp:430
virtual const char * GetTeamName(int Team)
Definition gamecontroller.cpp:463
CClientMask GetMaskForPlayerWorldEvent(int Asker, int ExceptID=-1)
Definition gamecontroller.cpp:710
virtual void OnReset()
Definition gamecontroller.cpp:489
virtual void SetArmorProgress(CCharacter *pCharacter, int Progress)
Definition gamecontroller.h:96
class CConfig * m_pConfig
Definition gamecontroller.h:25
virtual bool CanJoinTeam(int Team, int NotThisId, char *pErrorReason, int ErrorReasonSize)
Definition gamecontroller.cpp:673
virtual bool CanSpawn(int Team, vec2 *pOutPos, int DDTeam)
Definition gamecontroller.cpp:163
std::shared_ptr< CScoreLoadBestTimeResult > m_pLoadBestTimeResult
Definition gamecontroller.h:153
int m_Warmup
Definition gamecontroller.h:63
virtual void Tick()
Definition gamecontroller.cpp:527
virtual void HandleCharacterTiles(class CCharacter *pChr, int MapIndex)
Definition gamecontroller.cpp:514
void ResetGame()
Definition gamecontroller.cpp:458
int TileFlagsToPickupFlags(int TileFlags) const
Definition gamecontroller.cpp:741
bool IsTeamPlay() const
Definition gamecontroller.h:148
const char * m_pGameType
Definition gamecontroller.h:69
int m_GameOverTick
Definition gamecontroller.h:60
char m_aMapWish[MAX_MAP_LENGTH]
Definition gamecontroller.h:57
CConfig * Config()
Definition gamecontroller.h:32
virtual void OnCharacterSpawn(class CCharacter *pChr)
Definition gamecontroller.cpp:501
CGameTeams & Teams()
Definition gamecontroller.h:152
virtual ~IGameController()
virtual void DoTeamChange(class CPlayer *pPlayer, int Team, bool DoChatMsg=true)
Definition gamecontroller.cpp:718
CGameContext * GameServer() const
Definition gamecontroller.h:31
void EvaluateSpawnType(CSpawnEval *pEval, int Type, int DDTeam)
Definition gamecontroller.cpp:107
virtual int OnCharacterDeath(class CCharacter *pVictim, class CPlayer *pKiller, int Weapon)
Definition gamecontroller.cpp:496
std::vector< vec2 > m_avSpawnPoints[3]
Definition gamecontroller.h:22
virtual void DoWarmup(int Seconds)
Definition gamecontroller.cpp:519
IServer * Server() const
Definition gamecontroller.h:33
void ChangeMap(const char *pToMap)
Definition gamecontroller.cpp:484
float m_CurrentRecord
Definition gamecontroller.h:151
class IServer * m_pServer
Definition gamecontroller.h:26
float EvaluateSpawnPos(CSpawnEval *pEval, vec2 Pos, int DDTeam)
Definition gamecontroller.cpp:90
virtual bool OnEntity(int Index, int x, int y, int Layer, int Flags, bool Initial, int Number=0)
Definition gamecontroller.cpp:178
void StartRound()
Definition gamecontroller.cpp:470
int m_SuddenDeath
Definition gamecontroller.h:61
class CGameContext * m_pGameServer
Definition gamecontroller.h:24
int m_RoundCount
Definition gamecontroller.h:64
int m_RoundStartTick
Definition gamecontroller.h:59
virtual int GetAutoTeam(int NotThisId)
Definition gamecontroller.cpp:664
virtual int ClampTeam(int Team)
Definition gamecontroller.cpp:703
void DoActivityCheck()
Definition gamecontroller.cpp:47
int m_GameFlags
Definition gamecontroller.h:66
Definition server.h:31
@ MAX_MAP_LENGTH
Definition map.h:12
std::bitset< MAX_CLIENTS > CClientMask
Definition protocol.h:142
@ GAMEFLAG_TEAMS
Definition protocol.h:153
Definition scoreworker.h:67
Definition gamecontroller.h:38
bool m_Got
Definition gamecontroller.h:47
int m_FriendlyTeam
Definition gamecontroller.h:48
float m_Score
Definition gamecontroller.h:49
vec2 m_Pos
Definition gamecontroller.h:46
CSpawnEval()
Definition gamecontroller.h:39
vector2_base< float > vec2
Definition vmath.h:161