Orxonox  0.0.5 Codename: Arcturus
TeamGametype.h
Go to the documentation of this file.
1 /*
2  * ORXONOX - the hottest 3D action shooter ever to exist
3  * > www.orxonox.net <
4  *
5  *
6  * License notice:
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License
10  * as published by the Free Software Foundation; either version 2
11  * of the License, or (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21  *
22  * Author:
23  * Johannes Ritz
24  * Co-authors:
25  * ...
26  *
27  */
28 
29 #ifndef _TeamGametype_H__
30 #define _TeamGametype_H__
31 
32 #include "OrxonoxPrereqs.h"
33 
34 #include <map>
35 #include <vector>
36 #include "Gametype.h"
37 
38 namespace orxonox
39 {
41  {
42  public:
43  TeamGametype(Context* context);
44  virtual ~TeamGametype() {}
45 
46  void setConfigValues();
47 
48  virtual void playerEntered(PlayerInfo* player) override;
49  virtual void findAndSetTeam(PlayerInfo* player);
50  virtual bool playerLeft(PlayerInfo* player) override;
51  virtual void spawnDeadPlayersIfRequested() override;
52 
53  virtual bool allowPawnHit(Pawn* victim, Pawn* originator = nullptr) override;
54  virtual bool allowPawnDamage(Pawn* victim, Pawn* originator = nullptr) override;
55  virtual bool allowPawnDeath(Pawn* victim, Pawn* originator = nullptr) override;
56 
57  virtual void playerStartsControllingPawn(PlayerInfo* player, Pawn* pawn) override;
58 
59 
60  int getTeam(PlayerInfo* player);
61 
62  inline const ColourValue& getTeamColour(int teamnr) const
63  { return this->teamcolours_[teamnr]; }
64  int getTeamScore(PlayerInfo* player);
65  int getTeamSize(int team);
66  int getHumansInTeam(int team);
67 
68  protected:
69  virtual SpawnPoint* getBestSpawnPoint(PlayerInfo* player) const override;
70  bool pawnsAreInTheSameTeam(Pawn* pawn1, Pawn* pawn2);
71 
73  std::map<PlayerInfo*, int> teamnumbers_;
74  std::vector<ColourValue> teamcolours_;
75  unsigned int teams_;
76  //unsigned int playersPerTeam_; //!< Defines Maximum for players per team. Value 0: no maximum!
77  unsigned int maxPlayers_;
78  std::map<PlayerInfo*, bool> allowedInGame_;
79  void setTeamColour(PlayerInfo* player, Pawn* pawn);
80  void setDefaultObjectColour(Pawn* pawn);
81  void colourPawn(Pawn* pawn, int teamNr);
82  void announceTeamWin(int winnerTeam);
83 
84  };
85 }
86 
87 #endif /* _TeamGametype_H__ */
Everything in Orxonox that has a health attribute is a Pawn.
Definition: Pawn.h:56
unsigned int maxPlayers_
Defines Maximum for number of players. Value 0 : no maximum!
Definition: TeamGametype.h:77
std::map< PlayerInfo *, int > teamnumbers_
Definition: TeamGametype.h:73
Definition: SpawnPoint.h:40
std::map< PlayerInfo *, bool > allowedInGame_
Only those players are allowed to spawn which are listed here as &#39;true&#39;.
Definition: TeamGametype.h:78
bool allowFriendlyFire_
friendlyfire is per default switched off: friendlyFire_ = false;
Definition: TeamGametype.h:72
Definition: TeamGametype.h:40
Die Wagnis Klasse hat die folgenden Aufgaben:
Definition: ApplicationPaths.cc:66
Definition: Gametype.h:63
Shared library macros, enums, constants and forward declarations for the orxonox library ...
Definition: Context.h:45
#define _OrxonoxExport
Definition: OrxonoxPrereqs.h:60
const ColourValue & getTeamColour(int teamnr) const
Definition: TeamGametype.h:62
unsigned int teams_
Number of teams. Value 0 : no teams!
Definition: TeamGametype.h:75
Definition: PlayerInfo.h:39
std::vector< ColourValue > teamcolours_
Definition: TeamGametype.h:74
virtual ~TeamGametype()
Definition: TeamGametype.h:44