#include "StdAfx.h" #include "DnHPChecker.h" #include "DnActor.h" #ifndef USE_BOOST_MEMPOOL #ifdef _DEBUG #define new new(_NORMAL_BLOCK,__FILE__,__LINE__) #endif #endif CDnHPChecker::CDnHPChecker( DnActorHandle hActor, float fStandardRatio, int iOperator ) : IDnSkillUsableChecker( hActor ), m_fStandardRatio( fStandardRatio ), m_iOperator( iOperator ) { _ASSERT( 0 <= m_iOperator && m_iOperator < OP_COUNT && "À߸øµÈ ¿¬»êÀÚ ´ëÀÔ" ); m_iType = HP_CHECKER; } CDnHPChecker::~CDnHPChecker(void) { } bool CDnHPChecker::CanUse( void ) { bool bResult = false; if( m_hHasActor ) { float fCurHPPercent = ( (float)m_hHasActor->GetHP() / (float)m_hHasActor->GetMaxHP() ) * 100.0f; switch( m_iOperator ) { case OP_GREATER: bResult = (m_fStandardRatio < fCurHPPercent); break; // float À̹ǷΠ¾à°£ ¿ÀÂ÷¸¦ Áà¾ß Çϳª. 0.5 ÆÛ¼¾Æ® Á¤µµ´Â °ü¿ëµµ¸¦ Áຼ±î. case OP_EQUAL: bResult = (float)fabs(m_fStandardRatio - fCurHPPercent) < 0.5f; break; case OP_LESS: bResult = (m_fStandardRatio > fCurHPPercent); break; case OP_GREATER_EQUAL: bResult = (m_fStandardRatio <= fCurHPPercent ); break; case OP_LESS_EQUAL: bResult = (m_fStandardRatio >= fCurHPPercent); break; } } return bResult; } IDnSkillUsableChecker* CDnHPChecker::Clone() { CDnHPChecker* pNewChecker = new CDnHPChecker(m_hHasActor, m_fStandardRatio, m_iOperator); return pNewChecker; }