Made an AI debug view to I can make working on the AI easier. I might add the ability to toggle things on/off live to see what the AI does.

This commit is contained in:
Zed A. Shaw 2025-08-23 01:40:51 -04:00
parent fc8e65f4d6
commit 4bf9a9177f
8 changed files with 60 additions and 16 deletions

View file

@ -4,6 +4,7 @@
#include <fmt/xchar.h>
#include "constants.hpp"
#include "game_level.hpp"
#include "ai.hpp"
namespace gui {
using namespace components;
@ -31,20 +32,12 @@ namespace gui {
$overlay_ui.init();
}
DinkyECS::Entity MainUI::camera_aim() {
auto& level = GameDB::current_level();
// what happens if there's two things at that spot
if(level.collision->something_there($rayview->aiming_at)) {
return level.collision->get($rayview->aiming_at);
} else {
return 0;
}
}
void MainUI::render() {
if($needs_render) $rayview->render();
$rayview->draw($window);
if($mind_reading) render_mind_reading();
$overlay_ui.render($window);
}
@ -97,6 +90,32 @@ namespace gui {
}
}
void MainUI::toggle_mind_reading() {
$mind_reading = !$mind_reading;
if($mind_reading) {
render_mind_reading();
} else {
$overlay_ui.close_text("left");
}
}
void MainUI::render_mind_reading() {
auto level = GameDB::current_level();
if(level.collision->occupied($rayview->aiming_at)) {
auto entity = level.collision->get($rayview->aiming_at);
if(auto enemy_ai = level.world->get_if<ai::EntityAI>(entity)) {
$overlay_ui.show_text("left", fmt::format(L"AI: {}",
guecs::to_wstring(enemy_ai->to_string())));
} else {
$overlay_ui.show_text("left", L"no mind to read");
}
} else {
$overlay_ui.show_text("left", L"nothing there");
}
}
void MainUI::update_level() {
auto& level = GameDB::current_level();
auto& player_position = GameDB::player_position();