More boss fight UI done and a bit of ambient sound working.
This commit is contained in:
parent
64807174c0
commit
a0c0308461
12 changed files with 111 additions and 58 deletions
|
@ -2,20 +2,22 @@
|
|||
#include "easings.hpp"
|
||||
|
||||
namespace gui {
|
||||
BossFightUI::BossFightUI() {
|
||||
BossFightUI::BossFightUI(GameLevel level)
|
||||
: $level(level)
|
||||
{
|
||||
$status.position(0, 0, 300, SCREEN_HEIGHT);
|
||||
$status.layout(
|
||||
"[(150)status_1|(150)status_2]"
|
||||
"[main_status]"
|
||||
"[(150)status_3|(150)status_4]"
|
||||
"[(150)status_5|(150)status_6]"
|
||||
"[(150)status_7|(150)status_8]"
|
||||
);
|
||||
|
||||
$overlay.position(300, 0, SCREEN_WIDTH - 300, SCREEN_HEIGHT);
|
||||
$overlay.layout("[overlay_1|overlay_2|overlay_3|overlay_4]"
|
||||
"[overlay_5|overlay_6|overlay_7|overlay_8]"
|
||||
"[overlay_9|overlay_10|overlay_11|overlay_12]"
|
||||
"[overlay_13|overlay_14|overlay_15|overlay_16]");
|
||||
$overlay.layout("[overlay_1|overlay_2|overlay_4]"
|
||||
"[overlay_5|overlay_6|overlay_8]"
|
||||
"[overlay_9|overlay_10|overlay_12]"
|
||||
"[overlay_13|overlay_14|overlay_16]");
|
||||
|
||||
$boss_image = textures::get("boss_fight");
|
||||
auto bounds = $boss_image.sprite->getLocalBounds();
|
||||
|
@ -32,7 +34,11 @@ namespace gui {
|
|||
$status.set<Clickable>(button, {
|
||||
[this, name](auto, auto){ fmt::println("STATUS: {}", name); }
|
||||
});
|
||||
$status.set<Label>(button, {name});
|
||||
if(name == "main_status") {
|
||||
$status.set<Textual>(button, {fmt::format("HP: {}", $boss_hp)});
|
||||
} else {
|
||||
$status.set<Label>(button, {"Attack"});
|
||||
}
|
||||
}
|
||||
$status.init();
|
||||
|
||||
|
@ -43,15 +49,13 @@ namespace gui {
|
|||
});
|
||||
}
|
||||
|
||||
auto region = $overlay.entity("overlay_2");
|
||||
$overlay.set<Label>(region, {"THE RAT KING!"});
|
||||
$overlay.init();
|
||||
}
|
||||
|
||||
void BossFightUI::bounce_boss(sf::RenderWindow& window) {
|
||||
auto time = $clock.getElapsedTime();
|
||||
float tick = ease::in_out_back(ease::sine(time.asSeconds()));
|
||||
float scale = std::lerp(1.1, 1.3, tick);
|
||||
float tick = ease::out_bounce(ease::sine(time.asSeconds()));
|
||||
float scale = std::lerp(1.0, 1.15, tick);
|
||||
$boss_image.sprite->setScale({scale, scale});
|
||||
window.draw(*$boss_image.sprite);
|
||||
}
|
||||
|
@ -63,6 +67,11 @@ namespace gui {
|
|||
window.draw(*$boss_image.sprite);
|
||||
}
|
||||
|
||||
if($boss_hp == 0) {
|
||||
$overlay.show_label("overlay_1", "YOU WON!");
|
||||
$overlay.show_label("overlay_4", "CLICK TO CONTINUE...");
|
||||
}
|
||||
|
||||
$status.render(window);
|
||||
$overlay.render(window);
|
||||
}
|
||||
|
@ -73,10 +82,19 @@ namespace gui {
|
|||
}
|
||||
|
||||
if($overlay.mouse(x, y)) {
|
||||
fmt::println("OVERLAY");
|
||||
$boss_hit = !$boss_hit;
|
||||
$boss_hp--;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void BossFightUI::update_level(GameLevel &level) {
|
||||
$level = level;
|
||||
$boss_hp = 10 * $level.index + 1; // make him stronger
|
||||
$boss_hit = false;
|
||||
$overlay.close<Label>("overlay_1");
|
||||
$overlay.close<Label>("overlay_4");
|
||||
init();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue