⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fight.cpp

📁 很好的windows驱动开发书记,基于WDM的,,可以很好的学习
💻 CPP
字号:

#include "character.h"
#include "Fight.h"
#include "gametime.h"
#include "util.h"

Fight::Fight()
{
    m_name      = "Fight"; // must match class name
    m_owner     = NULL;
}

void Fight::init   ( IEOwner * owner )
{
    m_owner = dynamic_cast<Character *> (owner);
}

bool Fight::start ()
{
    m_state = Go;

    m_owner->animStart ( CA_Run );

    m_enemy = m_owner->getEnemy();

    m_enemy->alertFight ( m_owner );

    m_owner->setMotionSpeed ( m_owner->getRunSpeed() );

    m_attackClock       = 0.0f;
    m_justAttackedDelay = 0.25f;

	m_attackDesc = m_owner->getAttack( m_damage, m_attackTime );

    m_attackTime += getEnergyFact();

    return false;
}

bool Fight::update () 
{
    switch ( m_state )
    {

    case Go:

        m_attackClock += GameTime::dt;

        if ( m_attackClock >= m_attackTime )
        {

            printf ( "%s %s %s\n", m_owner->getName(), m_attackDesc, m_enemy->getName() );
            m_attackClock = 0.0f;

			m_enemy->setDamage ( m_damage );

            m_attackDesc = m_owner->getAttack ( m_damage, m_attackTime );

            // since just attacked, add extra to give opponent time to respond
            m_attackTime += m_justAttackedDelay;

            // factor in energy
            m_attackTime += getEnergyFact();
        }

        m_owner->burnEnergy();

        break;

    }

    return true;
}

float Fight::getEnergyFact ()
{
    float energy = m_owner->getEnergy();

    const float maxFact = 0.5f;

    float factor;
    
    if ( energy == 0.0f )
        factor = maxFact;
    else
        factor = maxFact - ((maxFact * energy) / 100.0f);

    return factor;
}

bool Fight::finish ()
{
    return true;
}

IEOwner * Fight::getOwner ()
{
    return m_owner;
}

const char * Fight::getName()
{
    return m_name.c_str();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -