void SlimePetEntity::readCollidingEntity(CollidingSpriteEntity* entity) { if (canCollide() && collideWithEntity(entity)) { if (entity->getType() >= ENTITY_ENEMY && entity->getType() <= ENTITY_ENEMY_MAX_COUNT) { EnemyEntity* enemyEntity = static_cast<EnemyEntity*>(entity); if (enemyEntity->canCollide()) { if (attackDelay <= 0.0f) { enemyEntity->hurt(getHurtParams(12, ShotTypeStandard,0, false, SourceTypeMelee, EnemyTypeNone,false)); attackDelay = 0.65f; float xs = (x + enemyEntity->getX()) / 2; float ys = (y + enemyEntity->getY()) / 2; SpriteEntity* star = new SpriteEntity(ImageManager::getInstance().getImage(IMAGE_HURT_IMPACT), xs, ys); star->setFading(true); star->setZ(y+ 100); star->setLifetime(0.7f); star->setType(ENTITY_EFFECT); star->setSpin(400.0f); } if (enemyEntity->getMovingStyle() == movWalking) { Vector2D vel = Vector2D(enemyEntity->getX(), enemyEntity->getY()).vectorTo(Vector2D(x, y), 100.0f ); giveRecoil(false, vel, 0.3f); } } } } }
void ImpEntity::collideWithEnnemy(GameEntity* collidingEntity) { EnemyEntity* entity = static_cast<EnemyEntity*>(collidingEntity); if (entity->getMovingStyle() == movFlying) { setVelocity(Vector2D(entity->getX(), entity->getY()).vectorTo(Vector2D(x, y), creatureSpeed )); } }
void WitchEntity::collideWithEnnemy(GameEntity* collidingEntity) { EnemyEntity* entity = static_cast<EnemyEntity*>(collidingEntity); if (entity->getMovingStyle() == movWalking) { setVelocity(Vector2D(entity->getX(), entity->getY()).vectorTo(Vector2D(x, y), creatureSpeed )); computeFacingDirection(); } }
void BatEntity::collideWithEnnemy(GameEntity* collidingEntity) { EnemyEntity* entity = static_cast<EnemyEntity*>(collidingEntity); if (entity->getMovingStyle() == movFlying) { setVelocity(Vector2D(entity->getX(), entity->getY()).vectorTo(Vector2D(x, y), BAT_SPEED )); computeFacingDirection(); } }