Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

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

Last change on this file since 8706 was 8706, checked in by dafrick, 13 years ago

Merging presentation branch back into trunk.
There are many new features and also a lot of other changes and bugfixes, if you want to know, digg through the svn log.
Not everything is yet working as it should, but it should be fairly stable. If you habe any bug reports, just send me an email.

  • Property svn:eol-style set to native
File size: 7.6 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            void sendAnnounceMessage(const std::string& message);
123            void sendAnnounceMessage(const std::string& message, unsigned int clientID);
124            void sendKillMessage(const std::string& message, unsigned int clientID);
125            void sendDeathMessage(const std::string& message, unsigned int clientID);
126            void sendStaticMessage(const std::string& message, unsigned int clientID, const ColourValue& colour);
127            void sendFadingMessage(const std::string& message, unsigned int clientID);
128
129            void dispatchAnnounceMessage(const std::string& message);
130            void dispatchKillMessage(const std::string& message);
131            void dispatchDeathMessage(const std::string& message);
132            void dispatchStaticMessage(const std::string& message,const ColourValue& colour);
133            void dispatchFadingMessage(const std::string& message);
134           
135        protected:
136            void start(void); // Inform the GametypeInfo that the game has started.
137            void end(void); // Inform the GametypeInfo that the game has ended.
138            void setStartCountdown(float countdown); // Set the start countdown to the input value.
139            void countdownStartCountdown(float countDown); // Count down the start countdown by the specified value.
140            void countDown(); // Count down the start countdown counter.
141            void startStartCountdown(void); // Inform the GametypeInfo about the start of the start countdown.
142            void stopStartCountdown(void); // Inform the GametypeInfo about the stop of the start countdown.
143            void playerReadyToSpawn(PlayerInfo* player); // Inform the GametypeInfo about a player that is ready to spawn.
144            void pawnKilled(PlayerInfo* player); // Inform the GametypeInfo about a player whose Pawn has been killed.
145            void playerSpawned(PlayerInfo* player); // Inform the GametypeInfo about a player that has spawned.
146            void playerEntered(PlayerInfo* player); // Inform the GametypeInfo about a player that has entered,
147
148            inline void setHUDTemplate(const std::string& templateName)
149                { this->hudtemplate_ = templateName; };
150
151        private:
152            void registerVariables();
153            void setSpawnedHelper(PlayerInfo* player, bool spawned); // Helper method. Sends changedReadyToSpawn notifiers over the network.
154            void setReadyToSpawnHelper(PlayerInfo* player, bool ready); // Helper method. Sends changedSpawned notifiers over the network.
155
156            static const std::string NOTIFICATION_SENDER; //!< The name of the sender for the sending of notifications.
157
158            bool bStarted_; //!< Whether the game has started,
159            bool bEnded_; //!< Whether the game has ended.
160            bool bStartCountdownRunning_; //!< Whether the start countdown is running.
161            float startCountdown_; //!< The current value of the start countdown.
162            unsigned int counter_; //!< The current integer value of the start countdown, the start countdown counter.
163            std::string hudtemplate_;
164           
165            std::set<PlayerInfo*> spawnedPlayers_; //!< A set of players that are currently spawned.
166            bool spawned_; //!< Whether the local Player is currently spawned.
167            bool readyToSpawn_; //!< Whether the local Player is ready to spawn.
168    };
169}
170
171#endif /* _GametypeInfo_H__ */
Note: See TracBrowser for help on using the repository browser.