Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

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

Last change on this file since 9667 was 9667, checked in by landauf, 11 years ago

merged core6 back to trunk

  • 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(Context* context);
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) const;
123            void sendAnnounceMessage(const std::string& message, unsigned int clientID) const;
124            void sendKillMessage(const std::string& message, unsigned int clientID) const;
125            void sendDeathMessage(const std::string& message, unsigned int clientID) const;
126            void sendStaticMessage(const std::string& message, unsigned int clientID, const ColourValue& colour) const;
127            void sendFadingMessage(const std::string& message, unsigned int clientID) const;
128
129            void dispatchAnnounceMessage(const std::string& message) const;
130            void dispatchKillMessage(const std::string& message) const;
131            void dispatchDeathMessage(const std::string& message) const;
132            void dispatchStaticMessage(const std::string& message,const ColourValue& colour) const;
133            void dispatchFadingMessage(const std::string& message) const;
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.