Mam takie 2 funkcje, 1 obliczająca:
float WizardSkills::heatred(RectangleShape shape, float Maxhp, float hp)
{
Skills s;
float score;
if(s.champion == 1)
{
if(Mouse::isButtonPressed(Mouse::Right))
{
if(hp <= Maxhp/2)
{
score = (Maxhp - hp) / 100;
}
}
}
return score;
}
oraz wykonująca:
float Player::attack(RenderWindow &window, Player &player, Player &enemy, float maxHP, float who, float dmg, int distance, Clock clock, Time time)
{
WizardSkills w;
Vector2i MousePos;
MousePos = Mouse::getPosition(window);
Vector2f position[2];
position[0] = Player::checkPosition(player.rect);
position[1] = Player::checkPosition(enemy.rect);
position[2].x = position[0].x - position[1].x;
position[2].y = position[0].y - position[1].y;
if(time.asSeconds() > 1)
{
if(Player::checkDistance(player.rect, enemy.rect, 50))
{
if(Mouse::isButtonPressed(Mouse::Right))
{
who = who - dmg;
who = w.heatred(enemy.rect, maxHP, who);
}
}
clock.restart();
}
time = clock.getElapsedTime();
return who;
}
A wywołuję to w ten sposób: konstruktor:
Player p(Vector2f(0, 0), Vector2f(25, 25));
Player w(Vector2f(100, 100), Vector2f(20, 20));
Oraz wywołanie:
wolfStruct.WolfHP[0] = p.attack(window, p, w, wolfStruct.WolfMaxHP[0], wolfStruct.WolfHP[0], 0, 70, clock, time);
Funkcja zamienia wartość hp odrazu na 0 niezależnie od poziomu hp, a powinno zadawać obrażenia równe 1% straconego hp przeciwnika jeżeli spadnie poniważ 50%