aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt1
-rw-r--r--src/engine/graphics/scene.cpp8
-rw-r--r--src/engine/graphics/scene.hpp2
-rw-r--r--src/util/color.cpp15
-rw-r--r--src/util/color.hpp10
5 files changed, 35 insertions, 1 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 0ef0c8e..152272f 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -14,6 +14,7 @@ file(GLOB SOURCES
conversion.cpp
argument_parser.cpp
input_actions.cpp
+ util/color.cpp
game/game.cpp
engine/engine.cpp
engine/data/vector2.cpp
diff --git a/src/engine/graphics/scene.cpp b/src/engine/graphics/scene.cpp
index c4a398c..6b85915 100644
--- a/src/engine/graphics/scene.cpp
+++ b/src/engine/graphics/scene.cpp
@@ -1,7 +1,9 @@
#include "scene.hpp"
#include "engine/escape.hpp"
+#include "util/color.hpp"
+#include <fmt/color.h>
#include <fmt/core.h>
#include <iostream>
#include <utility>
@@ -49,10 +51,14 @@ void Scene::write_status(const std::string_view &str) noexcept
const auto window_size = _window->size();
_cursor_controller->move_to(
- Vector2({.x = 1, .y = static_cast<Vector2::Value>(window_size.get_height())}));
+ Vector2({.x = 2, .y = static_cast<Vector2::Value>(window_size.get_height())}));
+ const auto background_color = get_background_esc_seq(STATUSBAR_COLOR);
+
+ fmt::print("{}", background_color);
fmt::print(ERASE_ENTIRE_LINE, fmt::arg("esc", ESC));
fmt::print(fmt::runtime(str.data()));
+ fmt::print(RESET_ALL_MODES, fmt::arg("esc", ESC));
_cursor_controller->move_to(previous_position);
}
diff --git a/src/engine/graphics/scene.hpp b/src/engine/graphics/scene.hpp
index 3d05cd9..22a96a4 100644
--- a/src/engine/graphics/scene.hpp
+++ b/src/engine/graphics/scene.hpp
@@ -14,6 +14,8 @@ constexpr fmt::string_view DISABLE_ALT_BUFFER = "{esc}[?1049l";
constexpr fmt::string_view ERASE_ENTIRE_LINE = "{esc}[2K";
+constexpr uint32_t STATUSBAR_COLOR = 0x1A1A1AU;
+
class Scene : public IScene
{
public:
diff --git a/src/util/color.cpp b/src/util/color.cpp
new file mode 100644
index 0000000..17665de
--- /dev/null
+++ b/src/util/color.cpp
@@ -0,0 +1,15 @@
+#include "color.hpp"
+
+#include <fmt/color.h>
+
+std::string get_foreground_esc_seq(const uint32_t &color) noexcept
+{
+ return std::string(
+ fmt::detail::make_foreground_color<char>(fmt::detail::color_type(color)).begin());
+}
+
+std::string get_background_esc_seq(const uint32_t &color) noexcept
+{
+ return std::string(
+ fmt::detail::make_background_color<char>(fmt::detail::color_type(color)).begin());
+}
diff --git a/src/util/color.hpp b/src/util/color.hpp
new file mode 100644
index 0000000..5511893
--- /dev/null
+++ b/src/util/color.hpp
@@ -0,0 +1,10 @@
+#pragma once
+
+#include <fmt/core.h>
+#include <string>
+
+constexpr fmt::string_view RESET_ALL_MODES = "{esc}[0m";
+
+std::string get_foreground_esc_seq(const uint32_t &color) noexcept;
+
+std::string get_background_esc_seq(const uint32_t &color) noexcept;