improvement

This commit is contained in:
2026-03-15 04:23:07 +03:00
parent d31ea6ed4d
commit 19d796cd4e
2 changed files with 32 additions and 6 deletions

View File

@@ -79,14 +79,24 @@ namespace omath::hud
void add_left_label(const Color& color, float offset, bool outlined, const std::string_view& text); void add_left_label(const Color& color, float offset, bool outlined, const std::string_view& text);
template<typename... Args> template<typename... Args>
void add_centered_label(const Color& color, const float offset, const bool outlined, void add_centered_bottom_label(const Color& color, const float offset, const bool outlined,
std::format_string<Args...> fmt, Args&&... args) std::format_string<Args...> fmt, Args&&... args)
{ {
const std::string label = std::vformat(fmt.get(), std::make_format_args(args...)); const std::string label = std::vformat(fmt.get(), std::make_format_args(args...));
add_centered_label(color, offset, outlined, std::string_view{label}); add_centered_bottom_label(color, offset, outlined, std::string_view{label});
} }
void add_centered_label(const Color& color, float offset, bool outlined, const std::string_view& text); void add_centered_bottom_label(const Color& color, float offset, bool outlined, const std::string_view& text);
template<typename... Args>
void add_centered_top_label(const Color& color, const float offset, const bool outlined,
std::format_string<Args...> fmt, Args&&... args)
{
const std::string label = std::vformat(fmt.get(), std::make_format_args(args...));
add_centered_top_label(color, offset, outlined, std::string_view{label});
}
void add_centered_top_label(const Color& color, float offset, bool outlined, const std::string_view& text);
private: private:
void draw_outlined_text(const Vector2<float>& position, const Color& color, void draw_outlined_text(const Vector2<float>& position, const Color& color,

View File

@@ -172,7 +172,7 @@ namespace omath::hud
m_text_cursor_left.y += text_size.y; m_text_cursor_left.y += text_size.y;
} }
void EntityOverlay::add_centered_label(const Color& color, const float offset, const bool outlined, void EntityOverlay::add_centered_bottom_label(const Color& color, const float offset, const bool outlined,
const std::string_view& text) const std::string_view& text)
{ {
const auto text_size = m_renderer->calc_text_size(text); const auto text_size = m_renderer->calc_text_size(text);
@@ -188,6 +188,22 @@ namespace omath::hud
m_text_cursor_bottom.y += text_size.y; m_text_cursor_bottom.y += text_size.y;
} }
void EntityOverlay::add_centered_top_label(const Color& color, const float offset, const bool outlined,
const std::string_view& text)
{
const auto text_size = m_renderer->calc_text_size(text);
const auto box_center_x = m_canvas.top_left_corner.x
+ (m_canvas.top_right_corner.x - m_canvas.top_left_corner.x) / 2.f;
m_text_cursor_top.y -= text_size.y;
const auto pos = Vector2<float>{box_center_x - text_size.x / 2.f, m_text_cursor_top.y - offset};
if (outlined)
draw_outlined_text(pos, color, text);
else
m_renderer->add_text(pos, color, text);
}
EntityOverlay::EntityOverlay(const Vector2<float>& top, const Vector2<float>& bottom, EntityOverlay::EntityOverlay(const Vector2<float>& top, const Vector2<float>& bottom,
const std::shared_ptr<HudRendererInterface>& renderer) const std::shared_ptr<HudRendererInterface>& renderer)
: m_canvas(top, bottom), m_text_cursor_right(m_canvas.top_right_corner), : m_canvas(top, bottom), m_text_cursor_right(m_canvas.top_right_corner),