-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpowderup.cpp
64 lines (54 loc) · 1.74 KB
/
powderup.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include "powderup.h"
void initializeRandomSeed() {
static bool initialized = false;
if (!initialized) {
srand(static_cast<unsigned>(time(nullptr)) + rand());
initialized = true;
}
}
PowderUp::PowderUp(const string& textureFile, float posX, float posY, Type type)
: type(type) {
if (!loadTexture(textureFile)) {
cerr << "Error: Failed to load texture from " << textureFile << endl;
}
powderSprite.setTexture(powderTexture);
powderSprite.setPosition(posX, posY);
}
PowderUp PowderUp::createATK1() {
Vector2f randomPos = generateRandomPosition();
return PowderUp("Assets/PowderUp/atk1.png", randomPos.x, randomPos.y, Type::ATK1);
}
PowderUp PowderUp::createHP1() {
Vector2f randomPos = generateRandomPosition();
return PowderUp("Assets/PowderUp/hp1.png", randomPos.x, randomPos.y, Type::HP1);
}
Vector2f PowderUp::generateRandomPosition() {
initializeRandomSeed();
float x = static_cast<float>(rand() % 700);
float y = static_cast<float>(rand() % 900);
return Vector2f(x, y);
}
void PowderUp::setPosition(float x, float y) {
powderSprite.setPosition(x, y);
}
const Sprite& PowderUp::getPowderSprite() const {
return powderSprite;
}
void PowderUp::draw(RenderTarget& target) const {
target.draw(powderSprite);
}
void PowderUp::applyEffect(Player* player) {
switch (type) {
case Type::ATK1:
player->setMoveSpeed(player->getMoveSpeed() + 1.0f);
cout << "Attack boosted by 1 for 3 seconds." << endl;
break;
case Type::HP1:
player->increaseHp(1);
cout << "Player healed by 1 HP." << endl;
break;
}
}
bool PowderUp::loadTexture(const string& textureFile) {
return powderTexture.loadFromFile(textureFile);
}