/*
**  Copyright (C) 1999 Microsoft Corporation. All Rights Reserved.
**
**  File:	goal.h
**
**  Author:  
**
**  Description:
**      Header file for the training library "goal" interface.
**
**  History:
*/
#ifndef _GOAL_H_
#define _GOAL_H_

#ifndef _CONDITION_LIST_H_
#include "ConditionList.h"
#endif  //_CONDITION_LIST_H_

#ifndef _ACTION_LIST_H_
#include "ActionList.h"
#endif  //_ACTION_LIST_H_

namespace Training
{
    //------------------------------------------------------------------------------
    // class definitions
    //------------------------------------------------------------------------------
    class Goal : public Condition
    {
        public:
            enum    {c_GoalIncomplete = false, c_GoalComplete = true};

        public:
                    /* void */          Goal (Condition* pSuccessCondition);
            virtual /* void */          ~Goal (void);
            virtual bool                Start (void);
            virtual void                Stop (void);
            virtual bool                Evaluate (void);
                    void                AddStartAction (Action* pStartAction);
                    void                AddConstraintCondition (Condition* pConstraintCondition);

        protected:
                    Condition*          m_pSuccessCondition;
                    ActionList          m_startActionList;
                    ConditionList       m_constraintConditionList;
    };

    //------------------------------------------------------------------------------
}

#endif  //_GOAL_H_