From 0d29d0a398707ef3bed952c393d943868e990508 Mon Sep 17 00:00:00 2001 From: mjh65 Date: Wed, 13 Mar 2024 15:23:13 +0000 Subject: [PATCH] Activate use of SQL-backed NAV database if available at startup. --- src/environment/Environment.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/environment/Environment.cpp b/src/environment/Environment.cpp index 6c5aa1b7..9cd6a09f 100644 --- a/src/environment/Environment.cpp +++ b/src/environment/Environment.cpp @@ -19,11 +19,23 @@ #include "Environment.h" #include "src/Logger.h" #include "src/platform/CrashHandler.h" +#include "src/libnavsql/SqlLoadManager.h" namespace avitab { void Environment::loadNavWorldInBackground() { - worldManager = createParsingWorldManager(); + // try to create a SqlWorld instance to manage the world data. + // if this fails ask the subclass to provide the default in-memory parser variant + try { + auto wm = std::make_shared(getProgramPath() + "navdb/"); + wm->init_or_throw([this] (std::string simCode) { + return this->canUseNavDb(simCode); + }); + worldManager = wm; + } catch (const std::exception &e) { + logger::warn("Couldn't load Sqlite3 NAV database: %s - will fallback to file parsing if available", e.what()); + worldManager = createParsingWorldManager(); + } std::string userfixes_file = settings->getGeneralSetting("userfixes_file"); worldManager->setUserFixesFilename(userfixes_file);