diff options
Diffstat (limited to 'src/game/statusline.cpp')
| -rw-r--r-- | src/game/statusline.cpp | 121 | 
1 files changed, 0 insertions, 121 deletions
diff --git a/src/game/statusline.cpp b/src/game/statusline.cpp deleted file mode 100644 index 1abb87b..0000000 --- a/src/game/statusline.cpp +++ /dev/null @@ -1,121 +0,0 @@ -#include "statusline.hpp" - -#include "engine/escape.hpp" -#include "util/color.hpp" - -#include <string> -#include <utility> - -StatusLine::StatusLine( -	std::shared_ptr<ICursorController> cursor_controller, -	std::shared_ptr<IWindow> window -) noexcept -	: _cursor_controller(std::move(cursor_controller)), _window(std::move(window)) -{ -} - -void StatusLine::initialize_background() noexcept -{ -	const auto previous_position = _move_to_statusline(0); - -	auto background_color = get_background_esc_seq(STATUSBAR_COLOR); - -	fmt::print("{}{}", background_color, std::string(_window->size().get_width(), ' ')); -	fmt::print(RESET_ALL_MODES, fmt::arg("esc", ESC)); - -	_move_back(previous_position); -} - -void StatusLine::set_status( -	const StatusLineSection §ion, -	const std::string_view &status, -	std::size_t start -) noexcept -{ -	_clear_section(section, start); - -	auto section_start = _get_section_start_x(section); - -	const auto previous_position = -		_move_to_statusline(section_start + static_cast<int32_t>(start)); - -	auto background_color = get_background_esc_seq(STATUSBAR_COLOR); - -	auto section_length = _sections_lengths[section]; - -	fmt::print("{}{}", background_color, status); -	fmt::print(RESET_ALL_MODES, fmt::arg("esc", ESC)); - -	_move_back(previous_position); -} - -void StatusLine::set_section_length( -	const StatusLineSection §ion, -	uint32_t length -) noexcept -{ -	_sections_lengths[section] = length; -} - -auto StatusLine::_move_to_statusline(int32_t x) noexcept -> Vector2 -{ -	const auto previous_position = _cursor_controller->where(); - -	const auto window_size = _window->size(); - -	_cursor_controller->hide(); - -	auto window_height = static_cast<Vector2::Value>(window_size.get_height()); - -	_cursor_controller->move_to(Vector2({ .x = x, .y = window_height }), true); - -	return previous_position; -} - -void StatusLine::_move_back(Vector2 previous_position) noexcept -{ -	_cursor_controller->move_to(previous_position, true); -	_cursor_controller->show(); -} - -auto StatusLine::_get_section_start_x(const StatusLineSection §ion) const noexcept -	-> int32_t -{ -	int32_t section_start = 0; - -	auto section_index = static_cast<int32_t>(section); - -	while (section_index > 0) -	{ -		section_start += -			static_cast<int32_t>(_sections_lengths.at(StatusLineSection(section_index - 1) -			)); - -		section_index--; -	} - -	return section_start; -} - -void StatusLine::_clear_section( -	const StatusLineSection §ion, -	std::size_t start -) noexcept -{ -	auto section_start = _get_section_start_x(section); - -	auto start_int32 = static_cast<int32_t>(start); - -	const auto previous_position = _move_to_statusline(section_start + start_int32); - -	auto background_color = get_background_esc_seq(STATUSBAR_COLOR); - -	auto section_length = _sections_lengths[section]; - -	auto start_uint32 = static_cast<uint32_t>(start); - -	fmt::print("{}{}", background_color, std::string(section_length - start_uint32, ' ')); -	fmt::print(RESET_ALL_MODES, fmt::arg("esc", ESC)); - -	_move_back(previous_position); -}  | 
