summaryrefslogtreecommitdiffstats
path: root/Debug.hpp
blob: 1a9efb6c1e36f4e7f585f7c0ae34e2e4b00616e3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#pragma once

#include <exception>
#include <queue>
#include <string>
#include <iostream>

namespace debug {

    enum LogLevel {
        FATAL = 0,
        ERROR = 5,
        WARNING = 10,
        INFO = 15,
        DEBUG = 20,
    };

    enum LogSource {
        Unknown,
        Display,
        Network,
        NetworkClient,
        Game,
        World,
        Field,
        Packet,
        AssetManager,
    };

    struct Exception : public std::exception {
        std::string message;
        LogLevel level;
        LogSource source;

        const char *what() const noexcept override{
            return this->message.c_str();
        }
    };

    void WriteLog(std::string message, LogLevel level = LogLevel::INFO, LogSource source = LogSource::Unknown,
                  std::string sourceFile = "", int lineInFile = 0);
#define LOG(MESSAGE, LEVEL, SOURCE) {using namespace debug; debug::WriteLog(MESSAGE,debug::LEVEL,debug::SOURCE,__FILE__,__LINE__);}
}