本文整理汇总了C++中BadGuy::kill_fall方法的典型用法代码示例。如果您正苦于以下问题:C++ BadGuy::kill_fall方法的具体用法?C++ BadGuy::kill_fall怎么用?C++ BadGuy::kill_fall使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BadGuy
的用法示例。
在下文中一共展示了BadGuy::kill_fall方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: hit
HitResponse
Block::collision(GameObject& other, const CollisionHit& )
{
Player* player = dynamic_cast<Player*> (&other);
if(player) {
if(player->get_bbox().get_top() > get_bbox().get_bottom() - 7.0) {
hit(*player);
}
}
// only interact with other objects if...
// 1) we are bouncing
// and
// 2) the object is not portable (either never or not currently)
Portable* portable = dynamic_cast<Portable*> (&other);
if(bouncing && (portable == 0 || (!portable->is_portable()))) {
// Badguys get killed
BadGuy* badguy = dynamic_cast<BadGuy*> (&other);
if(badguy) {
badguy->kill_fall();
}
// Coins get collected
Coin* coin = dynamic_cast<Coin*> (&other);
if(coin) {
coin->collect();
}
}
return SOLID;
}
示例2: hit
HitResponse
Kugelblitz::collision_badguy(BadGuy& other , const CollisionHit& chit)
{
//Let the Kugelblitz explode, too? The problem with that is that
//two Kugelblitzes would cancel each other out on contact...
other.kill_fall();
return hit(chit);
}
示例3:
HitResponse
AngryStone::collision_badguy(BadGuy& badguy, const CollisionHit& )
{
if (state == ATTACKING) {
badguy.kill_fall();
return FORCE_MOVE;
}
return FORCE_MOVE;
}
示例4:
HitResponse
MoleRock::collision_badguy(BadGuy& badguy, const CollisionHit& )
{
// ignore collisions with parent
if (&badguy == parent) {
return FORCE_MOVE;
}
SoundManager::current()->play("sounds/stomp.wav", get_pos());
remove_me();
badguy.kill_fall();
return ABORT_MOVE;
}
示例5: switch
bool
MrIceBlock::collision_squished(GameObject& object)
{
Player* player = dynamic_cast<Player*>(&object);
if(player && (player->does_buttjump || player->is_invincible())) {
player->bounce(*this);
kill_fall();
return true;
}
switch(ice_state) {
case ICESTATE_KICKED:
{
BadGuy* badguy = dynamic_cast<BadGuy*>(&object);
if (badguy) {
badguy->kill_fall();
break;
}
}
// fall through
case ICESTATE_NORMAL:
{
squishcount++;
if (squishcount >= MAXSQUISHES) {
kill_fall();
return true;
}
}
set_state(ICESTATE_FLAT);
nokick_timer.start(NOKICK_TIME);
break;
case ICESTATE_FLAT:
{
MovingObject* movingobject = dynamic_cast<MovingObject*>(&object);
if (movingobject && (movingobject->get_pos().x < get_pos().x)) {
dir = RIGHT;
} else {
dir = LEFT;
}
}
if (nokick_timer.check()) set_state(ICESTATE_KICKED);
break;
case ICESTATE_GRABBED:
assert(false);
break;
}
if (player) player->bounce(*this);
return true;
}
示例6:
HitResponse
HurtingPlatform::collision(GameObject& other, const CollisionHit& )
{
Player* player = dynamic_cast<Player*>(&other);
if (player) {
player->kill(false);
}
BadGuy* badguy = dynamic_cast<BadGuy*>(&other);
if (badguy) {
badguy->kill_fall();
}
return FORCE_MOVE;
}
示例7: collision_badguy
HitResponse
MrIceBlock::collision_badguy(BadGuy& badguy, const CollisionHit& hit)
{
switch(ice_state) {
case ICESTATE_NORMAL:
return WalkingBadguy::collision_badguy(badguy, hit);
case ICESTATE_FLAT:
return FORCE_MOVE;
case ICESTATE_KICKED:
badguy.kill_fall();
return FORCE_MOVE;
default:
assert(false);
}
return ABORT_MOVE;
}
示例8:
HitResponse
Explosion::collision(GameObject& other, const CollisionHit& )
{
if ((state != STATE_EXPLODING) || !hurt)
return ABORT_MOVE;
Player* player = dynamic_cast<Player*>(&other);
if(player != 0) {
player->kill(false);
}
BadGuy* badguy = dynamic_cast<BadGuy*>(&other);
if(badguy != 0) {
badguy->kill_fall();
}
return ABORT_MOVE;
}
示例9:
HitResponse
Stalactite::collision_badguy(BadGuy& other, const CollisionHit& hit)
{
if (state == STALACTITE_SQUISHED) return FORCE_MOVE;
// ignore other Stalactites
if (dynamic_cast<Stalactite*>(&other)) return FORCE_MOVE;
if (state != STALACTITE_FALLING) return BadGuy::collision_badguy(other, hit);
if (other.is_freezable()) {
other.freeze();
} else {
other.kill_fall();
}
return FORCE_MOVE;
}
示例10: hit
HitResponse
Block::collision(GameObject& other, const CollisionHit& )
{
Player* player = dynamic_cast<Player*> (&other);
if(player) {
if(player->get_bbox().get_top() > get_bbox().get_bottom() - SHIFT_DELTA) {
hit(*player);
}
}
// only interact with other objects if...
// 1) we are bouncing
// 2) the object is not portable (either never or not currently)
// 3) the object is being hit from below (baguys don't get killed for activating boxes)
Portable* portable = dynamic_cast<Portable*> (&other);
MovingObject* moving_object = dynamic_cast<MovingObject*> (&other);
bool is_portable = ((portable != 0) && portable->is_portable());
bool hit_mo_from_below = ((moving_object == 0) || (moving_object->get_bbox().get_bottom() < (get_bbox().get_top() + SHIFT_DELTA)));
if(bouncing && !is_portable && hit_mo_from_below) {
// Badguys get killed
BadGuy* badguy = dynamic_cast<BadGuy*> (&other);
if(badguy) {
badguy->kill_fall();
}
// Coins get collected
Coin* coin = dynamic_cast<Coin*> (&other);
if(coin) {
coin->collect();
}
//Eggs get jumped
GrowUp* growup = dynamic_cast<GrowUp*> (&other);
if(growup) {
growup->do_jump();
}
}
return FORCE_MOVE;
}
示例11: collision_badguy
HitResponse
Snail::collision_badguy(BadGuy& badguy, const CollisionHit& hit)
{
if (m_frozen)
return WalkingBadguy::collision_badguy(badguy, hit);
switch (state) {
case STATE_NORMAL:
return WalkingBadguy::collision_badguy(badguy, hit);
case STATE_FLAT:
case STATE_KICKED_DELAY:
return FORCE_MOVE;
case STATE_KICKED:
badguy.kill_fall();
return FORCE_MOVE;
default:
assert(false);
}
return ABORT_MOVE;
}
示例12: switch
HitResponse
SnowSnail::collision_badguy(BadGuy& badguy, const CollisionHit& hit)
{
switch(ice_state) {
case ICESTATE_NORMAL:
if(fabsf(hit.normal.x) > .8) {
dir = dir == LEFT ? RIGHT : LEFT;
sprite->set_action(dir == LEFT ? "left" : "right");
physic.set_velocity_x(-physic.get_velocity_x());
}
return CONTINUE;
case ICESTATE_FLAT:
return FORCE_MOVE;
case ICESTATE_KICKED:
badguy.kill_fall();
return FORCE_MOVE;
default:
assert(false);
}
return ABORT_MOVE;
}
示例13: hit
HitResponse
Block::collision(GameObject& other, const CollisionHit& )
{
Player* player = dynamic_cast<Player*> (&other);
if(player) {
if(player->get_bbox().get_top() > get_bbox().get_bottom() - 7.0) {
hit(*player);
}
}
if(bouncing) {
BadGuy* badguy = dynamic_cast<BadGuy*> (&other);
if(badguy) {
badguy->kill_fall();
}
Coin* coin = dynamic_cast<Coin*> (&other);
if(coin) {
coin->collect();
}
}
return SOLID;
}
示例14:
HitResponse
IceCrusher::collision(GameObject& other, const CollisionHit& hit)
{
Player* player = dynamic_cast<Player*>(&other);
/* If the other object is the player, and the collision is at the bottom of
* the ice crusher, hurt the player. */
if (player && hit.bottom) {
SoundManager::current()->play("sounds/brick.wav");
if (state == CRUSHING)
set_state(RECOVERING);
if(player->is_invincible()) {
return ABORT_MOVE;
}
player->kill(false);
return FORCE_MOVE;
}
BadGuy* badguy = dynamic_cast<BadGuy*>(&other);
if (badguy) {
badguy->kill_fall();
}
return FORCE_MOVE;
}