Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/environment/src/modules/notifications/NotificationDispatcher.h @ 8703

Last change on this file since 8703 was 7488, checked in by dafrick, 14 years ago

Some more documentation.
Making NotificationManager Root scope, cleaning up, especially in Notification (now it's just a data structure anymore).

  • Property svn:eol-style set to native
File size: 4.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 *      Damian 'Mozork' Frick
24 *   Co-authors:
25 *      ...
26 *
27 */
28
29/**
30    @file NotificationDispatcher.h
31    @brief Definition of the NotificationDispatcher class.
32    @ingroup Notifications
33*/
34
35#ifndef _NotificationDispatcher_H__
36#define _NotificationDispatcher_H__
37
38#include "notifications/NotificationsPrereqs.h"
39
40#include <string>
41#include "core/BaseObject.h"
42#include "network/synchronisable/Synchronisable.h"
43
44namespace orxonox
45{
46
47    /**
48    @brief
49        A NotificationDispatcher is an entity that, upon being triggered, dispatches (or sends) a specified @ref orxonox::Notification "Notification".
50
51        There is one parameter to be set, the @b sender . The sender specifies the part of Orxonox the sent @ref orxonox::Notification "Notification" comes from. The default value is set by the classes implementing NotificationDispatcher.
52
53        Its standard usage is:
54        @code
55        <NotificationDispatcher sender="me">
56            <events>
57                <trigger>
58                    <PlayerTrigger />
59                </trigger>
60            </event>
61        </NotificationDispatcher>
62        @endcode
63        But keep in mind, that NotificationDispatcher is an abstract class and in this example @ref orxonox::PlayerTrigger "PlayerTrigger" stands for any event that is caused by a @ref orxonox::PlayerTrigger "PlayerTrigger", so instead of @ref orxonox::PlayerTrigger "PlayerTrigger", there could be a @ref orxonox::DistanceTrigger "DistanceTrigger", or a @ref orxonox::DistanceMultiTrigger "DistanceMutliTrigger", or even an @ref orxonox::EventListener "EventListener" that waits for an event coming from any kind of @ref orxonox::PlayerTrigger "PlayerTrigger".
64    @author
65        Damian 'Mozork' Frick
66    */
67    class _NotificationsExport NotificationDispatcher : public BaseObject, public Synchronisable
68    {
69        public:
70            NotificationDispatcher(BaseObject* creator); //!< Default constructor. Initializes the object.
71            virtual ~NotificationDispatcher(); //!< Destructor.
72
73            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Method for creating a NotificationDispatcher object through XML.
74            virtual void XMLEventPort(Element& xmlelement, XMLPort::Mode mode);
75
76            /**
77            @brief Get the sender of the Notification dispatched by this NotificationDispatcher.
78            @return Returns the name of the sender.
79            */
80            const std::string& getSender(void) const
81                { return this->sender_; }
82                        /**
83            @brief Set the sender of the Notification dispatched by this NotificationDispatcher.
84            @param sender The name of the sender.
85            */
86            void setSender(const std::string& sender)
87                { this->sender_ = sender; }
88
89            void dispatch(unsigned int clientId); //!< Dispatches a specific Notification.
90            bool trigger(bool triggered, BaseObject* trigger); //!< Is called when the NotificationDispatcher is triggered.
91
92        protected:
93            std::string sender_; //!< The name of the sender of the Notification dispatched by this NotificationDispatcher.
94
95            void registerVariables(void); //!< Register some variables for synchronisation.
96
97            /**
98            @brief Creates the notification message that should be sent upon the NotificationDispatcher triggering.
99                   This method can be overloaded to customize the NotificationDispatcher.
100            @return Returns the notification message.
101            */
102            virtual const std::string& createNotificationMessage(void)
103                { return *(new std::string("")); }
104
105    };
106
107}
108
109#endif /* _NotificationDispatcher_H__ */
Note: See TracBrowser for help on using the repository browser.