/*
** Copyright (C) 1999 Microsoft Corporation. All Rights Reserved.
**
** File: getcontrolactivecondition.cpp
**
** Author:
**
** Description:
** Implementation of the training library "getcontrolactivecondition" interface.
**
** History:
*/
#include "pch.h"
#include "GetControlActiveCondition.h"
namespace Training
{
//------------------------------------------------------------------------------
// global variabes
//------------------------------------------------------------------------------
extern ControlData g_inputControls; // yaw, pitch, roll, throttle - the ones the player is actually inputting
//------------------------------------------------------------------------------
// class methods
//------------------------------------------------------------------------------
/* void */ GetControlActiveCondition::GetControlActiveCondition (const TRef<IshipIGC>& ship, Axis axis, float fExpectedValue, bool bUseInputControls) :
m_ship (ship),
m_axis (axis),
m_fExpectedValue (fExpectedValue),
m_bUseInputControls (bUseInputControls)
{
}
//------------------------------------------------------------------------------
/* void */ GetControlActiveCondition::~GetControlActiveCondition (void)
{
m_ship = 0;
}
//------------------------------------------------------------------------------
bool GetControlActiveCondition::Evaluate (void)
{
float fValue = m_bUseInputControls ? g_inputControls.jsValues[m_axis] : m_ship->GetControls ().jsValues[m_axis];
if (m_axis == c_axisThrottle)
// if the axis is the throttle, we need to translate the value into the 0..1 range
fValue = (fValue + 1.0f) * 0.5f;
else
// otherwise we just take the absolute value
fValue = fabsf (fValue);
// we will test to see that the control is within 0.1 (10%) of the expected value.
return (fabsf (fValue - m_fExpectedValue) < 0.1f) ? true : false;
}
//------------------------------------------------------------------------------
}