|
|
@ -4,6 +4,7 @@ |
|
|
|
#include <fmt/xchar.h> |
|
|
|
#include <fmt/xchar.h> |
|
|
|
#include "constants.hpp" |
|
|
|
#include "constants.hpp" |
|
|
|
#include "game_level.hpp" |
|
|
|
#include "game_level.hpp" |
|
|
|
|
|
|
|
#include "ai.hpp" |
|
|
|
|
|
|
|
|
|
|
|
namespace gui { |
|
|
|
namespace gui { |
|
|
|
using namespace components; |
|
|
|
using namespace components; |
|
|
@ -31,20 +32,12 @@ namespace gui { |
|
|
|
$overlay_ui.init(); |
|
|
|
$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() { |
|
|
|
void MainUI::render() { |
|
|
|
if($needs_render) $rayview->render(); |
|
|
|
if($needs_render) $rayview->render(); |
|
|
|
$rayview->draw($window); |
|
|
|
$rayview->draw($window); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if($mind_reading) render_mind_reading(); |
|
|
|
$overlay_ui.render($window); |
|
|
|
$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() { |
|
|
|
void MainUI::update_level() { |
|
|
|
auto& level = GameDB::current_level(); |
|
|
|
auto& level = GameDB::current_level(); |
|
|
|
auto& player_position = GameDB::player_position(); |
|
|
|
auto& player_position = GameDB::player_position(); |
|
|
|