-
Notifications
You must be signed in to change notification settings - Fork 7
/
Error.h
96 lines (88 loc) · 2.62 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
94
95
96
//////////////////////////////////////////////////////////////////////////////////
// This file is part of the continued Journey MMORPG client //
// Copyright (C) 2015-2019 Daniel Allendorf, Ryan Payton //
// //
// 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 <https://www.gnu.org/licenses/>. //
//////////////////////////////////////////////////////////////////////////////////
#pragma once
namespace ms
{
// Error codes to be checked after initialization.
class Error
{
public:
enum Code
{
NONE,
CONNECTION,
NLNX,
MISSING_FILE,
WRONG_UI_FILE,
GLFW,
GLEW,
FREETYPE,
VERTEX_SHADER,
FRAGMENT_SHADER,
SHADER_PROGRAM_LINK,
SHADER_PROGRAM_VALID,
SHADER_VARS,
WINDOW,
AUDIO,
MISSING_ICON,
FONT_PATH,
LENGTH
};
constexpr Error(Code c) : Error(c, "") {}
constexpr Error(Code c, const char* args) : code(c), args(args) {}
constexpr operator bool() const
{
return code != Code::NONE;
}
constexpr bool can_retry() const
{
return code == Code::CONNECTION || code == Code::MISSING_FILE || code == Code::WRONG_UI_FILE || code == Code::MISSING_ICON || code == Code::FONT_PATH;
}
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[Code::LENGTH] =
{
"",
"Cannot connect to server.",
"Could not initialize NLNX.",
"Missing a game file: ",
"UI.nx has wrong version.",
"Could not initialize GLFW.",
"Could not initialize GLEW.",
"Could not initialize FreeType.",
"Failed to compile vertex shader.",
"Failed to compile fragment shader.",
"Failed to link shader program.",
"Failed to validate shader program.",
"Failed to locate shader variables.",
"Failed to create window.",
"Failed to initialize audio.",
"Could not load icon.",
"Could not load fonts."
};
};
}