Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/tutoriallevel2/src/modules/notifications/NotificationQueueCEGUI.h @ 8600

Last change on this file since 8600 was 8450, checked in by dafrick, 14 years ago

Replacing GametypeStatus overlay with notifications.

File size: 7.1 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 *      Damian 'Mozork' Frick
24 *   Co-authors:
25 *      ...
26 *
27 */
28
29/**
30    @file NotificationQueueCEGUI.h
31    @brief Definition of the NotificationQueueCEGUI class.
32    @ingroup Notifications
33*/
34
35#ifndef _NotificationOueueCEGUI_H__
36#define _NotificationOueueCEGUI_H__
37
38#include "notifications/NotificationsPrereqs.h"
39
40#include <string>
41#include "util/Math.h"
42
43#include "NotificationManager.h"
44
45#include "NotificationQueue.h"
46
47namespace orxonox // tolua_export
48{ // tolua_export
49
50    /**
51    @brief
52        Displays @ref orxonox::Notification "Notifications" using CEGUI.
53
54        Apart form the parameters inherited by the @ref orxonox::NotificationQueue "NotificationQueue", there are some more parameters that influence the behavior of the NotificationQueueCEGUI:
55        - @b displaySize The size of the window that displays the NotificationQueue.
56        - @b position The position if the window that displays the NotificationQueue.
57        - @b alignment The horizontal alignment of the displayed Notifications.
58        - @b fontSize The font size of the displayed Notifications.
59        - @b fontColor The font color of the displayed Notifications.
60
61    @author
62        Damian 'Mozork' Frick
63
64    @see NotificationQueue
65    @ingroup Notifications
66    */
67    class _NotificationsExport NotificationQueueCEGUI // tolua_export
68        : public NotificationQueue
69    { // tolua_export
70
71        public:
72            NotificationQueueCEGUI(const std::string& name, const std::string& senders = NotificationListener::ALL, unsigned int size = NotificationQueue::DEFAULT_SIZE, unsigned int displayTime = NotificationQueue::DEFAULT_DISPLAY_TIME);
73            virtual ~NotificationQueueCEGUI();
74
75            void destroy(bool noGraphics = false); // Destroys the NotificationQueue.
76
77            /**
78            @brief Set the size of the window that displays the NotificationQueue.
79            @param size A vector whose first component is the relative width of the window (a value between 0 and 1) and whose second component is the absolute width in pixels (additional to the relative width, can be negative). The height is set such that exactly as many Notifications fit as is the maximum size of the NotificationQueue (in terms of the number of Notifications).
80            */
81            inline void setDisplaySize(const Vector2& size)
82                { this->setDisplaySize(Vector4(size.x, size.y, 0.0, 0.0)); }
83            void setDisplaySize(const Vector4& size); // Set the size of the window that displays the NotificationQueue.
84            /**
85            @brief Get the size of the window that displays the NotificationQueue.
86            @return Returns a vector with the display size.
87            */
88            inline const Vector4& getDisplaySize(void) const
89                { return this->displaySize_; }
90
91            void setPosition(const Vector4& position); // Set the position of the window that displays the NotificationQueue.
92            /**
93            @brief Get the position of the window that displays the NotificationQueue.
94            @return Returns a vector with the position.
95            */
96            inline const Vector4& getPosition(void) const
97                { return this->position_; }
98
99            void setAlignment(const std::string& alignment); // Set the horizontal alignment of the Notifications text.
100            /**
101            @brief Get the horizontal alignment of the Notifications text.
102            @return Returns a string with the horizontal alignment property.
103            */
104            inline const std::string& getAlignment(void)
105                { return this->alignment_; }
106
107            void setFontSize(unsigned int size); // Set the font size of the text displayed by this NotificationQueue.
108            /**
109            @brief Get the font size of the text displayed by this NotificationQueue.
110            @return Returns the font size.
111            */
112            inline unsigned int getFontSize(void)
113                { return this->fontSize_; }
114
115            void setFontColor(const Vector4& color); // Set the font color if the text displayed by this NotificationQueue.
116            /**
117            @brief Get the font color of the text displayed by this NotificationQueue.
118            @return Returns a vector with the components being RGBA, with values from 0 to 1.
119            */
120            inline const Vector4& getFontColor(void) const
121                { return this->fontColor_; }
122            /**
123            @brief Get the font color of the text displayed by this NotificationQueue.
124            @return Returns a string with the ARGB values in hexadecimal format.
125            */
126            inline const std::string& getFontColorStr(void) const
127                { return this->fontColorStr_; }
128
129            static NotificationQueueCEGUI* getQueue(const std::string& name); // tolua_export // Get the NotificationQueueCEGUI with the input name.
130           
131        protected:
132            virtual void notificationPushed(Notification* notification); // Is called by the NotificationQueue when a notification was pushed
133            virtual void notificationPopped(void); // Is called by the NotificationQueue when a notification was popped.
134            virtual void notificationRemoved(unsigned int index); // Is called when a notification was removed.
135           
136            virtual void clear(bool noGraphics = false); // Clears the NotificationQueue by removing all NotificationContainers.
137
138        protected:
139            static const std::string NOTIFICATION_LAYER; //!< The name of the NotificationLayer menu sheet.
140           
141        private:
142            Vector4 displaySize_; //!< The size of the window that displays the NotificationQueue.
143            Vector4 position_; //!< The position of the window that displays the NotificationQueue.
144            std::string alignment_; //!< The horizontal alignment of the Notifications text.
145            unsigned int fontSize_; //!< The font size of the Notifications text.
146            Vector4 fontColor_; //!< The font color of the Notifications text as a vector, in RGBA form, with values from 0 to 1.
147            std::string fontColorStr_; //!< The font color of the Notifications text as a string with the ARGB hexadecimal values.
148           
149            void create(void); // Creates the NotificationQueue in lua.
150
151    }; // tolua_export
152
153} // tolua_export
154
155#endif /* _NotificationQueueCEGUI_H__ */
Note: See TracBrowser for help on using the repository browser.