Files
qt5-legatus-legacy/Lts/Services/AreaEffectSimulation/handler_base.cpp
T
2026-08-13 18:33:10 +02:00

165 lines
8.9 KiB
C++
Executable File

/**
* Base class for all aes handlers
* $Id$
* $HeadURL$
* $Author$
*/
#include "handler_base.h"
#include "main_handler.h"
#include "settings.h"
#include <nglsettings/nglsettings_settings.h>
#include <QSettings>
using namespace AreaEffectSimulation;
int HandlerBase::s_areaCount[31] = { 0 }; // all elements to 0
int HandlerBase::s_areaCountCentral[31] = { 0 }; // all elements to 0
int HandlerBase::s_maxActiveAreas[31] = { 0 }; // all elements to 0
int HandlerBase::s_maxActiveAreasCentral[31] = { 0 }; // all elements to 0
int HandlerBase::s_maxSingleMinesCount = 0;
int HandlerBase::s_maxCentralSingleMinesCount = 0;
int HandlerBase::s_safePzAbwWMiCount = 10;
int HandlerBase::s_maxAirSupportCount = 100; // Context ExplosionCluster
int HandlerBase::s_currentAirSupportCount = 0; // Context ExplosionCluster
int HandlerBase::s_startPzAbwWMiCCount = 70000;
int HandlerBase::s_mineAreaCreationInterval = 20000;
HandlerBase::HandlerBase(MainHandler *mainHandler,
const QString &typeName)
: m_mainHandler(mainHandler)
, m_typeName(typeName)
, m_logger(getLogger(QStringLiteral("Handler") + typeName))
{
// Todo: Get from DDS (Asset Management)
NGL::Settings *nglSettings = Settings::settings();
//Decentral defaults:
const int defaultMaxDecBCNContaminations = 5;
const int defaultMaxDecExplosions = 25;
const int defaultMaxDecExplosionCluster = 50;
const int defaultMaxDecMineAreas = 50;
const int defaultMaxSingleMinesCount = 1200;
const int defaultReservePzAbwWMi = 10;
const int defaultMaxDecFunctionalAreas = 6;
const int defaultMaxDecTechnicalAreas = 10;
const int defaultMaxDecGasPipes = 10;
const int defaultMaxDecDusSingleMines = 100;
//Central defaults:
const int defaultMaxCenBoobyTraps = 150;
const int defaultMaxCenBCNContaminations = 50;
const int defaultMaxCenGasPipes = 100;
const int defaultMaxCenDusSingleMines = 1500;
const int defaultMaxCenExplosions = 100;
const int defaultMaxCenExplosionCluster = 200;
const int defaultMaxCenEffectCluster = 200;
const int defaultMaxCenOffRouteMines = 100;
const int defaultMaxCenMineAreas = 100;
const int defaultMaxCenFunctionalAreas = 50;
const int defaultMaxCenTechnicalAreas = 100;
// Todo: Get from DDS (Asset Management)
// Keep equal as the totalAreas sums the actual active areas up and compares to either N or BC
// It is not distinguished any more. Therefore 10 (as the sum) ist the actual value for All Contamination Areas
s_mineAreaCreationInterval = nglSettings->settings()->value(
QStringLiteral("AES/mineAreaCreationInterval"),20000).toInt();
s_maxActiveAreas[AesType::AtBCContamination] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveDecentralBCContamination"),defaultMaxDecBCNContaminations).toInt();
s_maxActiveAreas[AesType::AtNContamination] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveDecentralNContamination"),defaultMaxDecBCNContaminations).toInt();
// Keep equal as the totalAreas sums the actual active areas up and compares to either N or BC
// It is not distinguished any more. Therefore 10 (as the sum) ist the actual value for All Contamination Areas
// s_maxActiveAreas[AesType::AtBCContamination] = 5;
// s_maxActiveAreas[AesType::AtNContamination] = 5;
// Keep equal as the totalAreas sums the actual active areas up and compares to either Area or Single
// It is not distinguished any more. Therefore 50 (as the sum) ist the actual value for All Explosion Areas
s_maxActiveAreas[AesType::AtExplosionArea] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveDecentralExplosionAreas"),defaultMaxDecExplosions).toInt();
s_maxActiveAreas[AesType::AtExplosionSingle] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveDecentralExplosionSingle"),defaultMaxDecExplosions).toInt();
s_maxActiveAreas[AesType::AtExplosionCluster] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveDecentralExplosionClusters"),defaultMaxDecExplosionCluster).toInt();
s_maxActiveAreas[AesType::AtMineArea] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveDecentralMineAreas"),defaultMaxDecMineAreas).toInt();
s_maxSingleMinesCount = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveSingleMines"),defaultMaxSingleMinesCount).toInt();
s_maxCentralSingleMinesCount = nglSettings->settings()->value(
QStringLiteral("AES/maxCentralActiveSingleMines"),defaultMaxCenDusSingleMines).toInt();
s_safePzAbwWMiCount = nglSettings->settings()->value(
QStringLiteral("AES/reservePzAbwWMi"),defaultReservePzAbwWMi).toInt();
s_maxActiveAreas[AesType::AtFunctionalArea] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveDecentralFunctionalAreas"),defaultMaxDecFunctionalAreas).toInt();
s_maxActiveAreas[AesType::AtTechnicalArea] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveDecentralTechnicalAreas"),defaultMaxDecTechnicalAreas).toInt();
s_maxActiveAreas[AesType::AtGasPipe] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveDecentralGasPipes"),defaultMaxDecGasPipes).toInt();
s_maxActiveAreas[AesType::AtDusSingleMine] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveDecentralDusSingleMines"),defaultMaxDecDusSingleMines).toInt();
s_maxActiveAreas[AesType::AtAirSupportImpact] = 2147483647; // unlimited
// Central
s_maxActiveAreasCentral[AesType::AtBoobyTrap] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveCentralBoobyTraps"),defaultMaxCenBoobyTraps).toInt();
s_maxActiveAreasCentral[AesType::AtBCContamination] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveCentralBCContamination"),defaultMaxCenBCNContaminations).toInt();
s_maxActiveAreasCentral[AesType::AtNContamination] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveCentralNContamination"),defaultMaxCenBCNContaminations).toInt();
// Keep equal as the totalAreas sums the actual active areas up and compares to either Area or Single
// It is not distinguished any more. Therefore 200 (as the sum) ist the actual value for All Explosion Areas
s_maxActiveAreasCentral[AesType::AtExplosionArea] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveCentralExplosionAreas"),defaultMaxCenExplosions).toInt();
s_maxActiveAreasCentral[AesType::AtExplosionSingle] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveCentralExplosionSingle"),defaultMaxCenExplosions).toInt();
s_maxActiveAreasCentral[AesType::AtOffRouteMine] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveCentralOffRouteMines"),defaultMaxCenOffRouteMines).toInt();
s_maxActiveAreasCentral[AesType::AtMineArea] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveCentralMineAreas"),defaultMaxCenMineAreas).toInt();
s_maxActiveAreasCentral[AesType::AtFunctionalArea] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveCentralFunctionalAreas"),defaultMaxCenFunctionalAreas).toInt();
s_maxActiveAreasCentral[AesType::AtTechnicalArea] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveCentralTechnicalAreas"),defaultMaxCenTechnicalAreas).toInt();
s_maxActiveAreasCentral[AesType::AtGasPipe] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveCentralGasPipes"),defaultMaxCenGasPipes).toInt();
s_maxActiveAreasCentral[AesType::AtDusSingleMine] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveCentralDusSingleMines"),defaultMaxCenDusSingleMines).toInt();
s_maxActiveAreasCentral[AesType::AtExplosionCluster] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveCentralExplosionClusters"),defaultMaxCenExplosionCluster).toInt();
s_maxActiveAreasCentral[AesType::AtEffectCluster] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveCentralEffectClusters"),defaultMaxCenEffectCluster).toInt();
s_maxActiveAreasCentral[AesType::AtAirSupportImpact] =
2147483647; // unlimited
}