From f71ecc432a2096eceafbf5b158b6a48ec17f1a20 Mon Sep 17 00:00:00 2001 From: m Date: Tue, 18 Jul 2023 21:56:06 -0400 Subject: [PATCH] Adds basic logging setup using a static logger and a few logging levels --- CMakeLists.txt | 2 +- src/engine/engine.cpp | 2 + src/engine/engine.hpp | 1 + src/engine/modules/logger.cpp | 47 +++++++++++++++++++ src/engine/modules/logger.hpp | 29 ++++++++++++ .../fpscounterrenderingstep.cpp | 3 +- src/game/visualizer.cpp | 1 + 7 files changed, 83 insertions(+), 2 deletions(-) create mode 100644 src/engine/modules/logger.cpp create mode 100644 src/engine/modules/logger.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index af36c8e..c429031 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,7 +7,7 @@ project(rla_iipp) # Defines the project name. conan_basic_setup() # Prepares the CMakeList.txt for Conan.]] # $source_files is a space-delimited list of filenames. -add_executable(rla_iipp src/main.cpp src/engine/engine.hpp src/engine/game/game.hpp src/engine/rendering/renderer.hpp src/game/visualizer.hpp src/game/visualizer.cpp src/engine/rendering/sdl/sdlrenderer.cpp src/engine/rendering/sdl/sdlrenderer.hpp src/engine/rendering/sdl/sdlrenderer.cpp src/engine/rendering/sdl/sdlrenderer.hpp src/engine/engine.cpp src/engine/engine.hpp src/engine/rendering/sdl/sdltexturemanager.cpp src/engine/rendering/sdl/sdltexturemanager.hpp src/engine/resources/resourcemanager.hpp src/engine/rendering/sdl/sdlfontmanager.cpp src/engine/rendering/sdl/sdlfontmanager.hpp src/engine/input/inputprocessor.hpp src/engine/input/sdlinputprocessor.cpp src/engine/input/sdlinputprocessor.hpp src/engine/utility/camera.cpp src/engine/utility/camera.hpp src/engine/utility/point.hpp src/engine/utility/rectangle.hpp src/engine/utility/grid2d.hpp src/engine/scripting/luacontextmanager.cpp src/engine/scripting/luacontextmanager.hpp src/game/algorithmmanager.cpp src/game/algorithmmanager.hpp src/game/tilemap.cpp src/game/tilemap.hpp src/engine/rlengineexception.hpp src/engine/rendering/renderingpipelinestep.hpp src/engine/rendering/pipeline_steps/gamerenderingstep.cpp src/engine/rendering/pipeline_steps/gamerenderingstep.hpp src/engine/rendering/pipeline_steps/fpscounterrenderingstep.cpp src/engine/rendering/pipeline_steps/fpscounterrenderingstep.hpp) # Specifies the executable to build. +add_executable(rla_iipp src/main.cpp src/engine/engine.hpp src/engine/game/game.hpp src/engine/rendering/renderer.hpp src/game/visualizer.hpp src/game/visualizer.cpp src/engine/rendering/sdl/sdlrenderer.cpp src/engine/rendering/sdl/sdlrenderer.hpp src/engine/rendering/sdl/sdlrenderer.cpp src/engine/rendering/sdl/sdlrenderer.hpp src/engine/engine.cpp src/engine/engine.hpp src/engine/rendering/sdl/sdltexturemanager.cpp src/engine/rendering/sdl/sdltexturemanager.hpp src/engine/resources/resourcemanager.hpp src/engine/rendering/sdl/sdlfontmanager.cpp src/engine/rendering/sdl/sdlfontmanager.hpp src/engine/input/inputprocessor.hpp src/engine/input/sdlinputprocessor.cpp src/engine/input/sdlinputprocessor.hpp src/engine/utility/camera.cpp src/engine/utility/camera.hpp src/engine/utility/point.hpp src/engine/utility/rectangle.hpp src/engine/utility/grid2d.hpp src/engine/scripting/luacontextmanager.cpp src/engine/scripting/luacontextmanager.hpp src/game/algorithmmanager.cpp src/game/algorithmmanager.hpp src/game/tilemap.cpp src/game/tilemap.hpp src/engine/rlengineexception.hpp src/engine/rendering/renderingpipelinestep.hpp src/engine/rendering/pipeline_steps/gamerenderingstep.cpp src/engine/rendering/pipeline_steps/gamerenderingstep.hpp src/engine/rendering/pipeline_steps/fpscounterrenderingstep.cpp src/engine/rendering/pipeline_steps/fpscounterrenderingstep.hpp src/engine/modules/logger.cpp src/engine/modules/logger.hpp) # Specifies the executable to build. # vcpkg packages find_package(SDL2 CONFIG REQUIRED) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 50adeab..78ed4e1 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -23,6 +23,7 @@ void Engine::start_loop() { renderer->flush(); auto game_params = GameInitArgs{this->config.target_fps, this->config.window_width, this->config.window_height}; game->initialize(game_params); + Logger::log(LogLevel::DEBUG, "Engine init finished"); std::vector> rendering_steps = build_render_pipline(); auto duration_per_frame = one_second_milli / this->config.target_fps; while(true) { @@ -53,6 +54,7 @@ Engine::Engine(std::unique_ptr game, this->game = std::move(game); this->input_processor = std::move(input_processor); this->parse_config(ENGINE_CONFIG_FILE); + Logger::set_minimum_loglevel(LogLevel::DEBUG); this->setup_renderer(this->config.selected_renderer); } diff --git a/src/engine/engine.hpp b/src/engine/engine.hpp index 8cef691..8abb7e3 100644 --- a/src/engine/engine.hpp +++ b/src/engine/engine.hpp @@ -14,6 +14,7 @@ #include "rendering/renderer.hpp" #include "input/inputprocessor.hpp" #include "rendering/renderingpipelinestep.hpp" +#include "modules/logger.hpp" #define MISSING_GAME_ERROR "Game pointer is null" #define MISSING_RENDERER_ERROR "Renderer pointer is null" diff --git a/src/engine/modules/logger.cpp b/src/engine/modules/logger.cpp new file mode 100644 index 0000000..ef461c0 --- /dev/null +++ b/src/engine/modules/logger.cpp @@ -0,0 +1,47 @@ +// +// Created by m on 7/18/23. +// +#include "logger.hpp" +#include +#include +#include + +LogLevel Logger::minimum_loglevel = LogLevel::DEBUG; + +void Logger::set_minimum_loglevel(LogLevel logLevel) { + Logger::minimum_loglevel = logLevel; +} + +void Logger::log(LogLevel level, const std::string &msg) { + if(level < Logger::minimum_loglevel) { + return; + } + + auto loglevel_name = "UNKNOWN"; + switch (level) { + case LogLevel::TRACE: + loglevel_name = "TRA"; + break; + case DEBUG: + loglevel_name = "DEB"; + break; + case INFO: + loglevel_name = "INF"; + break; + case WARNING: + loglevel_name = "WAR"; + break; + case ERROR: + loglevel_name = "ERR"; + break; + case NONE: + loglevel_name = "NON"; + break; + } + auto output = fmt::format("[{}][{}] {}", std::chrono::system_clock::now(), loglevel_name, msg); + + if(level == LogLevel::ERROR) { + std::cerr << output << "\n"; + } + std::cout << output << "\n"; +} diff --git a/src/engine/modules/logger.hpp b/src/engine/modules/logger.hpp new file mode 100644 index 0000000..11481e4 --- /dev/null +++ b/src/engine/modules/logger.hpp @@ -0,0 +1,29 @@ +// +// Created by m on 7/18/23. +// + +#ifndef RLA_IIPP_LOGGER_HPP +#define RLA_IIPP_LOGGER_HPP + +#include +#include + +enum LogLevel: int { + TRACE = 0, + DEBUG = 1, + INFO = 2, + WARNING = 3, + ERROR = 4, + NONE = 5 +}; + +class Logger { +public: + static void set_minimum_loglevel(LogLevel logLevel); + static void log(LogLevel level, const std::string& msg); +private: + static LogLevel minimum_loglevel; +}; + + +#endif //RLA_IIPP_LOGGER_HPP diff --git a/src/engine/rendering/pipeline_steps/fpscounterrenderingstep.cpp b/src/engine/rendering/pipeline_steps/fpscounterrenderingstep.cpp index a75c1cd..d393144 100644 --- a/src/engine/rendering/pipeline_steps/fpscounterrenderingstep.cpp +++ b/src/engine/rendering/pipeline_steps/fpscounterrenderingstep.cpp @@ -6,7 +6,8 @@ #include "fpscounterrenderingstep.hpp" void FpsCounterRenderingStep::render_step(Renderer *renderer) { - double frames = 1; + const double frames = 1; + const double smooth = 0.9; std::chrono::time_point end = std::chrono::system_clock::now(); std::chrono::duration dur = end - this->lastFrame; renderer->draw_text(std::nullopt, fmt::format("{:.2f}", frames/dur.count()), 0, 0); diff --git a/src/game/visualizer.cpp b/src/game/visualizer.cpp index d27063f..7087d65 100644 --- a/src/game/visualizer.cpp +++ b/src/game/visualizer.cpp @@ -63,6 +63,7 @@ void Visualizer::initialize(GameInitArgs args) { this->camera = Camera(Point{x,y}, tilesx, tilesy, tile_map.get_width(), tile_map.get_height()); this->algorithm_manager = AlgorithmManager(args.target_fps); this->initialize_context(); + Logger::log(LogLevel::DEBUG, "Game initialization finished"); } void Visualizer::initialize_map(int width, int height) {