Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

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

Last change on this file since 7401 was 7401, checked in by landauf, 14 years ago

merged doc branch back to trunk

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