DDraceNetwork Docs
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
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
52 float EvaluateSpawnPos(CSpawnEval *pEval, vec2 Pos, int DDTeam);
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
71 IGameController(class CGameContext *pGameServer);
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
137 */
138 virtual const char *GetTeamName(int Team);
139 virtual int GetAutoTeam(int NotThisId);
140 virtual bool CanJoinTeam(int Team, int NotThisId, char *pErrorReason, int ErrorReasonSize);
141 int ClampTeam(int Team);
142
143 CClientMask GetMaskForPlayerWorldEvent(int Asker, int ExceptID = -1);
144
145 bool IsTeamPlay() const { return m_GameFlags & GAMEFLAG_TEAMS; }
146 // DDRace
147
149 CGameTeams &Teams() { return m_Teams; }
150 std::shared_ptr<CScoreLoadBestTimeResult> m_pLoadBestTimeResult;
151};
152
153#endif
Definition: character.h:23
Definition: config.h:23
Definition: gamecontext.h:74
Definition: teams.h:14
Definition: player.h:24
Definition: save.h:167
Definition: gamecontroller.h:19
virtual void Snap(int SnappingClient)
Definition: gamecontroller.cpp:557
void EndRound()
Definition: gamecontroller.cpp:438
virtual void OnPlayerConnect(class CPlayer *pPlayer)
Definition: gamecontroller.cpp:387
CGameTeams m_Teams
Definition: gamecontroller.h:28
virtual void OnPlayerDisconnect(class CPlayer *pPlayer, const char *pReason)
Definition: gamecontroller.cpp:420
virtual const char * GetTeamName(int Team)
Definition: gamecontroller.cpp:453
CClientMask GetMaskForPlayerWorldEvent(int Asker, int ExceptID=-1)
Definition: gamecontroller.cpp:710
virtual void OnReset()
Definition: gamecontroller.cpp:479
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:154
std::shared_ptr< CScoreLoadBestTimeResult > m_pLoadBestTimeResult
Definition: gamecontroller.h:150
int m_Warmup
Definition: gamecontroller.h:63
virtual void Tick()
Definition: gamecontroller.cpp:517
virtual void HandleCharacterTiles(class CCharacter *pChr, int MapIndex)
Definition: gamecontroller.cpp:504
void ResetGame()
Definition: gamecontroller.cpp:448
bool IsTeamPlay() const
Definition: gamecontroller.h:145
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:491
CGameTeams & Teams()
Definition: gamecontroller.h:149
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:105
virtual int OnCharacterDeath(class CCharacter *pVictim, class CPlayer *pKiller, int Weapon)
Definition: gamecontroller.cpp:486
std::vector< vec2 > m_avSpawnPoints[3]
Definition: gamecontroller.h:22
virtual void DoWarmup(int Seconds)
Definition: gamecontroller.cpp:509
IServer * Server() const
Definition: gamecontroller.h:33
void ChangeMap(const char *pToMap)
Definition: gamecontroller.cpp:474
float m_CurrentRecord
Definition: gamecontroller.h:148
class IServer * m_pServer
Definition: gamecontroller.h:26
float EvaluateSpawnPos(CSpawnEval *pEval, vec2 Pos, int DDTeam)
Definition: gamecontroller.cpp:88
virtual bool OnEntity(int Index, int x, int y, int Layer, int Flags, bool Initial, int Number=0)
Definition: gamecontroller.cpp:169
void StartRound()
Definition: gamecontroller.cpp:460
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:654
int ClampTeam(int Team)
Definition: gamecontroller.cpp:703
void DoActivityCheck()
Definition: gamecontroller.cpp:45
IGameController(class CGameContext *pGameServer)
Definition: gamecontroller.cpp:23
int m_GameFlags
Definition: gamecontroller.h:66
Definition: server.h:31
std::bitset< MAX_CLIENTS > CClientMask
Definition: protocol.h:141
@ GAMEFLAG_TEAMS
Definition: protocol.h:145
@ MAX_MAP_LENGTH
Definition: map.h:12
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:158