51 lines
1.3 KiB
C++
51 lines
1.3 KiB
C++
#include <iostream>
|
|
#include "enemy.h"
|
|
|
|
Enemy::Enemy(int e) {
|
|
energy = e;
|
|
}
|
|
|
|
bool Enemy::performSetup() {
|
|
if (!enemyTexture.loadFromFile("assets/enemy.png")) {
|
|
std::cout << "Couldn't load enemy image" << endl;
|
|
return false;
|
|
}
|
|
|
|
enemySprite.setTexture(enemyTexture);
|
|
enemySprite.setPosition(sf::Vector2f(225, 400));
|
|
enemySprite.scale(sf::Vector2f(2, 2));
|
|
|
|
if (!attackSoundBuffer.loadFromFile("assets/damage.ogg")) {
|
|
std::cout << "Couldn't load enemy audio" << endl;
|
|
return false;
|
|
}
|
|
|
|
attackSound.setBuffer(attackSoundBuffer);
|
|
|
|
return true;
|
|
}
|
|
|
|
void Enemy::draw(sf::RenderWindow *window) {
|
|
window->draw(enemySprite);
|
|
}
|
|
|
|
bool Enemy::checkIfHit(sf::Vector2i mousePos) {
|
|
float enemyMinX = enemySprite.getGlobalBounds().left;
|
|
float enemyMaxX = enemySprite.getGlobalBounds().width + enemyMinX;
|
|
|
|
float enemyMinY = enemySprite.getGlobalBounds().top;
|
|
float enemyMaxY = enemySprite.getGlobalBounds().height + enemyMinY;
|
|
|
|
float mouseX = mousePos.x;
|
|
float mouseY = mousePos.y;
|
|
|
|
return mouseX >= enemyMinX && mouseX <= enemyMaxX && mouseY >= enemyMinY && mouseY <= enemyMaxY;
|
|
}
|
|
|
|
bool Enemy::takeDamage(int damage) {
|
|
energy -= damage;
|
|
attackSound.play();
|
|
|
|
return energy <= 0;
|
|
}
|