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

#ifndef _CONDITION_H_
#include "Condition.h"
#endif  //_CONDITION_H_

#ifndef _ABSTRACT_TARGET_H_
#include "AbstractTarget.h"
#endif  //_ABSTRACT_TARGET_H_

namespace Training
{
    //------------------------------------------------------------------------------
    // class definitions
    //------------------------------------------------------------------------------
    class ObjectWithinRadiusCondition : public Condition
    {
        public:
            /* void */                  ObjectWithinRadiusCondition (ImodelIGC* pObject, ImodelIGC* pTarget, float fRadius);
            /* void */                  ObjectWithinRadiusCondition (ImodelIGC* pObject, ObjectType targetType, ObjectID targetID, float fRadius);
            /* void */                  ObjectWithinRadiusCondition (ImodelIGC* pObject, AbstractTarget* pTarget, float fRadius);
            /* void */                  ObjectWithinRadiusCondition (ObjectType objectType, ObjectID objectID, ObjectType targetType, ObjectID targetID, float fRadius);
            virtual /* void */          ~ObjectWithinRadiusCondition (void);
            virtual bool                Evaluate (void);
                    float               GetRadarRadius (void) const;

        protected:
                    bool                Initialized (void);

        protected:
                    AbstractTarget*     m_pObject;
                    AbstractTarget*     m_pTarget;
                    float               m_fRadiusSquared;
                    bool                m_bConditionInitialized;
    };

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

#endif  //_OBJECT_WITHIN_RADIUS_CONDITION_H_