Now overlay UI can show some text pretty easily and is showing the debug stats.

This commit is contained in:
Zed A. Shaw 2025-02-20 10:53:01 -05:00
parent d8e1fc7aa3
commit 30a7e1b2cc
5 changed files with 51 additions and 21 deletions

35
gui.cpp
View file

@ -20,14 +20,10 @@ namespace gui {
$status_view($level),
$overlay_view($level, $textures),
$font{FONT_FILE_NAME},
$text{$font},
$rayview($textures, RAY_VIEW_WIDTH, RAY_VIEW_HEIGHT)
{
$window.setVerticalSyncEnabled(VSYNC);
$window.setFramerateLimit(FRAME_LIMIT);
$text.setPosition({RAY_VIEW_X,RAY_VIEW_Y});
$text.setCharacterSize(20);
$text.setFillColor(ColorValue::LIGHT_DARK);
$textures.load_tiles();
$textures.load_sprites();
}
@ -258,6 +254,7 @@ namespace gui {
break;
case KEY::P:
debug();
break;
default:
break; // ignored
}
@ -266,21 +263,27 @@ namespace gui {
}
void FSM::debug() {
auto& debug = $level.world->get_the<Debug>();
debug.FPS = !debug.FPS;
debug.PATHS = !debug.PATHS;
auto player = $level.world->get_the<Player>();
auto& player_combat = $level.world->get<Combat>(player.entity);
player_combat.hp = player_combat.max_hp;
$combat_view.set_damage(float(player_combat.hp) / float(player_combat.max_hp));
auto& dbg = $level.world->get_the<Debug>();
dbg.FPS = !dbg.FPS;
dbg.PATHS = !dbg.PATHS;
if(dbg.FPS) {
// it's on now, enable things
auto player = $level.world->get_the<Player>();
auto& player_combat = $level.world->get<Combat>(player.entity);
player_combat.hp = player_combat.max_hp;
$combat_view.set_damage(float(player_combat.hp) / float(player_combat.max_hp));
$overlay_view.init_stats();
} else {
// it's off now, close it
$overlay_view.close_stats();
}
}
void FSM::draw_stats() {
auto player = $level.world->get_the<Player>();
auto player_combat = $level.world->get<Combat>(player.entity);
$text.setString(
fmt::format("FPS\n"
std::string stats = fmt::format("STATS\n"
"HP: {}\n"
"mean:{:>8.5}\n"
"sdev: {:>8.5}\n"
@ -292,9 +295,9 @@ namespace gui {
"Debug? {}\n\n",
player_combat.hp, $stats.mean(), $stats.stddev(), $stats.min,
$stats.max, $stats.n, VSYNC,
FRAME_LIMIT, DEBUG_BUILD));
FRAME_LIMIT, DEBUG_BUILD);
$window.draw($text);
$overlay_view.draw_stats(stats);
}
void FSM::draw_blood() {