Started the overlay UI but need to make it possible to add/remove components to it.
This commit is contained in:
parent
59d10a4506
commit
70a9420c11
8 changed files with 91 additions and 43 deletions
37
gui.cpp
37
gui.cpp
|
@ -18,6 +18,7 @@ namespace gui {
|
|||
$map_view($level),
|
||||
$combat_view($level),
|
||||
$status_view($level),
|
||||
$overlay_view($level),
|
||||
$font{FONT_FILE_NAME},
|
||||
$text{$font},
|
||||
$rayview($textures, RAY_VIEW_WIDTH, RAY_VIEW_HEIGHT)
|
||||
|
@ -53,7 +54,7 @@ namespace gui {
|
|||
$rayview.position_camera($player.x + 0.5, $player.y + 0.5);
|
||||
|
||||
$combat_view.render($textures);
|
||||
|
||||
$overlay_view.render($textures);
|
||||
$status_view.render($textures);
|
||||
$status_view.log("Welcome to the game!");
|
||||
|
||||
|
@ -94,17 +95,11 @@ namespace gui {
|
|||
void FSM::ATTACKING(Event ev) {
|
||||
using enum Event;
|
||||
switch(ev) {
|
||||
case TICK:
|
||||
$rotation_count++;
|
||||
|
||||
// just do 10 ticks
|
||||
if($rotation_count % 10 == 0) {
|
||||
System::combat($level);
|
||||
run_systems();
|
||||
$rotation = -10.0f;
|
||||
state(State::IN_COMBAT);
|
||||
}
|
||||
break;
|
||||
case TICK: {
|
||||
System::combat($level);
|
||||
run_systems();
|
||||
state(State::IN_COMBAT);
|
||||
} break;
|
||||
case STOP_COMBAT:
|
||||
dbc::log("Exiting ATTACKING STATE");
|
||||
state(State::IDLE);
|
||||
|
@ -186,7 +181,6 @@ namespace gui {
|
|||
switch(ev) {
|
||||
case ATTACK:
|
||||
$status_view.log("You attack!");
|
||||
$rotation = -30.0f;
|
||||
state(State::ATTACKING);
|
||||
break;
|
||||
case ROTATE_LEFT:
|
||||
|
@ -281,14 +275,6 @@ namespace gui {
|
|||
$combat_view.set_damage(float(player_combat.hp) / float(player_combat.max_hp));
|
||||
}
|
||||
|
||||
void FSM::draw_weapon() {
|
||||
return;
|
||||
auto weapon = $rayview.$textures.sword.sprite;
|
||||
weapon->setPosition({SCREEN_WIDTH/2, SCREEN_HEIGHT/2});
|
||||
weapon->setRotation(sf::degrees($rotation));
|
||||
$window.draw(*weapon);
|
||||
}
|
||||
|
||||
void FSM::draw_stats() {
|
||||
auto player = $level.world->get_the<Player>();
|
||||
auto player_combat = $level.world->get<Combat>(player.entity);
|
||||
|
@ -316,16 +302,15 @@ namespace gui {
|
|||
auto player_combat = $level.world->get<Combat>(player.entity);
|
||||
|
||||
if(float(player_combat.hp) / float(player_combat.max_hp) < 0.5) {
|
||||
auto blood = $textures.sprite_textures.at("blood_splatter").sprite;
|
||||
blood->setPosition({RAY_VIEW_X,0});
|
||||
blood->setScale({3.0, 3.0});
|
||||
$window.draw(*blood);
|
||||
$overlay_view.set<guecs::Sprite>("middle", {"blood_splatter"});
|
||||
$overlay_view.$gui.init($textures);
|
||||
}
|
||||
}
|
||||
|
||||
void FSM::draw_gui() {
|
||||
$status_view.draw($window);
|
||||
$combat_view.draw($window);
|
||||
$overlay_view.draw($window);
|
||||
|
||||
auto debug = $level.world->get_the<Debug>();
|
||||
if(debug.FPS) draw_stats();
|
||||
|
@ -345,7 +330,6 @@ namespace gui {
|
|||
|
||||
draw_gui();
|
||||
draw_blood();
|
||||
draw_weapon();
|
||||
}
|
||||
|
||||
$window.display();
|
||||
|
@ -420,7 +404,6 @@ namespace gui {
|
|||
}
|
||||
break;
|
||||
case eGUI::ATTACK:
|
||||
$rotation = 0;
|
||||
event(Event::ATTACK);
|
||||
break;
|
||||
case eGUI::DEATH: {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue