aboutsummaryrefslogtreecommitdiff
path: root/source/30-game/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/30-game/main.cpp')
-rw-r--r--source/30-game/main.cpp86
1 files changed, 52 insertions, 34 deletions
diff --git a/source/30-game/main.cpp b/source/30-game/main.cpp
index 55d2586..77c4674 100644
--- a/source/30-game/main.cpp
+++ b/source/30-game/main.cpp
@@ -98,6 +98,7 @@ void GlfwKeyCallback(GLFWwindow* window, int key, int scancode, int action, int
}
}
+// For platform data path selection below
// https://stackoverflow.com/questions/54499256/how-to-find-the-saved-games-folder-programmatically-in-c-c
#if defined(_WIN32)
# if defined(__MINGW32__)
@@ -173,46 +174,53 @@ int main(int argc, char* argv[]) {
AppConfig::assetDir = std::move(assetDir);
AppConfig::assetDirPath = std::move(assetDirPath);
} else {
-#if defined(_WIN32)
- fs::path dataDir;
+ AppConfig::assetDir = ".";
+ AppConfig::assetDirPath = fs::path(".");
+ }
+
+ if (args.count(kGameDataDir) > 0) {
+ auto dataDir = args[kGameDataDir].as<std::string>();
+
+ fs::path dataDirPath(dataDir);
+ fs::create_directories(dataDir);
+
+ AppConfig::dataDir = std::move(dataDir);
+ AppConfig::dataDirPath = std::move(dataDirPath);
+ } else {
+#if BRUSSEL_DEV_ENV
+ AppConfig::dataDir = ".";
+ AppConfig::dataDirPath = fs::path(".");
+#else
+// In a regular build, use default platform data paths
+# if defined(_WIN32)
+ fs::path dataDirPath;
PWSTR path = nullptr;
HRESULT hr = SHGetKnownFolderPath(FOLDERID_RoamingAppData, KF_FLAG_CREATE, nullptr, &path);
if (SUCCEEDED(hr)) {
- dataDir = fs::path(path) / AppConfig::kAppName;
+ dataDirPath = fs::path(path) / AppConfig::kAppName;
CoTaskMemFree(path);
- fs::create_directories(dataDir);
+ fs::create_directories(dataDirPath);
} else {
std::string msg;
msg += "Failed to find/create the default user data directory at %APPDATA%. Error code: ";
msg += hr;
throw std::runtime_error(msg);
}
-#elif defined(__APPLE__)
+# elif defined(__APPLE__)
// MacOS programming guide recommends apps to hardcode the path - user customization of "where data are stored" is done in Finder
- auto dataDir = fs::path("~/Library/Application Support/") / AppConfig::kAppName;
- fs::create_directories(dataDir);
-#elif defined(__linux__)
- auto dataDir = GetEnvVar("XDG_DATA_HOME", "~/.local/share") / AppConfig::kAppName;
- fs::create_directories(dataDir);
+ auto dataDirPath = fs::path("~/Library/Application Support/") / AppConfig::kAppName;
+ fs::create_directories(dataDirPath);
+# elif defined(__linux__)
+ auto dataDirPath = GetEnvVar("XDG_DATA_HOME", "~/.local/share") / AppConfig::kAppName;
+ fs::create_directories(dataDirPath);
+# endif
+ AppConfig::dataDir = dataDirPath.string();
+ AppConfig::dataDirPath = dataDirPath;
#endif
}
- if (args.count(kGameDataDir) > 0) {
- auto dataDir = args[kGameDataDir].as<std::string>();
-
- fs::path dataDirPath(dataDir);
- fs::create_directories(dataDir);
-
- AppConfig::dataDir = std::move(dataDir);
- AppConfig::dataDirPath = std::move(dataDirPath);
- } else {
- // TODO platform default path
- AppConfig::dataDir = ".";
- AppConfig::dataDirPath = fs::path(".");
- }
-
if (!glfwInit()) {
return -1;
}
@@ -237,7 +245,7 @@ int main(int argc, char* argv[]) {
GlfwUserData glfwUserData;
- GLFWwindow* window = glfwCreateWindow(1280, 720, "Project Brussel", nullptr, nullptr);
+ GLFWwindow* window = glfwCreateWindow(1280, 720, AppConfig::kAppNameC, nullptr, nullptr);
if (window == nullptr) {
return -2;
}
@@ -264,17 +272,15 @@ int main(int argc, char* argv[]) {
}
#if defined(BRUSSEL_DEV_ENV)
- {
- auto glVersionString = glGetString(GL_VERSION);
+ auto glVersionString = glGetString(GL_VERSION);
- int glMajorVersion;
- glGetIntegerv(GL_MAJOR_VERSION, &glMajorVersion);
- int glMinorVersion;
- glGetIntegerv(GL_MINOR_VERSION, &glMinorVersion);
+ int glMajorVersion;
+ glGetIntegerv(GL_MAJOR_VERSION, &glMajorVersion);
+ int glMinorVersion;
+ glGetIntegerv(GL_MINOR_VERSION, &glMinorVersion);
- printf("OpenGL version (via glGetString(GL_VERSION)): %s\n", glVersionString);
- printf("OpenGL version (via glGetIntegerv() with GL_MAJOR_VERSION and GL_MINOR_VERSION): %d.%d\n", glMajorVersion, glMinorVersion);
- }
+ printf("OpenGL version (via glGetString(GL_VERSION)): %s\n", glVersionString);
+ printf("OpenGL version (via glGetIntegerv() with GL_MAJOR_VERSION and GL_MINOR_VERSION): %d.%d\n", glMajorVersion, glMinorVersion);
#endif
bool useOpenGLDebug = args[kOpenGLDebug].as<bool>();
@@ -351,6 +357,18 @@ int main(int argc, char* argv[]) {
.semantic = VES_Color1,
});
+ gVformatLines.Attach(new VertexFormat());
+ gVformatLines->AddElement(VertexElementFormat{
+ .bindingIndex = 0,
+ .type = VET_Float3,
+ .semantic = VES_Position,
+ });
+ gVformatLines->AddElement(VertexElementFormat{
+ .bindingIndex = 0,
+ .type = VET_Ubyte4Norm,
+ .semantic = VES_Color1,
+ });
+
// Matches gVformatStandard
gDefaultShader.Attach(new Shader());
gDefaultShader->InitFromSources(Shader::ShaderSources{