Adds basic logging setup using a static logger and a few logging levels
This commit is contained in:
@@ -7,7 +7,7 @@ project(rla_iipp) # Defines the project name.
|
|||||||
conan_basic_setup() # Prepares the CMakeList.txt for Conan.]]
|
conan_basic_setup() # Prepares the CMakeList.txt for Conan.]]
|
||||||
|
|
||||||
# $source_files is a space-delimited list of filenames.
|
# $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
|
# vcpkg packages
|
||||||
find_package(SDL2 CONFIG REQUIRED)
|
find_package(SDL2 CONFIG REQUIRED)
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ void Engine::start_loop() {
|
|||||||
renderer->flush();
|
renderer->flush();
|
||||||
auto game_params = GameInitArgs{this->config.target_fps, this->config.window_width, this->config.window_height};
|
auto game_params = GameInitArgs{this->config.target_fps, this->config.window_width, this->config.window_height};
|
||||||
game->initialize(game_params);
|
game->initialize(game_params);
|
||||||
|
Logger::log(LogLevel::DEBUG, "Engine init finished");
|
||||||
std::vector<std::unique_ptr<RenderingPipelineStep>> rendering_steps = build_render_pipline();
|
std::vector<std::unique_ptr<RenderingPipelineStep>> rendering_steps = build_render_pipline();
|
||||||
auto duration_per_frame = one_second_milli / this->config.target_fps;
|
auto duration_per_frame = one_second_milli / this->config.target_fps;
|
||||||
while(true) {
|
while(true) {
|
||||||
@@ -53,6 +54,7 @@ Engine::Engine(std::unique_ptr<Game> game,
|
|||||||
this->game = std::move(game);
|
this->game = std::move(game);
|
||||||
this->input_processor = std::move(input_processor);
|
this->input_processor = std::move(input_processor);
|
||||||
this->parse_config(ENGINE_CONFIG_FILE);
|
this->parse_config(ENGINE_CONFIG_FILE);
|
||||||
|
Logger::set_minimum_loglevel(LogLevel::DEBUG);
|
||||||
this->setup_renderer(this->config.selected_renderer);
|
this->setup_renderer(this->config.selected_renderer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
#include "rendering/renderer.hpp"
|
#include "rendering/renderer.hpp"
|
||||||
#include "input/inputprocessor.hpp"
|
#include "input/inputprocessor.hpp"
|
||||||
#include "rendering/renderingpipelinestep.hpp"
|
#include "rendering/renderingpipelinestep.hpp"
|
||||||
|
#include "modules/logger.hpp"
|
||||||
|
|
||||||
#define MISSING_GAME_ERROR "Game pointer is null"
|
#define MISSING_GAME_ERROR "Game pointer is null"
|
||||||
#define MISSING_RENDERER_ERROR "Renderer pointer is null"
|
#define MISSING_RENDERER_ERROR "Renderer pointer is null"
|
||||||
|
|||||||
47
src/engine/modules/logger.cpp
Normal file
47
src/engine/modules/logger.cpp
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
//
|
||||||
|
// Created by m on 7/18/23.
|
||||||
|
//
|
||||||
|
#include "logger.hpp"
|
||||||
|
#include <fmt/format.h>
|
||||||
|
#include <fmt/chrono.h>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
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";
|
||||||
|
}
|
||||||
29
src/engine/modules/logger.hpp
Normal file
29
src/engine/modules/logger.hpp
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
//
|
||||||
|
// Created by m on 7/18/23.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef RLA_IIPP_LOGGER_HPP
|
||||||
|
#define RLA_IIPP_LOGGER_HPP
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <unordered_map>
|
||||||
|
|
||||||
|
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
|
||||||
@@ -6,7 +6,8 @@
|
|||||||
#include "fpscounterrenderingstep.hpp"
|
#include "fpscounterrenderingstep.hpp"
|
||||||
|
|
||||||
void FpsCounterRenderingStep::render_step(Renderer *renderer) {
|
void FpsCounterRenderingStep::render_step(Renderer *renderer) {
|
||||||
double frames = 1;
|
const double frames = 1;
|
||||||
|
const double smooth = 0.9;
|
||||||
std::chrono::time_point<std::chrono::system_clock> end = std::chrono::system_clock::now();
|
std::chrono::time_point<std::chrono::system_clock> end = std::chrono::system_clock::now();
|
||||||
std::chrono::duration<double> dur = end - this->lastFrame;
|
std::chrono::duration<double> dur = end - this->lastFrame;
|
||||||
renderer->draw_text(std::nullopt, fmt::format("{:.2f}", frames/dur.count()), 0, 0);
|
renderer->draw_text(std::nullopt, fmt::format("{:.2f}", frames/dur.count()), 0, 0);
|
||||||
|
|||||||
@@ -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->camera = Camera(Point{x,y}, tilesx, tilesy, tile_map.get_width(), tile_map.get_height());
|
||||||
this->algorithm_manager = AlgorithmManager(args.target_fps);
|
this->algorithm_manager = AlgorithmManager(args.target_fps);
|
||||||
this->initialize_context();
|
this->initialize_context();
|
||||||
|
Logger::log(LogLevel::DEBUG, "Game initialization finished");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Visualizer::initialize_map(int width, int height) {
|
void Visualizer::initialize_map(int width, int height) {
|
||||||
|
|||||||
Reference in New Issue
Block a user