|
|
|
@ -18,58 +18,6 @@ namespace gui { |
|
|
|
|
$needs_render = true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void MainUI::debug() { |
|
|
|
|
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; |
|
|
|
|
$overlay_ui.show_text("top_left", L"STATS"); |
|
|
|
|
} else { |
|
|
|
|
// it's off now, close it
|
|
|
|
|
$overlay_ui.close_text("top_left"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void MainUI::draw_stats() { |
|
|
|
|
auto player = $level.world->get_the<Player>(); |
|
|
|
|
auto player_combat = $level.world->get<Combat>(player.entity); |
|
|
|
|
auto map = $level.map; |
|
|
|
|
std::wstring stats = fmt::format(L"STATS\n" |
|
|
|
|
L"HP: {}\n" |
|
|
|
|
L"mean:{:>8.5}\n" |
|
|
|
|
L"sdev: {:>8.5}\n" |
|
|
|
|
L"min: {:>8.5}\n" |
|
|
|
|
L"max: {:>8.5}\n" |
|
|
|
|
L"count:{:<10}\n" |
|
|
|
|
L"level: {} size: {}x{}\n\n" |
|
|
|
|
L"dir: {:0.2},{:0.2}\n\n" |
|
|
|
|
L"VSync? {}\n" |
|
|
|
|
L"FR Limit: {}\n" |
|
|
|
|
L"Debug? {}\n\n", |
|
|
|
|
player_combat.hp, $stats.mean(), $stats.stddev(), $stats.min, |
|
|
|
|
$stats.max, $stats.n, $level.index, map->width(), map->height(), |
|
|
|
|
$rayview.$dir_x, $rayview.$dir_y, |
|
|
|
|
VSYNC, FRAME_LIMIT, DEBUG_BUILD); |
|
|
|
|
|
|
|
|
|
$overlay_ui.show_text("top_left", stats); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void MainUI::draw_blood() { |
|
|
|
|
auto player = $level.world->get_the<Player>(); |
|
|
|
|
auto player_combat = $level.world->get<Combat>(player.entity); |
|
|
|
|
|
|
|
|
|
if(float(player_combat.hp) / float(player_combat.max_hp) < 0.5) { |
|
|
|
|
$overlay_ui.show_sprite("middle", "blood_splatter"); |
|
|
|
|
} else { |
|
|
|
|
$overlay_ui.close_sprite("middle"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void MainUI::init() { |
|
|
|
|
auto& player_position = $level.world->get<Position>($level.player); |
|
|
|
|
auto player = player_position.location; |
|
|
|
@ -78,7 +26,7 @@ namespace gui { |
|
|
|
|
$rayview.set_position(RAY_VIEW_X, RAY_VIEW_Y); |
|
|
|
|
$rayview.position_camera(player.x + 0.5, player.y + 0.5); |
|
|
|
|
|
|
|
|
|
$overlay_ui.show_label("top_left", $compass[$compass_dir]); |
|
|
|
|
$overlay_ui.show_text("left", $compass[$compass_dir]); |
|
|
|
|
|
|
|
|
|
auto st = textures::get("down_the_well"); |
|
|
|
|
auto bounds = st.sprite->getLocalBounds(); |
|
|
|
@ -94,7 +42,6 @@ namespace gui { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void MainUI::render() { |
|
|
|
|
auto start = $stats.time_start(); |
|
|
|
|
|
|
|
|
|
if($show_level) { |
|
|
|
|
auto time = $clock.getElapsedTime(); |
|
|
|
@ -110,14 +57,7 @@ namespace gui { |
|
|
|
|
$rayview.draw($window); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$stats.sample_time(start); |
|
|
|
|
|
|
|
|
|
$overlay_ui.render($window); |
|
|
|
|
|
|
|
|
|
auto debug = $level.world->get_the<Debug>(); |
|
|
|
|
if(debug.FPS) draw_stats(); |
|
|
|
|
|
|
|
|
|
// draw_blood();
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
bool MainUI::play_rotate() { |
|
|
|
@ -144,7 +84,7 @@ namespace gui { |
|
|
|
|
void MainUI::plan_rotate(int dir) { |
|
|
|
|
// -1 is left, 1 is right
|
|
|
|
|
$compass_dir = ($compass_dir + dir) % $compass.size(); |
|
|
|
|
$overlay_ui.show_label("top_left", $compass[$compass_dir]); |
|
|
|
|
$overlay_ui.show_text("left", $compass[$compass_dir]); |
|
|
|
|
$camera.plan_rotate($rayview, dir); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -170,7 +110,8 @@ namespace gui { |
|
|
|
|
$rayview.position_camera(player.x + 0.5, player.y + 0.5); |
|
|
|
|
|
|
|
|
|
$compass_dir = 0; |
|
|
|
|
$overlay_ui.show_label("top_left", $compass[$compass_dir]); |
|
|
|
|
$overlay_ui.show_text("left", $compass[$compass_dir]); |
|
|
|
|
|
|
|
|
|
dirty(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|