This repository has been archived by the owner on Jul 18, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 23
/
Error.h
93 lines (84 loc) · 2.93 KB
/
Error.h
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
//////////////////////////////////////////////////////////////////////////////
// This file is part of the LibreMaple MMORPG client //
// Copyright © 2015-2016 Daniel Allendorf, 2018-2019 LibreMaple Team //
// //
// This program is free software: you can redistribute it and/or modify //
// it under the terms of the GNU Affero General Public License as //
// published by the Free Software Foundation, either version 3 of the //
// License, or (at your option) any later version. //
// //
// This program is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
// GNU Affero General Public License for more details. //
// //
// You should have received a copy of the GNU Affero General Public License //
// along with this program. If not, see <http://www.gnu.org/licenses/>. //
//////////////////////////////////////////////////////////////////////////////
#pragma once
namespace jrc
{
//! Error codes to be checked after initialisation.
class Error
{
public:
enum Code {
NONE,
CONNECTION,
NLNX,
MISSING_FILE,
WRONG_UI_FILE,
GLFW,
GLEW,
FREETYPE,
VERTEX_SHADER,
FRAGMENT_SHADER,
SHADER_PROGRAM,
SHADER_VARS,
WINDOW,
AUDIO,
LENGTH
};
constexpr Error(Code c) : Error(c, "")
{
}
constexpr Error(Code c, const char* args) : code(c), args(args)
{
}
constexpr operator bool() const
{
return code != NONE;
}
constexpr bool can_retry() const
{
return code == CONNECTION || code == MISSING_FILE;
}
constexpr const char* get_message() const
{
return messages[code];
}
constexpr const char* get_args() const
{
return args;
}
private:
Code code;
const char* args;
static constexpr const char* messages[LENGTH]
= {"",
"The server seems to be offline. Please start the server and enter "
"'retry'.",
"Could not initialize NLNX. Message: ",
"Missing a game file: ",
"UI.nx has wrong version.",
"Could not initialize GLFW.",
"Could not initialize GLEW.",
"Could not initialize FreeType.",
"Failed to create vertex shader.",
"Failed to create fragment shader.",
"Failed to create shader program.",
"Failed to locate shader variables.",
"Failed to create window.",
"Failed to initialize audio."};
};
} // namespace jrc