diff --git a/CMakeVariables.txt b/CMakeVariables.txt index 4ded5f59..0aa3c8cb 100644 --- a/CMakeVariables.txt +++ b/CMakeVariables.txt @@ -1,5 +1,5 @@ -PROJECT_VERSION_MAJOR=2 -PROJECT_VERSION_MINOR=3 +PROJECT_VERSION_MAJOR=3 +PROJECT_VERSION_MINOR=0 PROJECT_VERSION_PATCH=0 # Debugging diff --git a/dDatabase/GameDatabase/SQLite/SQLiteDatabase.cpp b/dDatabase/GameDatabase/SQLite/SQLiteDatabase.cpp index 635ca8fb..0f2b97a2 100644 --- a/dDatabase/GameDatabase/SQLite/SQLiteDatabase.cpp +++ b/dDatabase/GameDatabase/SQLite/SQLiteDatabase.cpp @@ -5,6 +5,7 @@ #include "dConfig.h" #include "Logger.h" #include "dPlatforms.h" +#include "BinaryPathFinder.h" // Static Variables @@ -17,7 +18,14 @@ namespace { void SQLiteDatabase::Connect() { LOG("Using SQLite database"); con = new CppSQLite3DB(); - con->open(Game::config->GetValue("sqlite_database_path").c_str()); + const auto path = BinaryPathFinder::GetBinaryDir() / Game::config->GetValue("sqlite_database_path"); + + if (!std::filesystem::exists(path)) { + LOG("Creating sqlite path %s", path.string().c_str()); + std::filesystem::create_directories(path.parent_path()); + } + + con->open(path.string().c_str()); isConnected = true; // Make sure wal is enabled for the database. diff --git a/dMasterServer/MasterServer.cpp b/dMasterServer/MasterServer.cpp index b764169a..89ecef05 100644 --- a/dMasterServer/MasterServer.cpp +++ b/dMasterServer/MasterServer.cpp @@ -84,6 +84,24 @@ int main(int argc, char** argv) { Server::SetupLogger("MasterServer"); if (!Game::logger) return EXIT_FAILURE; + auto folders = { "navmeshes", "migrations", "vanity" }; + + for (const auto folder : folders) { + if (!std::filesystem::exists(BinaryPathFinder::GetBinaryDir() / folder)) { + std::string msg = "The (" + + std::string(folder) + + ") folder was not copied to the binary directory. Please copy the (" + + std::string(folder) + + ") folder from your download to the binary directory or re-run cmake."; + LOG("%s", msg.c_str()); +// toss an error box up for windows users running the download +#ifdef DARKFLAME_PLATFORM_WIN32 + MessageBoxA(nullptr, msg.c_str(), "Missing Folder", MB_OK | MB_ICONERROR); +#endif + return EXIT_FAILURE; + } + } + if (!dConfig::Exists("authconfig.ini")) LOG("Could not find authconfig.ini, using default settings"); if (!dConfig::Exists("chatconfig.ini")) LOG("Could not find chatconfig.ini, using default settings"); if (!dConfig::Exists("masterconfig.ini")) LOG("Could not find masterconfig.ini, using default settings"); @@ -177,7 +195,7 @@ int main(int argc, char** argv) { } // Run migrations should any need to be run. - MigrationRunner::RunSQLiteMigrations(); + MigrationRunner::RunSQLiteMigrations(); //If the first command line argument is -a or --account then make the user //input a username and password, with the password being hidden.