本文整理汇总了C++中Enemy::getIsActive方法的典型用法代码示例。如果您正苦于以下问题:C++ Enemy::getIsActive方法的具体用法?C++ Enemy::getIsActive怎么用?C++ Enemy::getIsActive使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Enemy
的用法示例。
在下文中一共展示了Enemy::getIsActive方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: fireAtEnemies
void Charmander::fireAtEnemies()
{
int enemyCount = 0;
for( int i = 0; i < m_Level->getEnemies().size(); i++)
{
Enemy* enemy = m_Level->getEnemies().at(i);
if(enemy != NULL && enemy->getIsActive() == true)
{
if(MathUtils::withinRange(enemy->getX(),getX(),450.0f) == true || MathUtils::withinRange(enemy->getY(),getY(),450.0f == true))
{
enemyCount++;
Tile* targetTile = m_Level->getTileForPlayer(enemy);
float centerX = targetTile->getX() + (targetTile->getWidth() / 2.0f);
float centerY = targetTile->getY() + (targetTile->getHeight() / 2.0f);
if(enemyCount == 1)
{
if(enemy->getIsActive() == true && getIsActive() == true)
{
fireProjectile(centerX, centerY,"FireBall",500.0f,3);
}
}
else
{
break;
}
}
}
}
}
示例2: handlePlayerCollision
void Hero::handlePlayerCollision(Projectile *projectile)
{
Tile* tile = m_Level->getTileForPosition(projectile->getX(), projectile->getY());
//Cycle through all the enemies and check for Collision with the projectile
for(int i = 0; i < m_Level->getEnemies().size(); i++)
{
Enemy* enemy = m_Level->getEnemies().at(i);
if(enemy != NULL && enemy->getIsActive() == true)
{
//Get the Tile the enemy is on
Tile* enemyTile = m_Level->getTileForPlayer(enemy);
//Is the projectile on the same tile as the enemy?
if(tile == enemyTile)
{
Log::debug("Hero projectile hit an enemy");
//Apply damage to the enemy AND set The projectile to inactive
enemy->applyDamage(projectile->getDamage());
projectile->setIsActive(false);
}
}
}
}
示例3: handlePlayerCollision
void Charmander::handlePlayerCollision(Projectile* projectile)
{
Tile* tile = m_Level->getTileForPosition(projectile->getX(), projectile->getY());
//cycle through all the enemesn and ceck for the collision with the projectile
for(int i = 0; i < m_Level->getEnemies().size(); i ++)
{
Enemy* enemy = m_Level->getEnemies().at(i);
if(enemy != NULL && enemy->getIsActive() == true)
{
//get the tile the enemy is on
Tile* enemyTile = m_Level->getTileForPlayer(enemy);
//is the projectile on the same tile as the emnemy?
if(tile == enemyTile)
{
// Log::debug("Hero projectile hit an enemy");
// apply damage tot he enemt and set the projectile
enemy->applyDamage(projectile->getDamage());
projectile->setIsActive(false);
}
}
}
}
示例4: update
void Tower::update(double delta)
{
// Increment the shooting timer
m_ShootingTimer += delta;
Player::update(delta);
if(m_Level != NULL)
{
if(m_Target != NULL && m_Target->getIsActive())
{
// Shoot a projectile if enough time has passed
if(m_ShootingTimer >= m_Speed)
{
Tile* targetTile = m_Level->getTileForIndex( m_Level->getTileIndexForPlayer(m_Target) );
float centerX = targetTile->getX() + (targetTile->getWidth() / 2.0f);
float centerY = targetTile->getY() + (targetTile->getHeight() / 2.0f);
// Fire the projectile
fireProjectile(centerX, centerY);
// Reset the shooting timer
m_ShootingTimer = 0.0;
}
// Rotate the tower to follow enemies
float angle = atan2(getY() - m_Target->getY(), getX() - m_Target->getX());
m_Angle = angle * 180 / 3.141592;
// Check to see if the target is still within range
checkTargetRange(m_Target);
}
else
{
// Find a targe twithin range
findTarget();
}
// Set the tile's walkable state (the tower's tile location)
Tile* tile = m_Level->getTileForIndex(m_Level->getTileIndexForPosition(getX(), getY()));
if(tile != NULL && tile->isWalkableTile())
{
tile->setHasTower(true);
// Go through all the active enemies
for(int i = 0; i < m_Level->m_Enemies.size(); i++)
{
Enemy* enemy = m_Level->m_Enemies.at(i);
if(enemy != NULL && enemy->getIsActive())
{
if(m_Level->getTileForChest() != NULL)
{
// Update their pathfinding
enemy->setDestinationTile(m_Level->getTileForChest());
}
}
}
}
}
}