Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/tutoriallevel3/src/orxonox/infos/GametypeInfo.h @ 8453

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

Merging tutoriallevel2 branch into tutoriallevel3 branch.

  • Property svn:eol-style set to native
File size: 6.5 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            virtual void changedActivity(void); // Is called when the activity has changed.
64
65            /**
66            @brief Get whether the game has started yet.
67            @return Returns true if the game has started, false if not.
68            */
69            inline bool hasStarted() const
70                { return this->bStarted_; }
71            void changedStarted(void); // Is called when the game has changed to started.
72           
73            /**
74            @brief Get whether the game has ended yet.
75            @return Returns true if the game has ended, false if not.
76            */
77            inline bool hasEnded() const
78                { return this->bEnded_; }
79            void changedEnded(void); // Is called when the game has changed to ended.
80
81            /**
82            @brief Get whether the start countdown is currently running.
83            @return Returns true if the countdown is running, false if not.
84            */
85            inline bool isStartCountdownRunning() const
86                { return this->bStartCountdownRunning_; }
87            void changedStartCountdownRunning(void); // Is called when the start countdown has been either started or stopped.
88
89            /**
90            @brief Get the current value of the start countdown.
91            @return Returns the current value of the start countdown.
92            */
93            inline float getStartCountdown() const
94                { return this->startCountdown_; }
95
96            /**
97            @brief Get the current start countdown counter.
98                   The start countdown counter only has integer values that correspond to the actually displayed countdown.
99            @return Returns the current integer countdown counter.
100            */
101            inline unsigned int getStartCountdownCounter() const
102                { return this->counter_; }
103            void changedCountdownCounter(void); // Is called when the start countdown counter has changed.
104
105            inline const std::string& getHUDTemplate() const
106                { return this->hudtemplate_; }
107
108            void sendAnnounceMessage(const std::string& message);
109            void sendAnnounceMessage(const std::string& message, unsigned int clientID);
110            void sendKillMessage(const std::string& message, unsigned int clientID);
111            void sendDeathMessage(const std::string& message, unsigned int clientID);
112            void sendStaticMessage(const std::string& message, unsigned int clientID, const ColourValue& colour);
113            void sendFadingMessage(const std::string& message, unsigned int clientID);
114
115            void dispatchAnnounceMessage(const std::string& message);
116            void dispatchKillMessage(const std::string& message);
117            void dispatchDeathMessage(const std::string& message);
118            void dispatchStaticMessage(const std::string& message,const ColourValue& colour);
119            void dispatchFadingMessage(const std::string& message);
120           
121        protected:
122            void changedReadyToSpawn(PlayerInfo* player); // Is called when a player has become ready to spawn.
123           
124            void start(void); // Inform the GametypeInfo that the game has started.
125            void end(void); // Inform the GametypeInfo that the game has ended.
126            void setStartCountdown(float countdown); // Set the start countdown to the input value.
127            void countdownStartCountdown(float countDown); // Count down the start countdown by the specified value.
128            void countDown(); // Count down the start countdown counter.
129            void startStartCountdown(void); // Inform the GametypeInfo about the start of the start countdown.
130            void stopStartCountdown(void); // Inform the GametypeInfo about the stop of the start countdown.
131            void playerReadyToSpawn(PlayerInfo* player); // Inform the GametypeInfo about a player that is ready to spawn.
132            void pawnKilled(PlayerInfo* player); // Inform the GametypeInfo about a player whose Pawn has been killed.
133            void playerSpawned(PlayerInfo* player); // Inform the GametypeInfo about a player that has spawned.
134
135            inline void setHUDTemplate(const std::string& templateName)
136                { this->hudtemplate_ = templateName; };
137
138        private:
139            void registerVariables();
140
141            static const std::string NOTIFICATION_SENDER; //!< The name of the sender for the sending of notifications.
142
143            bool bStarted_; //!< Whether the game has started,
144            bool bEnded_; //!< Whether the game has ended.
145            bool bStartCountdownRunning_; //!< Whether the start countdown is running.
146            float startCountdown_; //!< The current value of the start countdown.
147            unsigned int counter_; //!< The current integer value of the start countdown, the start countdown counter.
148            std::string hudtemplate_;
149           
150            std::set<PlayerInfo*> spawned_; //!< A set of players that are currently spawned.
151    };
152}
153
154#endif /* _GametypeInfo_H__ */
Note: See TracBrowser for help on using the repository browser.