Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/trunk/src/modules/questsystem/QuestListener.h @ 7456

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

Reviewing documentation fo Questsystem, moving documentation fully into doxygen.
Added some files to modules they belong to.

  • Property svn:eol-style set to native
File size: 3.9 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 QuestListener.h
31    @brief Definition of the QuestListener class.
32    @ingroup Questsystem
33*/
34
35#ifndef _QuestListener_H__
36#define _QuestListener_H__
37
38#include "questsystem/QuestsystemPrereqs.h"
39
40#include <string>
41#include <list>
42#include "core/BaseObject.h"
43
44namespace orxonox
45{
46    namespace QuestListenerMode
47    {
48        //! The mode of the @ref orxonox::QuestListener "QuestListener".
49        enum Value
50        {
51            All,
52            Start,
53            Fail,
54            Complete
55        };
56    }
57
58    /**
59    @brief
60        Provides a way to react to the starting, completing and failing of @ref orxonox::Quest "Quests".
61
62        The XML representation goes as follows:
63        @code
64        <BaseObject> // The object that should react to the status change of a Quest.
65            <events>
66                <function> // Where function is the method of the object that should be executed. Normally this would be visibility or activity.
67                    <QuestListener questId="someQuestId" mode="someMode" /> // Where someQuestId is the identifier for the Quest the QuestListener is reacting to, and someMode is the kind of status change the QUestListener reacts to (all, start, complete or fail).
68                </function>
69            </events>
70        </BaseObject>
71        @endcode
72
73        You can use the QuestListener as if it were a @ref orxonox::Trigger "Trigger" or @ref orxonox::EventListener "EventListener", that fires an Event when the status (depending on the set mode) of the given @ref orxonox::Quest "Quest" changes.
74    @author
75    Damian 'Mozork' Frick
76    */
77    class _QuestsystemExport QuestListener : public BaseObject
78    {
79
80        public:
81            QuestListener(BaseObject* creator);
82            virtual ~QuestListener();
83
84            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Method for creating a QuestListener object through XML.
85
86            static void advertiseStatusChange(std::list<QuestListener*> & listeners, const std::string & status); //!< Makes all QuestListener in the list aware that a certain status change has occured.
87
88            bool setQuestId(const std::string & id); //!< Sets the questId of the Quest the QuestListener reacts to.
89            bool setMode(const std::string & mode); //!< Sets the mode of the QuestListener.
90
91            std::string getMode(void); //!< Get the mode of the QuestListener.
92
93            const std::string & getQuestId(void);
94            bool execute(void); //!< Executes the QuestListener, resp. fires an Event.
95
96        private:
97            QuestListenerMode::Value mode_; //!< The mode of the QuestListener.
98            Quest* quest_; //!< A pointer to the Quest the QuestListener is reacting to.
99
100            //! Static variables for the modes as strings.
101            static const std::string ALL;
102            static const std::string START;
103            static const std::string FAIL;
104            static const std::string COMPLETE;
105
106    };
107
108}
109
110#endif /* _QuestListener_H__ */
Note: See TracBrowser for help on using the repository browser.