Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/trunk/src/orxonox/infos/GametypeInfo.h @ 9016

Last change on this file since 9016 was 9016, checked in by jo, 12 years ago

Merging presentation2011 branch to trunk. Please check for possible bugs.

  • Property svn:eol-style set to native
File size: 7.8 KB
Line 
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 *      Fabian 'x3n' Landau
24 *   Co-authors:
25 *      Damian 'Mozork' Frick
26 *
27 */
28
29/**
30    @file GametypeInfo.h
31    @brief Definition of the GametypeInfo class
32*/
33
34#ifndef _GametypeInfo_H__
35#define _GametypeInfo_H__
36
37#include "OrxonoxPrereqs.h"
38
39#include <string>
40
41#include "Info.h"
42
43namespace orxonox
44{
45
46    /**
47    @brief
48        The GametypeInfo class keeps track of the state of the game and provides facilities to inform the player about it.
49
50    @author
51        Fabian 'x3n' Landau
52    @author
53        Damian 'Mozork' Frick
54    */
55    class _OrxonoxExport GametypeInfo : public Info
56    {
57        friend class Gametype;
58
59        public:
60            GametypeInfo(BaseObject* creator);
61            virtual ~GametypeInfo();
62
63            /**
64            @brief Get whether the game has started yet.
65            @return Returns true if the game has started, false if not.
66            */
67            inline bool hasStarted() const
68                { return this->bStarted_; }
69            void changedStarted(void); // Is called when the game has changed to started.
70           
71            /**
72            @brief Get whether the game has ended yet.
73            @return Returns true if the game has ended, false if not.
74            */
75            inline bool hasEnded() const
76                { return this->bEnded_; }
77            void changedEnded(void); // Is called when the game has changed to ended.
78
79            /**
80            @brief Get whether the start countdown is currently running.
81            @return Returns true if the countdown is running, false if not.
82            */
83            inline bool isStartCountdownRunning() const
84                { return this->bStartCountdownRunning_; }
85            void changedStartCountdownRunning(void); // Is called when the start countdown has been either started or stopped.
86
87            /**
88            @brief Get the current value of the start countdown.
89            @return Returns the current value of the start countdown.
90            */
91            inline float getStartCountdown() const
92                { return this->startCountdown_; }
93
94            /**
95            @brief Get the current start countdown counter.
96                   The start countdown counter only has integer values that correspond to the actually displayed countdown.
97            @return Returns the current integer countdown counter.
98            */
99            inline unsigned int getStartCountdownCounter() const
100                { return this->counter_; }
101            void changedCountdownCounter(void); // Is called when the start countdown counter has changed.
102
103            /**
104            @brief Get whether the local player is ready to spawn.
105            @return Returns true if the player is ready to spawn, false if not.
106            */
107            inline bool isReadyToSpawn() const
108                { return this->readyToSpawn_; }
109            void changedReadyToSpawn(bool ready); // Inform the GametypeInfo that the local player has changed its spawned status.
110           
111            /**
112            @brief Get whether the local player is spawned.
113            @return Returns true if the local player is currently spawned, false if not.
114            */
115            inline bool isSpawned() const
116                { return this->spawned_; }
117            void changedSpawned(bool spawned); // Inform the GametypeInfo that the local player has changed its spawned status.
118
119            inline const std::string& getHUDTemplate() const
120                { return this->hudtemplate_; }
121           
122            inline unsigned int getNumberOfPlayers() const
123                {  return this->spawnedPlayers_.size(); }
124
125            void sendAnnounceMessage(const std::string& message);
126            void sendAnnounceMessage(const std::string& message, unsigned int clientID);
127            void sendKillMessage(const std::string& message, unsigned int clientID);
128            void sendDeathMessage(const std::string& message, unsigned int clientID);
129            void sendStaticMessage(const std::string& message, unsigned int clientID, const ColourValue& colour);
130            void sendFadingMessage(const std::string& message, unsigned int clientID);
131
132            void dispatchAnnounceMessage(const std::string& message);
133            void dispatchKillMessage(const std::string& message);
134            void dispatchDeathMessage(const std::string& message);
135            void dispatchStaticMessage(const std::string& message,const ColourValue& colour);
136            void dispatchFadingMessage(const std::string& message);
137           
138        protected:
139            void start(void); // Inform the GametypeInfo that the game has started.
140            void end(void); // Inform the GametypeInfo that the game has ended.
141            void setStartCountdown(float countdown); // Set the start countdown to the input value.
142            void countdownStartCountdown(float countDown); // Count down the start countdown by the specified value.
143            void countDown(); // Count down the start countdown counter.
144            void startStartCountdown(void); // Inform the GametypeInfo about the start of the start countdown.
145            void stopStartCountdown(void); // Inform the GametypeInfo about the stop of the start countdown.
146            void playerReadyToSpawn(PlayerInfo* player); // Inform the GametypeInfo about a player that is ready to spawn.
147            void pawnKilled(PlayerInfo* player); // Inform the GametypeInfo about a player whose Pawn has been killed.
148            void playerSpawned(PlayerInfo* player); // Inform the GametypeInfo about a player that has spawned.
149            void playerEntered(PlayerInfo* player); // Inform the GametypeInfo about a player that has entered,
150
151            inline void setHUDTemplate(const std::string& templateName)
152                { this->hudtemplate_ = templateName; };
153
154        private:
155            void registerVariables();
156            void setSpawnedHelper(PlayerInfo* player, bool spawned); // Helper method. Sends changedReadyToSpawn notifiers over the network.
157            void setReadyToSpawnHelper(PlayerInfo* player, bool ready); // Helper method. Sends changedSpawned notifiers over the network.
158
159            static const std::string NOTIFICATION_SENDER; //!< The name of the sender for the sending of notifications.
160
161            bool bStarted_; //!< Whether the game has started,
162            bool bEnded_; //!< Whether the game has ended.
163            bool bStartCountdownRunning_; //!< Whether the start countdown is running.
164            float startCountdown_; //!< The current value of the start countdown.
165            unsigned int counter_; //!< The current integer value of the start countdown, the start countdown counter.
166            std::string hudtemplate_;
167           
168            std::set<PlayerInfo*> spawnedPlayers_; //!< A set of players that are currently spawned.
169            bool spawned_; //!< Whether the local Player is currently spawned.
170            bool readyToSpawn_; //!< Whether the local Player is ready to spawn.
171    };
172}
173
174#endif /* _GametypeInfo_H__ */
Note: See TracBrowser for help on using the repository browser.