Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Dec 7, 2008, 11:39:44 PM (15 years ago)
Author:
dafrick
Message:
  • Changed questStatus to mode in QuestListener.
  • Added new mode 'all' in QuestListener
  • Documented QuestListener
  • Cleaned up some code, replaced tabs with spaces, a.s.o.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/questsystem3/src/orxonox/objects/quest/QuestListener.cc

    r2346 r2352  
    2727 */
    2828
     29/**
     30    @file QuestListener.cc
     31    @brief Implementation of the QuestListener class.
     32*/
     33
    2934#include "OrxonoxStableHeaders.h"
    3035#include "QuestListener.h"
     
    4045    CreateFactory(QuestListener);
    4146
     47    /**
     48    @brief
     49        Constructor. Registers the object and initializes variables.
     50    */
    4251    QuestListener::QuestListener(BaseObject* creator) : BaseObject(creator)
    4352    {
    4453        RegisterObject(QuestListener);
    4554       
    46         this->status_ = questListenerStatus::start;
     55        this->status_ = questListenerMode::all;
    4756        this->quest_ = NULL;
    4857    }
    4958   
     59    /**
     60    @brief
     61        Destructor.
     62    */
    5063    QuestListener::~QuestListener()
    5164    {
     
    6174
    6275        XMLPortParam(QuestListener, "questId", setQuestId, getQuestId, xmlelement, mode);
    63         XMLPortParam(QuestListener, "questStatus", setQuestStatus, getQuestStatus, xmlelement, mode);
    64 
    65         this->quest_->addListener(this);
    66        
    67         COUT(3) << "QuestListener created for quest: {" << this->quest_->getId() << "} and status '" << this->getQuestStatus() << "'." << std::endl;
    68     }
    69    
    70     void QuestListener::advertiseStatusChange(std::list<QuestListener*> & listeners, const std::string & status)
    71     {
    72         for (std::list<QuestListener*>::iterator it = listeners.begin(); it != listeners.end(); ++it)
     76        XMLPortParam(QuestListener, "mode", setMode, getMode, xmlelement, mode);
     77
     78        this->quest_->addListener(this); //!< Adds the QuestListener to the Quests list of listeners.
     79       
     80        COUT(3) << "QuestListener created for quest: {" << this->quest_->getId() << "} with mode '" << this->getQuestStatus() << "'." << std::endl;
     81    }
     82   
     83    /**
     84    @brief
     85        Makes all QuestListener in the list aware that a certain status change has occured and executes them if the status change affects them.
     86    @param listeners
     87        The list of QuestListeners that have to be made aware of the status change.
     88    @param status
     89        The status that has changed. Can be 'start' (if the Quest was started), 'complete' (if the Quest was completed) or 'fail' (if the Quest was failed).
     90    */
     91    /* static */ void QuestListener::advertiseStatusChange(std::list<QuestListener*> & listeners, const std::string & status)
     92    {
     93        for (std::list<QuestListener*>::iterator it = listeners.begin(); it != listeners.end(); ++it) //!< Iterate through all QuestListeners
    7394        {
    7495            QuestListener* listener = *it;
    75             if(listener->getQuestStatus() == status)
     96            if(listener->getMode() == status || listener->getMode() == questListenerMode::all) //!< Check whether the status change affects the give QuestListener.
    7697            {
    7798                listener->execute();
     
    80101    }
    81102   
     103    /**
     104    @brief
     105        Sets the questId of the Quest the QuestListener reacts to.
     106    @param id
     107        The questId of the Quest the QUestListener reacts to.
     108    @return
     109        Returns true if successful.
     110    */
     111    bool QuestListener::setQuestId(const std::string & id)
     112    {
     113        this->quest_ = QuestManager::findQuest(id); //!< Find the Quest corresponding to the given questId.
     114       
     115        if(this->quest_ == NULL) //!< If there is no such Quest.
     116        {
     117            COUT(1) << "This is bad! The QuestListener has not found a Quest qith a corresponding id." << std::endl; //TDO Throw a damn Exception!
     118            return false;
     119        }
     120       
     121        return true;
     122    }
     123   
     124    /**
     125    @brief
     126        Sets the mode of the QuestListener.
     127    @param mode
     128        The mode to be set. Can be eighter 'all', 'start', 'fail' or 'complete'.
     129    @return
     130        Returns true if successful.
     131    */
     132    bool QuestListener::setMode(const std::string & mode)
     133    {
     134        if(status == "all")
     135        {
     136            this->status_ = questListenerMode::all;
     137        }
     138        else if(status == "start")
     139        {
     140            this->status_ = questListenerMode::start;
     141        }
     142        else if(status == "fail")
     143        {
     144            this->status_ = questListenerMode::fail;
     145        }
     146        else if(status == "complete")
     147        {
     148            this->status_ = questListenerMode::complete;
     149        }
     150        else
     151        {
     152            COUT(2) << "QuestListener with invalid mode '" << mode << "' created. Mode set to 'all'." << std::endl;
     153            this->status_ = questListenerMode::all;
     154            return false;
     155        }
     156       
     157        return true;
     158    }
     159   
     160    /**
     161    @brief
     162        Get the mode of the QuestListener.
     163    @return
     164        Return the mode of the QuestListener. Can be eighter 'all', 'start', 'fail' or 'complete'.
     165    */
     166    const std::string QuestListener::getMode(void)
     167    {
     168        if(this->status_ == questListenerMode::all)
     169        {
     170            return "all";
     171        }
     172        else if(this->status_ == questListenerMode::start)
     173        {
     174            return "start";
     175        }
     176        else if(this->status_ == questListenerMode::fail)
     177        {
     178            return "fail";
     179        }
     180        else if(this->status_ == questListenerMode::complete)
     181        {
     182            return "complete";
     183        }
     184        else
     185        {
     186            COUT(1) << "An unforseen, never to happen, Error has occured. This is impossible!" << std::endl;
     187            return "";
     188        }
     189    }
     190
     191    /**
     192    @brief
     193        Executes the QuestListener, resp. fires an Event.
     194    @return
     195        Returns true if successful.
     196    */
    82197    bool QuestListener::execute()
    83198    {
     
    85200        return true;
    86201    }
    87    
    88     bool QuestListener::setQuestId(const std::string & id)
    89     {
    90         this->quest_ = QuestManager::findQuest(id);
    91         if(this->quest_ == NULL)
    92         {
    93             COUT(1) << "This is bad!" << std::endl; //TDO Find a better way.
    94             return false;
    95         }
    96        
    97         return true;
    98     }
    99    
    100     bool QuestListener::setQuestStatus(const std::string & status)
    101     {
    102         if(status == "start")
    103         {
    104             this->status_ = questListenerStatus::start;
    105             return true;
    106         }
    107         else if(status == "fail")
    108         {
    109             this->status_ = questListenerStatus::fail;
    110             return true;
    111         }
    112         else if(status == "complete")
    113         {
    114             this->status_ = questListenerStatus::complete;
    115             return true;
    116         }
    117         else
    118         {
    119             COUT(2) << "QuestListener with invalid status '" << status << "' created. Status set to 'start'." << std::endl;
    120             this->status_ = questListenerStatus::start;
    121             return false;
    122         }
    123     }
    124    
    125     const std::string QuestListener::getQuestStatus(void)
    126     {
    127         if(this->status_ == questListenerStatus::start)
    128         {
    129             return "start";
    130         }
    131         else if(this->status_ == questListenerStatus::fail)
    132         {
    133             return "fail";
    134         }
    135         else if(this->status_ == questListenerStatus::complete)
    136         {
    137             return "complete";
    138         }
    139         else
    140         {
    141             COUT(1) << "An unforseen, never to happen, Error has occured. This is impossible!" << std::endl;
    142             return "";
    143         }
    144     }
    145 
    146202
    147203}
Note: See TracChangeset for help on using the changeset viewer.