Started the overlay UI but need to make it possible to add/remove components to it.

This commit is contained in:
Zed A. Shaw 2025-02-20 02:33:09 -05:00
parent 59d10a4506
commit 70a9420c11
8 changed files with 91 additions and 43 deletions

37
gui.cpp
View file

@ -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: {