diff options
Diffstat (limited to 'source/30-game/main.cpp')
-rw-r--r-- | source/30-game/main.cpp | 86 |
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{ |