#pragma once #include "cursor.hpp" #include "engine/escape.hpp" #include constexpr auto get_direction_format_map() { std::array direction_format_map; direction_format_map[Direction::UP] = MOVE_CURSOR_UP; direction_format_map[Direction::DOWN] = MOVE_CURSOR_DOWN; direction_format_map[Direction::LEFT] = MOVE_CURSOR_LEFT; direction_format_map[Direction::RIGHT] = MOVE_CURSOR_RIGHT; return direction_format_map; } template constexpr void CursorController::move(const uint32_t &amount) const { constexpr auto direction_format_map = get_direction_format_map(); constexpr auto format = direction_format_map[direction]; fmt::vprint(format, fmt::make_format_args(fmt::arg("esc", ESC), fmt::arg("amount", amount))); std::cout.flush(); }