/** * Settings for TetraRadio * $Id$ * $HeadURL$ * $Author$ * Created by Christian Ehrlicher, SLSE, 2016-04-14 */ #include "settings.h" #include #include #include #include #include "LtsUtilsCore/lts_portrange.h" namespace TrainingAreaBase { class NGLSettingsClass : public NGL::Settings { public: NGLSettingsClass() : NGL::Settings(s_iniFile.isEmpty() ? NGL::findProjectConfigFile() : s_iniFile) {} static void setIniFile(const QString &fn) { s_iniFile = fn; } static QString s_iniFile; }; QString NGLSettingsClass::s_iniFile; Q_GLOBAL_STATIC(NGLSettingsClass, s) //----------------------------------------------------------------------------- NGL::Settings *Settings::settings() { return s(); } //----------------------------------------------------------------------------- void Settings::setIniFile(const QString &ini) { NGLSettingsClass::setIniFile(ini); } QString Settings::rxDir() { return s()->zsks_rxPath(); } QString Settings::txDir() { return s()->zsks_txPath(); } qint64 Settings::timeDelayAhead() { // msec return settings()->settings()->value(QLatin1String("TrainingAreaBase/TimeDelayAhead"), 60000).toLongLong(); } qint64 Settings::timeDelayBack() { // msec return settings()->settings()->value(QLatin1String("TrainingAreaBase/TimeDelayBack"), 660000).toLongLong(); } bool Settings::useTetraScramling() { #ifdef GUEZ_MODE const bool bDefault = true; #else const bool bDefault = false; #endif return settings()->settings()->value(QLatin1String("TrainingAreaBase/UseTetraScrambling"), bDefault).toBool(); } bool Settings::usePvSan() { return settings()->settings()->value(QLatin1String("TrainingAreaBase/UsePvSan"), false).toBool(); } qint64 Settings::explosionToEffectDelayInMSec() { // [s] return settings()->settings()->value(QLatin1String("TrainingAreaBase/ExplosionToEffectDelayMsec"), 3000).toInt(); } qint64 Settings::distanceIpsToGps() { // [m] return settings()->settings()->value(QLatin1String("TrainingAreaBase/DistanceIpsToGps"), 0).toLongLong(); } qint64 Settings::distanceOpsToGps() { // [m] return settings()->settings()->value(QLatin1String("TrainingAreaBase/DistanceOpsToGps"), 0).toLongLong(); } double Settings::maxSoldierSpeed() { // [m/s] return settings()->settings()->value(QLatin1String("TrainingAreaBase/MaxSoldierSpeed"), 4.0).toDouble(); } qint64 Settings::maxSpeedCheckTimeout() { // [s] return settings()->settings()->value(QLatin1String("TrainingAreaBase/MaxSpeedCheckTimeout"), 120).toInt(); } // Resolve Jira NLDEVCTRL-631 Gesundschiessen durch Laser Range Finder qint64 Settings::laserRangeCode() { return settings()->settings()->value(QLatin1String("BuildingControlUnit/laserRangeCode"), 0).toLongLong(); } QJsonObject Settings::remainingEffects() { QByteArray defaultValue = "{\"5\": { \"20\": 1, \"40\": 2, \"60\": 3, \"80\": 4, \"100\": 5 }, \ \"4\": { \"30\": 1, \"50\": 2, \"70\": 3, \"90\": 4, \"100\": 5 }, \ \"3\": { \"30\": 0, \"100\": 1 }, \ \"2\": { \"50\": 0, \"100\": 1 }, \ \"1\": { \"90\": 0, \"100\": 1 }, \ \"0\": { \"100\": 0 } }"; QByteArray ba = settings()->settings()->value(QLatin1String("TrainingAreaBase/remainingEffects"), defaultValue).toByteArray(); return QJsonDocument::fromJson(ba).object(); } QPair Settings::getWebSocketServerPortRange(int type) { return LtsUtils::fromQPoint(settings()->settings()->value(QString(QStringLiteral("TAB/webSocketServerPortRange/%1")).arg(type), QPoint()).toPoint()); } } // namespace TrainingAreaBase