void ChestEntity::animate(float delay) { CollidingSpriteEntity::animate(delay); if (!isOpen) testSpriteCollisions(); z = y + height/2 - 5; // trap if (timer > 0.0f) { timer -= delay; if (timer <= 0.0f) { initFallingGrid(); for (int i = 0; i < 22; i++) fallRock(); SoundManager::getInstance().playSound(SOUND_TRAP); game().makeShake(0.25f); } } }
void ChestEntity::animate(float delay) { if (appearTimer >= 0.0f) appearTimer -= delay; CollidingSpriteEntity::animate(delay); if (!isOpen) testSpriteCollisions(); z = y + 21; // trap if (timer > 0.0f) { timer -= delay; if (timer <= 0.0f) { if (trap == TrapStones) { initFallingGrid(); for (int i = 0; i < 22; i++) fallRock(); game().makeShake(0.25f); } else if (trap == TrapExplosion) { initFallingGrid(); new ExplosionEntity(x, y, ExplosionTypeStandard, 12, EnemyTypeNone, true); game().addCorpse(x, y, FRAME_CORPSE_SLIME_VIOLET); SoundManager::getInstance().playSound(SOUND_BOOM_00); game().makeShake(0.25f); } else // snakes { new SnakeEntity(x + 1, y, SnakeEntity::SnakeTypeNormal, false); new SnakeEntity(x - 1, y, SnakeEntity::SnakeTypeNormal, false); new SnakeEntity(x, y + 1, SnakeEntity::SnakeTypeNormal, false); } } } }
void CyclopsEntity::computeStates(float delay) { timer -= delay; if (timer <= 0.0f) { if (state == 0) // walking { if (counter > 0) { counter--; timer = 0.5f; creatureSpeed = CYCLOP_SPEED[getHealthLevel()]; setVelocity(Vector2D(x, y).vectorTo(game().getPlayerPosition(), creatureSpeed )); } else { velocity.x = 0.0f; velocity.y = 0.0f; if (destroyLevel < getHealthLevel()) { state = 3; // charge to destroy destroyLevel++; counter = destroyLevel + 1; timer = 0.9f; SoundManager::getInstance().playSound(SOUND_CYCLOP_00); initFallingGrid(); } else { state = 1; // charge to fire timer = 0.9f; counter = CYCLOP_NUMBER_ROCKS[getHealthLevel()]; SoundManager::getInstance().playSound(SOUND_CYCLOP_00); computeNextRockMissile(); } } } else if (state == 1) // fire { state = 2; fire(); timer = CYCLOP_FIRE_DELAY[getHealthLevel()]; } else if (state == 2) // fire end { if (counter <= 1) { state = 0; timer = 0.2f; counter = 10; } else { counter--; state = 1; timer = 0.2f; computeNextRockMissile(); } } else if (state == 3) { state = 4; // destroy timer = 0.2; game().makeShake(0.4f); SoundManager::getInstance().playSound(SOUND_CYCLOPS_IMPACT); for (int i = 0; i < 10 ; i++) fallRock(); } else if (state == 4) { if (counter <= 1) { state = 0; timer = 0.2f; counter = 10; } else { counter--; state = 3; timer = 0.3f; } } } }