Complete Qt6 migration: full clean build green across groups G1-G12 incl. runtime plugin set

new_docker_build.sh gains Group 12 (212 GUI/Data plugins); fixes LtsUtilsGuiDds visibility (LTO-stripped exports), LtsProjectionWorkstation unity name shadow, 6 unity-off dirs (dup file-scope statics, ddsftc INTERFACE sources) and reconfigures BUILD_FILTERMANAGEMENT/BUILD_PLUGINS_SERVICEMONITOR=ON
This commit is contained in:
berrux-dev committed 2026-10-20 09:36:57 +02:00
1 parent 2b957d1edb
commit 598fc2560e
1718 files changed
+126739 -18495

No files matched your search

@@ -62,29 +62,29 @@ void HandlerArtillerieSound::onExplosionSingleChanged(const AreaEffectSimulation
if (modType != DataModification::eAdded &&
modType != DataModification::eModified)
{
m_explosionSingleState.remove(data.id());
m_explosionSingleState.remove(data.id);
return;
}
if (data.effectStateId() == AreaEffectSimulation::AesEffectState::EsRemoved)
if (data.effectStateId == AreaEffectSimulation::AesEffectState::EsRemoved)
{
DEBUG_LOG(m_logger) << "Remove SingleExplosion";
m_explosionSingleState.remove(data.id());
m_explosionSingleState.remove(data.id);
return;
}
// Only handle transitions from prepared or fired to activated
if ((m_explosionSingleState.value(data.id()) == AreaEffectSimulation::AesEffectState::EsPrepared ||
m_explosionSingleState.value(data.id()) == AreaEffectSimulation::AesEffectState::EsFired) &&
data.effectStateId() == AreaEffectSimulation::AesEffectState::EsActivated)
if ((m_explosionSingleState.value(data.id) == AreaEffectSimulation::AesEffectState::EsPrepared ||
m_explosionSingleState.value(data.id) == AreaEffectSimulation::AesEffectState::EsFired) &&
data.effectStateId == AreaEffectSimulation::AesEffectState::EsActivated)
{
DEBUG_LOG(m_logger) << "Handle SingleExplosion";
handleExplosion = true;
}
m_explosionSingleState.insert(data.id(), data.effectStateId());
m_explosionSingleState.insert(data.id, data.effectStateId);
DEBUG_LOG(m_logger) << "Got ExplosionSingle State=" << data.effectStateId()
<< " id=" << data.id();
DEBUG_LOG(m_logger) << "Got ExplosionSingle State=" << data.effectStateId
<< " id=" << data.id;
if (handleExplosion)
{
DEBUG_LOG(m_logger) << "Handle ExplosionSingle (EsActivated) HandlerArtillerieSound";
@@ -107,7 +107,7 @@ void HandlerArtillerieSound::onExplosionSingleChanged(const AreaEffectSimulation
<< "/" << i.value().positionUtm.y()
<< " zone=" << i.value().zone;
// Calculate the distance between the speaker and the explosion
const QPointF posExplosionUtm = CentralEffectSimulation::geographic2Utm(data.impactPosition(), i.value().zone);
const QPointF posExplosionUtm = CentralEffectSimulation::geographic2Utm(data.impactPosition, i.value().zone);
const qreal distance = qSqrt(qPow(posExplosionUtm.x() - i.value().positionUtm.x(), 2) + qPow(posExplosionUtm.y() - i.value().positionUtm.y(), 2));
int sound = Settings::cesSoundId();
const qreal distanceThreshold = Settings::cesDistanceThreshold(); // [m]
@@ -193,24 +193,24 @@ void HandlerArtillerieSound::onTechnicalAreaChanged(const AreaEffectSimulation::
if (modType != DataModification::eAdded &&
modType != DataModification::eModified)
{
m_technicalAreas.remove(data.id());
m_technicalAreas.remove(data.id);
return;
}
if (data.effectStateId() == AreaEffectSimulation::AesEffectState::EsRemoved)
if (data.effectStateId == AreaEffectSimulation::AesEffectState::EsRemoved)
{
DEBUG_LOG(m_logger) << "Remove TechnicalArea";
m_technicalAreas.remove(data.id());
m_technicalAreas.remove(data.id);
return;
}
if (data.type() == AreaEffectSimulation::AesTechnicalAreaType::TatSoundZone)
if (data.type == AreaEffectSimulation::AesTechnicalAreaType::TatSoundZone)
{
int zone = -1;
m_technicalAreas.insert(data.id(), data);
DEBUG_LOG(m_logger) << "Handle TechnicalArea HandlerArtillerieSound id=" << data.id();
QPointF cornerButtomLeft = CentralEffectSimulation::geographic2Utm(data.area().cornerBottomLeft(), &zone);
qreal x = cornerButtomLeft.x() + data.area().width() / 2;
qreal y = cornerButtomLeft.y() + data.area().height() / 2;
m_technicalAreas.insert(data.id, data);
DEBUG_LOG(m_logger) << "Handle TechnicalArea HandlerArtillerieSound id=" << data.id;
QPointF cornerButtomLeft = CentralEffectSimulation::geographic2Utm(data.area.cornerBottomLeft, &zone);
qreal x = cornerButtomLeft.x() + data.area.width / 2;
qreal y = cornerButtomLeft.y() + data.area.height / 2;
QPointF center(x, y);
DEBUG_LOG(m_logger) << "Handle TechnicalArea HandlerArtillerieSound cornerButtomLeft = " << cornerButtomLeft.x() << "/" << cornerButtomLeft.y()
<< " zone=" << zone;
@@ -69,14 +69,14 @@ void HandlerParticipantBorderline::onBorderlineChanged(const AreaEffectSimulatio
switch (modType)
{
case DataModification::eRemoved:
DEBUG_LOG(m_logger) << " remove Borderline- data.id()=" << data.id();
m_borderlines.remove(data.id());
DEBUG_LOG(m_logger) << " remove Borderline- data.id()=" << data.id;
m_borderlines.remove(data.id);
break;
case DataModification::eAdded:
case DataModification::eModified:
{
const AreaEffectSimulation::AesEffectState &effectState = data.effectStateId();
switch (effectState.underlying())
const AreaEffectSimulation::AesEffectState &effectState = data.effectStateId;
switch (effectState)
{
case AreaEffectSimulation::AesEffectState::EsReceived:
case AreaEffectSimulation::AesEffectState::EsFired:
@@ -85,14 +85,14 @@ void HandlerParticipantBorderline::onBorderlineChanged(const AreaEffectSimulatio
case AreaEffectSimulation::AesEffectState::EsActivated:
{
BorderlineUtm borderline(data);
DEBUG_LOG(m_logger) << "m_borderlines.insert id=" << data.id();
m_borderlines.insert(data.id(), borderline);
DEBUG_LOG(m_logger) << "m_borderlines.insert id=" << data.id;
m_borderlines.insert(data.id, borderline);
break;
}
case AreaEffectSimulation::AesEffectState::EsRemoved:
case AreaEffectSimulation::AesEffectState::EsExpired:
case AreaEffectSimulation::AesEffectState::EsPaused:
m_borderlines.remove(data.id());
m_borderlines.remove(data.id);
break;
case AreaEffectSimulation::AesEffectState::EsUnknown:
case AreaEffectSimulation::AesEffectState::EsError:
@@ -111,7 +111,7 @@ bool HandlerParticipantBorderline::intersect(const QPolygonF &polygonf, const QL
{
const QLineF segment(a, b);
DEBUG_LOG(m_logger) << "segment:" << CentralEffectSimulation::debug(a) << " - " << CentralEffectSimulation::debug(b);
if (QLineF::BoundedIntersection == linef.intersect(segment, nullptr))
if (QLineF::BoundedIntersection == linef.intersects(segment, nullptr))
return true;
a = b;
}
@@ -123,8 +123,8 @@ void HandlerParticipantBorderline::onParticipantPositionChanged(const CentralEff
{
// Bounding Box von der Linie
DEBUG_LOG(m_logger) << "ParicipantStep "
<< " participantId=" << partPos.participantId()
<< " participantTypeId=" << partPos.participantTypeId()
<< " participantId=" << partPos.participantId
<< " participantTypeId=" << partPos.participantTypeId
<< " Anzahl Borderlines=" << m_borderlines.size();
for (const BorderlineUtm &borderline : std::as_const(m_borderlines))
@@ -132,7 +132,7 @@ void HandlerParticipantBorderline::onParticipantPositionChanged(const CentralEff
DEBUG_LOG(m_logger) << "borderline id = " << borderline.id
<< ", Box bottomLeft = " << CentralEffectSimulation::debug(borderline.boundingBox.bottomLeft())
<< ", topRight = " << CentralEffectSimulation::debug(borderline.boundingBox.topRight());
const QPolygonF utmStepPoly = m_handlerParticipant->getParticipantStep(partPos.participantId(), borderline.zone);
const QPolygonF utmStepPoly = m_handlerParticipant->getParticipantStep(partPos.participantId, borderline.zone);
if (utmStepPoly.size() < 2)
continue;
@@ -162,7 +162,7 @@ void HandlerParticipantBorderline::sendParticipantEvent(const BorderlineUtm &bor
const CentralEffectSimulation::HandlerParticipant::CesParticipantData &participantPosition,
const ProjectDataManagement::PdmEventType eventType)
{
ParticipantManagement::TypeClass typeClass = m_handlerParticipant->typeClassFromTypeId(participantPosition.participantTypeId());
ParticipantManagement::TypeClass typeClass = m_handlerParticipant->typeClassFromTypeId(participantPosition.participantTypeId);
if (typeClass == ParticipantManagement::TypeClass::Unit ||
typeClass == ParticipantManagement::TypeClass::SupportUnit ||
@@ -170,40 +170,40 @@ void HandlerParticipantBorderline::sendParticipantEvent(const BorderlineUtm &bor
typeClass == ParticipantManagement::TypeClass::Unknown)
return;
int equipmentNumber = m_ddsHandler->participantId2EquipNo(participantPosition.participantId());
int equipmentNumber = m_ddsHandler->participantId2EquipNo(participantPosition.participantId);
if (equipmentNumber <= 0)
return;
CentralEffectSimulation::ParticipantEvent pe;
DEBUG_LOG(m_logger) << "sendParticipantEvent participantId=" << participantPosition.participantId()
<< " lat= " << participantPosition.pos().lat()
<< " lon= " << participantPosition.pos().lon()
DEBUG_LOG(m_logger) << "sendParticipantEvent participantId=" << participantPosition.participantId
<< " lat= " << participantPosition.pos.lat
<< " lon= " << participantPosition.pos.lon
<< " equipmentNumber=" << equipmentNumber
<< " eventType=" << eventType;
pe.id(m_ddsHandler->getParticipantEventId());
pe.eventTypeId(eventType);
pe.participantId(participantPosition.participantId());
pe.eventTime(participantPosition.sampleTime());
pe.aesItemId(borderline.id);
pe.partyId(participantPosition.partyId());
pe.aesName(borderline.name.toStdString());
pe.equipmentNumber(equipmentNumber);
pe.position(participantPosition.pos());
pe.id = m_ddsHandler->getParticipantEventId();
pe.eventTypeId = eventType;
pe.participantId = participantPosition.participantId;
pe.eventTime = participantPosition.sampleTime;
pe.aesItemId = borderline.id;
pe.partyId = participantPosition.partyId;
pe.aesName = borderline.name.toStdString();
pe.equipmentNumber = equipmentNumber;
pe.position = participantPosition.pos;
m_ddsHandler->dtsCes()->publish(pe);
qint64 id = pe.id();
qint64 id = pe.id;
QTimer::singleShot(1 * 60 * 1000, this, [id, this]() { m_ddsHandler->dtsCes()->removeParticipantEventByKey(id); });
}
HandlerParticipantBorderline::BorderlineUtm::BorderlineUtm(const AreaEffectSimulation::Borderline &bl)
: id(bl.id())
, operatorId(bl.operatorId())
, partyId(bl.partyId.is_set() ? bl.partyId.get() : -1)
, name(QString::fromStdString(bl.name()))
: id(bl.id)
, operatorId(bl.operatorId)
, partyId(bl.partyId.has_value() ? bl.partyId.get() : -1)
, name(QString::fromStdString(bl.name))
{
points.reserve(bl.segments().size());
for (const Core::GeoPosition2D &pointGeo : bl.segments())
points.reserve(bl.segments.size());
for (const Core::GeoPosition2D &pointGeo : bl.segments)
points.push_back(CentralEffectSimulation::geographic2Utm(pointGeo, &zone));
boundingBox = points.boundingRect();
@@ -69,12 +69,12 @@ bool HandlerSimulatedMovement::loadSimulatedMovementFromDb()
for (const CentralEffectSimulation::Database::CesSimulatedMovement &data : std::as_const(simMoveVec))
{
CentralEffectSimulation::SimulatedMovement request;
request.id(data.id);
request.name(data.name.toStdString());
request.startTime(data.startTime);
request.participantId(data.participantId);
request.repeat(data.repeat);
request.nextPoint(data.nextpoint);
request.id = data.id;
request.name = data.name.toStdString();
request.startTime = data.startTime;
request.participantId = data.participantId;
request.repeat = data.repeat;
request.nextPoint = data.nextpoint;
DEBUG_LOG(m_logger) << "Loading SimulatedMovement: " << request;
QMap <int, CentralEffectSimulation::Database::CesSimulatedMovementSegment> segDbMap; // QMap to get it sorted
@@ -83,16 +83,16 @@ bool HandlerSimulatedMovement::loadSimulatedMovementFromDb()
if (segData.simulatedMovementId == data.id)
segDbMap.insert(segData.positionIndex, segData);
}
request.segments().reserve(segDbMap.size());
request.segments.reserve(segDbMap.size());
CentralEffectSimulation::SimulatedMovementSegment seg;
for (const CentralEffectSimulation::Database::CesSimulatedMovementSegment &segDb : std::as_const(segDbMap))
{
seg.delay(segDb.delay);
seg.name(segDb.name.toStdString());
seg.speed(segDb.speed);
seg.position(Core::GeoPosition2D(segDb.position.x(),
segDb.position.y()));
request.segments().push_back(seg);
seg.delay = segDb.delay;
seg.name = segDb.name.toStdString();
seg.speed = segDb.speed;
seg.position = Core::GeoPosition2D(segDb.position.x(),
segDb.position.y());
request.segments.push_back(seg);
}
SimulationMovement *sm = new SimulationMovement(m_ddsHandler, m_db, m_handlerParticipant, request);
m_simulationMovements.insert(sm->id(), sm);
@@ -108,8 +108,8 @@ Core::FunctionReplyObject HandlerSimulatedMovement::insertInDb(const CentralEffe
DBTransaction trans(m_db->database());
if (m_simulationMovements.contains(request.id()))
newSimulatedMovement.nextpoint = m_simulationMovements.value(request.id())->getNextPoint();
if (m_simulationMovements.contains(request.id))
newSimulatedMovement.nextpoint = m_simulationMovements.value(request.id)->getNextPoint();
else // new Simulation
newSimulatedMovement.nextpoint = 1;
@@ -119,13 +119,13 @@ Core::FunctionReplyObject HandlerSimulatedMovement::insertInDb(const CentralEffe
CentralEffectSimulation::Database::CesSimulatedMovementSegment newSegment;
newSegment.simulatedMovementId = newSimulatedMovement.id;
for (const CentralEffectSimulation::SimulatedMovementSegment &seg : request.segments())
for (const CentralEffectSimulation::SimulatedMovementSegment &seg : request.segments)
{
newSegment.id = 0; // insert
newSegment.delay = seg.delay();
newSegment.speed = seg.speed();
newSegment.name = QString::fromStdString(seg.name());
newSegment.position = QPointF(seg.position().lon(), seg.position().lat());
newSegment.delay = seg.delay;
newSegment.speed = seg.speed;
newSegment.name = QString::fromStdString(seg.name);
newSegment.position = QPointF(seg.position.lon, seg.position.lat);
if (!m_db->insert(newSegment))
return Core::FunctionReplyObject(0, tr_lts("dds", "Error adding 'CesSimulatedMovementSegment' to database"));
@@ -134,7 +134,7 @@ Core::FunctionReplyObject HandlerSimulatedMovement::insertInDb(const CentralEffe
trans.commit();
DEBUG_LOG(m_logger) << "newSimulatedMovement.id=" << newSimulatedMovement.id << " request.id=" << request.id();
DEBUG_LOG(m_logger) << "newSimulatedMovement.id=" << newSimulatedMovement.id << " request.id=" << request.id;
return Core::FunctionReplyObject(newSimulatedMovement.id);
} // end of insertInDb
@@ -152,19 +152,19 @@ Core::FunctionReplyObject HandlerSimulatedMovement::updateDb(const CentralEffect
// Insert new segments:
CentralEffectSimulation::Database::CesSimulatedMovementSegment newSegment;
newSegment.simulatedMovementId = newSimulatedMovement.id;
for (const CentralEffectSimulation::SimulatedMovementSegment &seg : request.segments())
for (const CentralEffectSimulation::SimulatedMovementSegment &seg : request.segments)
{
newSegment.id = 0; // insert
newSegment.delay = seg.delay();
newSegment.speed = seg.speed();
newSegment.name = QString::fromStdString(seg.name());
newSegment.position = QPointF(seg.position().lon(), seg.position().lat());
newSegment.delay = seg.delay;
newSegment.speed = seg.speed;
newSegment.name = QString::fromStdString(seg.name);
newSegment.position = QPointF(seg.position.lon, seg.position.lat);
if (!m_db->insert(newSegment))
return Core::FunctionReplyObject(0, tr_lts("dds", "Error adding 'CesSimulatedMovementSegment' to database"));
++newSegment.positionIndex;
}
DEBUG_LOG(m_logger) << "newSimulatedMovement.id=" << newSimulatedMovement.id << " request.id=" << request.id();
DEBUG_LOG(m_logger) << "newSimulatedMovement.id=" << newSimulatedMovement.id << " request.id=" << request.id;
return Core::FunctionReplyObject(newSimulatedMovement.id);
} // end of updateDb
@@ -208,23 +208,23 @@ void HandlerSimulatedMovement::onSimulatedMovementModifyRequest(const rti::core:
const CentralEffectSimulation::SimulatedMovement &request)
{
DEBUG_LOG(m_logger) << "onSimulatedMovementModifyRequest: " << request;
m_jumpToStart = request.jumpToStart();
m_jumpToStart = request.jumpToStart;
// we allow a modify with requestId = 0 and participantId != 0
SimulationMovement *sm = findSimulationMovement(request.id(), request.participantId());
SimulationMovement *sm = findSimulationMovement(request.id, request.participantId);
if (sm)
sm->setSimulatedMovementRequest(request);
else
sm = new SimulationMovement(m_ddsHandler, m_db, m_handlerParticipant, request);
// New Route
if (request.jumpToStart())
if (request.jumpToStart)
{
DEBUG_LOG(m_logger) << "sm->setJump(true)";
sm->setJump(true);
}
Core::FunctionReplyObject reply = request.id() > 0
Core::FunctionReplyObject reply = request.id > 0
? updateDb(sm->simMovementData())
: insertInDb(sm->simMovementData());
@@ -232,7 +232,7 @@ void HandlerSimulatedMovement::onSimulatedMovementModifyRequest(const rti::core:
m_simulationMovements[sm->id()] = sm;
publishSimulatedMovement(request);
setParticipantAsSimulated(request.participantId(), true);
setParticipantAsSimulated(request.participantId, true);
DEBUG_LOG(m_logger) << "simulatedMovementModifyReply id=" << reply.id();
@@ -268,7 +268,7 @@ Core::FunctionReplyObject HandlerSimulatedMovement::removeSimulatedMovement(int3
void HandlerSimulatedMovement::onSimulatedMovementRemoveRequest(const rti::core::SampleIdentity &cookie,
const Core::RemoveElementRequest &request)
{
Core::FunctionReplyObject reply = removeSimulatedMovement(request.id());
Core::FunctionReplyObject reply = removeSimulatedMovement(request.id);
if (reply.error())
WARNING_LOG(m_logger) << reply();
m_ddsHandler->ftsCes()->simulatedMovementRemoveReply(cookie, reply);
@@ -283,7 +283,7 @@ void HandlerSimulatedMovement::onSimulatedMovementRemoveByParticipantIdRequest(c
int id = 0;
for (const SimulationMovement *simMovement : std::as_const(m_simulationMovements))
{
if (simMovement->participantId() == request.participantId())
if (simMovement->participantId() == request.participantId)
{
id = simMovement->id();
break;
@@ -44,18 +44,18 @@ SimulationMovement::SimulationMovement(const std::shared_ptr<CentralEffectSimula
SimulationMovement::~SimulationMovement()
{
DEBUG_LOG(m_logger) << "Delete SimulatedMovement "
<< " id=" << m_simMovement.id()
<< " participantId= " << m_simMovement.participantId();
m_ddsHandler->dtsCes()->removeSimulatedMovementByKey(m_simMovement.id());
<< " id=" << m_simMovement.id
<< " participantId= " << m_simMovement.participantId;
m_ddsHandler->dtsCes()->removeSimulatedMovementByKey(m_simMovement.id);
m_segTimer->stop();
m_moveTimer->stop();
}
void SimulationMovement::setSimulatedMovementRequest(const CentralEffectSimulation::SimulatedMovement &sml)
{
int nextPoint = m_simMovement.nextPoint();
int nextPoint = m_simMovement.nextPoint;
m_simMovement = sml;
m_simMovement.nextPoint(nextPoint);
m_simMovement.nextPoint = nextPoint;
m_moveTime = 1;
m_segTimer->stop();
@@ -64,32 +64,32 @@ void SimulationMovement::setSimulatedMovementRequest(const CentralEffectSimulati
m_points.clear();
m_segSpeed.clear();
m_segDelay.clear();
m_points.reserve(sml.segments().size());
m_segSpeed.reserve(sml.segments().size());
m_segDelay.reserve(sml.segments().size());
m_points.reserve(sml.segments.size());
m_segSpeed.reserve(sml.segments.size());
m_segDelay.reserve(sml.segments.size());
for (const CentralEffectSimulation::SimulatedMovementSegment &point : sml.segments())
for (const CentralEffectSimulation::SimulatedMovementSegment &point : sml.segments)
{
const Core::GeoPosition2D &pointGeo = point.position();
const Core::GeoPosition2D &pointGeo = point.position;
m_points.push_back(m_zone == -1 ? CentralEffectSimulation::geographic2Utm(pointGeo, &m_zone) : CentralEffectSimulation::geographic2Utm(pointGeo, m_zone));
DEBUG_LOG(m_logger) << "pointGeo lat=" << pointGeo.lat() << " lon=" << pointGeo.lon()
<< " point lat=" << point.position().lat() << " lon=" << point.position().lon()
DEBUG_LOG(m_logger) << "pointGeo lat=" << pointGeo.lat << " lon=" << pointGeo.lon
<< " point lat=" << point.position.lat << " lon=" << point.position.lon
<< " utmPoint=" << CentralEffectSimulation::debug(m_points.last());
m_segSpeed.append(point.speed());
m_segDelay.append(point.delay());
m_segSpeed.append(point.speed);
m_segDelay.append(point.delay);
}
// Only start simulation in future
DEBUG_LOG(m_logger) << "m_startTime - QDateTime::currentMSecsSinceEpoch()=" << m_simMovement.startTime() - QDateTime::currentMSecsSinceEpoch()
<< " m_startTime=" << m_simMovement.startTime()
DEBUG_LOG(m_logger) << "m_startTime - QDateTime::currentMSecsSinceEpoch()=" << m_simMovement.startTime - QDateTime::currentMSecsSinceEpoch()
<< " m_startTime=" << m_simMovement.startTime
<< " currentTime=" << QDateTime::currentMSecsSinceEpoch()
<< " m_nextPoint=" << m_simMovement.nextPoint();
<< " m_nextPoint=" << m_simMovement.nextPoint;
if (m_simMovement.nextPoint() > 0 && m_points.size() > m_simMovement.nextPoint())
m_newPos = m_points[m_simMovement.nextPoint()].toPoint();
if (m_simMovement.nextPoint > 0 && m_points.size() > m_simMovement.nextPoint)
m_newPos = m_points[m_simMovement.nextPoint].toPoint();
if (m_simMovement.startTime() - QDateTime::currentMSecsSinceEpoch() > 0)
m_moveTimer->start(m_simMovement.startTime() - QDateTime::currentMSecsSinceEpoch());
if (m_simMovement.startTime - QDateTime::currentMSecsSinceEpoch() > 0)
m_moveTimer->start(m_simMovement.startTime - QDateTime::currentMSecsSinceEpoch());
else
{
DEBUG_LOG(m_logger) << "Service-Start";
@@ -99,7 +99,7 @@ void SimulationMovement::setSimulatedMovementRequest(const CentralEffectSimulati
void SimulationMovement::updateNextPointInDb()
{
if (m_simMovement.id() <= 0)
if (m_simMovement.id <= 0)
{
WARNING_LOG(m_logger) << "Internal error - id not set!";
return;
@@ -111,55 +111,55 @@ void SimulationMovement::updateNextPointInDb()
void SimulationMovement::startNewSegment()
{
DEBUG_LOG(m_logger) << "simulate participantId = " << m_simMovement.participantId()
<< " m_nextPoint = " << m_simMovement.nextPoint();
DEBUG_LOG(m_logger) << "simulate participantId = " << m_simMovement.participantId
<< " m_nextPoint = " << m_simMovement.nextPoint;
m_moveTime = 1;
if (m_simMovement.nextPoint() < m_points.size())
if (m_simMovement.nextPoint < m_points.size())
{
QPointF p1;
// Next segment
const CentralEffectSimulation::HandlerParticipant::CesParticipantData pos = m_handlerParticipant->position(m_simMovement.participantId());
if (pos.participantId() == m_simMovement.participantId())
const CentralEffectSimulation::HandlerParticipant::CesParticipantData pos = m_handlerParticipant->position(m_simMovement.participantId);
if (pos.participantId == m_simMovement.participantId)
{
p1 = CentralEffectSimulation::geographic2Utm(pos.pos(), m_zone);
p1 = CentralEffectSimulation::geographic2Utm(pos.pos, m_zone);
DEBUG_LOG(m_logger) << "Next segment ParticipantPosition =" << CentralEffectSimulation::debug(p1);
}
else
{
if (m_simStart) // Wait for participantPosition
{
INFO_LOG(m_logger) << "Wait for participant position participantId =" << m_simMovement.participantId();
INFO_LOG(m_logger) << "Wait for participant position participantId =" << m_simMovement.participantId;
m_segTimer->start(1000);
return;
}
if (m_simMovement.nextPoint() > 0)
if (m_simMovement.nextPoint > 0)
{
p1 = m_points.at(m_simMovement.participantId() - 1);
DEBUG_LOG(m_logger) << "nextPoint>0 (" << m_simMovement.nextPoint() << ") ParticipantPosition =" << CentralEffectSimulation::debug(p1);
p1 = m_points.at(m_simMovement.participantId - 1);
DEBUG_LOG(m_logger) << "nextPoint>0 (" << m_simMovement.nextPoint << ") ParticipantPosition =" << CentralEffectSimulation::debug(p1);
}
else
{
p1 = m_points.at(m_points.size() - 1);
DEBUG_LOG(m_logger) << "nextPoint=" << m_simMovement.nextPoint() << " ParticipantPosition =" << CentralEffectSimulation::debug(p1);
DEBUG_LOG(m_logger) << "nextPoint=" << m_simMovement.nextPoint << " ParticipantPosition =" << CentralEffectSimulation::debug(p1);
}
}
const QPointF &p2 = m_points.at(m_simMovement.nextPoint());
const QPointF &p2 = m_points.at(m_simMovement.nextPoint);
m_actSegment.setPoints(p1, p2);
int curDelay = m_segDelay.at(m_simMovement.nextPoint());
int curDelay = m_segDelay.at(m_simMovement.nextPoint);
DEBUG_LOG(m_logger) << "New Segment: p1 = " << CentralEffectSimulation::debug(p1) << " p2=" << CentralEffectSimulation::debug(p2)
<< " delay =" << curDelay;
m_moveTimer->start(curDelay);
}
else
{
if (m_simMovement.repeat())
if (m_simMovement.repeat)
{
m_simMovement.nextPoint(0);
m_moveTimer->start(m_segDelay.at(m_simMovement.nextPoint()));
m_simMovement.nextPoint = 0;
m_moveTimer->start(m_segDelay.at(m_simMovement.nextPoint));
}
else
m_simMovement.nextPoint(-1); // Invalid value
m_simMovement.nextPoint = -1; // Invalid value
}
}
@@ -168,10 +168,10 @@ void SimulationMovement::setJump(bool jump)
DEBUG_LOG(m_logger) << "Jump";
if (jump)
{
m_simMovement.nextPoint(1);
m_simMovement.nextPoint = 1;
m_newPos = m_points.at(0);
m_actSegment.setPoints(m_newPos,
m_points.at(m_simMovement.nextPoint()));
m_points.at(m_simMovement.nextPoint));
m_moveTime = 1;
m_simStart = false;
publishNewPos();
@@ -181,7 +181,7 @@ void SimulationMovement::setJump(bool jump)
void SimulationMovement::publishSimulatedMovement()
{
DEBUG_LOG(m_logger) << " m_nextPoint= " << m_simMovement.nextPoint();
DEBUG_LOG(m_logger) << " m_nextPoint= " << m_simMovement.nextPoint;
m_ddsHandler->dtsCes()->publish(m_simMovement);
}
@@ -202,10 +202,10 @@ void SimulationMovement::publishNewPos()
const Core::GeoPosition pos(Core::GeoPosition(posGeo.x(), posGeo.y(), 0));
participantPos.equipmentNumber(-m_simMovement.participantId()); // negative - treat as participantId
participantPos.sampleTime(m_ddsHandler->currentPartitionTime());
participantPos.position().position(pos);
participantPos.position().reportingSource(Core::PositionReportingSource::MovementSimulation);
participantPos.equipmentNumber = -m_simMovement.participantId; // negative - treat as participantId
participantPos.sampleTime = m_ddsHandler->currentPartitionTime();
participantPos.position.position = pos;
participantPos.position.reportingSource = Core::PositionReportingSource::MovementSimulation;
m_ddsHandler->dtsTab()->publish(participantPos);
@@ -214,23 +214,23 @@ void SimulationMovement::publishNewPos()
void SimulationMovement::move()
{
DEBUG_LOG(m_logger) << "move";
if (m_simMovement.nextPoint() < 0)
if (m_simMovement.nextPoint < 0)
{
DEBUG_LOG(m_logger) << "move next point < 0";
return;
}
const CentralEffectSimulation::HandlerParticipant::CesParticipantData partPos = m_handlerParticipant->position(m_simMovement.participantId());
const QPointF participantPosUtm = CentralEffectSimulation::geographic2Utm(partPos.pos(), m_zone);
if (partPos.participantId() != m_simMovement.participantId())
const CentralEffectSimulation::HandlerParticipant::CesParticipantData partPos = m_handlerParticipant->position(m_simMovement.participantId);
const QPointF participantPosUtm = CentralEffectSimulation::geographic2Utm(partPos.pos, m_zone);
if (partPos.participantId != m_simMovement.participantId)
{
DEBUG_LOG(m_logger) << "move no ParticipantId=" << m_simMovement.participantId();
DEBUG_LOG(m_logger) << "move no ParticipantId=" << m_simMovement.participantId;
m_moveTimer->start(1000);
return;
}
if (!partPos.positionValid)
{
DEBUG_LOG(m_logger) << "move no ParticipantId=" << m_simMovement.participantId();
DEBUG_LOG(m_logger) << "move no ParticipantId=" << m_simMovement.participantId;
m_moveTimer->start(1000);
return;
}
@@ -240,7 +240,7 @@ void SimulationMovement::move()
if (m_simStart)
{
m_actSegment.setPoints(participantPosUtm,
m_points.at(m_simMovement.nextPoint()));
m_points.at(m_simMovement.nextPoint));
step = m_actSegment;
DEBUG_LOG(m_logger) << "m_simStart set m_actSegment"
<< " p1: " << CentralEffectSimulation::debug(m_actSegment.p1())
@@ -248,14 +248,14 @@ void SimulationMovement::move()
m_simStart = false;
}
if (m_segSpeed[m_simMovement.nextPoint()] <= 0.0)
if (m_segSpeed[m_simMovement.nextPoint] <= 0.0)
{
DEBUG_LOG(m_logger) << "move next point < 0";
return;
}
m_newPos = m_points[m_simMovement.nextPoint()];
step.setLength(m_segSpeed[m_simMovement.nextPoint()] * m_moveTime);
m_newPos = m_points[m_simMovement.nextPoint];
step.setLength(m_segSpeed[m_simMovement.nextPoint] * m_moveTime);
m_moveTime++;
// ready criterion
if (step.length() >= m_actSegment.length() + 0.1 ||
@@ -263,25 +263,25 @@ void SimulationMovement::move()
{
DEBUG_LOG(m_logger) << "move ready step.length()=" << step.length()
<< " m_actSegment.length()=" << m_actSegment.length();
m_simMovement.nextPoint(m_simMovement.nextPoint() + 1);
if (m_simMovement.nextPoint() >= m_points.size())
m_simMovement.nextPoint = m_simMovement.nextPoint + 1;
if (m_simMovement.nextPoint >= m_points.size())
{
if (m_simMovement.repeat())
m_simMovement.nextPoint(0);
if (m_simMovement.repeat)
m_simMovement.nextPoint = 0;
else
{
m_simMovement.nextPoint(-1); // Invalid value
m_simMovement.nextPoint = -1; // Invalid value
return;
}
}
updateNextPointInDb();
DEBUG_LOG(m_logger) << "ready move participantId = " << m_simMovement.participantId()
<< " m_nextPoint =" << m_simMovement.nextPoint()
DEBUG_LOG(m_logger) << "ready move participantId = " << m_simMovement.participantId
<< " m_nextPoint =" << m_simMovement.nextPoint
<< " newPos =" << m_newPos.x() << "/" << m_newPos.y()
<< " m_moveTime=" << m_moveTime
<< " length=" << m_segSpeed[m_simMovement.nextPoint()] * m_moveTime
<< " length=" << m_segSpeed[m_simMovement.nextPoint] * m_moveTime
<< " step.length=" << step.length()
<< " m_segSpeed[m_nextPoint]=" << m_segSpeed[m_simMovement.nextPoint()]
<< " m_segSpeed[m_nextPoint]=" << m_segSpeed[m_simMovement.nextPoint]
<< " m_moveTime=" << m_moveTime
<< " m_actSegment.length=" << m_actSegment.length()
<< " m_zone=" << m_zone;
@@ -291,13 +291,13 @@ void SimulationMovement::move()
return;
}
m_newPos = step.p2();
DEBUG_LOG(m_logger) << "move participantId = " << m_simMovement.participantId()
<< " m_nextPoint =" << m_simMovement.nextPoint()
DEBUG_LOG(m_logger) << "move participantId = " << m_simMovement.participantId
<< " m_nextPoint =" << m_simMovement.nextPoint
<< " newPos =" << m_newPos.x() << "/" << m_newPos.y()
<< " m_moveTime=" << m_moveTime
<< " length=" << m_segSpeed[m_simMovement.nextPoint()] * m_moveTime
<< " length=" << m_segSpeed[m_simMovement.nextPoint] * m_moveTime
<< " step.length=" << step.length()
<< " m_speed=" << m_segSpeed[m_simMovement.nextPoint()]
<< " m_speed=" << m_segSpeed[m_simMovement.nextPoint]
<< " m_moveTime=" << m_moveTime
<< " m_actSegment.length=" << m_actSegment.length()
<< " m_zone=" << m_zone;
@@ -308,12 +308,12 @@ void SimulationMovement::move()
CentralEffectSimulation::Database::CesSimulatedMovement SimulationMovement::toDb(const CentralEffectSimulation::SimulatedMovement &ddsSimMovement)
{
CentralEffectSimulation::Database::CesSimulatedMovement ret;
ret.id = ddsSimMovement.id();
ret.name = QString::fromStdString(ddsSimMovement.name());
ret.startTime = ddsSimMovement.startTime();
ret.participantId = ddsSimMovement.participantId();
ret.repeat = ddsSimMovement.repeat();
ret.nextpoint = ddsSimMovement.nextPoint();
ret.id = ddsSimMovement.id;
ret.name = QString::fromStdString(ddsSimMovement.name);
ret.startTime = ddsSimMovement.startTime;
ret.participantId = ddsSimMovement.participantId;
ret.repeat = ddsSimMovement.repeat;
ret.nextpoint = ddsSimMovement.nextPoint;
return ret;
}
@@ -32,13 +32,13 @@ public:
~SimulationMovement();
void setSimulatedMovementRequest(const CentralEffectSimulation::SimulatedMovement &sml);
int id() const { return m_simMovement.id(); }
void setId(int id) { m_simMovement.id(id); }
int participantId() const { return m_simMovement.participantId(); }
int id() const { return m_simMovement.id; }
void setId(int id) { m_simMovement.id = id; }
int participantId() const { return m_simMovement.participantId; }
void setJump(bool jump);
void setnextPoint(int nextPoint) { m_simMovement.nextPoint(nextPoint); }
int getNextPoint() const { return m_simMovement.nextPoint(); }
void setnextPoint(int nextPoint) { m_simMovement.nextPoint = nextPoint; }
int getNextPoint() const { return m_simMovement.nextPoint; }
void publishSimulatedMovement();
const CentralEffectSimulation::SimulatedMovement &simMovementData() const { return m_simMovement; }
@@ -54,7 +54,7 @@ bool BuildingModel::isValid(const LtsUtils::QPoint3D &point)
bool BuildingModel::isValid(const Core::GeoPosition &point)
{
return !qFuzzyIsNull(point.lon()) && !qFuzzyIsNull(point.lat()) && point.z() > invalidGeoPosition().z();
return !qFuzzyIsNull(point.lon) && !qFuzzyIsNull(point.lat) && point.z > invalidGeoPosition().z;
}
LtsUtils::QPoint3D BuildingModel::invalidPosition()
@@ -93,10 +93,10 @@ bool BuildingModel::init(
m_buildingId = buildingId;
TRACE_LOG(m_logger) << LOGFUNCTION << " START, m_buildingId=" << m_buildingId;
m_angle = mse.angle() * M_PI / 180.;
m_refPosGeo = mse.geoPosition();
m_refPosUtm = LtsCoordTrans::UtmCoordinate::fromGeographic(mse.geoPosition().lon(), mse.geoPosition().lat());
m_refPos = {m_refPosUtm.x, m_refPosUtm.y, m_refPosGeo.z()};
m_angle = mse.angle * M_PI / 180.;
m_refPosGeo = mse.geoPosition;
m_refPosUtm = LtsCoordTrans::UtmCoordinate::fromGeographic(mse.geoPosition.lon, mse.geoPosition.lat);
m_refPos = {m_refPosUtm.x, m_refPosUtm.y, m_refPosGeo.z};
DEBUG_LOG(m_logger) << LOGFUNCTION << " START, m_buildingId=" << m_buildingId
<< ", m_angle=" << m_angle
@@ -104,8 +104,8 @@ bool BuildingModel::init(
<< ", m_refPos=" << m_refPos;
for (const InfrastructureManagement::FootprintElement &footprintElement : std::as_const(mfp.elements()))
m_footprint << QPointF(footprintElement.relPosition().offsetX(), footprintElement.relPosition().offsetY());
for (const InfrastructureManagement::FootprintElement &footprintElement : std::as_const(mfp.elements))
m_footprint << QPointF(footprintElement.relPosition.offsetX, footprintElement.relPosition.offsetY);
if (m_footprint.isEmpty())
{
ERROR_LOG(m_logger) << "Error reading MainFootprint for building " << m_buildingId;
@@ -303,9 +303,9 @@ LtsUtils::QPoint3D BuildingModel::fromGeographic(const Core::GeoPosition &point)
{
// qCritical() << " point.z = " << point.z();
// qCritical() << " m_refPos = " << m_refPos.x() << " - " << m_refPos.y() << " - " << m_refPos.z();
const LtsCoordTrans::UtmCoordinate utm = LtsCoordTrans::UtmCoordinate::fromGeographic(point.lon(), point.lat());
const LtsCoordTrans::UtmCoordinate utm = LtsCoordTrans::UtmCoordinate::fromGeographic(point.lon, point.lat);
// qCritical() << " utm = " << utm.mgrs(7);
return toReference({utm.x, utm.y, point.z()});
return toReference({utm.x, utm.y, point.z});
}
QVector<LtsUtils::QPoint3D> BuildingModel::fromGeographic(const std::vector<Core::GeoPosition> &points) const
@@ -16,6 +16,7 @@
#include <QtCore/QPointF>
#include <QtGui/QPolygonF>
#include <QtCore/QTimer>
#include <QtCore/QVariant>
#include <QtGui/QTransform>
#include <LtsUtilsCore/dds_bitarray.h>
@@ -92,34 +93,34 @@ bool HandlerAesData::init()
void HandlerAesData::onBoobyTrapChanged(const AreaEffectSimulation::BoobyTrap &data, DataModification modType)
{
DEBUG_LOG(m_logger) << "onBoobyTrapChanged"
<< " id=" << data.id()
<< " impactPosition=" << data.impactPosition()
<< " impactRadius=" << data.impactRadius()
<< " effectStateId=" << data.effectStateId();
<< " id=" << data.id
<< " impactPosition=" << data.impactPosition
<< " impactRadius=" << data.impactRadius
<< " effectStateId=" << data.effectStateId;
if (data.isDeleted()
|| data.effectStateId() == AreaEffectSimulation::AesEffectState::EsRemoved
if (data.isDeleted
|| data.effectStateId == AreaEffectSimulation::AesEffectState::EsRemoved
|| modType == DataModification::eRemoved)
return;
if (!data.triggered())
if (!data.triggered)
return;
INFO_LOG(m_logger) << "HandlerParticipantBoobyTrap::onBoobyTrapChanged"
<< " data.id=" << data.id()
<< " effectStateId=" << data.effectStateId();
<< " data.id=" << data.id
<< " effectStateId=" << data.effectStateId;
if (!data.effectStart.is_set())
if (!data.effectStart.has_value())
return;
if ((m_ddsHandler->currentPartitionTime() - (data.effectStart.get() + data.effectDuration())) > 2000)
if ((m_ddsHandler->currentPartitionTime() - (data.effectStart.get() + data.effectDuration)) > 2000)
{
INFO_LOG(m_logger) << "onBoobyTrap outdated";
return;
}
AreaEffectSimulation::AesItemView itemView;
AreaEffectSimulation::AesType aesType = AreaEffectSimulation::AesType::AtBoobyTrap;
m_ddsHandler->dtcAes()->aesItemViewFromEntityId(data.id(), aesType, itemView);
m_ddsHandler->dtcAes()->aesItemViewFromEntityId(data.id, aesType, itemView);
checkBuildingsHit(itemView);
}
@@ -132,40 +133,40 @@ void HandlerAesData::onBoobyTrapChanged(const AreaEffectSimulation::BoobyTrap &d
void HandlerAesData::onAesItemViewChanged(const AreaEffectSimulation::AesItemView &data, DataModification modType)
{
DEBUG_LOG(m_logger) << "onAesItemViewChanged"
<< " data.aesTypeId()=" << data.aesTypeId();
<< " data.aesTypeId()=" << data.aesTypeId;
if (modType != DataModification::eAdded &&
modType != DataModification::eModified)
return;
DEBUG_LOG(m_logger) << "Got AesItemView: " << data.effectStateId();
if (data.effectStateId() == AreaEffectSimulation::AesEffectState::EsExpired)
DEBUG_LOG(m_logger) << "Got AesItemView: " << data.effectStateId;
if (data.effectStateId == AreaEffectSimulation::AesEffectState::EsExpired)
{
INFO_LOG(m_logger) << "AesEffectState::EsExpired"
<< " currentPartitionTime=" << m_ddsHandler->currentPartitionTime()
<< " effectStart=" << data.effectStart()
<< " diff = " << m_ddsHandler->currentPartitionTime() - data.effectStart() ;
<< " effectStart=" << data.effectStart
<< " diff = " << m_ddsHandler->currentPartitionTime() - data.effectStart ;
if (m_ddsHandler->currentPartitionTime() == 0)
return;
if ((data.aesTypeId() == AreaEffectSimulation::AesType::AtOffRouteMineSecondary)
|| (data.aesTypeId() == AreaEffectSimulation::AesType::AtBoobyTrapSecondary))
if ((data.aesTypeId == AreaEffectSimulation::AesType::AtOffRouteMineSecondary)
|| (data.aesTypeId == AreaEffectSimulation::AesType::AtBoobyTrapSecondary))
{
if (data.aesTypeId() == AreaEffectSimulation::AesType::AtOffRouteMineSecondary)
if (data.aesTypeId == AreaEffectSimulation::AesType::AtOffRouteMineSecondary)
{
DEBUG_LOG(m_logger) << "AtOffRouteMineSecondary id=" << data.id() / 1000;
auto offRouteMine = m_ddsHandler->dtcAes()->offRouteMine((int)(data.id() / 1000));
if (!offRouteMine.effectStart.is_set())
DEBUG_LOG(m_logger) << "AtOffRouteMineSecondary id=" << data.id / 1000;
auto offRouteMine = m_ddsHandler->dtcAes()->offRouteMine((int)(data.id / 1000));
if (!offRouteMine.effectStart.has_value())
{
DEBUG_LOG(m_logger) << "!offRouteMine.effectStart.is_set()";
DEBUG_LOG(m_logger) << "!offRouteMine.effectStart.has_value()";
return;
}
DEBUG_LOG(m_logger) << " currentPartitionTime=" << m_ddsHandler->currentPartitionTime()
<< " effectStart=" << offRouteMine.effectStart()
<< " effectDuration=" << offRouteMine.effectDuration()
<< " diff = " << m_ddsHandler->currentPartitionTime() - (offRouteMine.effectStart.get() + offRouteMine.effectDuration()) ;
<< " effectStart=" << offRouteMine.effectStart
<< " effectDuration=" << offRouteMine.effectDuration
<< " diff = " << m_ddsHandler->currentPartitionTime() - (offRouteMine.effectStart.get() + offRouteMine.effectDuration) ;
if ((m_ddsHandler->currentPartitionTime() - (offRouteMine.effectStart.get() + offRouteMine.effectDuration())) < 2000)
if ((m_ddsHandler->currentPartitionTime() - (offRouteMine.effectStart.get() + offRouteMine.effectDuration)) < 2000)
{
DEBUG_LOG(m_logger) << "AtBoobyTrapSecondary Mine wird ausgeloeset.";
checkBuildingsHit(data);
@@ -177,22 +178,22 @@ void HandlerAesData::onAesItemViewChanged(const AreaEffectSimulation::AesItemVie
return;
}
}
if (data.aesTypeId() == AreaEffectSimulation::AesType::AtBoobyTrapSecondary)
if (data.aesTypeId == AreaEffectSimulation::AesType::AtBoobyTrapSecondary)
{
DEBUG_LOG(m_logger) << "AtBoobyTrapSecondary id=" << data.id() / 1000;
DEBUG_LOG(m_logger) << "AtBoobyTrapSecondary id=" << data.id / 1000;
//auto offRouteMine = m_ddsHandler->dtcAes()->offRouteMine((int) (data.id() / 1000));
auto boobyTrap = m_ddsHandler->dtcAes()->boobyTrap((int)(data.id() / 1000));
if (!boobyTrap.effectStart.is_set())
auto boobyTrap = m_ddsHandler->dtcAes()->boobyTrap((int)(data.id / 1000));
if (!boobyTrap.effectStart.has_value())
{
DEBUG_LOG(m_logger) << "!offRouteMine.effectStart.is_set()";
DEBUG_LOG(m_logger) << "!offRouteMine.effectStart.has_value()";
return;
}
DEBUG_LOG(m_logger) << " currentPartitionTime=" << m_ddsHandler->currentPartitionTime()
<< " effectStart=" << boobyTrap.effectStart()
<< " effectDuration=" << boobyTrap.effectDuration()
<< " diff = " << m_ddsHandler->currentPartitionTime() - (boobyTrap.effectStart.get() + boobyTrap.effectDuration()) ;
<< " effectStart=" << boobyTrap.effectStart
<< " effectDuration=" << boobyTrap.effectDuration
<< " diff = " << m_ddsHandler->currentPartitionTime() - (boobyTrap.effectStart.get() + boobyTrap.effectDuration) ;
if ((m_ddsHandler->currentPartitionTime() - (boobyTrap.effectStart.get() + boobyTrap.effectDuration())) < 2000)
if ((m_ddsHandler->currentPartitionTime() - (boobyTrap.effectStart.get() + boobyTrap.effectDuration)) < 2000)
{
DEBUG_LOG(m_logger) << "AtBoobyTrapSecondary Mine wird ausgeloeset.";
checkBuildingsHit(data);
@@ -207,20 +208,20 @@ void HandlerAesData::onAesItemViewChanged(const AreaEffectSimulation::AesItemVie
DEBUG_LOG(m_logger) << "removeStates data";
removeStates(data);
DEBUG_LOG(m_logger) << "m_aesItemViewsUtm remove id" << data.aesItemId();
m_aesItemViewsUtm.remove(data.aesItemId());
DEBUG_LOG(m_logger) << "m_aesItemViewsUtm remove id" << data.aesItemId;
m_aesItemViewsUtm.remove(data.aesItemId);
}
}
}
void HandlerAesData::removeStates(const AreaEffectSimulation::AesItemView &data)
{
if (data.aesTypeId() != AreaEffectSimulation::AesType::AtExplosionArea)
if (data.aesTypeId != AreaEffectSimulation::AesType::AtExplosionArea)
return;
DEBUG_LOG(m_logger) << "Remove aesItemId=" << data.aesItemId();
DEBUG_LOG(m_logger) << "Remove aesItemId=" << data.aesItemId;
// remove State for each building
for (CentralEffectSimulation::BitfieldStates &bfs : m_bitfieldStatesBld)
bfs.remove(data.aesItemId());
bfs.remove(data.aesItemId);
} // end removeStates
void HandlerAesData::calculateBuildingExplosion(const AreaEffectSimulation::ChargeStruct &chargeStruct,
@@ -238,24 +239,24 @@ void HandlerAesData::calculateBuildingExplosion(const AreaEffectSimulation::Char
for (const CentralEffectSimulation::HandlerBuildingData::Footprint &footprint : std::as_const(footprints))
{
const Core::GeoPosition2D impactPosition2D(impactPosition.lon(), impactPosition.lat());
const Core::GeoPosition2D impactPosition2D(impactPosition.lon, impactPosition.lat);
if (inFootprint(impactPosition, footprint, impactRadius))
{
DEBUG_LOG(m_logger) << "ftc sendCESHitOnBuilding mseId = " << footprint.mseId
<< " chargeTypeId = " << chargeStruct.chargeTypeId()
<< " chargeTypeId = " << chargeStruct.chargeTypeId
<< " id = " << id
<< " currentPartitionTime = " << m_ddsHandler->currentPartitionTime()
<< " impactPosition2D.lon = " << impactPosition2D.lon()
<< " impactPosition2D.lat = " << impactPosition2D.lat();
<< " impactPosition2D.lon = " << impactPosition2D.lon
<< " impactPosition2D.lat = " << impactPosition2D.lat;
Buildings::SendCesHitOnBuildingRequest requestBld(
footprint.mseId,
chargeStruct.chargeTypeId(),
m_ddsHandler->dtcPdm()->getBuildingChargeEffectByChargeTypeId(chargeStruct.chargeTypeId()).destructiveFactor(),
m_ddsHandler->dtcPdm()->getBuildingChargeEffectByChargeTypeId(chargeStruct.chargeTypeId()).penetrationFactor(),
chargeStruct.chargeTypeId,
m_ddsHandler->dtcPdm()->getBuildingChargeEffectByChargeTypeId(chargeStruct.chargeTypeId).destructiveFactor,
m_ddsHandler->dtcPdm()->getBuildingChargeEffectByChargeTypeId(chargeStruct.chargeTypeId).penetrationFactor,
id,
m_ddsHandler->currentPartitionTime(),
Core::GeoPosition(impactPosition2D.lon(), impactPosition2D.lat(), 0.0),
Core::GeoPosition(impactPosition2D.lon, impactPosition2D.lat, 0.0),
QStringLiteral("properties").toStdString());
m_ddsHandler->ftcBld()->sendCesHitOnBuildingRequest(requestBld, this);
}
@@ -292,8 +293,8 @@ void HandlerAesData::onStartTimeReached()
// Timer stoppen und loeschen
AreaEffectSimulation::ChargeEffect data = m_chargeEffects.value(chargeEffectId);
AreaEffectSimulation::ChargeStruct chargeStruct(data.chargeTypeId(),data.igniterTypeId(), data.igniterFunctionId());
calculateBuildingExplosion(chargeStruct, data.position(), data.id());
AreaEffectSimulation::ChargeStruct chargeStruct(data.chargeTypeId,data.igniterTypeId, data.igniterFunctionId);
calculateBuildingExplosion(chargeStruct, data.position, data.id);
sender()->deleteLater();
m_chargeEffects.remove(chargeEffectId);
}
@@ -303,7 +304,7 @@ void HandlerAesData::onChargeEffectChanged(const AreaEffectSimulation::ChargeEff
DEBUG_LOG(m_logger) << "HandlerExplosions::onChargeEffectChanged";
if (modType == DataModification::eRemoved)
return;
const long long effectStart = data.effectStart();
const long long effectStart = data.effectStart;
DEBUG_LOG(m_logger) << "HandlerExplosions::onChargeEffectChanged"
<< ", effectStart=" << effectStart
@@ -318,23 +319,23 @@ void HandlerAesData::onChargeEffectChanged(const AreaEffectSimulation::ChargeEff
}
// Startzeit entspricht der aktuellen Zeit
if ( effectStart > m_ddsHandler->currentPartitionTime() - TIMEDIFFVALID
&& effectStart < m_ddsHandler->currentPartitionTime() + data.effectDuration() )
&& effectStart < m_ddsHandler->currentPartitionTime() + data.effectDuration )
{
DEBUG_LOG(m_logger) << "Startzeit entspricht der aktuellen Zeit";
AreaEffectSimulation::ChargeStruct chargeStruct;
chargeStruct.chargeTypeId(data.chargeTypeId());
chargeStruct.igniterTypeId(data.igniterTypeId());
calculateBuildingExplosion(chargeStruct, data.position(), data.id());
chargeStruct.chargeTypeId = data.chargeTypeId;
chargeStruct.igniterTypeId = data.igniterTypeId;
calculateBuildingExplosion(chargeStruct, data.position, data.id);
}
// Startzeit in der Zukunft:
else if (effectStart > m_ddsHandler->currentPartitionTime() + data.effectDuration())
else if (effectStart > m_ddsHandler->currentPartitionTime() + data.effectDuration)
{
// Start mit Timer
DEBUG_LOG(m_logger) << "Startzeit in der Zukunft"
<< ", id :" << data.id()
<< ", id :" << data.id
<< ", duration=" << effectStart - m_ddsHandler->currentPartitionTime();
m_chargeEffects.insert(data.id(), data);
startTimer(data.id(), effectStart - m_ddsHandler->currentPartitionTime());
m_chargeEffects.insert(data.id, data);
startTimer(data.id, effectStart - m_ddsHandler->currentPartitionTime());
}
DEBUG_LOG(m_logger) << "END onChargeEffectChanged";
@@ -346,30 +347,30 @@ void HandlerAesData::onExplosionSingleChanged(const AreaEffectSimulation::Explos
if (modType != DataModification::eAdded &&
modType != DataModification::eModified)
{
m_explosionSingleState.remove(data.id());
m_explosionSingleState.remove(data.id);
return;
}
if (data.effectStateId() == AreaEffectSimulation::AesEffectState::EsRemoved)
if (data.effectStateId == AreaEffectSimulation::AesEffectState::EsRemoved)
{
DEBUG_LOG(m_logger) << "Remove SingleExplosion";
m_explosionSingleState.remove(data.id());
m_explosionSingleState.remove(data.id);
return;
}
// Only handle transitions from prepared or fired to activated
if ((m_explosionSingleState.value(data.id()) == AreaEffectSimulation::AesEffectState::EsPrepared ||
m_explosionSingleState.value(data.id()) == AreaEffectSimulation::AesEffectState::EsFired) &&
data.effectStateId() == AreaEffectSimulation::AesEffectState::EsActivated)
if ((m_explosionSingleState.value(data.id) == AreaEffectSimulation::AesEffectState::EsPrepared ||
m_explosionSingleState.value(data.id) == AreaEffectSimulation::AesEffectState::EsFired) &&
data.effectStateId == AreaEffectSimulation::AesEffectState::EsActivated)
{
DEBUG_LOG(m_logger) << "Handle SingleExplosion";
handleExplosion = true;
}
m_explosionSingleState.insert(data.id(), data.effectStateId());
m_explosionSingleState.insert(data.id, data.effectStateId);
DEBUG_LOG(m_logger) << "Got ExplosionSingle";
if (handleExplosion)
{
calculateBuildingExplosion(data.chargeStruct(), data.impactPosition(), data.id());
calculateBuildingExplosion(data.chargeStruct, data.impactPosition, data.id);
}
} // onExplosionSingleChanged
@@ -377,10 +378,10 @@ void HandlerAesData::onAirSupportImpactChanged(const AreaEffectSimulation::AirSu
{
DEBUG_LOG(m_logger) << "Got onAirSupportImpactChanged()";
AreaEffectSimulation::ExplosionSingle esData;
esData.id(data.id());
esData.chargeStruct().chargeTypeId(data.chargeStruct().chargeTypeId());
esData.impactPosition(data.impactPosition());
esData.effectStateId(data.effectStateId());
esData.id = data.id;
esData.chargeStruct.chargeTypeId = data.chargeStruct.chargeTypeId;
esData.impactPosition = data.impactPosition;
esData.effectStateId = data.effectStateId;
onExplosionSingleChanged(esData, modType);
}
@@ -400,7 +401,7 @@ void HandlerAesData::onEffectsChanged(const AreaEffectSimulation::Effects &effec
if (modType == DataModification::eRemoved)
return;
if (effects.aesTypeId().underlying() != AreaEffectSimulation::AesType::AtExplosionClusterSingleExplosions)
if (effects.aesTypeId != AreaEffectSimulation::AesType::AtExplosionClusterSingleExplosions)
return;
DEBUG_LOG(m_logger) << " Got typechecked effects " << effects;
@@ -470,22 +471,22 @@ bool HandlerAesData::inFootprint(const Core::GeoPosition2D &geoPosition,
void HandlerAesData::preCalculateImpacts(const AreaEffectSimulation::TriggeredImpacts &data)
{
if (data.id() <= 0)
if (data.id <= 0)
return;
DEBUG_LOG(m_logger) << "preCalculateImpacts";
// Find AES ItemView and set Bounding-Box of Aes-Field
const int aesItemId = data.aesItemId();
const int aesItemId = data.aesItemId;
// Search corresponding itemView. If not available no impact to participant.
// Use dtcAes since sender (AES) publishes TriggeredImpacts and AesItemView
//
AreaEffectSimulation::AesItemView aesItemView;
std::shared_ptr<AreaEffectSimulation::Interface::Dtc> dtcAes = m_ddsHandler->dtcAes();
if (!dtcAes->aesItemViewFromEntityId(aesItemId, data.aesTypeId(), aesItemView))
if (!dtcAes->aesItemViewFromEntityId(aesItemId, data.aesTypeId, aesItemView))
{
static long msgCnt = 0;
WARNING_LOG(m_logger) << "TriggeredExplosions.aesItemId=" << data.aesItemId() << " No aesItemView available"
WARNING_LOG(m_logger) << "TriggeredExplosions.aesItemId=" << data.aesItemId << " No aesItemView available"
<< " (cnt=" << ++msgCnt << ")";
return;
}
@@ -543,7 +544,7 @@ void HandlerAesData::onSetBuildingStatesReply(const Core::FunctionReplyObject &r
void HandlerAesData::calculateImpacts(const AreaEffectSimulation::TriggeredImpacts &data, const AreaEffectSimulation::AesItemView &aesItemView,
const CentralEffectSimulation::HandlerBuildingData::Footprint &footprint)
{
const int aesItemId = data.aesItemId();
const int aesItemId = data.aesItemId;
bool bIsExplosionCluster = false;
ProjectDataManagement::IgniterFunctionBase ignFuncBase = ProjectDataManagement::IgniterFunctionBase::IfbImpact;
@@ -556,14 +557,14 @@ void HandlerAesData::calculateImpacts(const AreaEffectSimulation::TriggeredImpac
AreaEffectSimulation::AesType::AtExplosionAreaSingleExplosions,
};
if (data.aesTypeId().underlying() == AreaEffectSimulation::AesType::AtExplosionClusterSingleExplosions)
if (data.aesTypeId == AreaEffectSimulation::AesType::AtExplosionClusterSingleExplosions)
{
bIsExplosionCluster = true;
ignFuncBase = igniterFunctionBaseExplosionCluster(aesItemId); // assume that fuseType does not differ within a single ExplosionArea
DEBUG_LOG(m_logger) << "Calculate, bIsExplosionCluster = " << bIsExplosionCluster
<< ", ignFuncBase = " << ignFuncBase;
}
else if (s_relevantTypes.contains(data.aesTypeId().underlying()))
else if (s_relevantTypes.contains(data.aesTypeId))
DEBUG_LOG(m_logger) << "Calculate";
else
{
@@ -571,11 +572,11 @@ void HandlerAesData::calculateImpacts(const AreaEffectSimulation::TriggeredImpac
return;
}
if (aesItemId != aesItemView.aesItemId())
if (aesItemId != aesItemView.aesItemId)
{
WARNING_LOG(m_logger) << "mismatch: "
<< ", TriggeredExplosions.aesItemId=" << data.aesItemId()
<< ", AesItemView.aesItemId=" << aesItemView.aesItemId();
<< ", TriggeredExplosions.aesItemId=" << data.aesItemId
<< ", AesItemView.aesItemId=" << aesItemView.aesItemId;
return;
}
@@ -589,24 +590,24 @@ void HandlerAesData::calculateImpacts(const AreaEffectSimulation::TriggeredImpac
for (int i : std::as_const(bitfieldState))
DEBUG_LOG(m_logger) << "bitfieldState for " << aesItemId << ": " << i;
for (int32_t bitFieldIdx = 0; bitFieldIdx < data.impactCount(); ++bitFieldIdx)
for (int32_t bitFieldIdx = 0; bitFieldIdx < data.impactCount; ++bitFieldIdx)
{
// no break, because every bit can be a hit
if (LtsUtils::BitArray::testBit(data.bitfield(), bitFieldIdx))
if (LtsUtils::BitArray::testBit(data.bitfield, bitFieldIdx))
continue;
// get position of impact to corresponding bit
if (aesItemView.form().size() <= size_t(bitFieldIdx))
if (aesItemView.form.size() <= size_t(bitFieldIdx))
continue;
const Core::GeoPosition &impactPosition = aesItemView.form()[bitFieldIdx];
const Core::GeoPosition &impactPosition = aesItemView.form[bitFieldIdx];
DEBUG_LOG(m_logger) << LOGFUNCTION
<< " impactPosition: lat/lon" << impactPosition.lat() << "/" << impactPosition.lon() << " z=" << impactPosition.z()
<< " impactPosition: lat/lon" << impactPosition.lat << "/" << impactPosition.lon << " z=" << impactPosition.z
<< " UTM=" << CentralEffectSimulation::debug(CentralEffectSimulation::geographic2Utm(impactPosition));
// check, if impact-pos + munition-radius touch the building
// get radius of munition
const double impactRadius = m_ddsHandler->chargeTypeRadius(aesItemView.chargeStruct());
const double impactRadius = m_ddsHandler->chargeTypeRadius(aesItemView.chargeStruct);
if (inFootprint(impactPosition, footprint, impactRadius))
{
DEBUG_LOG(m_logger) << "In Footprint of mseId = " << footprint.mseId;
@@ -620,7 +621,7 @@ void HandlerAesData::calculateImpacts(const AreaEffectSimulation::TriggeredImpac
<< ", bitFieldIdx= " << bitFieldIdx
<< ", ignFuncBase = " << ignFuncBase;
if (! qFuzzyIsNull(impactPosition.z()))
if (! qFuzzyIsNull(impactPosition.z))
{
// since HandlerBuildingModel::handleDetonationLocationRequest has already
// calculated to fuseType, the impactPosition is the detonationLocation:
@@ -628,7 +629,7 @@ void HandlerAesData::calculateImpacts(const AreaEffectSimulation::TriggeredImpac
//
double detonationDistance = 0;
switch (ignFuncBase.underlying())
switch (ignFuncBase)
{
case ProjectDataManagement::IgniterFunctionBase::IfbProximity:
detonationDistance = -5;
@@ -646,9 +647,9 @@ void HandlerAesData::calculateImpacts(const AreaEffectSimulation::TriggeredImpac
Buildings::SendCesHit3DonBuildingRequest requestBld(
footprint.mseId,
aesItemView.chargeStruct().chargeTypeId(),
m_ddsHandler->dtcPdm()->getBuildingChargeEffectByChargeTypeId(aesItemView.chargeStruct().chargeTypeId()).destructiveFactor(),
m_ddsHandler->dtcPdm()->getBuildingChargeEffectByChargeTypeId(aesItemView.chargeStruct().chargeTypeId()).penetrationFactor(),
aesItemView.chargeStruct.chargeTypeId,
m_ddsHandler->dtcPdm()->getBuildingChargeEffectByChargeTypeId(aesItemView.chargeStruct.chargeTypeId).destructiveFactor,
m_ddsHandler->dtcPdm()->getBuildingChargeEffectByChargeTypeId(aesItemView.chargeStruct.chargeTypeId).penetrationFactor,
aesItemId,
m_ddsHandler->currentPartitionTime(),
impactPosition,
@@ -667,12 +668,12 @@ void HandlerAesData::calculateImpacts(const AreaEffectSimulation::TriggeredImpac
// z-Value is 0 -> old / ! AtExplosionClusterSingleExplosions
Buildings::SendCesHitOnBuildingRequest requestBld(
footprint.mseId,
aesItemView.chargeStruct().chargeTypeId(),
m_ddsHandler->dtcPdm()->getBuildingChargeEffectByChargeTypeId(aesItemView.chargeStruct().chargeTypeId()).destructiveFactor(),
m_ddsHandler->dtcPdm()->getBuildingChargeEffectByChargeTypeId(aesItemView.chargeStruct().chargeTypeId()).penetrationFactor(),
aesItemView.chargeStruct.chargeTypeId,
m_ddsHandler->dtcPdm()->getBuildingChargeEffectByChargeTypeId(aesItemView.chargeStruct.chargeTypeId).destructiveFactor,
m_ddsHandler->dtcPdm()->getBuildingChargeEffectByChargeTypeId(aesItemView.chargeStruct.chargeTypeId).penetrationFactor,
aesItemId,
m_ddsHandler->currentPartitionTime(),
Core::GeoPosition(impactPosition.lon(), impactPosition.lat(), 0.0),
Core::GeoPosition(impactPosition.lon, impactPosition.lat, 0.0),
QStringLiteral("properties").toStdString());
DEBUG_LOG(m_logger) << "sendCesHitOnBuildingRequest for aesItemId=" << aesItemId
@@ -692,31 +693,31 @@ void HandlerAesData::calculateImpacts(const AreaEffectSimulation::TriggeredImpac
void HandlerAesData::calculateImpacts(const AreaEffectSimulation::Effects &effects, const CentralEffectSimulation::HandlerBuildingData::Footprint &footprint)
{
if (effects.aesTypeId().underlying() != AreaEffectSimulation::AesType::AtExplosionClusterSingleExplosions)
if (effects.aesTypeId != AreaEffectSimulation::AesType::AtExplosionClusterSingleExplosions)
return;
const int aesItemId = effects.aesItemId();
const int aesItemId = effects.aesItemId;
DEBUG_LOG(m_logger) << "calculateImpacts mseId=" << footprint.mseId << " data.aesItemId() " << aesItemId;
const AreaEffectSimulation::ExplosionCluster &ec = m_ddsHandler->dtcAes()->explosionCluster(effects.aesItemId());
if (ec.id() != aesItemId)
const AreaEffectSimulation::ExplosionCluster &ec = m_ddsHandler->dtcAes()->explosionCluster(effects.aesItemId);
if (ec.id != aesItemId)
return;
const ProjectDataManagement::IgniterFunctionBase ignFuncBase = igniterFunctionBaseExplosionCluster(aesItemId);
const double impactRadius = m_ddsHandler->chargeTypeRadius(ec.chargeStruct());
const double impactRadius = m_ddsHandler->chargeTypeRadius(ec.chargeStruct);
CentralEffectSimulation::BitfieldStates &bitfieldStates = m_bitfieldStatesBld[footprint.mseId];
QSet<int> &bitfieldState = bitfieldStates[aesItemId];
const std::vector<AreaEffectSimulation::SingleEffect> &singleEffectsRef = effects.singleEffects();
const std::vector<AreaEffectSimulation::SingleEffect> &singleEffectsRef = effects.singleEffects;
int indexBitFieldIdx = -1;
for (const AreaEffectSimulation::SingleEffect &singleEffect : std::as_const(singleEffectsRef))
{
++indexBitFieldIdx;
// just SesTriggered are relevant:
if (singleEffect.singleEffectState() != AreaEffectSimulation::AesSingleEffectState::SesTriggered)
if (singleEffect.singleEffectState != AreaEffectSimulation::AesSingleEffectState::SesTriggered)
continue;
// already processed?
@@ -724,7 +725,7 @@ void HandlerAesData::calculateImpacts(const AreaEffectSimulation::Effects &effec
continue;
// is building in range?
const Core::GeoPosition &impactPositionGeo = singleEffect.position();
const Core::GeoPosition &impactPositionGeo = singleEffect.position;
if (!inFootprint(impactPositionGeo, footprint, impactRadius))
continue;
@@ -744,13 +745,13 @@ void HandlerAesData::calculateImpacts(const AreaEffectSimulation::Effects &effec
DEBUG_LOG(m_logger) << "findBuildingsBetween returns mseIdAsStr =" << mseIdAsStr;
const ProjectDataManagement::BuildingChargeEffect &bldgChargeEffect = m_ddsHandler->dtcPdm()->getBuildingChargeEffectByChargeTypeId(ec.chargeStruct().chargeTypeId());
if (bldgChargeEffect.id() <= 0)
ERROR_LOG(m_logger) << "getBuildingChargeEffectByChargeTypeId failed, chargeTypeId not found: =" << ec.chargeStruct().chargeTypeId();
const ProjectDataManagement::BuildingChargeEffect &bldgChargeEffect = m_ddsHandler->dtcPdm()->getBuildingChargeEffectByChargeTypeId(ec.chargeStruct.chargeTypeId);
if (bldgChargeEffect.id <= 0)
ERROR_LOG(m_logger) << "getBuildingChargeEffectByChargeTypeId failed, chargeTypeId not found: =" << ec.chargeStruct.chargeTypeId;
qint32 destructiveFactor = bldgChargeEffect.destructiveFactor();
qint32 penetrationFactor = bldgChargeEffect.penetrationFactor();
qint32 destructiveFactor = bldgChargeEffect.destructiveFactor;
qint32 penetrationFactor = bldgChargeEffect.penetrationFactor;
if ((destructiveFactor <= 0) || (penetrationFactor <= 0))
WARNING_LOG(m_logger) << "getBuildingChargeEffectByChargeTypeId failed, destructiveFactor or penetrationFactor invalid"
@@ -769,25 +770,25 @@ void HandlerAesData::calculateImpacts(const AreaEffectSimulation::Effects &effec
properties += mseIdAsStr;
const AreaEffectSimulation::AesZPlacement zPlacement = static_cast<AreaEffectSimulation::AesZPlacement>(singleEffect.zPlacement());
const AreaEffectSimulation::AesZPlacement zPlacement = static_cast<AreaEffectSimulation::AesZPlacement>(singleEffect.zPlacement);
if (zPlacement == AreaEffectSimulation::AesZPlacement::ZpDraped)
{
// z-Value is 0 -> old:
Buildings::SendCesHitOnBuildingRequest requestBld(
footprint.mseId,
ec.chargeStruct().chargeTypeId(),
ec.chargeStruct.chargeTypeId,
destructiveFactor,
penetrationFactor,
aesItemId,
m_ddsHandler->currentPartitionTime(),
Core::GeoPosition(impactPositionGeo.lon(), impactPositionGeo.lat(), 0.0),
Core::GeoPosition(impactPositionGeo.lon, impactPositionGeo.lat, 0.0),
properties.toStdString());
DEBUG_LOG(m_logger) << "sendCesHitOnBuildingRequest for aesItemId=" << aesItemId
<< " bitFieldIdx= " << indexBitFieldIdx
<< ", impactPositionGeo= " << impactPositionGeo
<< ", chargeTypeId= " << ec.chargeStruct().chargeTypeId()
<< ", chargeTypeId= " << ec.chargeStruct.chargeTypeId
<< ", destructiveFactor= " << destructiveFactor
<< ", penetrationFactor= " << penetrationFactor;
m_ddsHandler->ftcBld()->sendCesHitOnBuildingRequest(requestBld, this);
@@ -801,7 +802,7 @@ void HandlerAesData::calculateImpacts(const AreaEffectSimulation::Effects &effec
Core::GeoPosition detonationLocation = impactPositionGeo;
double detonationDistance = 0;
switch (ignFuncBase.underlying())
switch (ignFuncBase)
{
case ProjectDataManagement::IgniterFunctionBase::IfbProximity:
detonationDistance = -5;
@@ -821,7 +822,7 @@ void HandlerAesData::calculateImpacts(const AreaEffectSimulation::Effects &effec
Buildings::SendCesHit3DonBuildingRequest requestBld(
footprint.mseId,
ec.chargeStruct().chargeTypeId(),
ec.chargeStruct.chargeTypeId,
destructiveFactor,
penetrationFactor,
aesItemId,
@@ -835,7 +836,7 @@ void HandlerAesData::calculateImpacts(const AreaEffectSimulation::Effects &effec
<< " bitFieldIdx= " << indexBitFieldIdx
<< ", impactPosition= " << impactPositionGeo
<< ", zPlacement= " << zPlacement
<< ", chargeTypeId= " << ec.chargeStruct().chargeTypeId()
<< ", chargeTypeId= " << ec.chargeStruct.chargeTypeId
<< ", destructiveFactor= " << destructiveFactor
<< ", penetrationFactor= " << penetrationFactor;
@@ -851,16 +852,16 @@ void HandlerAesData::checkBuildingsHit(const AreaEffectSimulation::AesItemView &
const int exerciseId = m_ddsHandler->getExerciseId();
QPolygonF polyGeo;
DEBUG_LOG(m_logger) << "checkBuildingsHit " << ", aesItemId=" << data.aesItemId();
DEBUG_LOG(m_logger) << "checkBuildingsHit " << ", aesItemId=" << data.aesItemId;
DEBUG_LOG(m_logger) << "AtBoobyTrapSecondary data.form().size()=" << data.form().size();
DEBUG_LOG(m_logger) << "AtBoobyTrapSecondary data.form().size()=" << data.form.size();
// BoobyTrap
polyGeo.reserve(data.form().size());
for (const auto &pointGeo : std::as_const(data.form()))
polyGeo.reserve(data.form.size());
for (const auto &pointGeo : std::as_const(data.form))
{
QPointF point;
point.setX(pointGeo.lon());
point.setY(pointGeo.lat());
point.setX(pointGeo.lon);
point.setY(pointGeo.lat);
DEBUG_LOG(m_logger) << "point= " << point.x() << "/" << point.y();
polyGeo.append(point);
}
@@ -877,28 +878,28 @@ void HandlerAesData::checkBuildingsHit(const AreaEffectSimulation::AesItemView &
{
DEBUG_LOG(m_logger) << " BuildingId=" << buildingId;
Buildings::Building tmpBldg;
tmpBldg.buildingId(buildingId);
tmpBldg.buildingId = buildingId;
Core::GeoPosition impactPosition;
if (data.aesTypeId() == AreaEffectSimulation::AesType::AtBoobyTrapSecondary)
if (data.aesTypeId == AreaEffectSimulation::AesType::AtBoobyTrapSecondary)
{
impactPosition.lat(m_ddsHandler->dtcAes()->boobyTrap(data.aesItemId()).impactPosition().lat());
impactPosition.lon(m_ddsHandler->dtcAes()->boobyTrap(data.aesItemId()).impactPosition().lon());
impactPosition.lat = m_ddsHandler->dtcAes()->boobyTrap(data.aesItemId).impactPosition.lat;
impactPosition.lon = m_ddsHandler->dtcAes()->boobyTrap(data.aesItemId).impactPosition.lon;
}
else if (data.aesTypeId() == AreaEffectSimulation::AesType::AtOffRouteMineSecondary)
else if (data.aesTypeId == AreaEffectSimulation::AesType::AtOffRouteMineSecondary)
{
int zone = -1;
LtsCoordTrans::UtmCoordinate bottomLeft = LtsCoordTrans::UtmCoordinate::fromGeographic(data.boundingBoxBottomLeft().lon(), data.boundingBoxBottomLeft().lat(), zone);
LtsCoordTrans::UtmCoordinate topRight = LtsCoordTrans::UtmCoordinate::fromGeographic(data.boundingBoxTopRight().lon(), data.boundingBoxTopRight().lat(), zone);
LtsCoordTrans::UtmCoordinate bottomLeft = LtsCoordTrans::UtmCoordinate::fromGeographic(data.boundingBoxBottomLeft.lon, data.boundingBoxBottomLeft.lat, zone);
LtsCoordTrans::UtmCoordinate topRight = LtsCoordTrans::UtmCoordinate::fromGeographic(data.boundingBoxTopRight.lon, data.boundingBoxTopRight.lat, zone);
LtsCoordTrans::UtmCoordinate impactPosPoint(topRight.zone, ((topRight.x + bottomLeft.x) / 2), ((topRight.y + bottomLeft.y) / 2), true);
impactPosPoint.zone = topRight.zone;
QPointF pointGeo = impactPosPoint.geographic();
impactPosition.lon(pointGeo.x());
impactPosition.lat(pointGeo.y());
DEBUG_LOG(m_logger) << "impactPosition lon/lat=" << impactPosition.lon() << "/" << impactPosition.lat()
impactPosition.lon = pointGeo.x();
impactPosition.lat = pointGeo.y();
DEBUG_LOG(m_logger) << "impactPosition lon/lat=" << impactPosition.lon << "/" << impactPosition.lat
<< " impactPosPoint.zone" << impactPosPoint.zone
<< " impactPosPoint=" << impactPosPoint.x << "/" << impactPosPoint.y
<< " topRight=" << topRight.x << "/" << topRight.y
@@ -906,17 +907,17 @@ void HandlerAesData::checkBuildingsHit(const AreaEffectSimulation::AesItemView &
}
Buildings::SendCesHitOnBuildingRequest requestBld(
tmpBldg.buildingId(),
data.chargeStruct().chargeTypeId(),
m_ddsHandler->dtcPdm()->getBuildingChargeEffectByChargeTypeId(data.chargeStruct().chargeTypeId()).destructiveFactor(),
m_ddsHandler->dtcPdm()->getBuildingChargeEffectByChargeTypeId(data.chargeStruct().chargeTypeId()).penetrationFactor(),
data.aesItemId(),
tmpBldg.buildingId,
data.chargeStruct.chargeTypeId,
m_ddsHandler->dtcPdm()->getBuildingChargeEffectByChargeTypeId(data.chargeStruct.chargeTypeId).destructiveFactor,
m_ddsHandler->dtcPdm()->getBuildingChargeEffectByChargeTypeId(data.chargeStruct.chargeTypeId).penetrationFactor,
data.aesItemId,
m_ddsHandler->currentPartitionTime(),
impactPosition,
QStringLiteral("properties").toStdString());
DEBUG_LOG(m_logger) << "sendCesHitOnBuildingRequest for aesItemId=" << data.aesItemId()
DEBUG_LOG(m_logger) << "sendCesHitOnBuildingRequest for aesItemId=" << data.aesItemId
<< ", impactPosition= " << impactPosition;
m_ddsHandler->ftcBld()->sendCesHitOnBuildingRequest(requestBld, this);
}
@@ -59,14 +59,14 @@ public:
AreaEffectSimulation::AesItemView itemView(const int &aesId) const { return m_aesItemViews.value(aesId); }
ProjectDataManagement::IgniterFunctionBase igniterFunctionBaseExplosionCluster(const int &aesId) const
{
auto chargeStruct = m_ddsHandler->dtcAes()->explosionCluster(aesId).chargeStruct();
return m_ddsHandler->dtcPdm()->getChargeTypeIgniterTypeIgniterFunction(chargeStruct.chargeTypeId(),
chargeStruct.igniterTypeId(),
chargeStruct.igniterFunctionId()).igniterFunctionBaseId();
auto chargeStruct = m_ddsHandler->dtcAes()->explosionCluster(aesId).chargeStruct;
return m_ddsHandler->dtcPdm()->getChargeTypeIgniterTypeIgniterFunction(chargeStruct.chargeTypeId,
chargeStruct.igniterTypeId,
chargeStruct.igniterFunctionId).igniterFunctionBaseId;
}
int chargeTypeId(const int &aesId) const
{
return m_ddsHandler->dtcAes()->explosionCluster(aesId).chargeStruct().chargeTypeId();
return m_ddsHandler->dtcAes()->explosionCluster(aesId).chargeStruct.chargeTypeId;
}
protected:
@@ -89,8 +89,8 @@ HandlerBuildingModelInterface::LineBuildingIntersectionResult HandlerBuildingMod
TRACE_LOG(m_logger) << LOGFUNCTION << " START";
CentralEffectSimulation::GetLineBuildingIntersectionRequest newRequest;
newRequest.line(line);
newRequest.requestId(requestIdOpt);
newRequest.line = line;
newRequest.requestId = requestIdOpt;
const bool justForLineOfSight = false;
const CentralEffectSimulation::GetLineBuildingIntersectionReply &reply =
@@ -101,9 +101,9 @@ HandlerBuildingModelInterface::LineBuildingIntersectionResult HandlerBuildingMod
LineBuildingIntersectionResult result;
result.requestId = requestIdOpt;
result.errorString = reply.errorString();
result.errorParams = reply.errorParams();
result.intersection = reply.intersection();
result.errorString = reply.errorString;
result.errorParams = reply.errorParams;
result.intersection = reply.intersection;
TRACE_LOG(m_logger) << LOGFUNCTION << " END";
return result;
@@ -114,8 +114,8 @@ HandlerBuildingModelInterface::LineBuildingIntersectsResult HandlerBuildingModel
TRACE_LOG(m_logger) << LOGFUNCTION << " START";
CentralEffectSimulation::GetLineBuildingIntersectionRequest newRequest;
newRequest.line(line);
newRequest.requestId(requestIdOpt);
newRequest.line = line;
newRequest.requestId = requestIdOpt;
const bool justForLineOfSight = true;
const CentralEffectSimulation::GetLineBuildingIntersectionReply &reply =
@@ -126,9 +126,9 @@ HandlerBuildingModelInterface::LineBuildingIntersectsResult HandlerBuildingModel
LineBuildingIntersectsResult result;
result.requestId = requestIdOpt;
result.errorString = reply.errorString();
result.errorParams = reply.errorParams();
result.intersects = ! std::isnan(reply.intersection().lat()); // ! std::isnan
result.errorString = reply.errorString;
result.errorParams = reply.errorParams;
result.intersects = ! std::isnan(reply.intersection.lat); // ! std::isnan
TRACE_LOG(m_logger) << LOGFUNCTION << " END";
return result;
@@ -136,7 +136,7 @@ HandlerBuildingModelInterface::LineBuildingIntersectsResult HandlerBuildingModel
void HandlerBuildingModel::onMainStructureElementChanged(const InfrastructureManagement::MainStructureElement &data, DataModification modType)
{
const int mseBldgId = data.id();
const int mseBldgId = data.id;
TRACE_LOG(m_logger) << "MainStructureElement === " << data;
@@ -152,7 +152,7 @@ void HandlerBuildingModel::onMainStructureElementChanged(const InfrastructureMan
}
// skip "Outdoor Cameras / Announcement Units"
if (data.structureElementTypeId() != InfrastructureManagement::StructureElementType::Building)
if (data.structureElementTypeId != InfrastructureManagement::StructureElementType::Building)
return;
// Vor allem in der GUEZ-DB sind ca 23 Gebäude per Hand eingefügt. (Sakralbau, Bahnhof, Wasserwerk etc.)
@@ -160,13 +160,13 @@ void HandlerBuildingModel::onMainStructureElementChanged(const InfrastructureMan
// Für diese steht natürlich kein Verwundungsmodell zur Verfügung.
// Wie können wir diese erkennen und hier überspringen?
// Ich habe keine bessere Möglichkeit gefunden als diese:
const Core::GeoPosition &geoPos = data.geoPosition();
if (qFuzzyIsNull(geoPos.z()))
const Core::GeoPosition &geoPos = data.geoPosition;
if (qFuzzyIsNull(geoPos.z))
{
INFO_LOG(m_logger) << "BuildingId " << mseBldgId
<< " kann übersprungen werden, da von Hand importiert."
<< ", name: '" << data.name() << "'"
<< ", name: '" << data.description() << "'";
<< ", name: '" << data.name << "'"
<< ", name: '" << data.description << "'";
return;
}
@@ -186,7 +186,7 @@ void HandlerBuildingModel::onMainStructureElementChanged(const InfrastructureMan
}
DEBUG_LOG(m_logger) << "HandlerBuildingData::onMainStructureElementChanged() id=" << mseBldgId
<< " properties=" << data.properties();
<< " properties=" << data.properties;
// const QVector<int> buildingIds = m_ddsHandler->dtcIsm()->getBuildingIdsByExercise(exerciseId);
@@ -194,9 +194,9 @@ void HandlerBuildingModel::onMainStructureElementChanged(const InfrastructureMan
// QMap<int, InfrastructureManagement::VulnerabilityModelData> vulnerabilityModelData;
// InfrastructureManagement::VulnerabilityModelData vulnerabilityModelDataEle;
QByteArray vulnerabilityModelData = m_ddsHandler->dtcIsm()->getVulnerabilityModelData(data.id());
QByteArray vulnerabilityModelData = m_ddsHandler->dtcIsm()->getVulnerabilityModelData(data.id);
TRACE_LOG(m_logger) << "vulnerabilityModelData=" << vulnerabilityModelData
<< " id=" << data.id();
<< " id=" << data.id;
// int id = -1;
@@ -245,7 +245,7 @@ void HandlerBuildingModel::onGetLineBuildingIntersectionRequest(const rti::core:
const CentralEffectSimulation::GetLineBuildingIntersectionRequest &request)
{
const int exerciseId = m_ddsHandler->getExerciseId();
DEBUG_LOG(m_logger) << "START onGetLineBuildingIntersectionRequest" << ", exerciseId = " << exerciseId << ", request '" << request.requestId() << "'";
DEBUG_LOG(m_logger) << "START onGetLineBuildingIntersectionRequest" << ", exerciseId = " << exerciseId << ", request '" << request.requestId << "'";
const bool justForLineOfSight = false;
const CentralEffectSimulation::GetLineBuildingIntersectionReply &reply = getLineBuildingIntersectionInternal(request, justForLineOfSight);
@@ -253,34 +253,34 @@ void HandlerBuildingModel::onGetLineBuildingIntersectionRequest(const rti::core:
// sendReply
m_ddsHandler->ftsCes()->getLineBuildingIntersectionReply(cookie, reply);
DEBUG_LOG(m_logger) << "END onGetLineBuildingIntersectionRequest, request '" << request.requestId() << "'";
DEBUG_LOG(m_logger) << "END onGetLineBuildingIntersectionRequest, request '" << request.requestId << "'";
}
void HandlerBuildingModel::onGetLineBuildingIntersectsRequest(const rti::core::SampleIdentity &cookie,
const CentralEffectSimulation::GetLineBuildingIntersectsRequest &request)
{
const int exerciseId = m_ddsHandler->getExerciseId();
DEBUG_LOG(m_logger) << "START onGetLineBuildingIntersectsRequest" << ", exerciseId = " << exerciseId << ", request '" << request.requestId() << "'";
DEBUG_LOG(m_logger) << "START onGetLineBuildingIntersectsRequest" << ", exerciseId = " << exerciseId << ", request '" << request.requestId << "'";
CentralEffectSimulation::GetLineBuildingIntersectionRequest newRequest;
newRequest.line(request.line());
newRequest.requestId(request.requestId());
newRequest.line = request.line;
newRequest.requestId = request.requestId;
const bool justForLineOfSight = true;
const CentralEffectSimulation::GetLineBuildingIntersectionReply &reply = getLineBuildingIntersectionInternal(newRequest, justForLineOfSight);
// sendReply
CentralEffectSimulation::GetLineBuildingIntersectsReply newReply;
newReply.id(reply.id());
newReply.errorString(reply.errorString());
newReply.errorParams(reply.errorParams());
newReply.requestId(reply.requestId());
newReply.intersects(! std::isnan(reply.intersection().lat())); // ! std::isnan
newReply.id = reply.id;
newReply.errorString = reply.errorString;
newReply.errorParams = reply.errorParams;
newReply.requestId = reply.requestId;
newReply.intersects = ! std::isnan(reply.intersection.lat); // ! std::isnan
m_ddsHandler->ftsCes()->getLineBuildingIntersectsReply(cookie, newReply);
DEBUG_LOG(m_logger) << "END onGetLineBuildingIntersectsRequest, request '" << request.requestId() << "'";
DEBUG_LOG(m_logger) << "END onGetLineBuildingIntersectsRequest, request '" << request.requestId << "'";
}
@@ -301,29 +301,29 @@ CentralEffectSimulation::GetLineBuildingIntersectionReply HandlerBuildingModel::
const int exerciseId = m_ddsHandler->getExerciseId();
DEBUG_LOG(m_logger) << "START getLineBuildingIntersectionInternal" << ", exerciseId = " << exerciseId << ", request '" << request.requestId() << "'"
<< ", request.line().size() = " << request.line().size();
DEBUG_LOG(m_logger) << "START getLineBuildingIntersectionInternal" << ", exerciseId = " << exerciseId << ", request '" << request.requestId << "'"
<< ", request.line().size() = " << request.line.size();
CentralEffectSimulation::GetLineBuildingIntersectionReply reply;
reply.requestId(request.requestId());
reply.requestId = request.requestId;
// prepare invalid 'answer'
reply.intersection(s_invalidPos);
reply.intersection = s_invalidPos;
// empty (poly-)line
// (think of a trajectory)
const std::vector<Core::GeoPosition> &polylineRef = request.line();
const std::vector<Core::GeoPosition> &polylineRef = request.line;
if (polylineRef.size() < 2)
{
reply.errorString("insufficiant number of points");
WARNING_LOG(m_logger) << "getLineBuildingIntersectionInternal" << ", exerciseId = " << exerciseId << ", request '" << request.requestId() << "'"
<< ", error: '" << reply.errorString() << "'";
reply.errorString = "insufficiant number of points";
WARNING_LOG(m_logger) << "getLineBuildingIntersectionInternal" << ", exerciseId = " << exerciseId << ", request '" << request.requestId << "'"
<< ", error: '" << reply.errorString << "'";
return reply;
}
QPolygonF polygon2D;
polygon2D.reserve(polylineRef.size());
for (const Core::GeoPosition &geoPos : std::as_const(polylineRef))
polygon2D << QPointF(geoPos.lon(), geoPos.lat());
polygon2D << QPointF(geoPos.lon, geoPos.lat);
// Only the buildings where the line/trajectory flies over the building footprint are taken into account.
bool completeEnclosed = false;
@@ -389,11 +389,11 @@ CentralEffectSimulation::GetLineBuildingIntersectionReply HandlerBuildingModel::
const Buildings::BuildingState &buildingState = dtcBld->buildingState(bldgId);
// if buildingState is not found, assume intact:
if (/*(buildingState.id() == bldgId) && */(buildingState.damagePercent() >= 80))
if (/*(buildingState.id() == bldgId) && */(buildingState.damagePercent >= 80))
{
WARNING_LOG(m_logger) << " buildingModel->buildingId=" << buildingModel->buildingId()
<< ", lineSegmentIdx=" << lineSegmentIdx
<< ", damagePercent > 80% (" << buildingState.damagePercent() << ")";
<< ", damagePercent > 80% (" << buildingState.damagePercent << ")";
continue;
}
@@ -467,8 +467,8 @@ CentralEffectSimulation::GetLineBuildingIntersectionReply HandlerBuildingModel::
// justForLineOfSight :
if (justForLineOfSight)
{
reply.intersection(intersection);
DEBUG_LOG(m_logger) << "END getLineBuildingIntersectionInternal, return due to justForLineOfSight " << request.requestId() << "'";
reply.intersection = intersection;
DEBUG_LOG(m_logger) << "END getLineBuildingIntersectionInternal, return due to justForLineOfSight " << request.requestId << "'";
return reply;
}
// : justForLineOfSight
@@ -482,7 +482,7 @@ CentralEffectSimulation::GetLineBuildingIntersectionReply HandlerBuildingModel::
DEBUG_LOG(m_logger) << "Building " << buildingModel->buildingId() << " was hit prior to building " << buildingId << ".";
buildingId = buildingModel->buildingId();
distance = dist;
reply.intersection(intersection);
reply.intersection = intersection;
if (segmentIdxOfIntersectionPtrOut)
*segmentIdxOfIntersectionPtrOut = lineSegmentIdx;
@@ -491,7 +491,7 @@ CentralEffectSimulation::GetLineBuildingIntersectionReply HandlerBuildingModel::
} // for (const int bldgId : std::as_const(relevantBuildings))
} // for(lineIt = polylineRef.begin(); lineIt != polylineRef.end()-1; ++lineIt)
DEBUG_LOG(m_logger) << "END getLineBuildingIntersectionInternal, request '" << request.requestId() << "'"
DEBUG_LOG(m_logger) << "END getLineBuildingIntersectionInternal, request '" << request.requestId << "'"
<< " buildingIdOut=" << *buildingIdOut;
return reply;
@@ -506,10 +506,10 @@ void HandlerBuildingModel::onDetonationLocationRequest(
const rti::core::SampleIdentity &cookie, const CentralEffectSimulation::DetonationLocationRequest &request
)
{
DEBUG_LOG(m_logger) << "Received DetonationLocationRequest for aesId: " << request.id();
DEBUG_LOG(m_logger) << "Received DetonationLocationRequest for aesId: " << request.id;
const CentralEffectSimulation::DetonationLocationReply reply = handleDetonationLocationRequest(request);
if (!reply.errorString().empty())
WARNING_LOG(m_logger) << "DetonationLocationRequest for aesId " << request.id() << " failed: " << reply.errorString();
if (!reply.errorString.empty())
WARNING_LOG(m_logger) << "DetonationLocationRequest for aesId " << request.id << " failed: " << reply.errorString;
// if
m_ddsHandler->ftsCes()->detonationLocationReply(cookie, reply);
}
@@ -528,17 +528,17 @@ CentralEffectSimulation::DetonationLocationReply HandlerBuildingModel::handleDet
// prepare reply and store some values from request:
CentralEffectSimulation::DetonationLocationReply reply;
reply.id(request.id()); // AES: aesItemId
reply.index(request.index()); // AES: explosionIndex
reply.id = request.id; // AES: aesItemId
reply.index = request.index; // AES: explosionIndex
if ( m_buildingModels.size() <= 0)
return reply;
CentralEffectSimulation::GetLineBuildingIntersectionRequest lbRequest;
lbRequest.requestId("handleDetonationLocationRequest");
lbRequest.line(request.trajectory());
lbRequest.requestId = "handleDetonationLocationRequest";
lbRequest.line = request.trajectory;
const std::vector<Core::GeoPosition>& reqTrajRef = request.trajectory();
const std::vector<Core::GeoPosition>& reqTrajRef = request.trajectory;
if (reqTrajRef.size() < 2)
{
@@ -548,10 +548,10 @@ CentralEffectSimulation::DetonationLocationReply HandlerBuildingModel::handleDet
// next step: determine detonationDistance according fuseType:
double detonationDistance = 0;
ProjectDataManagement::IgniterFunctionBase ignFuncBase = m_ddsHandler->getIgniterFunctionBaseFromChargeTypeId(request.chargeTypeId(),
request.igniterTypeId(),
request.igniterFunctionId());
switch (ignFuncBase.underlying())
ProjectDataManagement::IgniterFunctionBase ignFuncBase = m_ddsHandler->getIgniterFunctionBaseFromChargeTypeId(request.chargeTypeId,
request.igniterTypeId,
request.igniterFunctionId);
switch (ignFuncBase)
{
case ProjectDataManagement::IgniterFunctionBase::IfbProximity: detonationDistance = -5; break;
case ProjectDataManagement::IgniterFunctionBase::IfbImpact: detonationDistance = 0; break;
@@ -568,7 +568,7 @@ CentralEffectSimulation::DetonationLocationReply HandlerBuildingModel::handleDet
const CentralEffectSimulation::GetLineBuildingIntersectionReply &lbiReply =
getLineBuildingIntersectionInternal(lbRequest, justForLineOfSight, &buildingId, &validSizeOfOriginalTraj);
const LtsCoordTrans::LtsCoordinate bldgIntersectionCoord(lbiReply.intersection());
const LtsCoordTrans::LtsCoordinate bldgIntersectionCoord(lbiReply.intersection);
const bool bHasBuildingIntersection = BuildingModel::isValid(bldgIntersectionCoord.geoPosition());
if (bHasBuildingIntersection)
{
@@ -623,8 +623,8 @@ CentralEffectSimulation::DetonationLocationReply HandlerBuildingModel::handleDet
<< ", detonationLocation: " << detonationLocation.toString(true)
<< ", buildingId: " << buildingId;
reply.position(detonationLocation.geoPosition());
reply.buildingId(buildingId);
reply.position = detonationLocation.geoPosition();
reply.buildingId = buildingId;
}
else
{
@@ -650,8 +650,8 @@ CentralEffectSimulation::DetonationLocationReply HandlerBuildingModel::handleDet
<< ", trajectoryCopy.size()=" << trajectoryCopy.size() << " back: " << trajectoryCopy.back()
<< ", detonationLocation: " << detonationLocation.toString(true)
<< ", buildingId: " << buildingId;
reply.buildingId(buildingId);
reply.position(detonationLocation.geoPosition());
reply.buildingId = buildingId;
reply.position = detonationLocation.geoPosition();
}
// otherwise let reply.position be untouched.
@@ -674,18 +674,18 @@ Core::GeoPosition HandlerBuildingModel::calculateDetonationLocation(const std::v
// geometrySize-3]; - see comment below
// ^^^
auto p1 = trajectoryGeometry[geometrySize - 3];
LtsCoordTrans::UtmCoordinate utm1 = LtsCoordTrans::UtmCoordinate::fromGeographic(p1.lon(), p1.lat()); // ToDo: Zone des Bldgs?
QVector3D segStart(utm1.x, utm1.y, p1.z());
LtsCoordTrans::UtmCoordinate utm1 = LtsCoordTrans::UtmCoordinate::fromGeographic(p1.lon, p1.lat); // ToDo: Zone des Bldgs?
QVector3D segStart(utm1.x, utm1.y, p1.z);
auto p2 = trajectoryGeometry[geometrySize - 1];
LtsCoordTrans::UtmCoordinate utm2 = LtsCoordTrans::UtmCoordinate::fromGeographic(p2.lon(), p2.lat()); // ToDo: Zone des Bldgs?
QVector3D segEnd(utm2.x, utm2.y, p2.z());
LtsCoordTrans::UtmCoordinate utm2 = LtsCoordTrans::UtmCoordinate::fromGeographic(p2.lon, p2.lat); // ToDo: Zone des Bldgs?
QVector3D segEnd(utm2.x, utm2.y, p2.z);
QVector3D flightVec = segEnd - segStart;
INFO_LOG(m_logger) << "flightVec1 "
<< ", utm1 " << utm1 << " , z " << p1.z()
<< ", utm2 " << utm2 << " , z " << p2.z()
<< ", utm1 " << utm1 << " , z " << p1.z
<< ", utm2 " << utm2 << " , z " << p2.z
<< ", flightVec " << flightVec;
// 'auto p1 = trajectoryGeometry[geometrySize-3];'
@@ -722,8 +722,8 @@ Core::GeoPosition HandlerBuildingModel::calculateDetonationLocation(const std::v
Core::GeoPosition geoPosDeto(pointDeto.x(), pointDeto.y(), detonationLoc.z());
DEBUG_LOG(m_logger) << "flightVec2 "
<< ", utm1 " << utm1 << " , z " << p1.z()
<< ", utm2 " << utm2 << " , z " << p2.z()
<< ", utm1 " << utm1 << " , z " << p1.z
<< ", utm2 " << utm2 << " , z " << p2.z
<< ", flightVec " << flightVec
<< ", detonationLoc " << detonationLoc
<< ", utmDeto " << utmDeto;
@@ -86,26 +86,26 @@ void HandlerBuildingOwnership::onSetOwnershipRequest(const rti::core::SampleIden
INFO_LOG(m_logger) << "onSetOwnershipRequest: " << request;
// remove Ownership, if partyId == 0
if (request.partyId() == 0)
removeFromDbBuildingId(request.buildingId());
if (request.partyId == 0)
removeFromDbBuildingId(request.buildingId);
const QVector<int> floors = m_handlerBuildingData->getFloorsFromBuilding(request.buildingId());
const QVector<int> floors = m_handlerBuildingData->getFloorsFromBuilding(request.buildingId);
for (int floorId : floors)
saveBuildingOwnership(floorId, request.partyId(), request.buildingId());
saveBuildingOwnership(floorId, request.partyId, request.buildingId);
if (!floors.isEmpty())
sendBuildingOwnership(request.buildingId());
sendBuildingOwnership(request.buildingId);
m_ddsHandler->ftsCes()->setOwnershipReply(cookie, Core::FunctionReplyObject(request.buildingId()));
m_ddsHandler->ftsCes()->setOwnershipReply(cookie, Core::FunctionReplyObject(request.buildingId));
}
void HandlerBuildingOwnership::onParticipantPositionChanged(const CentralEffectSimulation::HandlerParticipant::CesParticipantData &partPos)
{
const int participantId = partPos.participantId();
const int participantId = partPos.participantId;
INFO_LOG(m_logger) << "BuildingOwnership onParticipantPositionChanged participantId=" << participantId
<< " vulnerabilityState=" << partPos.vulnerabilityState
<< " buildingId=" << partPos.buildingId()
<< " buildingId=" << partPos.buildingId
<< " notfightMode=" << partPos.notfightMode;
// [GUEZE-2256] 3D Wirksim - Funktionsraum Nicht Kampffaehig
@@ -113,8 +113,8 @@ void HandlerBuildingOwnership::onParticipantPositionChanged(const CentralEffectS
if (partPos.notfightMode)
return;
int floorId = m_handlerBuildingData->getFloorIdFromRoomId(partPos.roomId());
if (partPos.vulnerabilityState == ProjectDataManagement::VulnerabilityState::CatastrophicKill)
int floorId = m_handlerBuildingData->getFloorIdFromRoomId(partPos.roomId);
if (partPos.vulnerabilityState == ProjectDataManagement::VulnerabilityState::VulnerabilityState_CatastrophicKill)
m_participantFloor.remove(participantId);
else
m_participantFloor.insert(participantId, floorId);
@@ -131,23 +131,23 @@ void HandlerBuildingOwnership::onParticipantPositionChanged(const CentralEffectS
// ///////////////////////////////////
void HandlerBuildingOwnership::onMainStructureElementChanged(const InfrastructureManagement::MainStructureElement &data, DataModification modType)
{
INFO_LOG(m_logger) << "onMainStructureElementChanged id=" << data.id()
<< " modelId =" << data.modelId();
if (modType == DataModification::eRemoved || data.modelId() <= 0)
INFO_LOG(m_logger) << "onMainStructureElementChanged id=" << data.id
<< " modelId =" << data.modelId;
if (modType == DataModification::eRemoved || data.modelId <= 0)
{
m_buildingOwnership.remove(data.id());
m_buildingOwnership.remove(data.id);
return;
}
QJsonArray jsonArray = QJsonDocument::fromJson(QByteArray::fromStdString(data.properties())).object().value(QLatin1String("available_in_exercise")).toArray();
QJsonArray jsonArray = QJsonDocument::fromJson(QByteArray::fromStdString(data.properties)).object().value(QLatin1String("available_in_exercise")).toArray();
DEBUG_LOG(m_logger) << "available_in_exercise jsonDocument.size()=" << jsonArray.size();
QVector<int> result;
result.reserve(jsonArray.size());
// Check if present in the current exercise and remove
if (m_buildingOwnership.contains(data.id()))
if (m_buildingOwnership.contains(data.id))
{
int id = data.id();
int id = data.id;
m_buildingOwnership.remove(id);
m_ddsHandler->dtsCes()->removeBuildingOwnershipByKey(id);
}
@@ -159,16 +159,16 @@ void HandlerBuildingOwnership::onMainStructureElementChanged(const Infrastructur
continue;
DEBUG_LOG(m_logger) << "Got MainStructureElement"
<< " data.id()=" << data.id()
<< " data.modelId=" << data.modelId();
if (!m_buildingOwnership.contains(data.id()))
<< " data.id()=" << data.id
<< " data.modelId=" << data.modelId;
if (!m_buildingOwnership.contains(data.id))
{
// insert in m_buildingOwnership and publish to dds
CentralEffectSimulation::BuildingOwnership bo;
bo.buildingId(data.id());
bo.sampleTime(QDateTime::currentMSecsSinceEpoch());
bo.buildingId = data.id;
bo.sampleTime = QDateTime::currentMSecsSinceEpoch();
updateOwnerships(&bo);
m_buildingOwnership.insert(data.id(), bo);
m_buildingOwnership.insert(data.id, bo);
m_ddsHandler->dtsCes()->publish(bo);
} // if
} // for
@@ -193,7 +193,7 @@ int HandlerBuildingOwnership::calculateOwnershipByParticipantId(const int partic
{
INFO_LOG(m_logger) << "BuildingOwnership calculateOwnershipByParticipantId participantId=" << participantId;
CentralEffectSimulation::HandlerParticipant::CesParticipantData partPos = m_handlerParticipant->position(participantId);
return calculateOwnershipByFloorId(m_handlerBuildingData->getFloorIdFromRoomId(partPos.roomId()));
return calculateOwnershipByFloorId(m_handlerBuildingData->getFloorIdFromRoomId(partPos.roomId));
}
int HandlerBuildingOwnership::calculateOwnershipByFloorId(const int floorId)
@@ -216,7 +216,7 @@ int HandlerBuildingOwnership::calculateOwnershipByFloorId(const int floorId)
const CentralEffectSimulation::HandlerParticipant::CesParticipantData &localPartPos = m_handlerParticipant->position(iteratorParticipant);
if (localPartPos.vulnerabilityState == ProjectDataManagement::VulnerabilityState::VulnerabilityState_CatastrophicKill)
continue; // Don't count participants with catastrophic Kill
const int partyId = localPartPos.partyId();
const int partyId = localPartPos.partyId;
++partyCount[partyId];
}
}
@@ -241,10 +241,10 @@ int HandlerBuildingOwnership::getOwnership(int buildingId, int floorId) const
if (itBldg == m_buildingOwnership.end())
return -1;
const CentralEffectSimulation::BuildingOwnership &bo = itBldg.value();
for (const CentralEffectSimulation::Ownership &ownership : bo.ownerships())
for (const CentralEffectSimulation::Ownership &ownership : bo.ownerships)
{
if (ownership.floorId() == floorId)
return ownership.partyId();
if (ownership.floorId == floorId)
return ownership.partyId;
}
return -1;
}
@@ -282,27 +282,27 @@ void HandlerBuildingOwnership::updateOwnerships(CentralEffectSimulation::Buildin
INFO_LOG(m_logger) << "BuildingOwnership updateOwnerships";
QMap <int, int> ownershipMap;
const QVector<int> floors = m_handlerBuildingData->getFloorsFromBuilding(bo->buildingId());
const QVector<int> floors = m_handlerBuildingData->getFloorsFromBuilding(bo->buildingId);
DEBUG_LOG(m_logger) << "updateOwnerships floors.size= " << floors.size();
for (const int floorId : floors)
ownershipMap[floorId] = 0;
for (const CentralEffectSimulation::Ownership &ownership : bo->ownerships())
for (const CentralEffectSimulation::Ownership &ownership : bo->ownerships)
{
DEBUG_LOG(m_logger) << "updateOwnerships floorId=" << ownership.floorId() << ": " << ownership.partyId();
ownershipMap[ownership.floorId()] = ownership.partyId();
DEBUG_LOG(m_logger) << "updateOwnerships floorId=" << ownership.floorId << ": " << ownership.partyId;
ownershipMap[ownership.floorId] = ownership.partyId;
}
bo->ownerships().resize(0);
bo->ownerships().reserve(ownershipMap.size());
bo->ownerships.resize(0);
bo->ownerships.reserve(ownershipMap.size());
CentralEffectSimulation::Ownership ownership;
for (auto it = ownershipMap.cbegin(); it != ownershipMap.cend(); ++it)
{
DEBUG_LOG(m_logger) << it.key() << ": " << it.value();
ownership.floorId(it.key());
ownership.partyId(it.value());
bo->ownerships().push_back(ownership);
ownership.floorId = it.key();
ownership.partyId = it.value();
bo->ownerships.push_back(ownership);
}
}
@@ -318,20 +318,20 @@ void HandlerBuildingOwnership::saveBuildingOwnership(int floorId, int partyId, i
{
CentralEffectSimulation::BuildingOwnership &bo = *it;
// Vorhanden Eintrag für das Stockwerk suchen:
for (CentralEffectSimulation::Ownership &ownership : bo.ownerships())
for (CentralEffectSimulation::Ownership &ownership : bo.ownerships)
{
if (ownership.floorId() == floorId)
if (ownership.floorId == floorId)
{
ownership.partyId(partyId);
ownership.partyId = partyId;
return;
}
}
// Neuen Eintrag für das Stockwerk anlegen
CentralEffectSimulation::Ownership ownership;
ownership.floorId(floorId);
ownership.partyId(partyId);
bo.ownerships().push_back(std::move(ownership));
ownership.floorId = floorId;
ownership.partyId = partyId;
bo.ownerships.push_back(std::move(ownership));
m_buildingOwnership.insert(buildingId, bo);
return;
}
@@ -340,10 +340,10 @@ void HandlerBuildingOwnership::saveBuildingOwnership(int floorId, int partyId, i
CentralEffectSimulation::BuildingOwnership bo;
CentralEffectSimulation::Ownership ownership;
bo.buildingId(buildingId);
ownership.floorId(floorId);
ownership.partyId(partyId);
bo.ownerships().resize(1, ownership);
bo.buildingId = buildingId;
ownership.floorId = floorId;
ownership.partyId = partyId;
bo.ownerships.resize(1, ownership);
m_buildingOwnership.insert(buildingId, bo);
}
@@ -351,8 +351,8 @@ void HandlerBuildingOwnership::sendBuildingOwnership(int buildingId)
{
INFO_LOG(m_logger) << "sendBuildingOwnership for building: " << buildingId;
CentralEffectSimulation::BuildingOwnership bo = m_buildingOwnership.value(buildingId);
bo.buildingId(buildingId);
bo.sampleTime(QDateTime::currentMSecsSinceEpoch());
bo.buildingId = buildingId;
bo.sampleTime = QDateTime::currentMSecsSinceEpoch();
updateOwnerships(&bo);
m_ddsHandler->dtsCes()->publish(bo);
insertInDb(bo);
@@ -388,16 +388,16 @@ void HandlerBuildingOwnership::insertInDb(const CentralEffectSimulation::Buildin
{
DBTransaction trans(m_db->database());
removeFromDbBuildingId(bo.buildingId());
INFO_LOG(m_logger) << "insertInDb buildingId: " << bo.buildingId()
<< ", bo.ownerships().size(): " << bo.ownerships().size();
removeFromDbBuildingId(bo.buildingId);
INFO_LOG(m_logger) << "insertInDb buildingId: " << bo.buildingId
<< ", bo.ownerships().size(): " << bo.ownerships.size();
CentralEffectSimulation::Database::CesOwnership newOwnership;
newOwnership.buildingId = bo.buildingId();
for (const CentralEffectSimulation::Ownership &ownership : bo.ownerships())
newOwnership.buildingId = bo.buildingId;
for (const CentralEffectSimulation::Ownership &ownership : bo.ownerships)
{
newOwnership.id = 0;
newOwnership.floorId = ownership.floorId();
newOwnership.partyId = ownership.partyId();
newOwnership.floorId = ownership.floorId;
newOwnership.partyId = ownership.partyId;
DEBUG_LOG(m_logger) << "ownership: floorId = " << newOwnership.floorId
<< " partyId = " << newOwnership.partyId;
if (!m_db->insert(newOwnership))
@@ -102,17 +102,17 @@ void HandlerContamination::onAesItemViewChanged(const AreaEffectSimulation::AesI
modType != DataModification::eModified)
return;
DEBUG_LOG(m_logger) << "Got AesItemView: " << data.effectStateId()
<< " data.aesItemId()" << data.aesItemId()
<< " data.aesTypeId()" << data.aesTypeId();
switch (data.effectStateId().underlying())
DEBUG_LOG(m_logger) << "Got AesItemView: " << data.effectStateId
<< " data.aesItemId()" << data.aesItemId
<< " data.aesTypeId()" << data.aesTypeId;
switch (data.effectStateId)
{
case AreaEffectSimulation::AesEffectState::EsActivated:
{
double chargeHeight; // Alle Stockwerke beruecksichtigen
double chargeDepression; // Alle Kellerraeume beruecksichtigen
if (data.aesTypeId() == AreaEffectSimulation::AesType::AtNContamination)
if (data.aesTypeId == AreaEffectSimulation::AesType::AtNContamination)
{
chargeHeight = 500.0; // Alle Stockwerke beruecksichtigen
chargeDepression = -1000.0; // Alle Kellerraeume beruecksichtigen
@@ -121,37 +121,37 @@ void HandlerContamination::onAesItemViewChanged(const AreaEffectSimulation::AesI
}
else
{
chargeHeight = m_aesBCContaminations.value(data.aesItemId()).upperOffset();
chargeDepression = m_aesBCContaminations.value(data.aesItemId()).lowerOffset();
chargeHeight = m_aesBCContaminations.value(data.aesItemId).upperOffset;
chargeDepression = m_aesBCContaminations.value(data.aesItemId).lowerOffset;
DEBUG_LOG(m_logger) << "BCContaminations: chargeHeight=" << chargeHeight
<< " chargeDepression=" << chargeDepression;
}
if (data.aesTypeId() != AreaEffectSimulation::AesType::AtBCContamination
&& data.aesTypeId() != AreaEffectSimulation::AesType::AtNContamination)
if (data.aesTypeId != AreaEffectSimulation::AesType::AtBCContamination
&& data.aesTypeId != AreaEffectSimulation::AesType::AtNContamination)
{
DEBUG_LOG(m_logger) << "return1: AesItemView: " << data.effectStateId();
DEBUG_LOG(m_logger) << "return1: AesItemView: " << data.effectStateId;
return;
}
// Gebaeude die von einem sesshaften Kampfstoff betroffen sind, müssen als kontaminiert gelten.
const ProjectDataManagement::VolatilityType volatilityType = m_ddsHandler->volatilityTypeId(data.chargeStruct());
const ProjectDataManagement::VolatilityType volatilityType = m_ddsHandler->volatilityTypeId(data.chargeStruct);
if (volatilityType != ProjectDataManagement::VolatilityType::Resident
&& data.aesTypeId() != AreaEffectSimulation::AesType::AtNContamination)
&& data.aesTypeId != AreaEffectSimulation::AesType::AtNContamination)
{
DEBUG_LOG(m_logger) << "return2: AesItemView: " << data.effectStateId();
DEBUG_LOG(m_logger) << "return2: AesItemView: " << data.effectStateId;
return;
}
DEBUG_LOG(m_logger) << "HandlerContamination::onAesItemViewChanged data.aesItemId=" << data.aesItemId();
DEBUG_LOG(m_logger) << "HandlerContamination::onAesItemViewChanged data.aesItemId=" << data.aesItemId;
auto dtcIsm = m_ddsHandler->dtcIsm();
// Form in UTM-Polygon wandeln
int exerciseId = m_ddsHandler->getExerciseId();
QPolygonF polygonGeo;
// Convert Form to UTM
for (unsigned int i = 0; i < data.form().size(); i++)
polygonGeo.append(QPointF(data.form()[i].lon(), data.form()[i].lat()));
for (unsigned int i = 0; i < data.form.size(); i++)
polygonGeo.append(QPointF(data.form[i].lon, data.form[i].lat));
bool completeEnclosed = true;
bool isGroundLevel = false;
@@ -178,16 +178,16 @@ void HandlerContamination::calculateBuilding(int buildingId,
QVector<int> effectedRooms;
QVector<int> effectedFloors;
if (data.aesTypeId() != AreaEffectSimulation::AesType::AtBCContamination
&& data.aesTypeId() != AreaEffectSimulation::AesType::AtNContamination)
if (data.aesTypeId != AreaEffectSimulation::AesType::AtBCContamination
&& data.aesTypeId != AreaEffectSimulation::AesType::AtNContamination)
{
DEBUG_LOG(m_logger) << "return: NO BC-Contamination AesItemView: " << data.effectStateId();
DEBUG_LOG(m_logger) << "return: NO BC-Contamination AesItemView: " << data.effectStateId;
return;
}
const ProjectDataManagement::VolatilityType volatilityType = m_ddsHandler->volatilityTypeId(data.chargeStruct());
const ProjectDataManagement::VolatilityType volatilityType = m_ddsHandler->volatilityTypeId(data.chargeStruct);
if ( volatilityType != ProjectDataManagement::VolatilityType::Resident
&& data.aesTypeId() != AreaEffectSimulation::AesType::AtNContamination)
&& data.aesTypeId != AreaEffectSimulation::AesType::AtNContamination)
return;
DEBUG_LOG(m_logger) << "buildingId=" << buildingId;
@@ -201,35 +201,35 @@ void HandlerContamination::calculateBuilding(int buildingId,
ProjectDataManagement::VulnerabilityState vulnerabilityState = ProjectDataManagement::VulnerabilityState::VulnerabilityState_CombatReady;
// [GUEZE-2752] N-Contamination: Only Contamionation inside Range1
if (data.aesTypeId() == AreaEffectSimulation::AesType::AtNContamination
&& !isInsideRange1(buildingId, data.aesItemId()))
if (data.aesTypeId == AreaEffectSimulation::AesType::AtNContamination
&& !isInsideRange1(buildingId, data.aesItemId))
{
DEBUG_LOG(m_logger) << "!isInsideRange1 buildingId=" << buildingId;
return;
}
if (data.aesTypeId() == AreaEffectSimulation::AesType::AtBCContamination
&& !isInsideBCContamination(buildingId, data.aesItemId()))
if (data.aesTypeId == AreaEffectSimulation::AesType::AtBCContamination
&& !isInsideBCContamination(buildingId, data.aesItemId))
{
DEBUG_LOG(m_logger) << "AtBCContamination !isInsideRange buildingId=" << buildingId << "return";
return;
}
if (data.aesTypeId() == AreaEffectSimulation::AesType::AtNContamination
&& isInsideInnerCircle(buildingId, data.aesItemId()))
if (data.aesTypeId == AreaEffectSimulation::AesType::AtNContamination
&& isInsideInnerCircle(buildingId, data.aesItemId))
{
constexpr int TIME_2_SECONDS = 2000;
// Only actual explosion not old N-Fields
if ( m_ddsHandler->dtcCore()->partitionTime().timeStamp() < (data.effectStart() + TIME_2_SECONDS))
if ( m_ddsHandler->dtcCore()->partitionTime().timeStamp < (data.effectStart + TIME_2_SECONDS))
{
DEBUG_LOG(m_logger) << "VulnerabilityState=CatastrophicKill";
vulnerabilityState = ProjectDataManagement::VulnerabilityState::VulnerabilityState_CatastrophicKill;
}
}
DEBUG_LOG(m_logger) << "setBuildingContaminationStateRequest buildingId=" << buildingId
<< " data.aesTypeId()=" << data.aesTypeId()
<< " isInsideInnerCircle(buildingId, data.aesItemId()=" << isInsideInnerCircle(buildingId, data.aesItemId());
<< " data.aesTypeId()=" << data.aesTypeId
<< " isInsideInnerCircle(buildingId, data.aesItemId()=" << isInsideInnerCircle(buildingId, data.aesItemId);
{
DEBUG_LOG(m_logger) << "isInsideInnerCircle buildingId=" << buildingId;
setBuildingContaminationStateRequest(buildingId, data.aesItemId(), vulnerabilityState, effectedRooms);
setBuildingContaminationStateRequest(buildingId, data.aesItemId, vulnerabilityState, effectedRooms);
}
}
}
@@ -245,12 +245,12 @@ void HandlerContamination::onBuildingStateChanged(const Buildings::BuildingState
return;
INFO_LOG(m_logger) << "onBuildingStateChanged"
<< " id=" << data.id()
<< " aesId=" << data.aesId()
<< " contaminationStates().size=" << data.contaminationStates().size();
<< " id=" << data.id
<< " aesId=" << data.aesId
<< " contaminationStates().size=" << data.contaminationStates.size();
// Reset:
if (data.contaminationStates().empty())
m_contaminationState.remove(data.id());
if (data.contaminationStates.empty())
m_contaminationState.remove(data.id);
// If a building is reset in an area where there is an active nuclear weapon, it will not be recontaminated -> in this case,
// regular checks should be carried out to see if the building needs to be contaminated
// Buildings that have been reset or decontaminated will be recontaminated as long as the nuclear weapon is still present
@@ -258,16 +258,16 @@ void HandlerContamination::onBuildingStateChanged(const Buildings::BuildingState
const auto aesItemViews = m_ddsHandler->dtcAes()->aesItemViews();
for (const auto &aesItemView : std::as_const(aesItemViews))
{
if (aesItemView.effectStateId() == AreaEffectSimulation::AesEffectState::EsActivated)
if (aesItemView.effectStateId == AreaEffectSimulation::AesEffectState::EsActivated)
{
DEBUG_LOG(m_logger) << "Wirkfeld aesItemView.id()=" << aesItemView.id()
<< " aesItemView.aesItemId()=" << aesItemView.aesItemId()
<< " fuer Gebaeude " << data.id() << " neu berechnen";
DEBUG_LOG(m_logger) << "Wirkfeld aesItemView.id()=" << aesItemView.id
<< " aesItemView.aesItemId()=" << aesItemView.aesItemId
<< " fuer Gebaeude " << data.id << " neu berechnen";
double chargeHeight = 0.0;
double chargeDepression = 0.0;
if (aesItemView.aesTypeId() == AreaEffectSimulation::AesType::AtNContamination)
if (aesItemView.aesTypeId == AreaEffectSimulation::AesType::AtNContamination)
{
chargeHeight = 500.0; // Alle Stockwerke beruecksichtigen
chargeDepression = -1000.0; // Alle Kellerraeume beruecksichtigen
@@ -276,16 +276,16 @@ void HandlerContamination::onBuildingStateChanged(const Buildings::BuildingState
}
else
{
if ( m_aesBCContaminations.contains(aesItemView.aesItemId()))
if ( m_aesBCContaminations.contains(aesItemView.aesItemId))
{
chargeHeight = m_aesBCContaminations.value(aesItemView.aesItemId()).upperOffset();
chargeDepression = m_aesBCContaminations.value(aesItemView.aesItemId()).lowerOffset();
chargeHeight = m_aesBCContaminations.value(aesItemView.aesItemId).upperOffset;
chargeDepression = m_aesBCContaminations.value(aesItemView.aesItemId).lowerOffset;
DEBUG_LOG(m_logger) << "BCContaminations: chargeHeight=" << chargeHeight
<< " chargeDepression=" << chargeDepression;
}
else
{
DEBUG_LOG(m_logger) << "BCContaminations: m_aesBCContaminations not contains:"<< aesItemView.aesItemId();
DEBUG_LOG(m_logger) << "BCContaminations: m_aesBCContaminations not contains:"<< aesItemView.aesItemId;
}
}
@@ -293,18 +293,18 @@ void HandlerContamination::onBuildingStateChanged(const Buildings::BuildingState
auto dtcIsm = m_ddsHandler->dtcIsm();
int exerciseId = m_ddsHandler->getExerciseId();
QPolygonF polygonGeo;
polygonGeo.reserve(aesItemView.form().size());
polygonGeo.reserve(aesItemView.form.size());
// Convert Form to UTM
for (const auto point : aesItemView.form())
polygonGeo.append(QPointF(point.lon(), point.lat()));
for (const auto point : aesItemView.form)
polygonGeo.append(QPointF(point.lon, point.lat));
bool completeEnclosed = true;
bool isGroundLevel = false;
const QVector<int> &buildingIds = dtcIsm.get()->getBuildingByPolygon(exerciseId, polygonGeo, completeEnclosed, isGroundLevel);
if (buildingIds.contains(data.id() ))
calculateBuilding(data.id(), aesItemView, chargeHeight, chargeDepression);
if (buildingIds.contains(data.id ))
calculateBuilding(data.id, aesItemView, chargeHeight, chargeDepression);
else
DEBUG_LOG(m_logger) << "Building not in Area BuildingId=" << data.id();
DEBUG_LOG(m_logger) << "Building not in Area BuildingId=" << data.id;
}
}
}
@@ -317,8 +317,8 @@ void HandlerContamination::setBuildingContaminationStateRequest(int buildingId,
{
Buildings::ContaminationState contaminationState;
contaminationState.aesId(aesId);
contaminationState.vulnerabilityState(vulnerabilityState);
contaminationState.aesId = aesId;
contaminationState.vulnerabilityState = vulnerabilityState;
// contaminationState.vulne
DEBUG_LOG(m_logger) << "setBuildingContaminationStateRequest"
@@ -326,11 +326,11 @@ void HandlerContamination::setBuildingContaminationStateRequest(int buildingId,
<< " aesId=" << aesId
<< " vulnerabilityState=" << vulnerabilityState
<< " rooms.size=" << rooms.size();
contaminationState.rooms().resize(rooms.size());
contaminationState.rooms.resize(rooms.size());
for (int i = 0; i < rooms.size(); i++)
{
contaminationState.rooms()[i] = rooms[i];
contaminationState.vulnerabilityState(vulnerabilityState);
contaminationState.rooms[i] = rooms[i];
contaminationState.vulnerabilityState = vulnerabilityState;
DEBUG_LOG(m_logger) << " room[" << i << "]=" << rooms[i];
}
@@ -342,7 +342,7 @@ void HandlerContamination::setBuildingContaminationStateRequest(int buildingId,
if (!m_contaminationState.contains(buildingId))
{
DEBUG_LOG(m_logger) << "Neue Kontamination BuildingId=" << buildingId
<< " requestContamination aesId=" << requestContamination.contaminationState().aesId();
<< " requestContamination aesId=" << requestContamination.contaminationState.aesId;
m_ddsHandler->ftcBld()->setBuildingContaminationStateRequest(requestContamination, this);
m_contaminationState.insert(buildingId, requestContamination);
@@ -353,7 +353,7 @@ void HandlerContamination::setBuildingContaminationStateRequest(int buildingId,
if (lastRequestContamination != requestContamination)
{
DEBUG_LOG(m_logger) << "Änderung der Kontamination BuildingId=" << buildingId
<< " aesId=" << requestContamination.contaminationState().aesId();
<< " aesId=" << requestContamination.contaminationState.aesId;
m_ddsHandler->ftcBld()->setBuildingContaminationStateRequest(requestContamination, this);
m_contaminationState.insert(buildingId, requestContamination);
return;
@@ -416,10 +416,10 @@ void HandlerContamination::onSetBuildingContaminationStateReply(const Core::Func
void HandlerContamination::onBCContaminationChanged(const AreaEffectSimulation::BCContamination &data, DataModification modType)
{
if ((modType == DataModification::eRemoved)
|| data.isDeleted())
m_aesBCContaminations.remove(data.id());
|| data.isDeleted)
m_aesBCContaminations.remove(data.id);
else
m_aesBCContaminations.insert(data.id(), data);
m_aesBCContaminations.insert(data.id, data);
}
// Returns true if the building is in the inner circle at the time of impact and should fail as a result.
@@ -429,20 +429,20 @@ bool HandlerContamination::isInsideInnerCircle(int buildingId, int aesId)
InfrastructureManagement::MainStructureElement mse = m_ddsHandler->dtcIsm()->mainStructureElement(buildingId);
AreaEffectSimulation::NContamination nContamination = m_ddsHandler->dtcAes()->nContamination(aesId);
DEBUG_LOG(m_logger) << "isInsideInnerCircle borderLengthInner=" << nContamination.borderLengthInner()
<< " borderLengthOuter=" << nContamination.borderLengthOuter()
<< " impactRadius=" << nContamination.impactRadius();
DEBUG_LOG(m_logger) << "isInsideInnerCircle borderLengthInner=" << nContamination.borderLengthInner
<< " borderLengthOuter=" << nContamination.borderLengthOuter
<< " impactRadius=" << nContamination.impactRadius;
int zone = -1;
const QPointF impactPositionUtm = CentralEffectSimulation::geographic2Utm(nContamination.impactPosition(), zone);
const QPointF impactPositionUtm = CentralEffectSimulation::geographic2Utm(nContamination.impactPosition, zone);
DEBUG_LOG(m_logger) << "impactPositionUtm=" << impactPositionUtm.x() << "/" << impactPositionUtm.y()
<< " zone=" << zone;
const QPointF buildingPositionUtm = CentralEffectSimulation::geographic2Utm(mse.geoPosition(), zone);
const QPointF buildingPositionUtm = CentralEffectSimulation::geographic2Utm(mse.geoPosition, zone);
DEBUG_LOG(m_logger) << "buildingPositionUtm=" << buildingPositionUtm.x() << "/" << buildingPositionUtm.y();
double squareDistance = CentralEffectSimulation::getSquareDistance(impactPositionUtm, buildingPositionUtm);
if (squareDistance < nContamination.impactRadius() * nContamination.impactRadius())
if (squareDistance < nContamination.impactRadius * nContamination.impactRadius)
{
DEBUG_LOG(m_logger) << "isInsideInnerCircle return true";
return true;
@@ -464,18 +464,18 @@ bool HandlerContamination::isInsideBCContamination(int buildingId, int aesId)
//AreaEffectSimulation::NContamination nContamination = m_ddsHandler->dtcAes()->nContamination(aesId);
AreaEffectSimulation::BCContamination bcContamination = m_ddsHandler->dtcAes()->bCContamination(aesId);
DEBUG_LOG(m_logger) << " impactRadius=" << bcContamination.impactRadius();
DEBUG_LOG(m_logger) << " impactRadius=" << bcContamination.impactRadius;
int zone = -1;
const QPointF impactPositionUtm = CentralEffectSimulation::geographic2Utm(bcContamination.impactPosition(), zone);
const QPointF impactPositionUtm = CentralEffectSimulation::geographic2Utm(bcContamination.impactPosition, zone);
DEBUG_LOG(m_logger) << "impactPositionUtm=" << impactPositionUtm.x() << "/" << impactPositionUtm.y()
<< " zone=" << zone;
const QPointF buildingPositionUtm = CentralEffectSimulation::geographic2Utm(mse.geoPosition(), zone);
const QPointF buildingPositionUtm = CentralEffectSimulation::geographic2Utm(mse.geoPosition, zone);
DEBUG_LOG(m_logger) << "buildingPositionUtm=" << buildingPositionUtm.x() << "/" << buildingPositionUtm.y();
double squareDistance = CentralEffectSimulation::getSquareDistance(impactPositionUtm, buildingPositionUtm);
if (squareDistance < bcContamination.impactRadius() * bcContamination.impactRadius())
if (squareDistance < bcContamination.impactRadius * bcContamination.impactRadius)
{
DEBUG_LOG(m_logger) << "isInsideInnerCircle return true";
return true;
@@ -496,20 +496,20 @@ bool HandlerContamination::isInsideRange1(int buildingId, int aesId)
InfrastructureManagement::MainStructureElement mse = m_ddsHandler->dtcIsm()->mainStructureElement(buildingId);
AreaEffectSimulation::NContamination nContamination = m_ddsHandler->dtcAes()->nContamination(aesId);
DEBUG_LOG(m_logger) << "isInsideRange1 borderLengthInner=" << nContamination.borderLengthInner()
<< " borderLengthOuter=" << nContamination.borderLengthOuter()
<< " impactRadius=" << nContamination.impactRadius();
DEBUG_LOG(m_logger) << "isInsideRange1 borderLengthInner=" << nContamination.borderLengthInner
<< " borderLengthOuter=" << nContamination.borderLengthOuter
<< " impactRadius=" << nContamination.impactRadius;
int zone = -1;
const QPointF impactPositionUtm = CentralEffectSimulation::geographic2Utm(nContamination.impactPosition(), zone);
const QPointF impactPositionUtm = CentralEffectSimulation::geographic2Utm(nContamination.impactPosition, zone);
DEBUG_LOG(m_logger) << "impactPositionUtm=" << impactPositionUtm.x() << "/" << impactPositionUtm.y()
<< " zone=" << zone;
const QPointF buildingPositionUtm = CentralEffectSimulation::geographic2Utm(mse.geoPosition(), zone);
const QPointF buildingPositionUtm = CentralEffectSimulation::geographic2Utm(mse.geoPosition, zone);
DEBUG_LOG(m_logger) << "buildingPositionUtm=" << buildingPositionUtm.x() << "/" << buildingPositionUtm.y();
double squareDistance = CentralEffectSimulation::getSquareDistance(impactPositionUtm, buildingPositionUtm);
if (squareDistance < nContamination.borderLengthInner() * nContamination.borderLengthInner())
if (squareDistance < nContamination.borderLengthInner * nContamination.borderLengthInner)
{
DEBUG_LOG(m_logger) << "isInsideRange1 return true";
return true;
@@ -117,7 +117,7 @@ void HandlerAesData::onAesItemViewChanged(const AreaEffectSimulation::AesItemVie
return;
DEBUG_LOG(m_logger) << "Got AesItemView: " << data.effectStateId();
switch (data.effectStateId().underlying())
switch (data.effectStateId())
{
case AreaEffectSimulation::AesEffectState::EsUnknown:
case AreaEffectSimulation::AesEffectState::EsError:
@@ -381,7 +381,7 @@ void HandlerAesData::onSendCesHitInformationReply(const Core::FunctionReplyObjec
void HandlerAesData::calculateImpacts(const AreaEffectSimulation::TriggeredImpacts &data, const Footprint &footprint)
{
// check for correct AES type artillery only
switch (data.aesTypeId().underlying())
switch (data.aesTypeId())
{
case AreaEffectSimulation::AesType::AtExplosionArea:
case AreaEffectSimulation::AesType::AtExplosionSingle:
@@ -26,7 +26,7 @@ namespace core
{
inline uint qHash(ProjectDataManagement::PdmEventType et)
{
return ::qHash(et.underlying());
return ::qHash(et);
}
}
}
@@ -280,7 +280,7 @@ void HandlerParticipantArea::onAesItemViewChanged(const AreaEffectSimulation::Ae
const AreaEffectSimulation::AesEffectState &effectState = data.effectStateId();
const double impactRadius = m_ddsHandler->chargeTypeRadius(data.chargeTypeId());
DEBUG_LOG(m_logger) << "impactRadius=" << impactRadius;
switch (effectState.underlying())
switch (effectState)
{
case AreaEffectSimulation::AesEffectState::EsPrepared:
{
@@ -291,7 +291,7 @@ void HandlerParticipantArea::onAesItemViewChanged(const AreaEffectSimulation::Ae
{
const auto aesItemViewUtm(CentralEffectSimulation::AesItemViewUtm::create(data, m_aesItemViews[data.aesItemId()], impactRadius));
switch (data.aesTypeId().underlying())
switch (data.aesTypeId())
{
case AreaEffectSimulation::AesType::AtExplosionArea:
case AreaEffectSimulation::AesType::AtExplosionSingle:
@@ -353,7 +353,7 @@ void HandlerParticipantArea::onDusSingleMineChanged(const AreaEffectSimulation::
break;
case DataModification::eAdded:
case DataModification::eModified:
switch (data.effectStateId().underlying())
switch (data.effectStateId())
{
case AreaEffectSimulation::AesEffectState::EsActivated:
{
@@ -361,7 +361,7 @@ void HandlerParticipantArea::onDusSingleMineChanged(const AreaEffectSimulation::
CentralEffectSimulation::AesItemViewUtm itemView;
itemView.aesItemId = data.id();
itemView.chargeTypeId = data.chargeTypeId();
itemView.partyId = data.partyId.is_set() ? data.partyId.get() : -1;
itemView.partyId = data.partyId.has_value() ? data.partyId.get() : -1;
itemView.aesTypeId = AreaEffectSimulation::AesType::AtDusSingleMine;
itemView.effectStart = QDateTime::currentDateTimeUtc().toMSecsSinceEpoch();
itemView.formMines.push_back(CentralEffectSimulation::geographic2Utm(data.position(), &itemView.zone));
@@ -394,7 +394,7 @@ void HandlerParticipantArea::onBCContaminationChanged(const AreaEffectSimulation
break;
case DataModification::eAdded:
case DataModification::eModified:
switch (data.effectStateId().underlying())
switch (data.effectStateId())
{
case AreaEffectSimulation::AesEffectState::EsReceived:
case AreaEffectSimulation::AesEffectState::EsCreated:
@@ -426,7 +426,7 @@ void HandlerParticipantArea::onNContaminationChanged(const AreaEffectSimulation:
break;
case DataModification::eAdded:
case DataModification::eModified:
switch (data.effectStateId().underlying())
switch (data.effectStateId())
{
case AreaEffectSimulation::AesEffectState::EsReceived:
case AreaEffectSimulation::AesEffectState::EsCreated:
@@ -502,7 +502,7 @@ void HandlerParticipantArea::calculateAesParticipant(const CentralEffectSimulati
for (const CentralEffectSimulation::AesItemViewUtm &itemView : std::as_const(m_aesItemViews))
{
DEBUG_LOG(m_logger) << " itemView: " << itemView.aesItemId << ", " << itemView.aesTypeId;
switch (itemView.aesTypeId.underlying())
switch (itemView.aesTypeId)
{
case AreaEffectSimulation::AesType::AtMineArea:
if (inFormCheck(itemView, participantPos))
@@ -625,7 +625,7 @@ bool HandlerParticipantArea::inFormCheck(const CentralEffectSimulation::AesItemV
{
DEBUG_LOG(m_logger) << "inside AES form, paricipantId: " << participantPosition.participantId()
<< ", aesItemId: " << itemView.aesItemId;
switch (itemView.aesTypeId.underlying())
switch (itemView.aesTypeId)
{
case AreaEffectSimulation::AesType::AtBCContamination:
sendEffectTypeEvent(itemView, participantPosition, effectTypeForBCContaminationArea(itemView, participantPosUtmPoint), -1, -1);
@@ -654,7 +654,7 @@ bool HandlerParticipantArea::inFormCheck(const CentralEffectSimulation::AesItemV
} // if inside
// outside
switch (itemView.aesTypeId.underlying())
switch (itemView.aesTypeId)
{
case AreaEffectSimulation::AesType::AtBCContamination:
sendEffectTypeEvent(itemView, participantPosition, EffectType::BCContaminationLeave, -1, -1);
@@ -698,7 +698,7 @@ void HandlerParticipantArea::onTriggeredImpactsChanged(const AreaEffectSimulatio
return;
DEBUG_LOG(m_logger) << "Got TriggeredImpacts: " << data;
switch (data.aesTypeId().underlying())
switch (data.aesTypeId())
{
case AreaEffectSimulation::AesType::AtExplosionArea:
case AreaEffectSimulation::AesType::AtExplosionSingle:
@@ -725,7 +725,7 @@ void HandlerParticipantArea::onExplosionAreaChanged(const AreaEffectSimulation::
return;
DEBUG_LOG(m_logger) << "Got ExplosionArea, m_aesItemId2partIdMap.insert " << data.id() << " / " << data.participantId();
if (data.participantId.is_set())
if (data.participantId.has_value())
m_aesItemId2partIdMap.insert(data.id(), data.participantId.get());
else
m_aesItemId2partIdMap.remove(data.id());
@@ -916,7 +916,7 @@ void HandlerParticipantArea::calculateImpacts(const AreaEffectSimulation::Trigge
const auto participantPositions = m_handlerParticipant->positions();
for (const CentralEffectSimulation::HandlerParticipant::CesParticipantData &pPos : participantPositions)
{
if (pPos.vulnerabilityState == ProjectDataManagement::VulnerabilityState::CatastrophicKill)
if (pPos.vulnerabilityState == ProjectDataManagement::VulnerabilityState::VulnerabilityState_CatastrophicKill)
continue;
if (pPos.insideBuilding())
continue;
@@ -992,7 +992,7 @@ void HandlerParticipantArea::sendCesHitRequest(const CentralEffectSimulation::Ae
return;
}
if (participantPosition.participantId() != 0 &&
participantPosition.vulnerabilityState == ProjectDataManagement::VulnerabilityState::CatastrophicKill)
participantPosition.vulnerabilityState == ProjectDataManagement::VulnerabilityState::VulnerabilityState_CatastrophicKill)
{
DEBUG_LOG(m_logger) << "participantPosition.participantId != 0 CatastrophicKill)";
return;
@@ -1059,7 +1059,7 @@ void HandlerParticipantArea::sendCesHitRequest(const AreaEffectSimulation::AesIt
} // if
if (participantPosition.participantId() != 0 &&
participantPosition.vulnerabilityState == ProjectDataManagement::VulnerabilityState::CatastrophicKill)
participantPosition.vulnerabilityState == ProjectDataManagement::VulnerabilityState::VulnerabilityState_CatastrophicKill)
{
DEBUG_LOG(m_logger) << "participantPosition.participantId != 0 CatastrophicKill)";
return;
@@ -1158,14 +1158,14 @@ void HandlerParticipantArea::sendParticipantEvent(const CentralEffectSimulation:
CentralEffectSimulation::ParticipantEvent pe;
pe.id(m_ddsHandler->getParticipantEventId());
pe.eventTypeId(eventType.underlying());
pe.eventTypeId(eventType);
pe.participantId(participantPosition.participantId());
pe.eventTime(participantPosition.sampleTime());
pe.aesItemId(itemView.aesItemId);
pe.partyId(participantPosition.partyId());
//pe.aesName(m_handlerAesData->aesName(itemView.aesItemId));
pe.equipmentNumber(equipmentNumber);
pe.vulnerability(participantPosition.vulnerabilityState.underlying());
pe.vulnerability(participantPosition.vulnerabilityState);
pe.position(participantPosition.pos());
// Criterion for friendly Fire:
@@ -1267,7 +1267,7 @@ bool HandlerParticipantArea::eventMustBeSend(int aesItemId,
activeEvents.insert(eventType);
// - remove opposite events (e.g remove Enter event when we leave the area)
switch (eventType.underlying())
switch (eventType)
{
case ProjectDataManagement::PdmEventType::EventType_EnterDangerArea:
activeEvents.remove(ProjectDataManagement::PdmEventType::EventType_LeaveDangerArea);
@@ -1423,7 +1423,7 @@ bool HandlerParticipantArea::inCircle(const QPointF &centerUtm, const double rad
ProjectDataManagement::PdmEventType HandlerParticipantArea::leaveEventTypeForAesType(AreaEffectSimulation::AesType aesTypeId)
{
switch (aesTypeId.underlying())
switch (aesTypeId)
{
case AreaEffectSimulation::AesType::AtDangerArea:
return ProjectDataManagement::PdmEventType::EventType_LeaveDangerArea;
@@ -1441,7 +1441,7 @@ ProjectDataManagement::PdmEventType HandlerParticipantArea::leaveEventTypeForAes
EffectType HandlerParticipantArea::leaveEffectTypeForAesType(AreaEffectSimulation::AesType aesTypeId)
{
switch (aesTypeId.underlying())
switch (aesTypeId)
{
case AreaEffectSimulation::AesType::AtBCContamination:
return EffectType::BCContaminationLeave;
@@ -13,6 +13,12 @@
#include <PolygonBuilder.h>
#include <GeometryEngine.h>
#include <Point.h>
#include <Geometry.h>
#include <Polygon.h>
#include <SpatialReference.h>
#include <ImmutablePartCollection.h>
#include <ImmutablePart.h>
namespace CesExplosions
{
@@ -91,62 +91,62 @@ void HandlerVulcano::onExplosionClusterChanged(const AreaEffectSimulation::Explo
{
// order checks by effort:
if ((modType == DataModification::eRemoved)
|| (data.effectStateId() == AreaEffectSimulation::AesEffectState::EsExpired)
|| (data.effectStateId() == AreaEffectSimulation::AesEffectState::EsActivated))
|| (data.effectStateId == AreaEffectSimulation::AesEffectState::EsExpired)
|| (data.effectStateId == AreaEffectSimulation::AesEffectState::EsActivated))
return;
if (!data.effectStart.is_set())
if (!data.effectStart.has_value())
{
DEBUG_LOG(m_logger) << "No effectStart";
return;
}
// Kriterium fuer NASAT/MIDAS
if (m_ddsHandler->dtcPdm()->gearClassFromChargeTypeId(data.chargeStruct().chargeTypeId()) == ProjectDataManagement::GearClass::AirSupport)
if (m_ddsHandler->dtcPdm()->gearClassFromChargeTypeId(data.chargeStruct.chargeTypeId) == ProjectDataManagement::GearClass::GearClass_AirSupport)
return;
if (!m_ddsHandler->isLaserGuidable(data.chargeStruct()))
if (!m_ddsHandler->isLaserGuidable(data.chargeStruct))
return;
if (!data.flightCurve.is_set() || !data.laserGuiding.is_set())
if (!data.flightCurve.has_value() || !data.laserGuiding.has_value())
return;
const AreaEffectSimulation::FlightCurve &fcData = data.flightCurve.get();
const AreaEffectSimulation::LaserGuiding &lgData = data.laserGuiding.get();
DEBUG_LOG(m_logger) << "\n onExplosionClusterChanged id=" << data.id()
<< " AesEffectState=" << data.effectStateId()
<< " lcPrf=" << lgData.lcAttack()
<< " originalEffectDuration=" << data.originalEffectDuration()
<< " effectStart=" << data.effectStart();
DEBUG_LOG(m_logger) << "\n onExplosionClusterChanged id=" << data.id
<< " AesEffectState=" << data.effectStateId
<< " lcPrf=" << lgData.lcAttack
<< " originalEffectDuration=" << data.originalEffectDuration
<< " effectStart=" << data.effectStart;
DEBUG_LOG(m_logger) << "m_prfToAesId.insert(" << lgData.lcAttack() << ", " << data.id() << ")"
<< " tapTimepoint=" << lgData.tapTime()
DEBUG_LOG(m_logger) << "m_prfToAesId.insert(" << lgData.lcAttack << ", " << data.id << ")"
<< " tapTimepoint=" << lgData.tapTime
<< " currentPartitionTime=" << m_ddsHandler->currentPartitionTime()
<< " Timer interval =" << lgData.tapTime() - m_ddsHandler->currentPartitionTime();
<< " Timer interval =" << lgData.tapTime - m_ddsHandler->currentPartitionTime();
int aesId = data.id();
int aesId = data.id;
QTimer *timer = new QTimer(this);
timer->setSingleShot(true);
QObject::connect(timer, &QTimer::timeout,
this, &HandlerVulcano::onFiringTimeTimeout);
if (m_aesTimers.contains(data.id()))
if (m_aesTimers.contains(data.id))
{
m_aesTimers.value(data.id())->stop();
delete m_aesTimers.value(data.id());
m_aesTimers.remove(data.id());
m_aesTimers.value(data.id)->stop();
delete m_aesTimers.value(data.id);
m_aesTimers.remove(data.id);
}
m_aesTimers.insert(data.id(), timer);
m_aesTimers.insert(data.id, timer);
timer->setProperty("aesId", aesId);
{
long long effectStart = data.effectStart.is_set() ? data.effectStart.get() : 0;
long long calculatedFlightDurationMSec = fcData.calculatedFlightDuration();
long long effectStart = data.effectStart.has_value() ? data.effectStart.get() : 0;
long long calculatedFlightDurationMSec = fcData.calculatedFlightDuration;
long long currentPartitionTime = m_ddsHandler->currentPartitionTime();
const int timerTimeout = effectStart - calculatedFlightDurationMSec - currentPartitionTime;
DEBUG_LOG(m_logger) << "Timer started mit Abflugzeit des Vulcano=" << timerTimeout;
if (timerTimeout >= 0)
timer->start(timerTimeout);
}
m_explosionCluster.insert(data.id(), data);
m_explosionCluster.insert(data.id, data);
}
void HandlerVulcano::onFiringTimeTimeout()
@@ -159,9 +159,9 @@ void HandlerVulcano::onFiringTimeTimeout()
DEBUG_LOG(m_logger) << "onTimerTimeout aesId=" << aesId;
const auto &myEC = m_explosionCluster.value(aesId);
if (myEC.id() != aesId)
if (myEC.id != aesId)
return;
if (!myEC.flightCurve.is_set())
if (!myEC.flightCurve.has_value())
return;
const AreaEffectSimulation::FlightCurve &fcData = myEC.flightCurve.get();
@@ -184,7 +184,7 @@ void HandlerVulcano::onFiringTimeTimeout()
timer->setProperty("aesId", aesId);
auto dtcAes = m_ddsHandler->dtcAes();
const AreaEffectSimulation::TrajectoryTimeAware &trajectoryTimeAware = firstTrajectoryTimeAwareFromAesId(aesId);
if (trajectoryTimeAware.geometry().size() < 2)
if (trajectoryTimeAware.geometry.size() < 2)
{
DEBUG_LOG(m_logger) << "return";
return;
@@ -203,12 +203,12 @@ void HandlerVulcano::onFiringTimeTimeout()
// ----------------| Surface
*/
const std::vector<Core::GeoPositionRelativeTime> &geometryRef = trajectoryTimeAware.geometry();
int calculatedFlightDurationMSec = fcData.calculatedFlightDuration();
const std::vector<Core::GeoPositionRelativeTime> &geometryRef = trajectoryTimeAware.geometry;
int calculatedFlightDurationMSec = fcData.calculatedFlightDuration;
// TAP' kann auch TAP sein -> Es ist immer der vorletzte Wert. = size() - 2.
int relTimeTap = geometryRef[geometryRef.size() - 2].relativeTime();
int relTimeTap = geometryRef[geometryRef.size() - 2].relativeTime;
// Der letzte Wert ist immer der Einschlag = size() - 1.
int relTimeExplosion = geometryRef[geometryRef.size() - 1].relativeTime();
int relTimeExplosion = geometryRef[geometryRef.size() - 1].relativeTime;
// Flugzeit zwischen TAP(') und Einschlag
int timeDiffTapToExplosion = relTimeExplosion - relTimeTap;
// Somit ist die absolute Zeit am TAP(') die Startzeit abzüglich der Flugzeit
@@ -230,33 +230,33 @@ void HandlerVulcano::onTrajectoryTimeAwareTimeout()
m_aesTimers.remove(aesId);
DEBUG_LOG(m_logger) << "++++++++++++++ onTrajectoryTimeAwareTimeout aesId=" << aesId;
const auto &myEC = m_explosionCluster.value(aesId);
if (myEC.id() != aesId)
if (myEC.id != aesId)
return;
if (!myEC.laserGuiding.is_set())
if (!myEC.laserGuiding.has_value())
return;
const AreaEffectSimulation::LaserGuiding &lgData = myEC.laserGuiding.get();
const int prf = lgData.lcAttack();
const int prf = lgData.lcAttack;
const auto &dtcPpm = m_ddsHandler->dtcPpm();
const auto &dtcAes = m_ddsHandler->dtcAes();
auto participantId = dtcPpm->getParticipantFromPrf(prf);
auto dpd = dtcPpm->dynamicParticipantData(participantId);
const auto &designationsVec = dpd.designations();
const auto &designationsVec = dpd.designations;
DEBUG_LOG(m_logger) << "onTimerTimeout participantId=" << participantId;
for (const auto &designation : std::as_const(designationsVec))
{
if (designation.code() == prf && designation.outputPower() > 0)
if (designation.code == prf && designation.outputPower > 0)
{
const AreaEffectSimulation::TrajectoryTimeAware &trajectoryTimeAware = firstTrajectoryTimeAwareFromAesId(aesId);
const std::vector<Core::GeoPositionRelativeTime> &trajGeometry = trajectoryTimeAware.geometry();
const std::vector<Core::GeoPositionRelativeTime> &trajGeometry = trajectoryTimeAware.geometry;
DEBUG_LOG(m_logger) << "trajectoryTimeAware.geometry().size()=" << trajGeometry.size();
DEBUG_LOG(m_logger) << "Designation code=" << designation.code()
DEBUG_LOG(m_logger) << "Designation code=" << designation.code
<< " prf=" << prf
<< " outputPower=" << designation.outputPower()
<< " designation.spotlocation=" << designation.spotLocation().lon() << "/" << designation.spotLocation().lat();
<< " outputPower=" << designation.outputPower
<< " designation.spotlocation=" << designation.spotLocation.lon << "/" << designation.spotLocation.lat;
if (trajGeometry.size() < 2)
{
@@ -266,20 +266,20 @@ void HandlerVulcano::onTrajectoryTimeAwareTimeout()
const Core::GeoPosition topGeo = trajGeometry.at(trajGeometry.size() - 2);
const Core::GeoPosition bottomGeo = trajGeometry.at(trajGeometry.size() - 1);
const Core::GeoPosition2D pointToTestGeo = designation.spotLocation();
const Core::GeoPosition2D pointToTestGeo = designation.spotLocation;
int zone = -1;
const QPointF &topPt = CentralEffectSimulation::geographic2Utm(topGeo, &zone);
const QPointF &bottomPt = CentralEffectSimulation::geographic2Utm(bottomGeo, &zone);
const QPointF &pointToTestPt = CentralEffectSimulation::geographic2Utm(pointToTestGeo, &zone);
const QVector3D top(topPt.x(), topPt.y(), topGeo.z());
const QVector3D top(topPt.x(), topPt.y(), topGeo.z);
DEBUG_LOG(m_logger) << "top=" << top.x() << "/" << top.y() << "/" << top.z() << " zone=" << zone;
const QVector3D bottom(bottomPt.x(), bottomPt.y(), bottomGeo.z());
const QVector3D bottom(bottomPt.x(), bottomPt.y(), bottomGeo.z);
DEBUG_LOG(m_logger) << "bottom=" << bottom.x() << "/" << bottom.y() << "/" << bottom.z() << " zone=" << zone;
const QVector3D pointToTest(pointToTestPt.x(), pointToTestPt.y(), designation.spotLocation().z());
const QVector3D pointToTest(pointToTestPt.x(), pointToTestPt.y(), designation.spotLocation.z);
DEBUG_LOG(m_logger) << "pointToTest=" << pointToTest.x() << "/" << pointToTest.y() << "/" << pointToTest.z() << " zone=" << zone;
float vulcanoViewAngleDeg = CesExplosions::Settings::vulcanoViewAngleDeg();
@@ -294,7 +294,7 @@ void HandlerVulcano::onTrajectoryTimeAwareTimeout()
return;
}
const auto observerPos = dtcPpm->participantPosition(participantId).pos();
const auto observerPos = dtcPpm->participantPosition(participantId).pos;
QPointF fePt = CentralEffectSimulation::geographic2Utm(trajGeometry.at(0), &zone);
QVector3D fe(fePt.x(), fePt.y(), 0);
@@ -320,11 +320,11 @@ void HandlerVulcano::onTrajectoryTimeAwareTimeout()
AreaEffectSimulation::TargetPositionsModifyRequest posModify;
posModify.aesItemId(aesId);
posModify.positions().push_back(designation.spotLocation());
DEBUG_LOG(m_logger) << "targetPositionsModifyRequest z=" << posModify.positions().at(0).z()
<< " designation.z=" << designation.spotLocation().z()
<< " PosVulcano=" << posVulcano.lon() << "/" << posVulcano.lat();
posModify.aesItemId = aesId;
posModify.positions.push_back(designation.spotLocation);
DEBUG_LOG(m_logger) << "targetPositionsModifyRequest z=" << posModify.positions.at(0).z
<< " designation.z=" << designation.spotLocation.z
<< " PosVulcano=" << posVulcano.lon << "/" << posVulcano.lat;
m_ddsHandler->ftcAes()->targetPositionsModifyRequest(posModify, this);
return;
}
@@ -336,7 +336,7 @@ AreaEffectSimulation::TrajectoryTimeAware HandlerVulcano::firstTrajectoryTimeAwa
// be aware of: [E01562-259] use originatorId, originatorTypeId (instead of aesItemId, aesTypeId)
const auto &dtcAes = m_ddsHandler->dtcAes();
const auto &trajectories = dtcAes->trajectoriesTimeAwareFromOriginatorIdAndType(aesId,
ProjectDataManagement::StateChangeOriginator::AreaEffectSimulation);
ProjectDataManagement::StateChangeOriginator::StateChangeOriginator_AreaEffectSimulation);
if (trajectories.empty())
{
DEBUG_LOG(m_logger) << "no trajectories found for originatorId/aesItemId " << aesId;
@@ -353,15 +353,15 @@ Core::GeoPosition HandlerVulcano::getTrajectoryPosFromTime(int aesId, long long
// be aware of: [E01562-259] use originatorId, originatorTypeId (instead of aesItemId, aesTypeId)
const auto &trajectoryTimeAwareValue = firstTrajectoryTimeAwareFromAesId(aesId);
const qint64 relTime = timeParam - trajectoryTimeAwareValue.trajectoryStartTime();
const qint64 relTime = timeParam - trajectoryTimeAwareValue.trajectoryStartTime;
//trajectoryTimeAwareValue = trajectoryTimeAware(aesId);
DEBUG_LOG(m_logger) << " getTrajectoryPosFromTime aesId=" << aesId
<< " trajectoryTimeAwareValue.id=" << trajectoryTimeAwareValue.id()
<< " trajectoryTimeAwareValue.id=" << trajectoryTimeAwareValue.id
<< " time=" << timeParam
<< " trajectoryStartTime=" << trajectoryTimeAwareValue.trajectoryStartTime()
<< " trajectoryStartTime=" << trajectoryTimeAwareValue.trajectoryStartTime
<< " relTime=" << relTime;
if (trajectoryTimeAwareValue.geometry().empty())
if (trajectoryTimeAwareValue.geometry.empty())
{
DEBUG_LOG(m_logger) << "getTrajectoryPosFromTime no pos available";
return {};
@@ -369,13 +369,13 @@ Core::GeoPosition HandlerVulcano::getTrajectoryPosFromTime(int aesId, long long
Core::GeoPosition result;
int i = 0;
for (const auto &point : std::as_const(trajectoryTimeAwareValue.geometry()))
for (const auto &point : std::as_const(trajectoryTimeAwareValue.geometry))
{
DEBUG_LOG(m_logger) << "time=" << point.relativeTime();
if ( (point.relativeTime() > relTime) && (i > 0))
DEBUG_LOG(m_logger) << "time=" << point.relativeTime;
if ( (point.relativeTime > relTime) && (i > 0))
{
// Beachte: Geschwindigkeit wird _NICHT_ beruecksichtigt
const Core::GeoPositionRelativeTime &geoPosRelTime = trajectoryTimeAwareValue.geometry()[i-1];
const Core::GeoPositionRelativeTime &geoPosRelTime = trajectoryTimeAwareValue.geometry[i-1];
// avoid expensive operations like following
// result.lat() = trajectoryTimeAwareValue.geometry()[i -1].lat();
// result.lon() = trajectoryTimeAwareValue.geometry()[i -1].lon();
@@ -383,14 +383,14 @@ Core::GeoPosition HandlerVulcano::getTrajectoryPosFromTime(int aesId, long long
// and take benefits from downcasting
result = geoPosRelTime; // implicit downcast :-)
DEBUG_LOG(m_logger) << "found i=" << i
<< " result=" << result.lat() << "/" << result.lon() << "/" << result.z();
<< " result=" << result.lat << "/" << result.lon << "/" << result.z;
return result;
}
++i;
} // for
result = trajectoryTimeAwareValue.geometry().back();
result = trajectoryTimeAwareValue.geometry.back();
DEBUG_LOG(m_logger) << " return last point result="
<< " result=" << result.lat() << "/" << result.lon() << "/" << result.z();
<< " result=" << result.lat << "/" << result.lon << "/" << result.z;
return result;
}
@@ -401,16 +401,16 @@ void HandlerVulcano::onDynamicParticipantChanged(const ParticipantManagement::Dy
return;
DEBUG_LOG(m_logger) << "onDynamicParticipantChanged"
<< data.participantId()
<< data.designations().size();
if (data.designations().size() > 0)
<< data.participantId
<< data.designations.size();
if (data.designations.size() > 0)
{
for (const ParticipantManagement::LaserDesignation &designation : std::as_const(data.designations()))
for (const ParticipantManagement::LaserDesignation &designation : std::as_const(data.designations))
{
DEBUG_LOG(m_logger) << "gearId=" << designation.gearId()
<< " code=" << designation.code()
<< " z=" << designation.spotLocation().z()
<< " outputPower=" << designation.outputPower();
DEBUG_LOG(m_logger) << "gearId=" << designation.gearId
<< " code=" << designation.code
<< " z=" << designation.spotLocation.z
<< " outputPower=" << designation.outputPower;
}
}
}
@@ -22,7 +22,7 @@ namespace core
{
inline uint qHash(ProjectDataManagement::PdmEventType et)
{
return ::qHash(et.underlying());
return ::qHash(et);
}
}
}
@@ -165,19 +165,19 @@ void HandlerFunctionalAreas::onDemandInitReply(const Core::FunctionReplyObject &
// ///////////////////////////////////
void HandlerFunctionalAreas::onAesItemViewChanged(const AreaEffectSimulation::AesItemView &data, DataModification modType)
{
const int aesItemId = data.aesItemId();
const AreaEffectSimulation::AesEffectState &effectState = data.effectStateId();
if (data.aesTypeId().underlying() != AreaEffectSimulation::AesType::AtFunctionalArea)
const int aesItemId = data.aesItemId;
const AreaEffectSimulation::AesEffectState &effectState = data.effectStateId;
if (data.aesTypeId != AreaEffectSimulation::AesType::AtFunctionalArea)
return;
const AreaEffectSimulation::FunctionalArea &fa = m_ddsHandler->dtcAes()->functionalArea(data.aesItemId());
const AreaEffectSimulation::FunctionalArea &fa = m_ddsHandler->dtcAes()->functionalArea(data.aesItemId);
if (!fa.isCentral())
if (!fa.isCentral)
{
DEBUG_LOG(m_logger) << " !isCentral"
" Got AesItemView id: " << aesItemId
<< ", type: " << data.aesTypeId()
<< ", effectState: " << data.effectStateId()
<< ", type: " << data.aesTypeId
<< ", effectState: " << data.effectStateId
<< ", modType: " << modType;
if (m_aesItemViews.contains(aesItemId))
m_aesItemViews.remove(aesItemId);
@@ -186,50 +186,50 @@ void HandlerFunctionalAreas::onAesItemViewChanged(const AreaEffectSimulation::Ae
}
DEBUG_LOG(m_logger) << "Got AesItemView id: " << aesItemId
<< ", type: " << data.aesTypeId()
<< ", effectState: " << data.effectStateId()
<< ", type: " << data.aesTypeId
<< ", effectState: " << data.effectStateId
<< ", modType: " << modType;
switch (effectState.underlying())
switch (effectState)
{
case AreaEffectSimulation::AesEffectState::EsPrepared:
break;
case AreaEffectSimulation::AesEffectState::EsActivated:
{
bool isSupplyTruck = false;
if (fa.supplyMode() == AreaEffectSimulation::AesOperatingMode::OmWaitingTime)
if (fa.supplyMode == AreaEffectSimulation::AesOperatingMode::OmWaitingTime)
{
DEBUG_LOG(m_logger) << "isSupplyTruck = true";
isSupplyTruck = true;
}
auto aesItemViewUtm(CentralEffectSimulation::AesItemViewUtm::create(data, m_aesItemViews[data.aesItemId()], 0, isSupplyTruck));
if (fa.participantId.is_set())
auto aesItemViewUtm(CentralEffectSimulation::AesItemViewUtm::create(data, m_aesItemViews[data.aesItemId], 0, isSupplyTruck));
if (fa.participantId.has_value())
aesItemViewUtm.participantId = fa.participantId.get();
if (!m_aesPolygonEncloseBuilding.contains(data.aesItemId()))
if (!m_aesPolygonEncloseBuilding.contains(data.aesItemId))
{
QVector<int> enclosedBuildings;
QPolygonF polygon;
polygon.reserve(data.form().size());
for (size_t i = 0; i < data.form().size(); i++)
polygon.reserve(data.form.size());
for (size_t i = 0; i < data.form.size(); i++)
{
//QPointF point(itemView.form[i].x(), itemView.form[i].y());
QPointF point(data.form().at(i).lon(), data.form().at(i).lat());
QPointF point(data.form.at(i).lon, data.form.at(i).lat);
polygon.append(point);
}
enclosedBuildings = m_handlerBuildingData->polygonEncloseBuildings(polygon);
DEBUG_LOG(m_logger) << "enclosedBuildings.size=" << enclosedBuildings.size();
// local memory for the results, so that the polygonEncloseBuildings method is only run once for each effective field
// and not for each position report
m_aesPolygonEncloseBuilding.insert(data.aesItemId(), enclosedBuildings);
m_aesPolygonEncloseBuilding.insert(data.aesItemId, enclosedBuildings);
DEBUG_LOG(m_logger) << "insert enclosedBuildings.size=" << enclosedBuildings.size();
}
calculateFunctionalArea(aesItemViewUtm);
m_aesItemViews.insert(data.aesItemId(), aesItemViewUtm);
m_aesItemViews.insert(data.aesItemId, aesItemViewUtm);
DEBUG_LOG(m_logger) << "insert Functiona Area AesItemView id: " << aesItemId
<< ", type: " << data.aesTypeId();
<< ", type: " << data.aesTypeId;
break;
} // case EsActivated
case AreaEffectSimulation::AesEffectState::EsRemoved:
@@ -255,34 +255,34 @@ void HandlerFunctionalAreas::calculateFunctionalArea(const CentralEffectSimulati
if (m_handlerParticipant->isOutdated(participantPos))
continue;
DEBUG_LOG(m_logger) << "participant id= " << participantPos.participantId()
<< " buildingId=" << participantPos.buildingId();
DEBUG_LOG(m_logger) << "participant id= " << participantPos.participantId
<< " buildingId=" << participantPos.buildingId;
if ( participantPos.buildingId() ==0 )
if ( participantPos.buildingId ==0 )
inForm = inFormCheck(itemView, participantPos);
else
{
for (int i = 0; i < m_aesPolygonEncloseBuilding.value(itemView.aesItemId).size(); i++)
{
inForm = false;
if (m_aesPolygonEncloseBuilding.value(itemView.aesItemId).at(i) == participantPos.buildingId())
if (m_aesPolygonEncloseBuilding.value(itemView.aesItemId).at(i) == participantPos.buildingId)
{
inForm = true;
m_handlerParticipant->setNotfightMode(participantPos.participantId(), true);
DEBUG_LOG(m_logger) << "!m_aesPolygonEncloseBuilding buildingId=" << participantPos.buildingId()
m_handlerParticipant->setNotfightMode(participantPos.participantId, true);
DEBUG_LOG(m_logger) << "!m_aesPolygonEncloseBuilding buildingId=" << participantPos.buildingId
<< " aesId=" << itemView.aesItemId
<< " in Form = true";
break;
}
else
{
DEBUG_LOG(m_logger) << "!m_aesPolygonEncloseBuilding buildingId=" << participantPos.buildingId()
DEBUG_LOG(m_logger) << "!m_aesPolygonEncloseBuilding buildingId=" << participantPos.buildingId
<< " aesId=" << itemView.aesItemId
<< " in Form = false";
}
}
}
sendEnterLeave(itemView, participantPos.participantId(), inForm);
sendEnterLeave(itemView, participantPos.participantId, inForm);
}
// for
} // calculateFunctionalArea
@@ -290,23 +290,23 @@ void HandlerFunctionalAreas::calculateFunctionalArea(const CentralEffectSimulati
void HandlerFunctionalAreas::onNewParticipantPosition(const CentralEffectSimulation::HandlerParticipant::CesParticipantData &participantData)
{
DEBUG_LOG(m_logger) << "++++++++ onNewParticipantPosition participantId=" << participantData.participantId();
DEBUG_LOG(m_logger) << "++++++++ onNewParticipantPosition participantId=" << participantData.participantId;
if (m_handlerParticipant->isOutdated(participantData))
return;
const int equipmentNumber = m_ddsHandler->participantId2EquipNo(participantData.participantId());
const int equipmentNumber = m_ddsHandler->participantId2EquipNo(participantData.participantId);
if (equipmentNumber <= 0)
{
DEBUG_LOG(m_logger) << "equipmentNumber <=0";
return;
}
DEBUG_LOG(m_logger) << "HandlerParticipantArea::calculateAesParticipant paricipantId: " << participantData.participantId();
DEBUG_LOG(m_logger) << "HandlerParticipantArea::calculateAesParticipant paricipantId: " << participantData.participantId;
for (const CentralEffectSimulation::AesItemViewUtm &itemView : std::as_const(m_aesItemViews))
{
DEBUG_LOG(m_logger) << " itemView: " << itemView.aesItemId << ", " << itemView.aesTypeId;
switch (itemView.aesTypeId.underlying())
switch (itemView.aesTypeId)
{
case AreaEffectSimulation::AesType::AtFunctionalArea:
{
@@ -315,13 +315,13 @@ void HandlerFunctionalAreas::onNewParticipantPosition(const CentralEffectSimulat
/// Die Teilnehmer der Partei des Wirkfeldes werden nicht berücksichtig.
///
AreaEffectSimulation::FunctionalArea functionalArea = m_ddsHandler->dtcAes()->functionalArea(itemView.aesItemId);
DEBUG_LOG(m_logger) << "functionalArea Typ=" << functionalArea.functionalAreaTypeId()
DEBUG_LOG(m_logger) << "functionalArea Typ=" << functionalArea.functionalAreaTypeId
<< " itemView.partyId=" << itemView.partyId
<< " participantData.partyId=" << participantData.partyId()
<< " participantData.partyId=" << participantData.partyId
<< " insideBuilding=" << participantData.insideBuilding();
///////////////////
bool inForm = inFormCheck(itemView, participantData);
sendEnterLeave(itemView, participantData.participantId(), inForm);
sendEnterLeave(itemView, participantData.participantId, inForm);
break;
}
default:
@@ -333,23 +333,23 @@ void HandlerFunctionalAreas::onNewParticipantPosition(const CentralEffectSimulat
void HandlerFunctionalAreas::onNewIndoorParticipantPosition(const CentralEffectSimulation::HandlerParticipant::CesParticipantData &participantData)
{
DEBUG_LOG(m_logger) << "New Indoor Position paticipantId=" << participantData.participantId();
DEBUG_LOG(m_logger) << "New Indoor Position paticipantId=" << participantData.participantId;
if (m_handlerParticipant->isOutdated(participantData))
return;
const int equipmentNumber = m_ddsHandler->participantId2EquipNo(participantData.participantId());
const int equipmentNumber = m_ddsHandler->participantId2EquipNo(participantData.participantId);
if (equipmentNumber <= 0)
{
DEBUG_LOG(m_logger) << "equipmentNumber <=0";
return;
}
DEBUG_LOG(m_logger) << "HandlerParticipantArea::calculateAesParticipant paricipantId: " << participantData.participantId();
DEBUG_LOG(m_logger) << "HandlerParticipantArea::calculateAesParticipant paricipantId: " << participantData.participantId;
for (const CentralEffectSimulation::AesItemViewUtm &itemView : std::as_const(m_aesItemViews))
{
DEBUG_LOG(m_logger) << " itemView: " << itemView.aesItemId << ", " << itemView.aesTypeId;
switch (itemView.aesTypeId.underlying())
switch (itemView.aesTypeId)
{
case AreaEffectSimulation::AesType::AtFunctionalArea:
{
@@ -358,13 +358,13 @@ void HandlerFunctionalAreas::onNewIndoorParticipantPosition(const CentralEffectS
/// Die Teilnehmer der Partei des Wirkfeldes werden nicht berücksichtig.
///
AreaEffectSimulation::FunctionalArea functionalArea = m_ddsHandler->dtcAes()->functionalArea(itemView.aesItemId);
DEBUG_LOG(m_logger) << "functionalArea Typ=" << functionalArea.functionalAreaTypeId()
DEBUG_LOG(m_logger) << "functionalArea Typ=" << functionalArea.functionalAreaTypeId
<< " itemView.partyId=" << itemView.partyId
<< " participantData.partyId=" << participantData.partyId()
<< " participantData.partyId=" << participantData.partyId
<< " insideBuilding=" << participantData.insideBuilding();
{
if ( (itemView.partyId == participantData.partyId())
&& (functionalArea.functionalAreaTypeId() == 8)) // Funktionsraum Nicht Kampffaehig [GUEZE-2256]
if ( (itemView.partyId == participantData.partyId)
&& (functionalArea.functionalAreaTypeId == 8)) // Funktionsraum Nicht Kampffaehig [GUEZE-2256]
{
DEBUG_LOG(m_logger) << "Position mit Funktionsraum Nicht Kampffähig hat die Partei des Wirkfeldes => nicht beruecksichtigen";
continue;
@@ -374,16 +374,16 @@ void HandlerFunctionalAreas::onNewIndoorParticipantPosition(const CentralEffectS
bool inForm = false;
for (int i = 0; i < m_aesPolygonEncloseBuilding.value(itemView.aesItemId).size(); i++)
{
if (m_aesPolygonEncloseBuilding.value(itemView.aesItemId).at(i) == participantData.buildingId())
if (m_aesPolygonEncloseBuilding.value(itemView.aesItemId).at(i) == participantData.buildingId)
{
inForm = true;
m_handlerParticipant->setNotfightMode(participantData.participantId(), true);
m_handlerParticipant->setNotfightMode(participantData.participantId, true);
break;
}
}
///////////////////
sendEnterLeave(itemView, participantData.participantId(), inForm);
sendEnterLeave(itemView, participantData.participantId, inForm);
break;
}
default:
@@ -414,14 +414,14 @@ bool HandlerFunctionalAreas::inBoundingBoxCheck(const CentralEffectSimulation::A
const QRectF boundingBoxImpact(itemView.boundingBoxBottomLeft,
itemView.boundingBoxTopRight);
const QPointF participantPosUtmPoint = CentralEffectSimulation::geographic2Utm(participantData.pos(), itemView.zone);
const QPointF participantPosUtmPoint = CentralEffectSimulation::geographic2Utm(participantData.pos, itemView.zone);
if (boundingBoxImpact.contains(participantPosUtmPoint))
{
DEBUG_LOG(m_logger) << "inBoundingBoxCheck Paricipant " << participantData.participantId()
DEBUG_LOG(m_logger) << "inBoundingBoxCheck Paricipant " << participantData.participantId
<< " inside AesItemView:" << itemView.aesItemId;
return true;
}
TRACE_LOG(m_logger) << "inBoundingBoxCheck Paricipant " << participantData.participantId()
TRACE_LOG(m_logger) << "inBoundingBoxCheck Paricipant " << participantData.participantId
<< " outside AesItemView:" << itemView.aesItemId;
return false;
}
@@ -435,9 +435,9 @@ bool HandlerFunctionalAreas::inFormCheck(const CentralEffectSimulation::AesItemV
const QRectF boundingBox(itemView.boundingBoxBottomLeft,
itemView.boundingBoxTopRight);
const QPointF participantPosUtmPoint = CentralEffectSimulation::geographic2Utm(participantData.pos(), itemView.zone);
const QString participantPosMgrs = CentralEffectSimulation::geographic2mgrs(participantData.pos(), itemView.zone);
DEBUG_LOG(m_logger) << "inFormCheck start, paricipantId: " << participantData.participantId()
const QPointF participantPosUtmPoint = CentralEffectSimulation::geographic2Utm(participantData.pos, itemView.zone);
const QString participantPosMgrs = CentralEffectSimulation::geographic2mgrs(participantData.pos, itemView.zone);
DEBUG_LOG(m_logger) << "inFormCheck start, paricipantId: " << participantData.participantId
<< ", aesItemId: " << itemView.aesItemId
<< ", aesTypeId: " << itemView.aesTypeId
<< ", form.size: " << itemView.form.size()
@@ -446,7 +446,7 @@ bool HandlerFunctionalAreas::inFormCheck(const CentralEffectSimulation::AesItemV
if (boundingBox.contains(participantPosUtmPoint) &&
itemView.form.containsPoint(participantPosUtmPoint, Qt::FillRule::OddEvenFill))
{
DEBUG_LOG(m_logger) << "inside AES form, paricipantId: " << participantData.participantId()
DEBUG_LOG(m_logger) << "inside AES form, paricipantId: " << participantData.participantId
<< ", aesItemId: " << itemView.aesItemId;
return true;
} // if inside
@@ -475,7 +475,7 @@ void HandlerFunctionalAreas::sendCesHitRequest(const CentralEffectSimulation::Ae
// qint64 mineFieldBitIndex = 0;
int remaining = 0;
switch (eventType.underlying())
switch (eventType)
{
case ProjectDataManagement::PdmEventType::EventType_EnterFunctionalArea:
DEBUG_LOG(m_logger) << "-------------- EnterFunctionalArea itemView =" << itemView.aesItemId;
@@ -495,21 +495,21 @@ void HandlerFunctionalAreas::sendCesHitRequest(const CentralEffectSimulation::Ae
DEBUG_LOG(m_logger) << "sendCesHitRequest Settings::calculateCentralAes="
<< " insideWlsArea=" << std::boolalpha << participantData.insideWlsArea()
<< " isSmartChargeType=" << std::boolalpha << m_ddsHandler->isSmartChargeType(itemView.chargeStruct)
<< " participantId=" << participantData.participantId();
<< " participantId=" << participantData.participantId;
const int equipNo = m_ddsHandler->participantId2EquipNo(participantData.participantId());
DEBUG_LOG(m_logger) << " ftc sendCESHit to Participant participantId = " << participantData.participantId()
const int equipNo = m_ddsHandler->participantId2EquipNo(participantData.participantId);
DEBUG_LOG(m_logger) << " ftc sendCESHit to Participant participantId = " << participantData.participantId
<< " equipNo = " << equipNo
<< " aesItemId =" << itemView.aesItemId;
// participantPosition.participantPosition == 0 -> send to all
if (participantData.participantId() != 0 && equipNo <= 0)
if (participantData.participantId != 0 && equipNo <= 0)
{
DEBUG_LOG(m_logger) << "participantPosition.participantId != 0 && equipNo <= 0";
return;
}
if (participantData.participantId() != 0 &&
participantData.vulnerabilityState == ProjectDataManagement::VulnerabilityState::CatastrophicKill)
if (participantData.participantId != 0 &&
participantData.vulnerabilityState == ProjectDataManagement::VulnerabilityState::VulnerabilityState_CatastrophicKill)
{
DEBUG_LOG(m_logger) << "participantPosition.participantId != 0 CatastrophicKill)";
return;
@@ -517,17 +517,17 @@ void HandlerFunctionalAreas::sendCesHitRequest(const CentralEffectSimulation::Ae
const AreaEffectSimulation::FunctionalArea &fa = m_ddsHandler->dtcAes()->functionalArea(itemView.aesItemId);
const TrainingAreaBase::TabPosition pos(participantData.pos(),
const TrainingAreaBase::TabPosition pos(participantData.pos,
Core::PositionReportingSource::Gps, // irrelevant
participantData.buildingId(),
participantData.roomId());
const int medicTime = fa.medicTime() / 600000; //reserve 2 = medical treatment
const int maintanceTime = fa.maintTime() / 600000; //reserve 1 = maintance time
const int decontaminatonTime = fa.deconTime() / 600000; //reserve Munitionsart = decontaminaton time
participantData.buildingId,
participantData.roomId);
const int medicTime = fa.medicTime / 600000; //reserve 2 = medical treatment
const int maintanceTime = fa.maintTime / 600000; //reserve 1 = maintance time
const int decontaminatonTime = fa.deconTime / 600000; //reserve Munitionsart = decontaminaton time
const int operationModeDecontamination = fa.deconMode().underlying();
const int operationModeMaintenance = fa.maintMode().underlying();
const int operationModeMedical = fa.medicMode().underlying();
const int operationModeDecontamination = static_cast<int>(fa.deconMode);
const int operationModeMaintenance = static_cast<int>(fa.maintMode);
const int operationModeMedical = static_cast<int>(fa.medicMode);
//const int originatorEquipNo = fa.medicTime()/60000; //reserve 2 = medical treatment
//const int mineId = fa.maintTime()/60000; //reserve 1 = maintance time
@@ -539,7 +539,7 @@ void HandlerFunctionalAreas::sendCesHitRequest(const CentralEffectSimulation::Ae
TrainingAreaBase::SendCesHitRequest requestTab(
equipNo, // equipmentNumber
participantData.participantId(), // participantId
participantData.participantId, // participantId
chargeType, // chargeTypeId
itemView.aesItemId, // aesId
originatorEquipNo, // originatorEquipmentNumber
@@ -550,8 +550,8 @@ void HandlerFunctionalAreas::sendCesHitRequest(const CentralEffectSimulation::Ae
itemView.partyId, // originPartyId
mineId
);
DEBUG_LOG(m_logger) << " participantId=" << participantData.participantId()
<< " chargeTypeId=" << itemView.chargeStruct.chargeTypeId();
DEBUG_LOG(m_logger) << " participantId=" << participantData.participantId
<< " chargeTypeId=" << itemView.chargeStruct.chargeTypeId;
m_sendCesHitRequestQueue.enqueue(requestTab);
@@ -567,7 +567,7 @@ void HandlerFunctionalAreas::sendParticipantEvent(const CentralEffectSimulation:
const CentralEffectSimulation::HandlerParticipant::CesParticipantData &participantData,
const ProjectDataManagement::PdmEventType eventType)
{
ParticipantManagement::TypeClass typeClass = m_handlerParticipant->typeClassFromTypeId(participantData.participantTypeId());
ParticipantManagement::TypeClass typeClass = m_handlerParticipant->typeClassFromTypeId(participantData.participantTypeId);
// can happen since the positions are collected for all participants (no check if it is a SupportEntity or similar)
if (typeClass == ParticipantManagement::TypeClass::Unit ||
typeClass == ParticipantManagement::TypeClass::SupportUnit ||
@@ -576,46 +576,46 @@ void HandlerFunctionalAreas::sendParticipantEvent(const CentralEffectSimulation:
typeClass == ParticipantManagement::TypeClass::Vessel ||
typeClass == ParticipantManagement::TypeClass::Unknown)
{
DEBUG_LOG(m_logger) << "Participant with id " << participantData.participantId()
DEBUG_LOG(m_logger) << "Participant with id " << participantData.participantId
<< " has invalid typeClass: " << typeClass
<< " eventType: " << eventType;
return;
}
int equipmentNumber = m_ddsHandler->participantId2EquipNo(participantData.participantId());
int equipmentNumber = m_ddsHandler->participantId2EquipNo(participantData.participantId);
if (equipmentNumber <= 0)
{
WARNING_LOG(m_logger) << "Not sending Event " << eventType << " for participant " << participantData.participantId()
WARNING_LOG(m_logger) << "Not sending Event " << eventType << " for participant " << participantData.participantId
<< " - participant has no equipment number";
return;
}
DEBUG_LOG(m_logger) << "sendParticipantEvent" << eventType
<< " participantId=" << participantData.participantId()
<< " participantId=" << participantData.participantId
<< " AesItemId=" << itemView.aesItemId;
const AreaEffectSimulation::FunctionalArea &fa = m_ddsHandler->dtcAes()->functionalArea(itemView.aesItemId);
CentralEffectSimulation::ParticipantEvent pe;
pe.id(m_ddsHandler->getParticipantEventId());
pe.id = m_ddsHandler->getParticipantEventId();
pe.eventTypeId(eventType.underlying());
pe.participantId(participantData.participantId());
pe.eventTime(participantData.sampleTime());
pe.aesItemId(itemView.aesItemId);
pe.partyId(participantData.partyId());
pe.aesName(fa.name());
pe.equipmentNumber(equipmentNumber);
pe.vulnerability(participantData.vulnerabilityState.underlying());
pe.position(participantData.pos());
pe.friendlyFire(false);
pe.eventTypeId = eventType;
pe.participantId = participantData.participantId;
pe.eventTime = participantData.sampleTime;
pe.aesItemId = itemView.aesItemId;
pe.partyId = participantData.partyId;
pe.aesName = fa.name;
pe.equipmentNumber = equipmentNumber;
pe.vulnerability = static_cast<int>(participantData.vulnerabilityState);
pe.position = participantData.pos;
pe.friendlyFire = false;
INFO_LOG(m_logger) << "sendParticipantEvent: " << pe
<< ", currentMSecsSinceEpoch = " << QDateTime::currentMSecsSinceEpoch()
<< ", time difference = " << QDateTime::currentMSecsSinceEpoch() - pe.eventTime();
<< ", time difference = " << QDateTime::currentMSecsSinceEpoch() - pe.eventTime;
m_ddsHandler->dtsCes()->publish(pe);
const auto id = pe.id();
const auto id = pe.id;
QTimer::singleShot(1 * 60 * 1000, this, [id, this]() { m_ddsHandler->dtsCes()->removeParticipantEventByKey(id); });
}
@@ -689,7 +689,7 @@ void HandlerFunctionalAreas::sendEnterLeave(const CentralEffectSimulation::AesIt
<< " aesItemId=" << key.first
<< " participantId=" << key.second
<< " enterLeaveType=" << enterLeaveType.eventType;
startSupplyTimer(participantId, itemView.aesItemId, fa.supplyTime());
startSupplyTimer(participantId, itemView.aesItemId, fa.supplyTime);
m_cesEnterLeaveFunctionalArea.insert(key, enterLeaveType);
}
}
@@ -718,11 +718,11 @@ void HandlerFunctionalAreas::sendEnterLeave(const CentralEffectSimulation::AesIt
sendParticipantEvent(itemView, cesParticipantData, enterLeaveType.eventType);
const AreaEffectSimulation::FunctionalArea &fa = m_ddsHandler->dtcAes()->functionalArea(itemView.aesItemId);
DEBUG_LOG(m_logger) << "fa.isCentral()=" << fa.isCentral()
DEBUG_LOG(m_logger) << "fa.isCentral()=" << fa.isCentral
<< " isSupplyTruck=" << itemView.isSupplyTruck
<< " eventType=" << m_cesEnterLeaveFunctionalArea.value(key).eventType
<< " isAlreadySupplied=" << enterLeaveType.isAlreadySupplied;
if (fa.isCentral() && !itemView.isSupplyTruck)
if (fa.isCentral && !itemView.isSupplyTruck)
{
DEBUG_LOG(m_logger) << "sendCesHitRequest";
sendCesHitRequest(itemView, cesParticipantData, enterLeaveType.eventType);
@@ -75,7 +75,7 @@ void HandlerAesData::onAesItemViewChanged(const AreaEffectSimulation::AesItemVie
return;
DEBUG_LOG(m_logger) << "Got AesItemView: " << data.effectStateId();
switch (data.effectStateId().underlying())
switch (data.effectStateId())
{
case AreaEffectSimulation::AesEffectState::EsUnknown:
case AreaEffectSimulation::AesEffectState::EsError:
@@ -335,7 +335,7 @@ void HandlerAesData::onSendCesHitInformationReply(const Core::FunctionReplyObjec
void HandlerAesData::calculateImpacts(const AreaEffectSimulation::TriggeredImpacts &data, const Footprint &footprint)
{
// check for correct AES type artillery only
switch (data.aesTypeId().underlying())
switch (data.aesTypeId())
{
case AreaEffectSimulation::AesType::AtExplosionArea:
case AreaEffectSimulation::AesType::AtExplosionSingle:
@@ -100,7 +100,7 @@ void HandlerParticipantGasPipe::onAesItemViewChanged(const AreaEffectSimulation:
{
const AreaEffectSimulation::AesEffectState &effectState = data.effectStateId();
switch (effectState.underlying())
switch (effectState)
{
case AreaEffectSimulation::AesEffectState::EsActivated:
{
@@ -136,7 +136,7 @@ void GeoPairing::calculateAirFire(const QByteArray &transparentData,
while (i.hasNext())
{
i.next();
SInt32 vulnerabilityState = i.value().vulnerabilityState.underlying();
SInt32 vulnerabilityState = i.value().vulnerabilityState;
Float64 lat = i.value().pos().lat() * 180 / M_PI;
Float64 lon = i.value().pos().lon() * 180 / M_PI;
DEBUG_LOG(m_logger) << "GeoPairing::calculateAirFire"
@@ -195,11 +195,11 @@ void HandlerGeoPairing::onMeteoDataChanged(const MeteoDataManagement::MeteoData
m_meteoData = data;
DEBUG_LOG(m_logger) << "Got onMeteoDataChanged "
<< " id=" << m_meteoData.id()
<< " windSpeed=" << m_meteoData.windSpeed()
<< " windDirection=" << m_meteoData.windDirection()
<< " pressure=" << m_meteoData.pressure()
<< " temperature=" << m_meteoData.temperature();
<< " id=" << m_meteoData.id
<< " windSpeed=" << m_meteoData.windSpeed
<< " windDirection=" << m_meteoData.windDirection
<< " pressure=" << m_meteoData.pressure
<< " temperature=" << m_meteoData.temperature;
}
// ///////////////////////////////////
@@ -370,18 +370,18 @@ void HandlerGeoPairing::onGeoPairingDataChanged(const TrainingAreaBase::Geopairi
}
unsigned char msgType = 0xE3;
if (static_cast<unsigned char>(data.payload().at(0)) != msgType)
if (static_cast<unsigned char>(data.payload.at(0)) != msgType)
{
DEBUG_LOG(m_logger) << "data.payload().at(0) != msgType";
return;
}
double y = static_cast<double>(data.position().lat() * 180.0 / M_PI);
double x = static_cast<double>(data.position().lon() * 180.0 / M_PI);
double y = static_cast<double>(data.position.lat * 180.0 / M_PI);
double x = static_cast<double>(data.position.lon * 180.0 / M_PI);
int zone = -1;
const QPointF posUtm = CentralEffectSimulation::geographic2Utm(data.position(), &zone);
const QPointF posUtm = CentralEffectSimulation::geographic2Utm(data.position, &zone);
double impactPositionLat = 0.0;
@@ -391,37 +391,37 @@ void HandlerGeoPairing::onGeoPairingDataChanged(const TrainingAreaBase::Geopairi
//QByteArray time = payloadAr.mid(2, 3); // Byte 2 ..3
int time = 0;
int startIndex = 2;
time += (static_cast<unsigned char>(data.payload().at(startIndex)));
time += (static_cast<unsigned char>(data.payload().at(startIndex + 1)) << 8);
time += (static_cast<unsigned char>(data.payload.at(startIndex)));
time += (static_cast<unsigned char>(data.payload.at(startIndex + 1)) << 8);
// QByteArray elevationBa = payloadAr.mid(5, 8); // Byte 5 .. 8
int elevation = 0;
startIndex = 5;
elevation += (static_cast<unsigned char>(data.payload().at(startIndex)));
elevation += (static_cast<unsigned char>(data.payload().at(startIndex + 1)) << 8);
elevation += (static_cast<unsigned char>(data.payload().at(startIndex + 2)) << 16);
elevation += (static_cast<unsigned char>(data.payload().at(startIndex + 3)) << 24);
elevation += (static_cast<unsigned char>(data.payload.at(startIndex)));
elevation += (static_cast<unsigned char>(data.payload.at(startIndex + 1)) << 8);
elevation += (static_cast<unsigned char>(data.payload.at(startIndex + 2)) << 16);
elevation += (static_cast<unsigned char>(data.payload.at(startIndex + 3)) << 24);
// QByteArray azimutBa = payloadAr.mid(9, 12); // Byte 9.. 12
int azimut = 0;
startIndex = 9;
azimut += (static_cast<unsigned char>(data.payload().at(startIndex)));
azimut += (static_cast<unsigned char>(data.payload().at(startIndex + 1)) << 8);
azimut += (static_cast<unsigned char>(data.payload().at(startIndex + 2)) << 16);
azimut += (static_cast<unsigned char>(data.payload().at(startIndex + 3)) << 24);
azimut += (static_cast<unsigned char>(data.payload.at(startIndex)));
azimut += (static_cast<unsigned char>(data.payload.at(startIndex + 1)) << 8);
azimut += (static_cast<unsigned char>(data.payload.at(startIndex + 2)) << 16);
azimut += (static_cast<unsigned char>(data.payload.at(startIndex + 3)) << 24);
int temperature = (static_cast<unsigned char>(data.payload().at(13)));
int temperature = (static_cast<unsigned char>(data.payload.at(13)));
// QByteArray timeToDetonationBa = payloadAr.mid(14, 15); // Byte 14-15;
int timeToDetonation = 0;
startIndex = 14;
timeToDetonation += (static_cast<unsigned char>(data.payload().at(startIndex)));
timeToDetonation += (static_cast<unsigned char>(data.payload().at(startIndex + 1)) << 8);
timeToDetonation += (static_cast<unsigned char>(data.payload.at(startIndex)));
timeToDetonation += (static_cast<unsigned char>(data.payload.at(startIndex + 1)) << 8);
N_Ballistic::ammunitionTypeIndirectFire ammunitionType = N_Ballistic::MOERSER;
int ammunition = (data.payload().at(4) >> 1) & 0x03;
int ammunition = (data.payload.at(4) >> 1) & 0x03;
QString ammunitionStr;
switch (ammunition)
{
@@ -442,11 +442,11 @@ void HandlerGeoPairing::onGeoPairingDataChanged(const TrainingAreaBase::Geopairi
}
int treibmittel = (data.payload().at(4) >> 3) & 0x07;
int treibmittel = (data.payload.at(4) >> 3) & 0x07;
//int participantId = m_handlerParticipant->getParticipantId(data.equipmentNumber());
int participantId = m_ddsHandlerAes->dtcPpm()->participantIdByEquipmentNumber(data.equipmentNumber());
int partyId = m_ddsHandlerAes->dtcPpm()->participant(participantId).partyId();
int participantId = m_ddsHandlerAes->dtcPpm()->participantIdByEquipmentNumber(data.equipmentNumber);
int partyId = m_ddsHandlerAes->dtcPpm()->participant(participantId).partyId;
float v0 = 200.0;
if ( treibmittel == 0)
@@ -466,12 +466,12 @@ void HandlerGeoPairing::onGeoPairingDataChanged(const TrainingAreaBase::Geopairi
DEBUG_LOG(m_logger) << "Got onGeoPairingDataChanged "
<< "\nequipmentNumber=" << data.equipmentNumber()
<< "\nposition lat=" << data.position().lat()
<< "/" << data.position().lon()
<< "\nequipmentNumber=" << data.equipmentNumber
<< "\nposition lat=" << data.position.lat
<< "/" << data.position.lon
<< "\nposition xy=" << x << "/" << y
<< "\nposition UTM=" << posUtm.x() << "/" << posUtm.y() << " zone=" << zone
<< "\nsampleTime=" << data.sampleTime()
<< "\nsampleTime=" << data.sampleTime
<< "\nammunitionType=" << ammunitionType
<< "\ntemperature=" << temperature
<< "\nelevation=" << elevation
@@ -484,7 +484,7 @@ void HandlerGeoPairing::onGeoPairingDataChanged(const TrainingAreaBase::Geopairi
float rw = calculateDistance(v0, elevation / 10.0);
float t1 = calculateFlightTime(rw, v0, elevation / 10.0);
impactTime = data.sampleTime() + static_cast<int64_t> (t1) * 1000;
impactTime = data.sampleTime + static_cast<int64_t> (t1) * 1000;
//QPointF distVector = calculateDistVector ( rw, azimut/10.0);
QPointF explosionPosUtm = calculateExplosionPosUtm(rw, azimut / 10.0, posUtm);
@@ -499,20 +499,20 @@ void HandlerGeoPairing::onGeoPairingDataChanged(const TrainingAreaBase::Geopairi
impactPositionLat = explosionPosGeoCoordinate.y();
AreaEffectSimulation::ExplosionSingleModifyRequest explosionSingleModifyRequest;
explosionSingleModifyRequest.id(0);
explosionSingleModifyRequest.impactPosition().lat(impactPositionLat);
explosionSingleModifyRequest.impactPosition().lon(impactPositionLon);
explosionSingleModifyRequest.id = 0;
explosionSingleModifyRequest.impactPosition.lat = impactPositionLat;
explosionSingleModifyRequest.impactPosition.lon = impactPositionLon;
// Statement by the 5000: impactTime must be in the future
explosionSingleModifyRequest.effectStart(impactTime);
explosionSingleModifyRequest.chargeTypeId(ammunitionType);
explosionSingleModifyRequest.participantId(participantId);
QString name = QStringLiteral("Geopairing:") + QString::number(data.equipmentNumber());
explosionSingleModifyRequest.name(name.toStdString());
explosionSingleModifyRequest.effectStart = impactTime;
explosionSingleModifyRequest.chargeTypeId = ammunitionType;
explosionSingleModifyRequest.participantId = participantId;
QString name = QStringLiteral("Geopairing:") + QString::number(data.equipmentNumber);
explosionSingleModifyRequest.name = name.toStdString();
//const CentralEffectSimulation::HandlerParticipant::CesParticipantData pos = m_handlerParticipant->position(participantId);
explosionSingleModifyRequest.partyId(partyId);
explosionSingleModifyRequest.partyId = partyId;
DEBUG_LOG(m_logger) << "impactTime=" << data.sampleTime()
DEBUG_LOG(m_logger) << "impactTime=" << data.sampleTime
<< " name=" << name
<< " m_ddsHandler->currentPartitionTime=" << m_ddsHandlerAes->currentPartitionTime()
<< " participantId=" << participantId << " " << participantId
@@ -24,7 +24,7 @@ namespace core
{
inline uint qHash(ProjectDataManagement::PdmEventType et)
{
return ::qHash(et.underlying());
return ::qHash(et);
}
}
}
@@ -79,19 +79,19 @@ bool HandlerJamming::init()
void HandlerJamming::onParticipantGearEventChanged(const ParticipantManagement::ParticipantGearEvent &data, DataModification modType)
{
ERROR_LOG(m_logger) << "onParticipantGearEventChanged << modType=" << modType
<< " originatorId=" << data.participantId()
<< " chargeTypeId=" << data.charge().chargeTypeId()
<< " gearTypeId=" << data.charge().gearTypeId()
<< " isJamming=" << m_ddsHandler->isJamming({data.charge().chargeTypeId(),0,0});
<< " originatorId=" << data.participantId
<< " chargeTypeId=" << data.charge.chargeTypeId
<< " gearTypeId=" << data.charge.gearTypeId
<< " isJamming=" << m_ddsHandler->isJamming({data.charge.chargeTypeId,0,0});
// Check, if Munition isJamming
// NOTE: igniterType/IgniterFunciton = 0 as long as ParticipantGearEvent does not contain values
if (!m_ddsHandler->isJamming({data.charge().chargeTypeId(),0,0}))
if (!m_ddsHandler->isJamming({data.charge.chargeTypeId,0,0}))
return;
QVector<int> uasIds = m_ddsHandler->dtcPpm()->getUasIds();
QVector<int> jammedUasIds;
int jammedUasId = 0;
double radius = m_ddsHandler->dtcPdm()->getMaxRange(data.charge().chargeTypeId(), data.charge().gearTypeId());
double radius = m_ddsHandler->dtcPdm()->getMaxRange(data.charge.chargeTypeId, data.charge.gearTypeId);
// int radius = 15;
DEBUG_LOG(m_logger) << "Radius=" << radius;
@@ -105,19 +105,19 @@ void HandlerJamming::onParticipantGearEventChanged(const ParticipantManagement::
continue;
}
if (LtsUtils::isPositionTimeOutdated(QDateTime::currentMSecsSinceEpoch(), cesParticipantData.sampleTime()))
if (LtsUtils::isPositionTimeOutdated(QDateTime::currentMSecsSinceEpoch(), cesParticipantData.sampleTime))
{
DEBUG_LOG(m_logger) << "continue positionTime outdated participantId=" << uasId;
continue;
}
long distance = m_handlerParticipant->getDistance(data.participantId(), uasId);
long distance = m_handlerParticipant->getDistance(data.participantId, uasId);
DEBUG_LOG(m_logger) << "distance = " << distance;
if ( distance < radius)
{
DEBUG_LOG(m_logger) << " Send Jamming to TAB and destroy uasId";
//sendCesHitRequest(data.charge().chargeTypeId(), data.participantId(),cesParticipantData);
if (cesParticipantData.vulnerabilityState != ProjectDataManagement::VulnerabilityState::CatastrophicKill)
if (cesParticipantData.vulnerabilityState != ProjectDataManagement::VulnerabilityState::VulnerabilityState_CatastrophicKill)
jammedUasIds.append(uasId);
}
else
@@ -138,7 +138,7 @@ void HandlerJamming::onParticipantGearEventChanged(const ParticipantManagement::
}
CentralEffectSimulation::HandlerParticipant::CesParticipantData cesParticipantData = m_handlerParticipant->position(jammedUasId);
sendCesHitRequest(data.charge().chargeTypeId(), data.participantId(),cesParticipantData);
sendCesHitRequest(data.charge.chargeTypeId, data.participantId,cesParticipantData);
}
@@ -184,32 +184,32 @@ void HandlerJamming::sendCesHitRequest(const int chargeTypeId,
DEBUG_LOG(m_logger) << "sendCesHitRequest Settings::calculateCentralAes="
<< " insideWlsArea=" << std::boolalpha << participantData.insideWlsArea()
<< " participantId=" << participantData.participantId();
<< " participantId=" << participantData.participantId;
const int equipNo = m_ddsHandler->participantId2EquipNo(participantData.participantId());
const int equipNo = m_ddsHandler->participantId2EquipNo(participantData.participantId);
const int originatorEquimentNumber = m_ddsHandler->participantId2EquipNo(originatorId);
const int originatorPartyId = m_handlerParticipant->getParticipantPosition(originatorId).partyId();
DEBUG_LOG(m_logger) << " ftc sendCESHit to Participant participantId = " << participantData.participantId()
const int originatorPartyId = m_handlerParticipant->getParticipantPosition(originatorId).partyId;
DEBUG_LOG(m_logger) << " ftc sendCESHit to Participant participantId = " << participantData.participantId
<< " equipNo = " << equipNo
<< " chargeTypeId =" << chargeTypeId;
if (participantData.vulnerabilityState == ProjectDataManagement::VulnerabilityState::CatastrophicKill)
if (participantData.vulnerabilityState == ProjectDataManagement::VulnerabilityState::VulnerabilityState_CatastrophicKill)
{
DEBUG_LOG(m_logger) << "participantPosition.participantId == 0 CatastrophicKill)";
return;
}
const TrainingAreaBase::TabPosition pos(participantData.pos(),
const TrainingAreaBase::TabPosition pos(participantData.pos,
Core::PositionReportingSource::Gps, // irrelevant
participantData.buildingId(),
participantData.roomId());
participantData.buildingId,
participantData.roomId);
const int aesId = 0; // not used
const int mineId = 0; // not used
TrainingAreaBase::SendCesHitRequest requestTab(
equipNo, // equipmentNumber
participantData.participantId(), // participantId
participantData.participantId, // participantId
chargeTypeId, // chargeTypeId
aesId, // aesId
originatorEquimentNumber, // originatorEquipmentNumber
@@ -220,7 +220,7 @@ void HandlerJamming::sendCesHitRequest(const int chargeTypeId,
originatorPartyId, // originPartyId
mineId
);
DEBUG_LOG(m_logger) << " participantId=" << participantData.participantId()
DEBUG_LOG(m_logger) << " participantId=" << participantData.participantId
<< " chargeTypeId=" << chargeTypeId;
m_sendCesHitRequestQueue.enqueue(requestTab);
@@ -25,7 +25,7 @@ namespace core
{
inline uint qHash(ProjectDataManagement::PdmEventType et)
{
return ::qHash(et.underlying());
return ::qHash(et);
}
}
}
@@ -166,43 +166,43 @@ void HandlerMineAreas::onMineTriggeredReply(const Core::FunctionReplyObject &rep
// ///////////////////////////////////
void HandlerMineAreas::onAesItemViewChanged(const AreaEffectSimulation::AesItemView &data, DataModification modType)
{
if (data.aesTypeId() != AreaEffectSimulation::AesType::AtMineAreaSingleMines
&& data.aesTypeId() != AreaEffectSimulation::AesType::AtMineArea
&& data.aesTypeId() != AreaEffectSimulation::AesType::AtMineCorridor)
if (data.aesTypeId != AreaEffectSimulation::AesType::AtMineAreaSingleMines
&& data.aesTypeId != AreaEffectSimulation::AesType::AtMineArea
&& data.aesTypeId != AreaEffectSimulation::AesType::AtMineCorridor)
{
DEBUG_LOG(m_logger) << "AesItemView return";
return;
}
const AreaEffectSimulation::MineArea &ma = m_ddsHandler->dtcAes()->mineArea(data.aesItemId());
DEBUG_LOG(m_logger) << "aesItemId=" << data.aesItemId()
<< " chargeTypeId=" << data.chargeStruct().chargeTypeId()
<< " isCentral=" << ma.isCentral();
const AreaEffectSimulation::MineArea &ma = m_ddsHandler->dtcAes()->mineArea(data.aesItemId);
DEBUG_LOG(m_logger) << "aesItemId=" << data.aesItemId
<< " chargeTypeId=" << data.chargeStruct.chargeTypeId
<< " isCentral=" << ma.isCentral;
// 240 = Verlegemine muss immer berechnet werden.
if (!ma.isCentral() && (data.chargeStruct().chargeTypeId() != 240))
if (!ma.isCentral && (data.chargeStruct.chargeTypeId != 240))
return;
if (data.effectStateId() == AreaEffectSimulation::AesEffectState::EsExpired)
if (data.effectStateId == AreaEffectSimulation::AesEffectState::EsExpired)
{
DEBUG_LOG(m_logger) << "AesItemView expired return id=" << data.aesItemId();
aesItemViewRemoved(data.aesItemId());
DEBUG_LOG(m_logger) << "AesItemView expired return id=" << data.aesItemId;
aesItemViewRemoved(data.aesItemId);
return;
}
if (m_ddsHandler->isDus(data.chargeStruct()))
if (m_ddsHandler->isDus(data.chargeStruct))
{
DEBUG_LOG(m_logger) << "isDus aesItemId=" << data.aesItemId()
<< " chargeTypeId=" << data.chargeStruct().chargeTypeId() << " do not consider";
DEBUG_LOG(m_logger) << "isDus aesItemId=" << data.aesItemId
<< " chargeTypeId=" << data.chargeStruct.chargeTypeId << " do not consider";
return;
}
const int aesItemId = data.aesItemId();
const int aesItemId = data.aesItemId;
DEBUG_LOG(m_logger) << "Got AesItemView id: " << aesItemId
<< ", type: " << data.aesTypeId()
<< ", effectState: " << data.effectStateId()
<< ", type: " << data.aesTypeId
<< ", effectState: " << data.effectStateId
<< ", modType: " << modType;
DEBUG_LOG(m_logger) << " m_aesItemViews.size=" << m_aesItemViews.size();
@@ -213,7 +213,7 @@ void HandlerMineAreas::onAesItemViewChanged(const AreaEffectSimulation::AesItemV
return;
}
if (data.aesTypeId() == AreaEffectSimulation::AesType::AtMineAreaSingleMines)
if (data.aesTypeId == AreaEffectSimulation::AesType::AtMineAreaSingleMines)
{
if (!m_aesItemViews.contains(aesItemId))
{
@@ -222,21 +222,21 @@ void HandlerMineAreas::onAesItemViewChanged(const AreaEffectSimulation::AesItemV
}
// build Polygon Mines:
DEBUG_LOG(m_logger) << " m_aesItemViews.size=" << m_aesItemViews.size();
auto &formMines = m_aesItemViews[data.aesItemId()].formMines;
auto &formMines = m_aesItemViews[data.aesItemId].formMines;
DEBUG_LOG(m_logger) << " m_aesItemViews.size=" << m_aesItemViews.size();
int &zone = m_aesItemViews[data.aesItemId()].zone;
int &zone = m_aesItemViews[data.aesItemId].zone;
DEBUG_LOG(m_logger) << " m_aesItemViews.size=" << m_aesItemViews.size();
formMines.clear();
formMines.reserve(data.form().size());
for (const Core::GeoPosition2D &pointGeo : data.form())
formMines.reserve(data.form.size());
for (const Core::GeoPosition2D &pointGeo : data.form)
formMines.push_back(CentralEffectSimulation::geographic2Utm(pointGeo, &zone));
return;
}
const AreaEffectSimulation::AesEffectState &effectState = data.effectStateId();
const double impactRadius = m_ddsHandler->chargeTypeRadius(data.chargeStruct());
const AreaEffectSimulation::AesEffectState &effectState = data.effectStateId;
const double impactRadius = m_ddsHandler->chargeTypeRadius(data.chargeStruct);
DEBUG_LOG(m_logger) << "impactRadius=" << impactRadius;
switch (effectState.underlying())
switch (effectState)
{
case AreaEffectSimulation::AesEffectState::EsPrepared:
{
@@ -244,11 +244,11 @@ void HandlerMineAreas::onAesItemViewChanged(const AreaEffectSimulation::AesItemV
}
case AreaEffectSimulation::AesEffectState::EsActivated:
{
const auto aesItemViewUtm(CentralEffectSimulation::AesItemViewUtm::create(data, m_aesItemViews[data.aesItemId()], impactRadius));
const auto aesItemViewUtm(CentralEffectSimulation::AesItemViewUtm::create(data, m_aesItemViews[data.aesItemId], impactRadius));
DEBUG_LOG(m_logger) << "EsActivated m_aesItemViews.insert data.aesItemId()= " << data.aesItemId()
DEBUG_LOG(m_logger) << "EsActivated m_aesItemViews.insert data.aesItemId()= " << data.aesItemId
<< " m_aesItemViews.size=" << m_aesItemViews.size();
m_aesItemViews.insert(data.aesItemId(), aesItemViewUtm);
m_aesItemViews.insert(data.aesItemId, aesItemViewUtm);
DEBUG_LOG(m_logger) << " m_aesItemViews.size=" << m_aesItemViews.size();
printAesItemViews();
@@ -277,13 +277,13 @@ void HandlerMineAreas::onNewOutdoorPosition(const CentralEffectSimulation::Handl
if (m_handlerParticipant->isOutdated(participantPosition))
return;
if (m_handlerParticipant->getEquipmentNumber(participantPosition.participantId()) == 0)
if (m_handlerParticipant->getEquipmentNumber(participantPosition.participantId) == 0)
{
DEBUG_LOG(m_logger) << "Not handle position: participant has no equipment number";
return;
}
ParticipantManagement::TypeClass typeClass = m_handlerParticipant->typeClassFromTypeId(participantPosition.participantTypeId());
ParticipantManagement::TypeClass typeClass = m_handlerParticipant->typeClassFromTypeId(participantPosition.participantTypeId);
// can happen since the positions are collected for all participants (no check if it is a SupportEntity or similar)
if (typeClass == ParticipantManagement::TypeClass::Unit ||
typeClass == ParticipantManagement::TypeClass::SupportUnit ||
@@ -292,51 +292,51 @@ void HandlerMineAreas::onNewOutdoorPosition(const CentralEffectSimulation::Handl
typeClass == ParticipantManagement::TypeClass::Vessel ||
typeClass == ParticipantManagement::TypeClass::Unknown)
{
DEBUG_LOG(m_logger) << "return New Position Participant with id " << participantPosition.participantId()
DEBUG_LOG(m_logger) << "return New Position Participant with id " << participantPosition.participantId
<< " has invalid typeClass: " << typeClass;
return;
}
int equipmentNumber = m_ddsHandler->participantId2EquipNo(participantPosition.participantId());
int equipmentNumber = m_ddsHandler->participantId2EquipNo(participantPosition.participantId);
if (equipmentNumber <= 0)
{
TRACE_LOG(m_logger) << "return New Position - participant has no equipment number"
<< " participantId=" << participantPosition.participantId()
<< " participantId=" << participantPosition.participantId
<< " typeClass=" << typeClass;
return;
}
if (participantPosition.vulnerabilityState == ProjectDataManagement::VulnerabilityState::CatastrophicKill)
if (participantPosition.vulnerabilityState == ProjectDataManagement::VulnerabilityState::VulnerabilityState_CatastrophicKill)
{
DEBUG_LOG(m_logger) << "New Position CatastrophicKill return";
return;
}
if (m_mineLists.contains(participantPosition.participantId()))
if (m_mineLists.contains(participantPosition.participantId))
{
DEBUG_LOG(m_logger) << "Naechste Mine schicken ohne Bounding-Box-Check... return"
<< " Anzahl Minen in Liste:" << m_mineLists[participantPosition.participantId()].size()
<< " Anzahl Minen in Liste:" << m_mineLists[participantPosition.participantId].size()
<< " cesMaxPeriodForCashedMines=" << Settings::cesPeriodStoredMinesOutdated();
//DEBUG_LOG(m_logger) << "Settings::cesMaxPeriodForCashedMines() =" << Settings::cesMaxPeriodForCashedMines();
if ((m_mineLists[participantPosition.participantId()].size() > 0)
&& (QDateTime::currentMSecsSinceEpoch() - m_mineLists[participantPosition.participantId()][0].time < Settings::cesPeriodStoredMinesOutdated()))
if ((m_mineLists[participantPosition.participantId].size() > 0)
&& (QDateTime::currentMSecsSinceEpoch() - m_mineLists[participantPosition.participantId][0].time < Settings::cesPeriodStoredMinesOutdated()))
{
DEBUG_LOG(m_logger) << "Send Stored mines";
// Search mine with the next no distance
int distance = m_mineLists[participantPosition.participantId()][0].distance;
int distance = m_mineLists[participantPosition.participantId][0].distance;
int index = 0;
for (int i = 0; i < m_mineLists[participantPosition.participantId()].size(); i++)
for (int i = 0; i < m_mineLists[participantPosition.participantId].size(); i++)
{
if (m_mineLists[participantPosition.participantId()][i].distance < distance)
if (m_mineLists[participantPosition.participantId][i].distance < distance)
{
distance = m_mineLists[participantPosition.participantId()][i].distance;
distance = m_mineLists[participantPosition.participantId][i].distance;
index = i;
}
}
//m_mineLists[participantPos.participantId()].value()
int mineIndex = m_mineLists[participantPosition.participantId()][index].mineIndex;
int aesItemId = m_mineLists[participantPosition.participantId()][index].aesItemId;
int mineIndex = m_mineLists[participantPosition.participantId][index].mineIndex;
int aesItemId = m_mineLists[participantPosition.participantId][index].aesItemId;
if (!m_aesItemViews.contains(aesItemId))
return;
@@ -349,12 +349,12 @@ void HandlerMineAreas::onNewOutdoorPosition(const CentralEffectSimulation::Handl
// << " z=" << minePosGeo.z();
sendParticipantEvent(m_aesItemViews[aesItemId], minePosition, ProjectDataManagement::PdmEventType::EventType_HitMine);
m_mineLists[participantPosition.participantId()].remove(index);
m_mineLists[participantPosition.participantId].remove(index);
if (m_mineLists[participantPosition.participantId()].size() == 0)
if (m_mineLists[participantPosition.participantId].size() == 0)
{
m_mineLists[participantPosition.participantId()].clear();
m_mineLists.remove(participantPosition.participantId());
m_mineLists[participantPosition.participantId].clear();
m_mineLists.remove(participantPosition.participantId);
}
return;
}
@@ -363,13 +363,13 @@ void HandlerMineAreas::onNewOutdoorPosition(const CentralEffectSimulation::Handl
DEBUG_LOG(m_logger) << "Stored mines are outdated!"
<< " actTime=" << QDateTime::currentMSecsSinceEpoch()
<< " Settings::cesPeriodStoredMinesOutdated()=" << Settings::cesPeriodStoredMinesOutdated();
m_mineLists[participantPosition.participantId()].clear();
m_mineLists.remove(participantPosition.participantId());
m_mineLists[participantPosition.participantId].clear();
m_mineLists.remove(participantPosition.participantId);
}// end if time-check
}
DEBUG_LOG(m_logger) << "HandlerParticipantArea::calculateAesParticipant paricipantId: " << participantPosition.participantId()
DEBUG_LOG(m_logger) << "HandlerParticipantArea::calculateAesParticipant paricipantId: " << participantPosition.participantId
<< " m_aesItemViews.size=" << m_aesItemViews.size();
// const QVector<QPointF> utmStepPoly = m_handlerParticipant->getParticipantStep(participantPos.participantId(), m_zone);
@@ -392,29 +392,29 @@ void HandlerMineAreas::onNewOutdoorPosition(const CentralEffectSimulation::Handl
if (typeClass == ParticipantManagement::TypeClass::Human && m_ddsHandler->isAtMine(itemView.chargeStruct))
continue;
if (itemView.aesTypeId.underlying() == AreaEffectSimulation::AesType::AtMineArea)
if (itemView.aesTypeId == AreaEffectSimulation::AesType::AtMineArea)
{
// checks whether the participant has been positioned in the minefield or across it.
bool inBoundingBox = inBoundingBoxCheck(itemView, participantPosition);
if (!inBoundingBox)
{
bool intersectsBoundingBox = intersectsBoundingBoxCheck(itemView, participantPosition.participantId());
bool intersectsBoundingBox = intersectsBoundingBoxCheck(itemView, participantPosition.participantId);
if (!intersectsBoundingBox)
{
DEBUG_LOG(m_logger) << "Continue nach Bounding BoxCheck itemView: " << itemView.aesItemId << ", "
<< " paricipantId=" << participantPosition.participantId();
<< " paricipantId=" << participantPosition.participantId;
continue;
}
}
DEBUG_LOG(m_logger) << "Weiter nach Bounding BoxCheck itemView: " << itemView.aesItemId << ", "
<< " paricipantId=" << participantPosition.participantId();
<< " paricipantId=" << participantPosition.participantId;
bool inFormCheckResult = inFormCheck(itemView, participantPosition);
if (!inFormCheckResult)
{
DEBUG_LOG(m_logger) << "!inForm";
if (!intersectFormCheck(itemView, participantPosition.participantId()))
if (!intersectFormCheck(itemView, participantPosition.participantId))
{
DEBUG_LOG(m_logger) << "!intersectForm continue";
continue;
@@ -436,14 +436,14 @@ void HandlerMineAreas::onNewOutdoorPosition(const CentralEffectSimulation::Handl
void HandlerMineAreas::onNewParticipantState(const CentralEffectSimulation::HandlerParticipant::CesParticipantData &participantPos)
{
DEBUG_LOG(m_logger) << "onNewParticipantState ";
if (participantPos.vulnerabilityState == ProjectDataManagement::VulnerabilityState::CombatReady)
if (participantPos.vulnerabilityState == ProjectDataManagement::VulnerabilityState::VulnerabilityState_CombatReady)
{
DEBUG_LOG(m_logger) << "m_mineLists.contains(participantPos.participantId():" << m_mineLists.contains(participantPos.participantId());
if (m_mineLists.contains(participantPos.participantId()))
DEBUG_LOG(m_logger) << "m_mineLists.contains(participantPos.participantId():" << m_mineLists.contains(participantPos.participantId);
if (m_mineLists.contains(participantPos.participantId))
{
DEBUG_LOG(m_logger) << "onNewParticipantState CombatReady, loesche Minenliste Eintrag";
m_mineLists[participantPos.participantId()].clear();
m_mineLists.remove(participantPos.participantId());
m_mineLists[participantPos.participantId].clear();
m_mineLists.remove(participantPos.participantId);
}
DEBUG_LOG(m_logger) << "onNewParticipantState CombatReady, loesche Minenliste";
}
@@ -465,11 +465,11 @@ bool HandlerMineAreas::intersectMineRadiusCheck(const CentralEffectSimulation::A
int32_t bitFieldIdx = 0;
const double impactRadius = m_ddsHandler->chargeTypeRadius(itemView.chargeStruct);
const QPolygonF utmStep = m_handlerParticipant->getParticipantStep(participantPosition.participantId(), itemView.zone);
const QPolygonF utmStep = m_handlerParticipant->getParticipantStep(participantPosition.participantId, itemView.zone);
for (const auto &itPos : itemView.formMines)
{
DEBUG_LOG(m_logger) << " itemId=" << itemView.aesItemId
<< " chargeTypeId=" << itemView.chargeStruct.chargeTypeId()
<< " chargeTypeId=" << itemView.chargeStruct.chargeTypeId
<< ", MinePosUtm: " << CentralEffectSimulation::debug(itPos)
<< " utmStep:" << utmStep[0].x() << utmStep[0].y()
<< ", " << utmStep[1].x() << utmStep[1].y();
@@ -478,7 +478,7 @@ bool HandlerMineAreas::intersectMineRadiusCheck(const CentralEffectSimulation::A
if (m_triggeredImpacts.contains(itemView.aesItemId))
{
const AreaEffectSimulation::TriggeredImpacts &triggeredImpact = m_triggeredImpacts[itemView.aesItemId];
if (!LtsUtils::BitArray::testBit(triggeredImpact.bitfield(), bitFieldIdx))
if (!LtsUtils::BitArray::testBit(triggeredImpact.bitfield, bitFieldIdx))
{
++bitFieldIdx;
DEBUG_LOG(m_logger) << "Mine is active continue bitFieldIdx=" << bitFieldIdx;
@@ -490,7 +490,7 @@ bool HandlerMineAreas::intersectMineRadiusCheck(const CentralEffectSimulation::A
? itemView.dusMineId : bitFieldIdx + 1; // mineIdx in minefield starts at 1
// Check, if participant is inside danger-radius of the mine
distance = crossCircle(itPos, impactRadius, participantPosition.participantId(), itemView.zone);
distance = crossCircle(itPos, impactRadius, participantPosition.participantId, itemView.zone);
DEBUG_LOG(m_logger) << "distance=" << distance;
if (distance < 0.0)
{
@@ -507,17 +507,17 @@ bool HandlerMineAreas::intersectMineRadiusCheck(const CentralEffectSimulation::A
mineListItem.mineIndex = mineIdx;
mineListItem.minePos = minePos;
mineListItem.time = QDateTime::currentMSecsSinceEpoch();
m_mineLists[participantPosition.participantId()].append(mineListItem);
m_mineLists[participantPosition.participantId].append(mineListItem);
mineListIndex++;
DEBUG_LOG(m_logger) << " m_mineLists[" << participantPosition.participantId()
<< "].length=" << m_mineLists[participantPosition.participantId()].length();
DEBUG_LOG(m_logger) << " m_mineLists[" << participantPosition.participantId
<< "].length=" << m_mineLists[participantPosition.participantId].length();
if (distance < lastDistance)
{
DEBUG_LOG(m_logger) << " distance < lastDistance crossCircle for aesItemId: " << itemView.aesItemId
<< ", mineIdx: " << mineIdx
<< ", impactRadius:" << impactRadius
<< ", participantId: " << participantPosition.participantId()
<< ", participantId: " << participantPosition.participantId
<< ", lastDistance:" << lastDistance
<< ", distance:" << distance;
minePos = itPos;
@@ -528,12 +528,12 @@ bool HandlerMineAreas::intersectMineRadiusCheck(const CentralEffectSimulation::A
bitFieldIdx++;
} // for each mine
DEBUG_LOG(m_logger) << "End of for-loop participantId=" << participantPosition.participantId()
DEBUG_LOG(m_logger) << "End of for-loop participantId=" << participantPosition.participantId
<< " mineIndex=" << mineIndex
<< " lastDistance=" << lastDistance;
if (lastDistance > 0)
{
DEBUG_LOG(m_logger) << "sendEffectTypeEvent participantId=" << participantPosition.participantId()
DEBUG_LOG(m_logger) << "sendEffectTypeEvent participantId=" << participantPosition.participantId
<< " mineIndex=" << mineIndex;
// TODO Minenposition fuer den Event nehmen und nicht die Participant-Position
sendFtcMineTrigger(itemView.aesItemId, mineIndex - 1);
@@ -545,7 +545,7 @@ bool HandlerMineAreas::intersectMineRadiusCheck(const CentralEffectSimulation::A
// << " z=" << minePosGeo.z();
sendParticipantEvent(itemView, minePosition, ProjectDataManagement::PdmEventType::EventType_HitMine);
// aktuell verarbeitete Mine aus der Liste entfernen.
m_mineLists[participantPosition.participantId()].remove(mineListItemIndex);
m_mineLists[participantPosition.participantId].remove(mineListItemIndex);
}
return false;
}
@@ -605,14 +605,14 @@ bool HandlerMineAreas::inBoundingBoxCheck(const CentralEffectSimulation::AesItem
boundingBoxTopRight);
const QPointF participantPosUtmPoint = CentralEffectSimulation::geographic2Utm(participantPosition.pos(), itemView.zone);
const QPointF participantPosUtmPoint = CentralEffectSimulation::geographic2Utm(participantPosition.pos, itemView.zone);
if (boundingBoxImpact.contains(participantPosUtmPoint))
{
DEBUG_LOG(m_logger) << "inBoundingBoxCheck Paricipant " << participantPosition.participantId()
DEBUG_LOG(m_logger) << "inBoundingBoxCheck Paricipant " << participantPosition.participantId
<< " inside AesItemView:" << itemView.aesItemId << " return true";
return true;
}
DEBUG_LOG(m_logger) << "inBoundingBoxCheck Paricipant " << participantPosition.participantId()
DEBUG_LOG(m_logger) << "inBoundingBoxCheck Paricipant " << participantPosition.participantId
<< " outside AesItemView:" << itemView.aesItemId << " return false";
return false;
}
@@ -622,15 +622,15 @@ bool HandlerMineAreas::inFormCheck(const CentralEffectSimulation::AesItemViewUtm
const CentralEffectSimulation::HandlerParticipant::CesParticipantData &participantPosition)
{
const QPointF participantPosUtmPoint = CentralEffectSimulation::geographic2Utm(participantPosition.pos(), itemView.zone);
DEBUG_LOG(m_logger) << "inFormCheck start, paricipantId: " << participantPosition.participantId()
const QPointF participantPosUtmPoint = CentralEffectSimulation::geographic2Utm(participantPosition.pos, itemView.zone);
DEBUG_LOG(m_logger) << "inFormCheck start, paricipantId: " << participantPosition.participantId
<< ", aesItemId: " << itemView.aesItemId
<< ", aesTypeId: " << itemView.aesTypeId
<< ", form.size: " << itemView.form.size();
if (itemView.form.containsPoint(participantPosUtmPoint, Qt::FillRule::OddEvenFill))
{
DEBUG_LOG(m_logger) << "inside AES form, paricipantId: " << participantPosition.participantId()
DEBUG_LOG(m_logger) << "inside AES form, paricipantId: " << participantPosition.participantId
<< ", aesItemId: " << itemView.aesItemId;
return true;
} // if inside
@@ -670,7 +670,7 @@ void HandlerMineAreas::onTriggeredImpactsChanged(const AreaEffectSimulation::Tri
return;
DEBUG_LOG(m_logger) << "Got TriggeredImpacts: ";
switch (data.aesTypeId().underlying())
switch (data.aesTypeId)
{
case AreaEffectSimulation::AesType::AtExplosionArea:
case AreaEffectSimulation::AesType::AtExplosionSingle:
@@ -682,7 +682,7 @@ void HandlerMineAreas::onTriggeredImpactsChanged(const AreaEffectSimulation::Tri
case AreaEffectSimulation::AesType::AtMineArea:
// participant run on mine
// => store Mine-State and take into account when a participant runs to one of this mines
m_triggeredImpacts.insert(data.aesItemId(), data);
m_triggeredImpacts.insert(data.aesItemId, data);
break;
default:
//nothigng
@@ -694,36 +694,36 @@ void HandlerMineAreas::onTriggeredImpactsChanged(const AreaEffectSimulation::Tri
void HandlerMineAreas::calculateImpacts(const AreaEffectSimulation::TriggeredImpacts &data)
{
if ((data.aesTypeId() == AreaEffectSimulation::AesType::AtExplosionAreaSingleExplosions)
|| (data.aesTypeId() == AreaEffectSimulation::AesType::AtExplosionClusterSingleExplosions))
if ((data.aesTypeId == AreaEffectSimulation::AesType::AtExplosionAreaSingleExplosions)
|| (data.aesTypeId == AreaEffectSimulation::AesType::AtExplosionClusterSingleExplosions))
return;
auto it = m_aesItemViews.find(data.aesItemId());
auto it = m_aesItemViews.find(data.aesItemId);
if (it == m_aesItemViews.end())
{
WARNING_LOG(m_logger) << "Could not find item view for aes with id " << data.aesItemId();
WARNING_LOG(m_logger) << "Could not find item view for aes with id " << data.aesItemId;
return;
}
CentralEffectSimulation::AesItemViewUtm &aesItemView = *it;
// older then 10sec? ignore
if (data.sampleTime() < m_ddsHandler->currentPartitionTime() - 10 * 1000)
if (data.sampleTime < m_ddsHandler->currentPartitionTime() - 10 * 1000)
{
if (aesItemView.sampleTimeHandledImpacts < data.sampleTime())
if (aesItemView.sampleTimeHandledImpacts < data.sampleTime)
{
aesItemView.sampleTimeHandledImpacts = data.sampleTime();
aesItemView.handledImpacts = data.bitfield();
aesItemView.sampleTimeHandledImpacts = data.sampleTime;
aesItemView.handledImpacts = data.bitfield;
}
return;
}
QVector<int> bitsToCheck;
aesItemView.handledImpacts.resize(data.bitfield().size(), 0xFF);
for (int bitFieldIdx = 0; bitFieldIdx < data.impactCount(); ++bitFieldIdx)
aesItemView.handledImpacts.resize(data.bitfield.size(), 0xFF);
for (int bitFieldIdx = 0; bitFieldIdx < data.impactCount; ++bitFieldIdx)
{
// not yet triggered (bit is still 1)
if (LtsUtils::BitArray::testBit(data.bitfield(), bitFieldIdx))
if (LtsUtils::BitArray::testBit(data.bitfield, bitFieldIdx))
continue;
// already checked (bit is already 0)
@@ -734,17 +734,17 @@ void HandlerMineAreas::calculateImpacts(const AreaEffectSimulation::TriggeredImp
}
// remember handled impacts
aesItemView.sampleTimeHandledImpacts = data.sampleTime();
aesItemView.handledImpacts = data.bitfield();
aesItemView.sampleTimeHandledImpacts = data.sampleTime;
aesItemView.handledImpacts = data.bitfield;
const auto participantPositions = m_handlerParticipant->positions();
for (const CentralEffectSimulation::HandlerParticipant::CesParticipantData &pPos : participantPositions)
{
DEBUG_LOG(m_logger) << "pos participantId=" << pPos.participantId()
<< " buildingId=" << pPos.buildingId()
DEBUG_LOG(m_logger) << "pos participantId=" << pPos.participantId
<< " buildingId=" << pPos.buildingId
<< " insideBuilding=" << pPos.insideBuilding()
<< " positionValid=" << pPos.positionValid;
if (pPos.vulnerabilityState == ProjectDataManagement::VulnerabilityState::CatastrophicKill)
if (pPos.vulnerabilityState == ProjectDataManagement::VulnerabilityState::VulnerabilityState_CatastrophicKill)
continue;
if (pPos.insideBuilding())
continue;
@@ -763,7 +763,7 @@ void HandlerMineAreas::calculateImpacts(const CentralEffectSimulation::AesItemVi
// get radius of munition
const double impactRadius = m_ddsHandler->chargeTypeRadius(itemView.chargeStruct);
const QPointF participantPosUtmPoint = CentralEffectSimulation::geographic2Utm(participantPosition.pos(), itemView.zone);
const QPointF participantPosUtmPoint = CentralEffectSimulation::geographic2Utm(participantPosition.pos, itemView.zone);
for (int bitFieldIdx : impactsToCheck)
{
@@ -789,20 +789,20 @@ void HandlerMineAreas::sendCesHitRequest(const CentralEffectSimulation::AesItemV
DEBUG_LOG(m_logger) << "sendCesHitRequest "
<< " insideWlsArea=" << std::boolalpha << participantPosition.insideWlsArea()
<< " participantId=" << participantPosition.participantId();
const int equipNo = m_ddsHandler->participantId2EquipNo(participantPosition.participantId());
DEBUG_LOG(m_logger) << " ftc sendCESHit to Participant participantId = " << participantPosition.participantId()
<< " participantId=" << participantPosition.participantId;
const int equipNo = m_ddsHandler->participantId2EquipNo(participantPosition.participantId);
DEBUG_LOG(m_logger) << " ftc sendCESHit to Participant participantId = " << participantPosition.participantId
<< " equipNo = " << equipNo
<< " aesItemId =" << itemView.aesItemId;
// participantPosition.participantPosition == 0 -> send to all
if (participantPosition.participantId() != 0 && equipNo <= 0)
if (participantPosition.participantId != 0 && equipNo <= 0)
{
DEBUG_LOG(m_logger) << "participantPosition.participantId != 0 && equipNo <= 0" ;
return;
}
if (participantPosition.participantId() != 0 &&
participantPosition.vulnerabilityState == ProjectDataManagement::VulnerabilityState::CatastrophicKill)
if (participantPosition.participantId != 0 &&
participantPosition.vulnerabilityState == ProjectDataManagement::VulnerabilityState::VulnerabilityState_CatastrophicKill)
{
DEBUG_LOG(m_logger) << "participantPosition.participantId != 0 CatastrophicKill)";
return;
@@ -810,18 +810,18 @@ void HandlerMineAreas::sendCesHitRequest(const CentralEffectSimulation::AesItemV
int32_t originatorParticipantId = m_aesItemId2partIdMap.value(itemView.aesItemId, 0);
const TrainingAreaBase::TabPosition pos(participantPosition.pos(),
const TrainingAreaBase::TabPosition pos(participantPosition.pos,
Core::PositionReportingSource::Gps, // irrelevant
participantPosition.buildingId(),
participantPosition.roomId());
participantPosition.buildingId,
participantPosition.roomId);
const int originatorEquipNo = m_ddsHandler->participantId2EquipNo(originatorParticipantId);
const ProjectDataManagement::PdmEventType eventType = ProjectDataManagement::PdmEventType::EventType_Unknown;
TrainingAreaBase::SendCesHitRequest requestTab(
equipNo, // equipmentNumber
participantPosition.participantId(), // participantId
itemView.chargeStruct.chargeTypeId(), // chargeTypeId
participantPosition.participantId, // participantId
itemView.chargeStruct.chargeTypeId, // chargeTypeId
itemView.aesItemId, // aesId
originatorEquipNo, // originatorEquipmentNumber
remaining, // remainEffectPercent ( no protection outside Building )
@@ -831,8 +831,8 @@ void HandlerMineAreas::sendCesHitRequest(const CentralEffectSimulation::AesItemV
itemView.partyId, // originPartyId
mineFieldBitIndex
);
DEBUG_LOG(m_logger) << " participantId=" << participantPosition.participantId()
<< " chargeTypeId=" << itemView.chargeStruct.chargeTypeId();
DEBUG_LOG(m_logger) << " participantId=" << participantPosition.participantId
<< " chargeTypeId=" << itemView.chargeStruct.chargeTypeId;
m_sendCesHitRequestQueue.enqueue(requestTab);
if (m_sendCesHitRequestQueue.size() == 1)
@@ -847,45 +847,45 @@ void HandlerMineAreas::sendCesHitRequest(const AreaEffectSimulation::AesItemView
qint64 effectTime,
int mineFieldBitIndex)
{
int remaining = m_ddsHandler->remainingTasCode(itemView.chargeStruct());
int remaining = m_ddsHandler->remainingTasCode(itemView.chargeStruct);
int32_t legacyChargeTypeId = 0;
legacyChargeTypeId = m_ddsHandler->getLegacyIdFromChargeTypeId(itemView.chargeStruct());
legacyChargeTypeId = m_ddsHandler->getLegacyIdFromChargeTypeId(itemView.chargeStruct);
DEBUG_LOG(m_logger) << "sendCesHitRequest"
<< " insideWlsArea=" << std::boolalpha << participantPosition.insideWlsArea()
<< " participantId=" << participantPosition.participantId();
<< " participantId=" << participantPosition.participantId;
const int equipmentNumber = m_ddsHandler->participantId2EquipNo(participantPosition.participantId());
DEBUG_LOG(m_logger) << " ftc sendCESHit to Participant participantId = " << participantPosition.participantId()
<< " equipNo = " << equipmentNumber << " aesItemId =" << itemView.aesItemId();
const int equipmentNumber = m_ddsHandler->participantId2EquipNo(participantPosition.participantId);
DEBUG_LOG(m_logger) << " ftc sendCESHit to Participant participantId = " << participantPosition.participantId
<< " equipNo = " << equipmentNumber << " aesItemId =" << itemView.aesItemId;
// participantPosition.participantPosition == 0 -> send to all
if (participantPosition.participantId() != 0 && equipmentNumber <= 0)
if (participantPosition.participantId != 0 && equipmentNumber <= 0)
{
DEBUG_LOG(m_logger) << "participantPosition.participantId != 0 && equipNo <= 0" ;
return;
} // if
if (participantPosition.participantId() != 0 &&
participantPosition.vulnerabilityState == ProjectDataManagement::VulnerabilityState::CatastrophicKill)
if (participantPosition.participantId != 0 &&
participantPosition.vulnerabilityState == ProjectDataManagement::VulnerabilityState::VulnerabilityState_CatastrophicKill)
{
DEBUG_LOG(m_logger) << "participantPosition.participantId != 0 CatastrophicKill)";
return;
} // if
int32_t originatorParticipantId = m_aesItemId2partIdMap.value(itemView.aesItemId(), 0);
int32_t originatorParticipantId = m_aesItemId2partIdMap.value(itemView.aesItemId, 0);
const int originatorEquipmentNumber = m_ddsHandler->participantId2EquipNo(originatorParticipantId);
const TrainingAreaBase::TabPosition pos(
participantPosition.pos(), Core::PositionReportingSource::Gps, participantPosition.buildingId(),
participantPosition.roomId()
participantPosition.pos, Core::PositionReportingSource::Gps, participantPosition.buildingId,
participantPosition.roomId
);
const ProjectDataManagement::PdmEventType eventType = ProjectDataManagement::PdmEventType::EventType_Unknown;
TrainingAreaBase::SendCesHitRequest requestTab(
equipmentNumber, participantPosition.participantId(), legacyChargeTypeId, itemView.aesItemId(), originatorEquipmentNumber,
equipmentNumber, participantPosition.participantId, legacyChargeTypeId, itemView.aesItemId, originatorEquipmentNumber,
remaining, pos, effectTime, eventType, itemView.partyId.get(), mineFieldBitIndex
);
DEBUG_LOG(m_logger) << " participantId=" << participantPosition.participantId() << " chargeTypeId=" << itemView.chargeStruct().chargeTypeId()
DEBUG_LOG(m_logger) << " participantId=" << participantPosition.participantId << " chargeTypeId=" << itemView.chargeStruct.chargeTypeId
<< " legacyChargeTypeId=" << legacyChargeTypeId;
m_sendCesHitRequestQueue.enqueue(requestTab);
@@ -901,7 +901,7 @@ void HandlerMineAreas::sendParticipantEventEnterLeave(const CentralEffectSimulat
const bool inFormCheckResult)
{
const ProjectDataManagement::PdmEventType &lastEvent = m_eventStates[itemView.aesItemId][participantPosition.participantId()];
const ProjectDataManagement::PdmEventType &lastEvent = m_eventStates[itemView.aesItemId][participantPosition.participantId];
ProjectDataManagement::PdmEventType eventType = ProjectDataManagement::PdmEventType::EventType_EnterMineArea;
@@ -914,7 +914,7 @@ void HandlerMineAreas::sendParticipantEventEnterLeave(const CentralEffectSimulat
else
{
eventType = ProjectDataManagement::PdmEventType::EventType_EnterMineArea;
m_eventStates[itemView.aesItemId][participantPosition.participantId()] = ProjectDataManagement::PdmEventType::EventType_EnterMineArea;
m_eventStates[itemView.aesItemId][participantPosition.participantId] = ProjectDataManagement::PdmEventType::EventType_EnterMineArea;
}
}
else
@@ -924,7 +924,7 @@ void HandlerMineAreas::sendParticipantEventEnterLeave(const CentralEffectSimulat
else
{
eventType = ProjectDataManagement::PdmEventType::EventType_LeaveMineArea;
m_eventStates[itemView.aesItemId][participantPosition.participantId()] = ProjectDataManagement::PdmEventType::EventType_LeaveMineArea;
m_eventStates[itemView.aesItemId][participantPosition.participantId] = ProjectDataManagement::PdmEventType::EventType_LeaveMineArea;
}
}
@@ -939,31 +939,31 @@ void HandlerMineAreas::sendParticipantEvent(const CentralEffectSimulation::AesIt
DEBUG_LOG(m_logger) << "sendParticipantEvent " << itemView.aesItemId
<< " participantId=" << participantPosition.participantId()
<< " participantId=" << participantPosition.participantId
<< " eventType=" << eventType
<< " pos=" << participantPosition.pos().lat()
<< "/" << participantPosition.pos().lon()
<< "/" << participantPosition.pos().z();
<< " pos=" << participantPosition.pos.lat
<< "/" << participantPosition.pos.lon
<< "/" << participantPosition.pos.z;
int equipmentNumber = m_ddsHandler->participantId2EquipNo(participantPosition.participantId());
int equipmentNumber = m_ddsHandler->participantId2EquipNo(participantPosition.participantId);
const AreaEffectSimulation::MineArea &ma = m_ddsHandler->dtcAes()->mineArea(itemView.aesItemId);
CentralEffectSimulation::ParticipantEvent pe;
pe.id(m_ddsHandler->getParticipantEventId());
pe.id = m_ddsHandler->getParticipantEventId();
pe.eventTypeId(eventType.underlying());
pe.participantId(participantPosition.participantId());
pe.eventTime(participantPosition.sampleTime());
pe.aesItemId(itemView.aesItemId);
pe.partyId(participantPosition.partyId());
pe.aesName(ma.name());
pe.equipmentNumber(equipmentNumber);
pe.vulnerability(participantPosition.vulnerabilityState.underlying());
pe.position(participantPosition.pos());
pe.eventTypeId = eventType;
pe.participantId = participantPosition.participantId;
pe.eventTime = participantPosition.sampleTime;
pe.aesItemId = itemView.aesItemId;
pe.partyId = participantPosition.partyId;
pe.aesName = ma.name;
pe.equipmentNumber = equipmentNumber;
pe.vulnerability = static_cast<int>(participantPosition.vulnerabilityState);
pe.position = participantPosition.pos;
m_ddsHandler->dtsCes()->publish(pe);
const auto id = pe.id();
const auto id = pe.id;
QTimer::singleShot(1 * 60 * 1000, this, [id, this]() { m_ddsHandler->dtsCes()->removeParticipantEventByKey(id); });
}
@@ -974,11 +974,11 @@ void HandlerMineAreas::sendFtcMineTrigger(int aesItemId, int mineIndex)
auto ftcAes = m_ddsHandler->ftcAes();
AreaEffectSimulation::MineTriggeredRequest tr;
tr.mineAreaId(aesItemId);
tr.mineId(mineIndex);
tr.chargeTypeId(ma.chargeStruct().chargeTypeId());
DEBUG_LOG(m_logger) << "send sendFtcMineTrigger: aesItemId=" << tr.mineAreaId()
<< " MineIndex=" << tr.mineId();
tr.mineAreaId = aesItemId;
tr.mineId = mineIndex;
tr.chargeTypeId = ma.chargeStruct.chargeTypeId;
DEBUG_LOG(m_logger) << "send sendFtcMineTrigger: aesItemId=" << tr.mineAreaId
<< " MineIndex=" << tr.mineId;
ftcAes->mineTriggeredRequest(tr, this);
}
@@ -989,7 +989,7 @@ void HandlerMineAreas::sendEffectTypeEvent(const CentralEffectSimulation::AesIte
qint64 effectTime)
{
DEBUG_LOG(m_logger) << "sendEffectTypeEvent aesItemId=" << itemView.aesItemId
<< " participantId=" << participantPosition.participantId()
<< " participantId=" << participantPosition.participantId
<< " effectType=" << effectTime
<< " mineFieldBitIndex=" << mineFieldBitIndex;
Q_UNUSED(effectTime);
@@ -1001,7 +1001,7 @@ void HandlerMineAreas::sendEffectTypeEvent(const CentralEffectSimulation::AesIte
mfb = ", mineFieldBitIndex: " + QByteArray::number(mineFieldBitIndex);
const int ctasEffectType = static_cast<int>(effectType) & 0xffff;
DEBUG_LOG(m_logger) << "Sending EffectType event " << toString(effectType)
<< ", participant: " << participantPosition.participantId()
<< ", participant: " << participantPosition.participantId
<< ", aesItemId: " << itemView.aesItemId
<< mfb
<< ", ctasEffectType: " << ctasEffectType;
@@ -1082,7 +1082,7 @@ bool HandlerMineAreas::inExtededFormCheck(const CentralEffectSimulation::AesItem
const CentralEffectSimulation::HandlerParticipant::CesParticipantData &participantPosition) const
{
const double distance = m_ddsHandler->chargeTypeRadius(itemView.chargeStruct);
const QPointF participantPosUtmPoint = CentralEffectSimulation::geographic2Utm(participantPosition.pos(), itemView.zone);
const QPointF participantPosUtmPoint = CentralEffectSimulation::geographic2Utm(participantPosition.pos, itemView.zone);
///////////////////////////////////////////////////////////
@@ -56,14 +56,14 @@ bool HandlerMineLayingArtillery::init()
double HandlerMineLayingArtillery::calculateAngle(const AreaEffectSimulation::TrajectoryTimeAware &trajectory)
{
Core::GeoPositionRelativeTime trajectoryGeometryFirst = trajectory.geometry().front();
Core::GeoPositionRelativeTime trajectoryGeometryLast = trajectory.geometry().back();
Core::GeoPositionRelativeTime trajectoryGeometryFirst = trajectory.geometry.front();
Core::GeoPositionRelativeTime trajectoryGeometryLast = trajectory.geometry.back();
const LtsCoordTrans::UtmCoordinate &trajectoryGeometryFirstUtm
= LtsCoordTrans::UtmCoordinate::fromGeographic(QPointF(trajectoryGeometryFirst.lon(), trajectoryGeometryFirst.lat()));
= LtsCoordTrans::UtmCoordinate::fromGeographic(QPointF(trajectoryGeometryFirst.lon, trajectoryGeometryFirst.lat));
const LtsCoordTrans::UtmCoordinate &trajectoryGeometryLastUtm
= LtsCoordTrans::UtmCoordinate::fromGeographic(QPointF(trajectoryGeometryLast.lon(), trajectoryGeometryLast.lat()), trajectoryGeometryFirstUtm.zone);
= LtsCoordTrans::UtmCoordinate::fromGeographic(QPointF(trajectoryGeometryLast.lon, trajectoryGeometryLast.lat), trajectoryGeometryFirstUtm.zone);
QLineF lineFromStartToImpact
= QLineF(QPointF(trajectoryGeometryFirstUtm.x, trajectoryGeometryFirstUtm.y), QPointF(trajectoryGeometryLastUtm.x, trajectoryGeometryLastUtm.y));
@@ -89,7 +89,7 @@ std::vector<AreaEffectSimulation::MineData> HandlerMineLayingArtillery::calculat
DEBUG_LOG(m_logger) << "[calculateImpacts] ## \n\tappearanceTimeOffset: " << appearanceTimeOffset << "\n\tappearanceJitter: " << appearanceJitter << "\n\tarmingTimeOffset: " << armingTimeOffset<<"\n\ttime: "<<time;
const LtsCoordTrans::UtmCoordinate impactPostionUtm = LtsCoordTrans::UtmCoordinate::fromGeographic(QPointF(impactPositon.lon(), impactPositon.lat()));
const LtsCoordTrans::UtmCoordinate impactPostionUtm = LtsCoordTrans::UtmCoordinate::fromGeographic(QPointF(impactPositon.lon, impactPositon.lat));
QJsonObject patternObj = patternsArray[patternCounter].toObject();
QJsonArray positionsArray = patternObj[QStringLiteral("positions")].toArray();
@@ -114,14 +114,14 @@ std::vector<AreaEffectSimulation::MineData> HandlerMineLayingArtillery::calculat
QPointF transformedImpactPosition = impactPostionUtm.geographic(positionRot.x(), positionRot.y());
const double appearenceTime = time + appearanceTimeOffset + QRandomGenerator::global()->bounded(0, appearanceJitter * 2) - appearanceJitter;
const double armingTime = time + armingTimeOffset + QRandomGenerator::global()->bounded(0, armingJitter * 2) - armingJitter;
const double appearenceTime = time + appearanceTimeOffset + QRandomGenerator::global()->bounded(0, static_cast<int>(appearanceJitter * 2)) - appearanceJitter;
const double armingTime = time + armingTimeOffset + QRandomGenerator::global()->bounded(0, static_cast<int>(armingJitter * 2)) - armingJitter;
DEBUG_LOG(m_logger) <<"[calculateImpacts] patternCount: "<<patternCounter<< " appearenceTime: " << appearenceTime << " armingTime: " << armingTime;
mineData.position(Core::GeoPosition2D(transformedImpactPosition.x(), transformedImpactPosition.y()));
mineData.appearenceTime(appearenceTime);
mineData.armingTime(armingTime);
mineData.position = Core::GeoPosition2D(transformedImpactPosition.x(), transformedImpactPosition.y());
mineData.appearenceTime = appearenceTime;
mineData.armingTime = armingTime;
transformedImpacts.push_back(mineData);
}
@@ -138,16 +138,16 @@ void HandlerMineLayingArtillery::onChargeTypeChanged(const ProjectDataManagement
case DataModification::eAdded:
case DataModification::eModified:
{
if (!m_dtcPdm->isMineLaying(data.id(), 0, 0))
if (!m_dtcPdm->isMineLaying(data.id, 0, 0))
return;
QJsonObject mineLayingPattern = m_dtcPdm->mineLayingPattern(data.id(), 0, 0);
m_mineLayingChargeTypes.insert(data.id(), mineLayingPattern);
QJsonObject mineLayingPattern = m_dtcPdm->mineLayingPattern(data.id, 0, 0);
m_mineLayingChargeTypes.insert(data.id, mineLayingPattern);
return;
}
case DataModification::eRemoved:
m_mineLayingChargeTypes.remove(data.id());
m_mineLayingChargeTypes.remove(data.id);
return;
}
}
@@ -164,9 +164,9 @@ void HandlerMineLayingArtillery::onEffectClusterTimerTimeout()
return;
const AreaEffectSimulation::ChargeEffect chargeEffect = m_effectClusterQue.dequeue();
const int chargeTypeId = chargeEffect.chargeTypeId();
const int chargeTypeId = chargeEffect.chargeTypeId;
QByteArray jsonData = QByteArray::fromStdString(chargeEffect.properties());
QByteArray jsonData = QByteArray::fromStdString(chargeEffect.properties);
QJsonDocument doc = QJsonDocument::fromJson(jsonData);
bool alreadyUsed = false;
@@ -180,12 +180,12 @@ void HandlerMineLayingArtillery::onEffectClusterTimerTimeout()
if (!m_mineLayingChargeTypes.contains(chargeTypeId) || alreadyUsed)
return;
const int chargeEffectId = chargeEffect.id();
const int chargeEffectId = chargeEffect.id;
const QJsonObject &mineLayingProperties = m_mineLayingChargeTypes[chargeTypeId];
const int mineChargeTypeId = mineLayingProperties[QStringLiteral("mineChargeTypeId")].toInt();
AreaEffectSimulation::EffectCluster ec = m_dtcAes->effectCluster(chargeEffect.originatorId());
DEBUG_LOG(m_logger)<<" [onChargeEffectChanged] effectClusterId: "<<ec.id()<<" mineChargeTypeId: "<<mineChargeTypeId;
AreaEffectSimulation::EffectCluster ec = m_dtcAes->effectCluster(chargeEffect.originatorId);
DEBUG_LOG(m_logger)<<" [onChargeEffectChanged] effectClusterId: "<<ec.id<<" mineChargeTypeId: "<<mineChargeTypeId;
if (mineChargeTypeId <= 0)
{
@@ -195,54 +195,54 @@ void HandlerMineLayingArtillery::onEffectClusterTimerTimeout()
for (const auto &trajectory : m_dtcAes->trajectoryTimeAwares())
{
if (trajectory.originatorId() != chargeEffectId && trajectory.originatorTypeId().underlying() != ProjectDataManagement::StateChangeOriginator::ChargeEffect)
if (trajectory.originatorId != chargeEffectId && trajectory.originatorTypeId != ProjectDataManagement::StateChangeOriginator::StateChangeOriginator_ChargeEffect)
continue;
if (!m_impactCounters.contains(chargeEffect.originatorId()))
m_impactCounters[chargeEffect.originatorId()] = 0;
if (!m_impactCounters.contains(chargeEffect.originatorId))
m_impactCounters[chargeEffect.originatorId] = 0;
const int impactCounter = m_impactCounters.value(chargeEffect.originatorId());
const int impactCounter = m_impactCounters.value(chargeEffect.originatorId);
const double angle = calculateAngle(trajectory);
const qint64 timeFromLastTrajectoryPointAbsolute = chargeEffect.effectStart() + trajectory.geometry().back().relativeTime();
const qint64 timeFromLastTrajectoryPointAbsolute = chargeEffect.effectStart + trajectory.geometry.back().relativeTime;
const int patternCount = mineLayingProperties.value(QStringLiteral("pattern")).toArray().size();
const int patternCounter = patternCounterByImpactCount(ec, patternCount, impactCounter);
const int effectorIndex = effectorIndexByImpactCount(ec, impactCounter);
const Core::GeoPosition mhpPositionGeo = ec.effectors().at(effectorIndex).mhpPosition();
const Core::GeoPosition2D mhpPositionGeo2D(mhpPositionGeo.lon(), mhpPositionGeo.lat());
const Core::GeoPosition mhpPositionGeo = ec.effectors.at(effectorIndex).mhpPosition;
const Core::GeoPosition2D mhpPositionGeo2D(mhpPositionGeo.lon, mhpPositionGeo.lat);
const std::vector<AreaEffectSimulation::MineData> mineImpacts
= calculateImpacts(mineLayingProperties, mhpPositionGeo2D, angle, timeFromLastTrajectoryPointAbsolute, patternCounter);
AreaEffectSimulation::MineAreaReferenceModifyRequest request;
request.chargeTypeId(mineChargeTypeId);
request.referenceAesItemId(chargeEffect.originatorId());
request.mineData(mineImpacts);
request.chargeTypeId = mineChargeTypeId;
request.referenceAesItemId = chargeEffect.originatorId;
request.mineData = mineImpacts;
QJsonObject chargeEffectPropsObj = QJsonDocument::fromJson(QByteArray::fromStdString(chargeEffect.properties())).object();
request.effectDurationMsec(chargeEffectPropsObj[QStringLiteral("effectDurationMsec")].toInt(3 * 60 * 60 * 1000));
QJsonObject chargeEffectPropsObj = QJsonDocument::fromJson(QByteArray::fromStdString(chargeEffect.properties)).object();
request.effectDurationMsec = chargeEffectPropsObj[QStringLiteral("effectDurationMsec")].toInt(3 * 60 * 60 * 1000);
const int ret = m_ftcAes->mineAreaReferenceModifyRequest(request);
DEBUG_LOG(m_logger)<<"[onChargeEffectChanged] ****** mineAreaReferenceModifyRequest \n\tret id: "<< ret
<< "\n\tchargeTypeId: " << chargeTypeId
<< "\n\tchargeEffectId: " << chargeEffectId << "\n\ttrajectoryId: " << trajectory.id()
<< "\n\tchargeEffectId: " << chargeEffectId << "\n\ttrajectoryId: " << trajectory.id
<< "\n\tangle: " << angle << "\n\ttimeFromLastTrajectoryPointAbsolute: " << timeFromLastTrajectoryPointAbsolute;
AreaEffectSimulation::ChargeEffectModifyRequest chargeEffectRequest;
chargeEffectRequest.chargeTypeId(chargeEffect.chargeTypeId());
chargeEffectRequest.effectDuration(chargeEffect.effectDuration());
chargeEffectRequest.effectStart(chargeEffect.effectStart());
chargeEffectRequest.gearTypeId(chargeEffect.gearTypeId());
chargeEffectRequest.id(chargeEffect.id());
chargeEffectRequest.igniterTypeId(chargeEffect.igniterTypeId());
chargeEffectRequest.originatorId(chargeEffect.originatorId());
chargeEffectRequest.originatorTypeId(chargeEffect.originatorTypeId());
chargeEffectRequest.position(chargeEffect.position());
chargeEffectRequest.chargeTypeId = chargeEffect.chargeTypeId;
chargeEffectRequest.effectDuration = chargeEffect.effectDuration;
chargeEffectRequest.effectStart = chargeEffect.effectStart;
chargeEffectRequest.gearTypeId = chargeEffect.gearTypeId;
chargeEffectRequest.id = chargeEffect.id;
chargeEffectRequest.igniterTypeId = chargeEffect.igniterTypeId;
chargeEffectRequest.originatorId = chargeEffect.originatorId;
chargeEffectRequest.originatorTypeId = chargeEffect.originatorTypeId;
chargeEffectRequest.position = chargeEffect.position;
chargeEffectPropsObj.insert(QStringLiteral("used"), QJsonValue::fromVariant(true));
chargeEffectRequest.properties(QJsonDocument(chargeEffectPropsObj).toJson().toStdString());
chargeEffectRequest.properties = QJsonDocument(chargeEffectPropsObj).toJson().toStdString();
m_ftcAes->chargeEffectModifyRequest(chargeEffectRequest);
++m_impactCounters[chargeEffect.originatorId()];
++m_impactCounters[chargeEffect.originatorId];
break;
}
@@ -253,22 +253,22 @@ void HandlerMineLayingArtillery::onEffectClusterTimerTimeout()
int HandlerMineLayingArtillery::patternCounterByImpactCount(const AreaEffectSimulation::EffectCluster &effectCluster, int patternCount, int impactCounter) const
{
return impactCounter / effectCluster.effectors().size() % patternCount;
return impactCounter / effectCluster.effectors.size() % patternCount;
}
int HandlerMineLayingArtillery::effectorIndexByImpactCount(const AreaEffectSimulation::EffectCluster &effectCluster, int impactCounter) const
{
return impactCounter % effectCluster.effectors().size();
return impactCounter % effectCluster.effectors.size();
}
void HandlerMineLayingArtillery::onChargeEffectChanged(const AreaEffectSimulation::ChargeEffect &data, DataModification modType)
{
Q_UNUSED(modType);
if (data.state() != AreaEffectSimulation::AesEffectState::EsActivated)
if (data.state != AreaEffectSimulation::AesEffectState::EsActivated)
return;
if (data.originatorTypeId() != ProjectDataManagement::StateChangeOriginator::AreaEffectSimulation)
if (data.originatorTypeId != ProjectDataManagement::StateChangeOriginator::StateChangeOriginator_AreaEffectSimulation)
return;
// since there are some mines missing when adding them too fast, they are queued
@@ -22,7 +22,7 @@ namespace core
{
inline uint qHash(ProjectDataManagement::PdmEventType et)
{
return ::qHash(et.underlying());
return ::qHash(et);
}
}
}
@@ -71,21 +71,21 @@ bool CesMissionPlanHandler::init()
void CesMissionPlanHandler::updateMissionPlanList(const ParticipantManagement::MissionPlan &data)
{
CesMissionPlanObject *obj = m_missionPlanObjects.value(data.id(), nullptr);
CesMissionPlanObject *obj = m_missionPlanObjects.value(data.id, nullptr);
if (obj)
{
m_missionPlanObjects[data.id()]->setMissionPlan(data);
m_missionPlanObjects[data.id]->setMissionPlan(data);
return;
}
// check if mission start is in the future before proceeding..
DEBUG_LOG(m_logger)<<" -- [updateMissionPlanList] new missionPlan : "<<data.name()<< " planId: "<<data.id();
DEBUG_LOG(m_logger)<<" -- [updateMissionPlanList] new missionPlan : "<<data.name<< " planId: "<<data.id;
if (data.missionStart() < m_ddsHandler->currentPartitionTime())
if (data.missionStart < m_ddsHandler->currentPartitionTime())
{
WARNING_LOG(m_logger) << " -- updateMissionPlanList mission startTime ("<<data.missionStart()<<") in the past ignore mission plan id: "<<data.id()
<< " name: " << data.name() << " - now: " << m_ddsHandler->currentPartitionTime();
WARNING_LOG(m_logger) << " -- updateMissionPlanList mission startTime ("<<data.missionStart<<") in the past ignore mission plan id: "<<data.id
<< " name: " << data.name << " - now: " << m_ddsHandler->currentPartitionTime();
return;
}
@@ -101,25 +101,25 @@ void CesMissionPlanHandler::updateMissionPlanList(const ParticipantManagement::M
};
connect(obj, &CesMissionPlanObject::destroyed, this, onDeleteObj);
m_missionPlanObjects.insert(data.id(), obj);
m_missionPlanObjects.insert(data.id, obj);
}
void CesMissionPlanHandler::onUasChanged(const ParticipantManagement::UAS &data, DataModification modType)
{
Q_UNUSED(modType)
DEBUG_LOG(m_logger)<<" -- onUasChanged : uas.id = "<<data.id() <<" participantId = "<<data.participantId();
DEBUG_LOG(m_logger)<<" -- onUasChanged : uas.id = "<<data.id <<" participantId = "<<data.participantId;
// get mission object of corresponding uas participant
// if drone status is manual mode then cancel mission.
if (data.uasState() != ProjectDataManagement::UasState::Manual && modType != DataModification::eRemoved)
if (data.uasState != ProjectDataManagement::UasState::UasState_Manual && modType != DataModification::eRemoved)
return;
for (auto planObj : m_missionPlanObjects)
{
if (planObj->participantId() != data.participantId())
if (planObj->participantId() != data.participantId)
continue;
// if waypoint started and state switched to manual abord mission
if (planObj->missionPlan().missionStart() < m_ddsHandler->currentPartitionTime())
if (planObj->missionPlan().missionStart < m_ddsHandler->currentPartitionTime())
planObj->abortMission();
break;
}
@@ -127,8 +127,8 @@ void CesMissionPlanHandler::onUasChanged(const ParticipantManagement::UAS &data,
void CesMissionPlanHandler::onMissionPlanChanged(const ParticipantManagement::MissionPlan &data, DataModification modType)
{
DEBUG_LOG(m_logger)<<" -- onMissionPlanChanged : missionPlanName: "<<data.name() << ", modType: " << (int)modType;
if (data.id() <= 0)
DEBUG_LOG(m_logger)<<" -- onMissionPlanChanged : missionPlanName: "<<data.name << ", modType: " << (int)modType;
if (data.id <= 0)
return;
switch (modType)
{
@@ -138,12 +138,12 @@ void CesMissionPlanHandler::onMissionPlanChanged(const ParticipantManagement::Mi
break;
case DataModification::eRemoved:
{
auto obj = m_missionPlanObjects.value(data.id(), nullptr);
auto obj = m_missionPlanObjects.value(data.id, nullptr);
if (!obj)
return;
delete obj;
m_missionPlanObjects.remove(data.id());
m_missionPlanObjects.remove(data.id);
}
break;
default:
@@ -157,15 +157,15 @@ bool CesMissionPlanHandler::isUasInAutoMode(int participantId)
m_ddsHandler->dtcPpm()->waitForHistoricalDataUAS(3000);
const auto uas = m_ddsHandler->dtcPpm()->getUasByParticipantId(participantId, m_ddsHandler->getExerciseId());
if (uas.id() < 1)
if (uas.id < 1)
{
ERROR_LOG(m_logger) << "no uas for pid " << participantId;
return false;
}
DEBUG_LOG(m_logger) << "uas with pid " << participantId << " is in mode: " << (int)uas.uasState().underlying();
DEBUG_LOG(m_logger) << "uas with pid " << participantId << " is in mode: " << (int)uas.uasState;
return (uas.uasState() == ProjectDataManagement::UasState::UasState_Auto);
return (uas.uasState == ProjectDataManagement::UasState::UasState_Auto);
}
// stolen from Lts/Plugins/ParticipantManagement/Gui/ParticipantInfo/participant_info_dialog.cpp
@@ -175,53 +175,53 @@ bool CesMissionPlanHandler::isUasCombatReady(int participantId)
m_ddsHandler->dtcPpm()->waitForHistoricalDataDynamicParticipantData(3000);
const auto data = m_ddsHandler->dtcPpm()->dynamicParticipantData(participantId);
if (data.participantId() == 0)
if (data.participantId == 0)
{
return false;
}
//Current State
DEBUG_LOG(m_logger) << "stateHistory count" << data.stateHistory().size();
if (data.stateHistory().empty())
DEBUG_LOG(m_logger) << "stateHistory count" << data.stateHistory.size();
if (data.stateHistory.empty())
{
return false;
}
const auto &history = data.stateHistory();
const auto &history = data.stateHistory;
//LasState is the last "real" state, that has a VBG <=8 (Castastrophic)
//It's not the last state received, as there can be other state changes like Sanitation, or NearMiss
auto lastState = m_ddsHandler->dtcPpm()->youngestStateInformation(history/*, true*/ /* debug */);
decltype(lastState) youngestState;
youngestState.stateTime(0);
youngestState.stateTime = 0;
for (const auto &si : history)
{
DEBUG_LOG(m_logger) << "StateInformation "
<< " time=" << si.stateTime()
<< " vulnerabilityBits=" << si.vulnerabilityBits()
<< " vulnerabilityKindId=" << si.vulnerabilityKindId();
if (youngestState.stateTime() < si.stateTime())
<< " time=" << si.stateTime
<< " vulnerabilityBits=" << si.vulnerabilityBits
<< " vulnerabilityKindId=" << si.vulnerabilityKindId;
if (youngestState.stateTime < si.stateTime)
youngestState = si;
}
return (youngestState.vulnerabilityState() == ProjectDataManagement::VulnerabilityState::VulnerabilityState_CombatReady);
return (youngestState.vulnerabilityState == ProjectDataManagement::VulnerabilityState::VulnerabilityState_CombatReady);
}
void CesMissionPlanHandler::onSendNextMissionAction(const ParticipantManagement::MissionAction &msa)
{
auto missionPlan = m_missionPlanObjects.value(msa.planId(), nullptr);
auto missionPlan = m_missionPlanObjects.value(msa.planId, nullptr);
if (!missionPlan)
{
DEBUG_LOG(m_logger)<<" -- [SEND NEXT MISSION] Object not found. PlanId: "<<msa.planId();
DEBUG_LOG(m_logger)<<" -- [SEND NEXT MISSION] Object not found. PlanId: "<<msa.planId;
return;
}
// send to TAB
const auto participantId = missionPlan->m_missionPlan.participantId();
const auto participantId = missionPlan->m_missionPlan.participantId;
const auto participant = m_handlerParticipant->participant(participantId);
if (!participant.equipmentNumber())
if (!participant.equipmentNumber)
{
ERROR_LOG(m_logger) << "unable to send next mission action to uav without equipment number";
return;
@@ -245,12 +245,12 @@ void CesMissionPlanHandler::onSendNextMissionAction(const ParticipantManagement:
return;
}
const auto eqId = participant.equipmentNumber().value();
const auto eqId = participant.equipmentNumber.value();
try
{
// send action to uav via tab - if this doesn't throw, waypoint is now executing
m_ddsHandler->ftcTab()->sendUasWaypointRequest(TrainingAreaBase::SendUasWaypointRequest(eqId, participantId, msa.actionNumber(), msa.itemNumber(), msa.planId(), msa.name(), msa.properties()));
m_ddsHandler->ftcTab()->sendUasWaypointRequest(TrainingAreaBase::SendUasWaypointRequest(eqId, participantId, msa.actionNumber, msa.itemNumber, msa.planId, msa.name, msa.properties));
// PPM will send a change request to the current active action, which in return tell us (updateMissionPlanList) and finally we will start the next action - so we are done here for now
}
catch (const std::exception &ex)
@@ -29,9 +29,9 @@ CesMissionPlanObject::CesMissionPlanObject(const ParticipantManagement::MissionP
m_missionStartimer->setSingleShot(true);
connect(m_missionStartimer, &QTimer::timeout, this, &CesMissionPlanObject::sendNextMissionAction);
if (missionPlan.missionStart() > m_ddsHandler->currentPartitionTime())
if (missionPlan.missionStart > m_ddsHandler->currentPartitionTime())
{
const int time = m_missionPlan.missionStart() - m_ddsHandler->currentPartitionTime();
const int time = m_missionPlan.missionStart - m_ddsHandler->currentPartitionTime();
// DEBUG_LOG(m_logger)<<" -- [CesMissionPlanObject] start mission after << "<<time/1000<<" sec.";
m_missionStartimer->start(time);
}
@@ -53,74 +53,74 @@ void CesMissionPlanObject::setMissionActionFulfilled(const ParticipantManagement
//DEBUG_LOG(m_logger)<<" -- [setMissionActionFullfiled] -> msa.number: "<<msa.actionNumber()<<" planId: "<<msa.planId();
// actionNumb=-1 && itemNumb=-1 |-> mission will be aborted
if (msa.itemNumber() < 0 && msa.actionNumber() < 0)
if (msa.itemNumber < 0 && msa.actionNumber < 0)
{
ParticipantManagement::SetMissionActionFulfilledRequest abortReq(m_missionPlan.id(),
ParticipantManagement::SetMissionActionFulfilledRequest abortReq(m_missionPlan.id,
m_ddsHandler->currentPartitionTime(),
-1,
-1);
if ( !m_ddsHandler->ftcPpm()->setMissionActionFulfilledRequest(abortReq))
WARNING_LOG(m_logger) << " -- unable to abort mission with planId:"<<abortReq.missionId();
WARNING_LOG(m_logger) << " -- unable to abort mission with planId:"<<abortReq.missionId;
return;
}
if (msa.itemNumber() >= static_cast<int>(m_missionPlan.items().size()) )
if (msa.itemNumber >= static_cast<int>(m_missionPlan.items.size()) )
{
//WARNING_LOG(m_logger)<<" -- [setMissionActionFulfilled] item size invalid !!";
return;
}
const int actionCount = m_missionPlan.items()[msa.itemNumber()].actions().size();
if (msa.actionNumber() >= actionCount)
const int actionCount = m_missionPlan.items[msa.itemNumber].actions.size();
if (msa.actionNumber >= actionCount)
{
//WARNING_LOG(m_logger)<<" -- [setMissionActionFulfilled] actions size invalid !!";
return;
}
auto &action = m_missionPlan.items()[msa.itemNumber()].actions()[msa.actionNumber()];
action.fulfilled(m_ddsHandler->currentPartitionTime());
auto &action = m_missionPlan.items[msa.itemNumber].actions[msa.actionNumber];
action.fulfilled = m_ddsHandler->currentPartitionTime();
ParticipantManagement::SetMissionActionFulfilledRequest req;
req.actionNumber(action.actionNumber());
req.fulfilled(action.fulfilled());
req.itemNumber(action.itemNumber());
req.missionId(m_missionPlan.id());
req.actionNumber = action.actionNumber;
req.fulfilled = action.fulfilled;
req.itemNumber = action.itemNumber;
req.missionId = m_missionPlan.id;
if (!m_ddsHandler->ftcPpm()->setMissionActionFulfilledRequest(req))
WARNING_LOG(m_logger) << " -- unable to setMissionActionFulfilledRequest: planId:"<<req.missionId();
WARNING_LOG(m_logger) << " -- unable to setMissionActionFulfilledRequest: planId:"<<req.missionId;
}
int CesMissionPlanObject::planId() const
{
return m_missionPlan.id();
return m_missionPlan.id;
}
int CesMissionPlanObject::participantId() const
{
return m_missionPlan.participantId();
return m_missionPlan.participantId;
}
bool CesMissionPlanObject::isMissionFulfilled(const ParticipantManagement::MissionPlan &mission)
{
int itemCount = 0;
int actionCount = 0;
for (const auto &item : mission.items())
for (const auto &item : mission.items)
{
actionCount = 0;
for (const auto &a : item.actions())
for (const auto &a : item.actions)
{
//DEBUG_LOG(m_logger)<<" -- [setMissionPlan] action.Num : "<<a.actionNumber()<<" itemNum: "<<a.itemNumber()<<" fulfilled: "<<a.fulfilled();
if (a.fulfilled() > 0)
if (a.fulfilled > 0)
actionCount++;
else
return false;
}
if (actionCount == (int) item.actions().size())
if (actionCount == (int) item.actions.size())
itemCount++;
}
return (itemCount == (int)mission.items().size());
return (itemCount == (int)mission.items.size());
}
void CesMissionPlanObject::sendActionAttact()
@@ -130,7 +130,7 @@ void CesMissionPlanObject::sendActionAttact()
//3- setActionFulfilled
int ret = m_ddsHandler->ftcAes()->explosionClusterSingleEffectOnlyModifyRequest(getExplosionCluster());
if (!ret)
WARNING_LOG(m_logger)<<" -- sendActionAttact ret error for planId: "<<m_missionPlan.id();
WARNING_LOG(m_logger)<<" -- sendActionAttact ret error for planId: "<<m_missionPlan.id;
setMissionActionFulfilled(getNextAction());
}
@@ -139,28 +139,28 @@ AreaEffectSimulation::ExplosionClusterSingleEffectOnlyRequest CesMissionPlanObje
{
auto msa = getNextAction();
QJsonObject jsobj = QJsonDocument::fromJson(QByteArray::fromStdString(msa.properties())).object();
QJsonObject jsobj = QJsonDocument::fromJson(QByteArray::fromStdString(msa.properties)).object();
const int chargeTypeId = jsobj.value(QStringLiteral("chargeTypeId")).toInt();
const ParticipantManagement::Participant participant = m_ddsHandler->dtcPpm()->participant(m_missionPlan.participantId());
const ParticipantManagement::UAS uas = m_ddsHandler->dtcPpm()->getUasByParticipantId(m_missionPlan.participantId(),
const ParticipantManagement::Participant participant = m_ddsHandler->dtcPpm()->participant(m_missionPlan.participantId);
const ParticipantManagement::UAS uas = m_ddsHandler->dtcPpm()->getUasByParticipantId(m_missionPlan.participantId,
m_ddsHandler->dds()->getPartitionId());
QDateTime timeStamp = QDateTime::fromMSecsSinceEpoch(m_ddsHandler->currentPartitionTime());
timeStamp = timeStamp.addSecs(10);
const QString exploName = QStringLiteral("%1_%2").arg(QString::fromStdString(uas.deviceIdentifier())).arg(DTG::toStringMSec(timeStamp.toMSecsSinceEpoch(), DTG::DisplayFormat::Short));
const QString exploName = QStringLiteral("%1_%2").arg(QString::fromStdString(uas.deviceIdentifier)).arg(DTG::toStringMSec(timeStamp.toMSecsSinceEpoch(), DTG::DisplayFormat::Short));
Core::GeoPosition geoPos(jsobj.value(QStringLiteral("location_x")).toDouble(),
jsobj.value(QStringLiteral("location_y")).toDouble(), 0.0);
AreaEffectSimulation::ExplosionClusterSingleEffectOnlyRequest ecReq;
ecReq.id(0);
ecReq.effectStart(timeStamp.toMSecsSinceEpoch());
ecReq.name(exploName.toStdString());
ecReq.element(ecReq.name());
ecReq.impactPosition(geoPos);
ecReq.chargeTypeId(chargeTypeId);
ecReq.partyId(participant.partyId());
ecReq.id = 0;
ecReq.effectStart = timeStamp.toMSecsSinceEpoch();
ecReq.name = exploName.toStdString();
ecReq.element = ecReq.name;
ecReq.impactPosition = geoPos;
ecReq.chargeTypeId = chargeTypeId;
ecReq.partyId = participant.partyId;
// ecReq.externalId(0); // not used!!
return ecReq;
@@ -180,14 +180,14 @@ void CesMissionPlanObject::sendNextMissionAction()
//DEBUG_LOG(m_logger)<<" -- ########## ###### SEND NEXT ACTION ###### #############";
// set mission plan completed! or aborted
if (isMissionFulfilled(m_missionPlan) || m_missionPlan.aborted())
if (isMissionFulfilled(m_missionPlan) || m_missionPlan.aborted)
{
DEBUG_LOG(m_logger)<<" -- [sendNextMissionAction] No action mission Completed for plan id: "<<m_missionPlan.id();
DEBUG_LOG(m_logger)<<" -- [sendNextMissionAction] No action mission Completed for plan id: "<<m_missionPlan.id;
deleteMissionPlanObject();
return;
}
switch (action.actionType().underlying()) {
switch (action.actionType) {
case ParticipantManagement::MissionActionType::MoveTo:
{
emit ready2SendNextAction(action);
@@ -195,7 +195,7 @@ void CesMissionPlanObject::sendNextMissionAction()
}
case ParticipantManagement::MissionActionType::Loiter:
{
m_loiterTimer->start(action.duration() * 1000); // duration is in sec -> in msec: x * 1000
m_loiterTimer->start(action.duration * 1000); // duration is in sec -> in msec: x * 1000
return;
}
case ParticipantManagement::MissionActionType::Attack:
@@ -215,14 +215,14 @@ void CesMissionPlanObject::setMissionPlan(const ParticipantManagement::MissionPl
///3- send Next Mission Action
m_missionPlan = plan;
if (plan.missionStart() > m_ddsHandler->currentPartitionTime())
if (plan.missionStart > m_ddsHandler->currentPartitionTime())
{
//DEBUG_LOG(m_logger)<<" -- [setMissionPlan] restart Timer for plan.id: "<<plan.id();
m_missionStartimer->start(m_missionPlan.missionStart() - m_ddsHandler->currentPartitionTime());
m_missionStartimer->start(m_missionPlan.missionStart - m_ddsHandler->currentPartitionTime());
return;
}
if (isMissionFulfilled(plan) || plan.aborted())
if (isMissionFulfilled(plan) || plan.aborted)
{
DEBUG_LOG(m_logger) << "setMissionPlan deleteMissionPlanObject";
deleteMissionPlanObject();
@@ -240,21 +240,21 @@ ParticipantManagement::MissionPlan &CesMissionPlanObject::missionPlan()
const ParticipantManagement::MissionAction CesMissionPlanObject::getNextAction()
{
DEBUG_LOG(m_logger)<<" -- [getNextAction]: planId: "<<m_missionPlan.id()<<" itemSize: "<<m_missionPlan.items().size();
std::vector<ParticipantManagement::MissionItem> items = m_missionPlan.items();
DEBUG_LOG(m_logger)<<" -- [getNextAction]: planId: "<<m_missionPlan.id<<" itemSize: "<<m_missionPlan.items.size();
std::vector<ParticipantManagement::MissionItem> items = m_missionPlan.items;
// std::sort(items.begin(), items.end(), [](const ParticipantManagement::MissionItem &itemA, const ParticipantManagement::MissionItem &itemB){ return (itemA.itemNumber() < itemB.itemNumber()); });
for (auto &item : m_missionPlan.items())
for (auto &item : m_missionPlan.items)
{
for (auto &msa : item.actions())
for (auto &msa : item.actions)
{
if (msa.fulfilled() > 0)
if (msa.fulfilled > 0)
{
continue;
}
DEBUG_LOG(m_logger)<<" -- [getNextActopm]mission with planId: " << m_missionPlan.id() << " // action_number " << msa.actionNumber()
<< " // action_type " << msa.actionType();
DEBUG_LOG(m_logger)<<" -- [getNextActopm]mission with planId: " << m_missionPlan.id << " // action_number " << msa.actionNumber
<< " // action_type " << msa.actionType;
return msa;
}
@@ -267,14 +267,14 @@ void CesMissionPlanObject::setMissionCompleted()
{
const ParticipantManagement::MissionPlan &msp = m_missionPlan;
ParticipantManagement::ModifyMissionPlanRequest req;
req.missionStart(msp.missionStart());
req.jumpToStart(msp.jumpToStart());
req.id(msp.id());
req.items(msp.items());
req.name(msp.name());
req.participantId(msp.participantId());
req.properties(msp.properties());
req.repeat(msp.repeat());
req.missionStart = msp.missionStart;
req.jumpToStart = msp.jumpToStart;
req.id = msp.id;
req.items = msp.items;
req.name = msp.name;
req.participantId = msp.participantId;
req.properties = msp.properties;
req.repeat = msp.repeat;
if (!m_ddsHandler->ftcPpm()->modifyMissionPlanRequest(req))
ERROR_LOG(m_logger)<<" -- couldn't modify mission plan ";
@@ -292,16 +292,16 @@ void CesMissionPlanObject::setMissionCompleted()
*/
void CesMissionPlanObject::abortMission()
{
DEBUG_LOG(m_logger)<<" -- [abortMission] abord mission with planId: "<<m_missionPlan.id()<<" // uas id: "<<m_missionPlan.participantId();
DEBUG_LOG(m_logger)<<" -- [abortMission] abord mission with planId: "<<m_missionPlan.id<<" // uas id: "<<m_missionPlan.participantId;
ParticipantManagement::MissionAction msa = getNextAction();
msa.actionNumber(-1);
msa.itemNumber(-1);
msa.actionNumber = -1;
msa.itemNumber = -1;
setMissionActionFulfilled(msa);
}
void CesMissionPlanObject::deleteMissionPlanObject()
{
DEBUG_LOG(m_logger)<<" -- [DELETE OBJECT] plan fullfiled: delete Object planId: "<<m_missionPlan.id();
DEBUG_LOG(m_logger)<<" -- [DELETE OBJECT] plan fullfiled: delete Object planId: "<<m_missionPlan.id;
deleteLater();
}
@@ -23,7 +23,7 @@ namespace core
{
inline uint qHash(ProjectDataManagement::PdmEventType et)
{
return ::qHash(et.underlying());
return ::qHash(et);
}
}
}
@@ -171,45 +171,45 @@ void HandlerNBC::onAesItemViewChanged(const AreaEffectSimulation::AesItemView &d
double lowerOffset = 0;
bool offsetIsSet = false;
TRACE_LOG(m_logger) << "onAesItemViewChanged"
<< " aesItemId=" << data.aesItemId();
<< " aesItemId=" << data.aesItemId;
AreaEffectSimulation::BCContamination bCContamination = m_ddsHandler->dtcAes()->bCContamination(data.aesItemId());
AreaEffectSimulation::BCContamination bCContamination = m_ddsHandler->dtcAes()->bCContamination(data.aesItemId);
const int aesItemId = data.aesItemId();
const AreaEffectSimulation::AesEffectState &effectState = data.effectStateId();
if ((data.aesTypeId().underlying() != AreaEffectSimulation::AesType::AtDangerArea)
&& (data.aesTypeId().underlying() != AreaEffectSimulation::AesType::AtBCContamination)
&& (data.aesTypeId().underlying() != AreaEffectSimulation::AesType::AtNContamination))
const int aesItemId = data.aesItemId;
const AreaEffectSimulation::AesEffectState &effectState = data.effectStateId;
if ((data.aesTypeId != AreaEffectSimulation::AesType::AtDangerArea)
&& (data.aesTypeId != AreaEffectSimulation::AesType::AtBCContamination)
&& (data.aesTypeId != AreaEffectSimulation::AesType::AtNContamination))
return;
if (data.aesTypeId().underlying() == AreaEffectSimulation::AesType::AtBCContamination)
if (data.aesTypeId == AreaEffectSimulation::AesType::AtBCContamination)
{
const AreaEffectSimulation::BCContamination &bc = m_ddsHandler->dtcAes()->bCContamination(data.aesItemId());
if (!bc.isCentral())
const AreaEffectSimulation::BCContamination &bc = m_ddsHandler->dtcAes()->bCContamination(data.aesItemId);
if (!bc.isCentral)
{
DEBUG_LOG(m_logger) << "!Central BCContamination id: " << aesItemId;
return;
}
offsetIsSet = true;
upperOffset = bCContamination.upperOffset();
lowerOffset = bCContamination.lowerOffset();
upperOffset = bCContamination.upperOffset;
lowerOffset = bCContamination.lowerOffset;
}
else if (data.aesTypeId().underlying() == AreaEffectSimulation::AesType::AtDangerArea)
else if (data.aesTypeId == AreaEffectSimulation::AesType::AtDangerArea)
{
const AreaEffectSimulation::DangerArea &da = m_ddsHandler->dtcAes()->dangerArea(data.aesItemId());
if (!da.isCentral())
const AreaEffectSimulation::DangerArea &da = m_ddsHandler->dtcAes()->dangerArea(data.aesItemId);
if (!da.isCentral)
{
DEBUG_LOG(m_logger) << "!Central DangerArea id: " << aesItemId;
return;
}
}
else if (data.aesTypeId().underlying() == AreaEffectSimulation::AesType::AtNContamination)
else if (data.aesTypeId == AreaEffectSimulation::AesType::AtNContamination)
{
const AreaEffectSimulation::NContamination &nc = m_ddsHandler->dtcAes()->nContamination(data.aesItemId());
if (!nc.isCentral())
const AreaEffectSimulation::NContamination &nc = m_ddsHandler->dtcAes()->nContamination(data.aesItemId);
if (!nc.isCentral)
{
DEBUG_LOG(m_logger) << "!Central NContamination id: " << aesItemId;
return;
@@ -218,26 +218,26 @@ void HandlerNBC::onAesItemViewChanged(const AreaEffectSimulation::AesItemView &d
TRACE_LOG(m_logger) << "Got AesItemView id: " << aesItemId
<< ", type: " << data.aesTypeId()
<< ", effectState: " << data.effectStateId()
<< ", type: " << data.aesTypeId
<< ", effectState: " << data.effectStateId
<< ", modType: " << modType;
const double impactRadius = m_ddsHandler->chargeTypeRadius(data.chargeStruct());
const double impactRadius = m_ddsHandler->chargeTypeRadius(data.chargeStruct);
DEBUG_LOG(m_logger) << "impactRadius=" << impactRadius;
switch (effectState.underlying())
switch (effectState)
{
case AreaEffectSimulation::AesEffectState::EsPrepared:
{
const auto &aesItemViewUtm = CentralEffectSimulation::AesItemViewUtm::create(data,
m_aesItemViews[data.aesItemId()],
m_aesItemViews[data.aesItemId],
impactRadius,
isSupplyTruck,
hazardDistance,
offsetIsSet,
upperOffset,
lowerOffset);
m_aesItemViews.insert(data.aesItemId(), aesItemViewUtm);
m_aesItemViews.insert(data.aesItemId, aesItemViewUtm);
}
break;
case AreaEffectSimulation::AesEffectState::EsActivated:
@@ -245,23 +245,23 @@ void HandlerNBC::onAesItemViewChanged(const AreaEffectSimulation::AesItemView &d
CentralEffectSimulation::AesItemViewUtm aesItemViewUtm =
CentralEffectSimulation::AesItemViewUtm::create(data,
m_aesItemViews[data.aesItemId()],
m_aesItemViews[data.aesItemId],
impactRadius,
isSupplyTruck,
hazardDistance,
offsetIsSet,
upperOffset,
lowerOffset);
const Core::GeoPosition2D &pointGeo = bCContamination.impactPosition();
const Core::GeoPosition2D &pointGeo = bCContamination.impactPosition;
int zone = aesItemViewUtm.zone;
//aesItemViewUtm.center = CentralEffectSimulation::geographic2Utm(pointGeo, &zone);
auto utm = LtsCoordTrans::UtmCoordinate::fromGeographic(pointGeo.lon(), pointGeo.lat(), zone);
auto utm = LtsCoordTrans::UtmCoordinate::fromGeographic(pointGeo.lon, pointGeo.lat, zone);
QPointF impactPositionUtm = QPointF(utm.x, utm.y);
aesItemViewUtm.center = impactPositionUtm;
switch (data.aesTypeId().underlying())
switch (data.aesTypeId)
{
case AreaEffectSimulation::AesType::AtBCContamination:
case AreaEffectSimulation::AesType::AtNContamination:
@@ -270,15 +270,15 @@ void HandlerNBC::onAesItemViewChanged(const AreaEffectSimulation::AesItemView &d
// form-Check
// if new field for this participant send sendCesHitRequest
calculateBcContamination(aesItemViewUtm);
m_aesItemViews.insert(data.aesItemId(), aesItemViewUtm);
m_aesItemViews.insert(data.aesItemId, aesItemViewUtm);
// DEBUG_LOG(m_logger) << "insert AtBCContamination oder AtNContamination AesItemView id: " << aesItemId
// << ", type: " << data.aesTypeId();
break;
case AreaEffectSimulation::AesType::AtDangerArea:
calculateDangerArea(aesItemViewUtm);
m_aesItemViews.insert(data.aesItemId(), aesItemViewUtm);
m_aesItemViews.insert(data.aesItemId, aesItemViewUtm);
DEBUG_LOG(m_logger) << "insert AtDangerArea AesItemView id: " << aesItemId
<< ", type: " << data.aesTypeId();
<< ", type: " << data.aesTypeId;
break;
default:
break;
@@ -301,9 +301,9 @@ void HandlerNBC::onAesItemViewChanged(const AreaEffectSimulation::AesItemView &d
void HandlerNBC::onBCContaminationChanged(const AreaEffectSimulation::BCContamination &data, DataModification modType)
{
if (!data.isCentral())
if (!data.isCentral)
{
aesItemViewRemoved(data.id());
aesItemViewRemoved(data.id);
return;
}
@@ -313,15 +313,15 @@ void HandlerNBC::onBCContaminationChanged(const AreaEffectSimulation::BCContamin
break;
case DataModification::eAdded:
case DataModification::eModified:
switch (data.effectStateId().underlying())
switch (data.effectStateId)
{
case AreaEffectSimulation::AesEffectState::EsActivated:
{
CentralEffectSimulation::AesItemViewUtm &ref = m_aesItemViews[data.id()];
if (m_ddsHandler->volatilityTypeId(data.chargeStruct()) == ProjectDataManagement::VolatilityType::Resident)
CentralEffectSimulation::AesItemViewUtm &ref = m_aesItemViews[data.id];
if (m_ddsHandler->volatilityTypeId(data.chargeStruct) == ProjectDataManagement::VolatilityType::Resident)
{
ref.radials = {data.impactRadius()};
ref.center = CentralEffectSimulation::geographic2Utm(data.impactPosition(), &ref.zone);
ref.radials = {data.impactRadius};
ref.center = CentralEffectSimulation::geographic2Utm(data.impactPosition, &ref.zone);
}
else
ref.radials.clear();
@@ -337,60 +337,60 @@ void HandlerNBC::onNContaminationChanged(const AreaEffectSimulation::NContaminat
{
DEBUG_LOG(m_logger) << "onNContaminationChanged"
<< " id=" << data.id();
<< " id=" << data.id;
switch (modType)
{
case DataModification::eRemoved:
break;
case DataModification::eAdded:
case DataModification::eModified:
switch (data.effectStateId().underlying())
switch (data.effectStateId)
{
case AreaEffectSimulation::AesEffectState::EsActivated:
{
CentralEffectSimulation::AesItemViewUtm &ref = m_aesItemViews[data.id()];
ref.radials = {data.impactRadius(),
data.borderLengthInner(),
data.borderLengthInner() + data.borderLengthOuter()
CentralEffectSimulation::AesItemViewUtm &ref = m_aesItemViews[data.id];
ref.radials = {data.impactRadius,
data.borderLengthInner,
data.borderLengthInner + data.borderLengthOuter
};
ref.center = CentralEffectSimulation::geographic2Utm(data.impactPosition(), &ref.zone);
ref.center = CentralEffectSimulation::geographic2Utm(data.impactPosition, &ref.zone);
const QHash<int, CentralEffectSimulation::HandlerParticipant::CesParticipantData> participantsMap = m_handlerParticipant->positions();
for (const CentralEffectSimulation::HandlerParticipant::CesParticipantData &participantPos : participantsMap)
{
if (m_handlerParticipant->isOutdated(participantPos))
continue;
DEBUG_LOG(m_logger) << "onNContaminationChanged participantId=" << participantPos.participantId()
DEBUG_LOG(m_logger) << "onNContaminationChanged participantId=" << participantPos.participantId
<< " insideBuilding=" << participantPos.insideBuilding()
<< " buildingId=" << participantPos.buildingId();
<< " buildingId=" << participantPos.buildingId;
const QPointF posUtm = CentralEffectSimulation::geographic2Utm(participantPos.pos(), &ref.zone);
const bool isInCircle = inCircle(ref.center, data.impactRadius(), posUtm);
const QPointF posUtm = CentralEffectSimulation::geographic2Utm(participantPos.pos, &ref.zone);
const bool isInCircle = inCircle(ref.center, data.impactRadius, posUtm);
const EffectType effectType = CES_NBC::EffectType::NContaminationDetonation;
const int ctasEffectType = static_cast<int>(effectType) & 0xffff;
DEBUG_LOG(m_logger) << "onNContaminationChanged isInCircle=" << isInCircle
<< " aesItemId=" << data.id();
<< " aesItemId=" << data.id;
if ( isInCircle)
{
QHash<int, bool> aesIds = m_participantAes.value(participantPos.participantId());
aesIds.insert(data.id(), true);
QHash<int, bool> aesIds = m_participantAes.value(participantPos.participantId);
aesIds.insert(data.id, true);
m_participantAes.insert( participantPos.participantId(), aesIds);
m_participantAes.insert( participantPos.participantId, aesIds);
QHash<int, QSet<EffectType>> effectTypeStatesFromAesItem = m_effectTypeStates.value(data.id());
QHash<int, QSet<EffectType>> effectTypeStatesFromAesItem = m_effectTypeStates.value(data.id);
QSet<EffectType> effectSet = effectTypeStatesFromAesItem.value(participantPos.participantId());
QSet<EffectType> effectSet = effectTypeStatesFromAesItem.value(participantPos.participantId);
effectSet.insert(EffectType::NContaminationDetonation);
effectTypeStatesFromAesItem.insert(participantPos.participantId(), effectSet);
effectTypeStatesFromAesItem.insert(participantPos.participantId, effectSet);
m_effectTypeStates.insert(data.id(), effectTypeStatesFromAesItem);
m_effectTypeStates.insert(data.id, effectTypeStatesFromAesItem);
DEBUG_LOG(m_logger) << "m_participantAes.insert participantId=" << participantPos.participantId()
<< " aesId=" << data.id();
DEBUG_LOG(m_logger) << "m_participantAes.insert participantId=" << participantPos.participantId
<< " aesId=" << data.id;
sendCesHitRequest(ref,
participantPos,
//effectTime >= 0 ? effectTime : participantPosition.sampleTime(),
@@ -416,10 +416,10 @@ void HandlerNBC::calculateBcContamination(const CentralEffectSimulation::AesItem
{
if (m_handlerParticipant->isOutdated(participantPos))
continue;
DEBUG_LOG(m_logger) << "participantId=" << participantPos.participantId()
DEBUG_LOG(m_logger) << "participantId=" << participantPos.participantId
<< " insideBuilding=" << participantPos.insideBuilding()
<< " buildingId=" << participantPos.buildingId()
<< " roomId=" << participantPos.roomId();
<< " buildingId=" << participantPos.buildingId
<< " roomId=" << participantPos.roomId;
inFormCheck(itemView, participantPos);
}
// for
@@ -442,61 +442,61 @@ void HandlerNBC::deleteDangerArea(const int aesItemId)
for (const CentralEffectSimulation::HandlerParticipant::CesParticipantData &participantPos : partPosMap)
{
sendParticipantEvent(aesItemId, participantPos, ProjectDataManagement::PdmEventType::EventType_LeaveDangerArea);
DEBUG_LOG(m_logger) << "Participant inside id=" << participantPos.participantId();
DEBUG_LOG(m_logger) << "Participant inside id=" << participantPos.participantId;
}// for all Participants
} // deleteDangerArea
void HandlerNBC::onNewOutdoorParticipantPosition(const CentralEffectSimulation::HandlerParticipant::CesParticipantData &participantData)
{
bool leave = false;
DEBUG_LOG(m_logger) << "++++++++ onNewOutdoorParticipantPosition participantId=" << participantData.participantId()
<< " buildingId=" << participantData.buildingId()
<< " roomId=" << participantData.roomId()
<< " reportingSource=" << participantData.reportingSource()
DEBUG_LOG(m_logger) << "++++++++ onNewOutdoorParticipantPosition participantId=" << participantData.participantId
<< " buildingId=" << participantData.buildingId
<< " roomId=" << participantData.roomId
<< " reportingSource=" << participantData.reportingSource
<< " m_aesItemViews.size=" << m_aesItemViews.size();
if (m_handlerParticipant->isOutdated(participantData))
return;
if (m_handlerParticipant->getEquipmentNumber(participantData.participantId()) == 0)
if (m_handlerParticipant->getEquipmentNumber(participantData.participantId) == 0)
{
DEBUG_LOG(m_logger) << "Not handle position: participant has no equipment number";
return;
}
if (m_lastRoomId.value(participantData.participantId()) > 0)
if (m_lastRoomId.value(participantData.participantId) > 0)
{
DEBUG_LOG(m_logger) << "Leave Building m_isInContaminatedRoom.contains participantId=" << participantData.participantId()
DEBUG_LOG(m_logger) << "Leave Building m_isInContaminatedRoom.contains participantId=" << participantData.participantId
<< " m_isInContaminatedRoom.\nremove!!!";
AreaEffectSimulation::AesItemView aesItemView;
bool aesIsAvailable = m_ddsHandler->dtcAes()->aesItemViewFromEntityId(m_isInContaminatedRoom.value(participantData.participantId()),AreaEffectSimulation::AesType::AtUnknown, aesItemView );
bool aesIsAvailable = m_ddsHandler->dtcAes()->aesItemViewFromEntityId(m_isInContaminatedRoom.value(participantData.participantId),AreaEffectSimulation::AesType::AtUnknown, aesItemView );
if (aesIsAvailable
&& (aesItemView.effectStateId() == AreaEffectSimulation::AesEffectState::EsActivated))
&& (aesItemView.effectStateId == AreaEffectSimulation::AesEffectState::EsActivated))
{
DEBUG_LOG(m_logger) << "Feld ist nicht mehr da. id=" << aesItemView.aesItemId();
m_isInContaminatedRoom.remove(participantData.participantId());
DEBUG_LOG(m_logger) << "Feld ist nicht mehr da. id=" << aesItemView.aesItemId;
m_isInContaminatedRoom.remove(participantData.participantId);
}
else
{
DEBUG_LOG(m_logger) << "Feld ist nicht mehr da. id=" << aesItemView.aesItemId();
sendLeaveEvent(aesItemView.aesItemId(),participantData );
DEBUG_LOG(m_logger) << "Feld ist nicht mehr da. id=" << aesItemView.aesItemId;
sendLeaveEvent(aesItemView.aesItemId,participantData );
}
leave = true;
}
else
{
DEBUG_LOG(m_logger) << "m_lastRoomId.contains(" << m_lastRoomId.contains(participantData.participantId())
<< " roomId=" << m_lastRoomId.value(participantData.participantId());
DEBUG_LOG(m_logger) << "m_lastRoomId.contains(" << m_lastRoomId.contains(participantData.participantId)
<< " roomId=" << m_lastRoomId.value(participantData.participantId);
}
m_lastRoomId.insert(participantData.participantId(), 0);
m_lastRoomId.insert(participantData.participantId, 0);
DEBUG_LOG(m_logger) << "HandlerParticipantArea::calculateAesParticipant paricipantId: " << participantData.participantId()
DEBUG_LOG(m_logger) << "HandlerParticipantArea::calculateAesParticipant paricipantId: " << participantData.participantId
<< " m_aesItemViews.size()=" << m_aesItemViews.size();
for (const CentralEffectSimulation::AesItemViewUtm &itemView : std::as_const(m_aesItemViews))
{
@@ -505,13 +505,13 @@ void HandlerNBC::onNewOutdoorParticipantPosition(const CentralEffectSimulation::
if (leave)
{
QHash<int, QSet<EffectType>> effectTypeHash = m_effectTypeStates.value(itemView.aesItemId);
if ( effectTypeHash.contains(participantData.participantId()))
if ( effectTypeHash.contains(participantData.participantId))
{
effectTypeHash.remove(participantData.participantId());
effectTypeHash.remove(participantData.participantId);
}
m_effectTypeStates.insert(itemView.aesItemId, effectTypeHash);
}
switch (itemView.aesTypeId.underlying())
switch (itemView.aesTypeId)
{
case AreaEffectSimulation::AesType::AtBCContamination:
case AreaEffectSimulation::AesType::AtNContamination:
@@ -578,14 +578,14 @@ bool HandlerNBC::inBoundingBoxCheck(const CentralEffectSimulation::AesItemViewUt
const QRectF boundingBoxImpact(itemView.boundingBoxBottomLeft,
itemView.boundingBoxTopRight);
const QPointF participantPosUtmPoint = CentralEffectSimulation::geographic2Utm(participantData.pos(), itemView.zone);
const QPointF participantPosUtmPoint = CentralEffectSimulation::geographic2Utm(participantData.pos, itemView.zone);
if (boundingBoxImpact.contains(participantPosUtmPoint))
{
DEBUG_LOG(m_logger) << "inBoundingBoxCheck Paricipant " << participantData.participantId()
DEBUG_LOG(m_logger) << "inBoundingBoxCheck Paricipant " << participantData.participantId
<< " inside AesItemView:" << itemView.aesItemId;
return true;
}
TRACE_LOG(m_logger) << "inBoundingBoxCheck Paricipant " << participantData.participantId()
TRACE_LOG(m_logger) << "inBoundingBoxCheck Paricipant " << participantData.participantId
<< " outside AesItemView:" << itemView.aesItemId;
return false;
}
@@ -597,14 +597,14 @@ void HandlerNBC::sendEnterEvent(const int aesItemId, const AreaEffectSimulation:
m_ddsHandler->dtcAes()->aesItemViewFromEntityId(aesItemId,AreaEffectSimulation::AesType::AtUnknown, aesItemView );
DEBUG_LOG(m_logger) << "sendEnterEvent, paricipantId: " << participantData.participantId()
DEBUG_LOG(m_logger) << "sendEnterEvent, paricipantId: " << participantData.participantId
<< ", aesItemId: " << aesItemId
<< ", aesType=" << aesTypeId
<< ", isIndoor=" << isIndoor;
QHash<int, bool> aesIds = m_participantAes.value(participantData.participantId());
QHash<int, bool> aesIds = m_participantAes.value(participantData.participantId);
aesIds.insert(aesItemId, true);
m_participantAes.insert(participantData.participantId(), aesIds);
m_participantAes.insert(participantData.participantId, aesIds);
int zone = -1;
if ( m_aesItemViews.contains(aesItemId))
@@ -614,8 +614,8 @@ void HandlerNBC::sendEnterEvent(const int aesItemId, const AreaEffectSimulation:
ERROR_LOG(m_logger) << "No m_aesItemViews.contains aesItemId=" << aesItemId;
}
const QPointF participantPosUtmPoint = CentralEffectSimulation::geographic2Utm(participantData.pos(), zone);
switch (aesTypeId.underlying())
const QPointF participantPosUtmPoint = CentralEffectSimulation::geographic2Utm(participantData.pos, zone);
switch (aesTypeId)
{
case AreaEffectSimulation::AesType::AtBCContamination:
{
@@ -632,7 +632,7 @@ void HandlerNBC::sendEnterEvent(const int aesItemId, const AreaEffectSimulation:
break;
case AreaEffectSimulation::AesType::AtNContamination:
sendParticipantEvent(aesItemId, participantData, ProjectDataManagement::PdmEventType::EventType_EnterNuclear);
sendEffectTypeEvent(aesItemId, participantData, effectTypeForNContaminationArea(m_aesItemViews.value(aesItemId), participantPosUtmPoint, participantData.sampleTime(), participantData.insideBuilding()));
sendEffectTypeEvent(aesItemId, participantData, effectTypeForNContaminationArea(m_aesItemViews.value(aesItemId), participantPosUtmPoint, participantData.sampleTime, participantData.insideBuilding()));
break;
case AreaEffectSimulation::AesType::AtExplosionArea:
case AreaEffectSimulation::AesType::AtFunctionalArea:
@@ -651,11 +651,11 @@ void HandlerNBC::sendLeaveEvent(const int aesItemId, const CentralEffectSimulati
DEBUG_LOG(m_logger) << "sendLeaveEvent"
<< " aesId=" << aesItemId
<< " participantId=" << participantData.participantId()
<< " aesTypeId=" << aesItemView.aesTypeId();
<< " participantId=" << participantData.participantId
<< " aesTypeId=" << aesItemView.aesTypeId;
switch (aesItemView.aesTypeId().underlying())
switch (aesItemView.aesTypeId)
{
case AreaEffectSimulation::AesType::AtBCContamination:
sendEffectTypeEvent(aesItemId, participantData, EffectType::BCContaminationLeave);
@@ -687,9 +687,9 @@ bool HandlerNBC::inFormCheck(const CentralEffectSimulation::AesItemViewUtm &item
const QRectF boundingBoxImpact(itemView.boundingBoxBottomLeft,
itemView.boundingBoxTopRight);
const QPointF participantPosUtmPoint = CentralEffectSimulation::geographic2Utm(participantData.pos(), itemView.zone);
const QString participantPosMgrs = CentralEffectSimulation::geographic2mgrs(participantData.pos(), itemView.zone);
TRACE_LOG(m_logger) << "inFormCheck start, paricipantId: " << participantData.participantId()
const QPointF participantPosUtmPoint = CentralEffectSimulation::geographic2Utm(participantData.pos, itemView.zone);
const QString participantPosMgrs = CentralEffectSimulation::geographic2mgrs(participantData.pos, itemView.zone);
TRACE_LOG(m_logger) << "inFormCheck start, paricipantId: " << participantData.participantId
<< ", aesItemId: " << itemView.aesItemId
<< ", aesTypeId: " << itemView.aesTypeId
<< ", form.size: " << itemView.form.size()
@@ -699,30 +699,30 @@ bool HandlerNBC::inFormCheck(const CentralEffectSimulation::AesItemViewUtm &item
if (boundingBoxImpact.contains(participantPosUtmPoint) &&
itemView.form.containsPoint(participantPosUtmPoint, Qt::FillRule::OddEvenFill))
{
DEBUG_LOG(m_logger) << "Participant id=" << participantData.participantId()
DEBUG_LOG(m_logger) << "Participant id=" << participantData.participantId
<< " inside Area"
<< " inside Building:" << participantData.insideBuilding()
<< " roomId=" << participantData.roomId();
if ( participantData.roomId() > 0 )
<< " roomId=" << participantData.roomId;
if ( participantData.roomId > 0 )
{
InfrastructureManagement::StructureElement structureElement;
bool roomFound = m_ddsHandler->dtcIsm()->getStructureElementById(participantData.roomId(), structureElement);
bool roomFound = m_ddsHandler->dtcIsm()->getStructureElementById(participantData.roomId, structureElement);
DEBUG_LOG (m_logger) << "Participant id=" << participantData.participantId()
<< " pos.z=" << participantData.pos().z()
DEBUG_LOG (m_logger) << "Participant id=" << participantData.participantId
<< " pos.z=" << participantData.pos.z
<< " upperOffset =" << itemView.upperOffset
<< " lowerOffset=" << itemView.lowerOffset
<< " roomFound=" << roomFound
<< " offsetZ=" << structureElement.relPosition().offsetZ();
<< " offsetZ=" << structureElement.relPosition.offsetZ;
if ( (itemView.aesTypeId.underlying() != AreaEffectSimulation::AesType::AtNContamination)
if ( (itemView.aesTypeId != AreaEffectSimulation::AesType::AtNContamination)
&& itemView.offsetIsSet
&& ( ( structureElement.relPosition().offsetZ() + 1.5 > itemView.upperOffset )
|| ( structureElement.relPosition().offsetZ() + 1.5 < itemView.lowerOffset)))
&& ( ( structureElement.relPosition.offsetZ + 1.5 > itemView.upperOffset )
|| ( structureElement.relPosition.offsetZ + 1.5 < itemView.lowerOffset)))
{
DEBUG_LOG (m_logger) << "Participant id=" << participantData.participantId()
<< " pos.z=" << participantData.pos().z()
DEBUG_LOG (m_logger) << "Participant id=" << participantData.participantId
<< " pos.z=" << participantData.pos.z
<< " not between upperOffset =" << itemView.upperOffset
<< " and lowerOffset=" << itemView.lowerOffset
<< "\nreturn false";
@@ -763,15 +763,15 @@ void HandlerNBC::sendCesHitRequest(const CentralEffectSimulation::AesItemViewUtm
DEBUG_LOG(m_logger) << "sendCesHitRequest Settings::calculateCentralAes="
<< " insideWlsArea=" << std::boolalpha << participantData.insideWlsArea()
<< " isSmartChargeType=" << std::boolalpha << m_ddsHandler->isSmartChargeType(itemView.chargeStruct)
<< " participantId=" << participantData.participantId();
<< " participantId=" << participantData.participantId;
const int equipNo = m_ddsHandler->participantId2EquipNo(participantData.participantId());
DEBUG_LOG(m_logger) << " ftc sendCESHit to Participant participantId = " << participantData.participantId()
const int equipNo = m_ddsHandler->participantId2EquipNo(participantData.participantId);
DEBUG_LOG(m_logger) << " ftc sendCESHit to Participant participantId = " << participantData.participantId
<< " equipNo = " << equipNo
<< " aesItemId =" << itemView.aesItemId;
// participantPosition.participantPosition == 0 -> send to all
if (participantData.participantId() != 0 && equipNo <= 0)
if (participantData.participantId != 0 && equipNo <= 0)
{
DEBUG_LOG(m_logger) << "participantPosition.participantId != 0 && equipNo <= 0" ;
return;
@@ -779,17 +779,17 @@ void HandlerNBC::sendCesHitRequest(const CentralEffectSimulation::AesItemViewUtm
int32_t originatorParticipantId = m_aesItemId2partIdMap.value(itemView.aesItemId, 0);
const TrainingAreaBase::TabPosition pos(participantData.pos(),
const TrainingAreaBase::TabPosition pos(participantData.pos,
Core::PositionReportingSource::Gps, // irrelevant
participantData.buildingId(),
participantData.roomId());
participantData.buildingId,
participantData.roomId);
const int originatorEquipNo = m_ddsHandler->participantId2EquipNo(originatorParticipantId);
const ProjectDataManagement::PdmEventType eventType = ProjectDataManagement::PdmEventType::EventType_Unknown;
TrainingAreaBase::SendCesHitRequest requestTab(
equipNo, // equipmentNumber
participantData.participantId(), // participantId
itemView.chargeStruct.chargeTypeId(), // chargeTypeId
participantData.participantId, // participantId
itemView.chargeStruct.chargeTypeId, // chargeTypeId
itemView.aesItemId, // aesId
originatorEquipNo, // originatorEquipmentNumber
remaining, // remainEffectPercent ( no protection outside Building )
@@ -799,8 +799,8 @@ void HandlerNBC::sendCesHitRequest(const CentralEffectSimulation::AesItemViewUtm
itemView.partyId, // originPartyId
mineFieldBitIndex
);
DEBUG_LOG(m_logger) << " participantId=" << participantData.participantId()
<< " chargeTypeId=" << itemView.chargeStruct.chargeTypeId();
DEBUG_LOG(m_logger) << " participantId=" << participantData.participantId
<< " chargeTypeId=" << itemView.chargeStruct.chargeTypeId;
m_sendCesHitRequestQueue.enqueue(requestTab);
@@ -826,23 +826,23 @@ void HandlerNBC::sendCesHitRequest(const int aesItemId,
int32_t legacyChargeTypeId = 0;
int32_t partyId = 0;
if ( aesItem.partyId.is_set())
if ( aesItem.partyId.has_value())
partyId = aesItem.partyId.get();
legacyChargeTypeId = m_ddsHandler->getLegacyIdFromChargeTypeId(aesItem.chargeStruct());
legacyChargeTypeId = m_ddsHandler->getLegacyIdFromChargeTypeId(aesItem.chargeStruct);
DEBUG_LOG(m_logger) << "sendCesHitRequest Settings::calculateCentralAes="
<< " insideWlsArea=" << std::boolalpha << participantData.insideWlsArea()
<< " isSmartChargeType=" << std::boolalpha << m_ddsHandler->isSmartChargeType(aesItem.chargeStruct())
<< " participantId=" << participantData.participantId()
<< " isSmartChargeType=" << std::boolalpha << m_ddsHandler->isSmartChargeType(aesItem.chargeStruct)
<< " participantId=" << participantData.participantId
<< " partyId=" << partyId
<< " effectType=" << static_cast<int>(effectType)
<< " remaining=" << remaining;
const int equipmentNumber = m_ddsHandler->participantId2EquipNo(participantData.participantId());
DEBUG_LOG(m_logger) << " ftc sendCESHit to Participant participantId = " << participantData.participantId()
const int equipmentNumber = m_ddsHandler->participantId2EquipNo(participantData.participantId);
DEBUG_LOG(m_logger) << " ftc sendCESHit to Participant participantId = " << participantData.participantId
<< " equipNo = " << equipmentNumber << " aesItemId =" << aesItemId;
// participantPosition.participantPosition == 0 -> send to all
if (participantData.participantId() != 0 && equipmentNumber <= 0)
if (participantData.participantId != 0 && equipmentNumber <= 0)
{
DEBUG_LOG(m_logger) << "participantPosition.participantId != 0 && equipNo <= 0" ;
return;
@@ -852,7 +852,7 @@ void HandlerNBC::sendCesHitRequest(const int aesItemId,
else if (effectType == CES_NBC::EffectType::NContaminationEnterArea1)
{
DEBUG_LOG(m_logger) << "NContaminationEnterArea1";
if (participantData.buildingId() > 0)
if (participantData.buildingId > 0)
{
DEBUG_LOG(m_logger) << "NContaminationEnterArea1 Protection by buildings"
<< " remaining vorher=" << remaining
@@ -879,15 +879,15 @@ void HandlerNBC::sendCesHitRequest(const int aesItemId,
int32_t originatorParticipantId = m_aesItemId2partIdMap.value(aesItemId, 0);
const int originatorEquipmentNumber = m_ddsHandler->participantId2EquipNo(originatorParticipantId);
const TrainingAreaBase::TabPosition pos(
participantData.pos(), Core::PositionReportingSource::Gps, participantData.buildingId(),
participantData.roomId()
participantData.pos, Core::PositionReportingSource::Gps, participantData.buildingId,
participantData.roomId
);
const ProjectDataManagement::PdmEventType eventType = ProjectDataManagement::PdmEventType::EventType_Unknown;
TrainingAreaBase::SendCesHitRequest requestTab(
equipmentNumber, participantData.participantId(), legacyChargeTypeId, aesItemId, originatorEquipmentNumber,
equipmentNumber, participantData.participantId, legacyChargeTypeId, aesItemId, originatorEquipmentNumber,
remaining, pos, effectTime, eventType, partyId, mineFieldBitIndex
);
DEBUG_LOG(m_logger) << " participantId=" << participantData.participantId() << " chargeTypeId=" << aesItem.chargeStruct().chargeTypeId()
DEBUG_LOG(m_logger) << " participantId=" << participantData.participantId << " chargeTypeId=" << aesItem.chargeStruct.chargeTypeId
<< " legacyChargeTypeId=" << legacyChargeTypeId;
m_sendCesHitRequestQueue.enqueue(requestTab);
@@ -902,7 +902,7 @@ void HandlerNBC::sendParticipantEvent(const int aesItemId,
const CentralEffectSimulation::HandlerParticipant::CesParticipantData &participantData,
const ProjectDataManagement::PdmEventType eventType)
{
ParticipantManagement::TypeClass typeClass = m_handlerParticipant->typeClassFromTypeId(participantData.participantTypeId());
ParticipantManagement::TypeClass typeClass = m_handlerParticipant->typeClassFromTypeId(participantData.participantTypeId);
// can happen since the positions are collected for all participants (no check if it is a SupportEntity or similar)
if (typeClass == ParticipantManagement::TypeClass::Unit ||
typeClass == ParticipantManagement::TypeClass::SupportUnit ||
@@ -911,21 +911,21 @@ void HandlerNBC::sendParticipantEvent(const int aesItemId,
typeClass == ParticipantManagement::TypeClass::Vessel ||
typeClass == ParticipantManagement::TypeClass::Unknown)
{
DEBUG_LOG(m_logger) << "Participant with id " << participantData.participantId()
DEBUG_LOG(m_logger) << "Participant with id " << participantData.participantId
<< " has invalid typeClass: " << typeClass
<< " eventType: " << eventType;
return;
}
if (!eventMustBeSend(aesItemId, participantData.participantId(), eventType))
if (!eventMustBeSend(aesItemId, participantData.participantId, eventType))
{
if ( m_isInContaminatedRoom.contains(participantData.participantId()) && participantData.roomId() == 0) // Tln leaves Building
if ( m_isInContaminatedRoom.contains(participantData.participantId) && participantData.roomId == 0) // Tln leaves Building
{
DEBUG_LOG(m_logger) << "Sending Event because Participant leaves Building";
}
else
{
DEBUG_LOG(m_logger) << "Not sending Event " << eventType << " for participant " << participantData.participantId()
DEBUG_LOG(m_logger) << "Not sending Event " << eventType << " for participant " << participantData.participantId
<< " and aes " << aesItemId << " - already sent";
return;
}
@@ -939,56 +939,56 @@ void HandlerNBC::sendParticipantEvent(const int aesItemId,
|| eventType == ProjectDataManagement::PdmEventType::EventType_HitMine
|| eventType == ProjectDataManagement::PdmEventType::EventType_HitN)
{
DEBUG_LOG(m_logger) << "send hit events only with central AES Simulation participant=" << participantData.participantId();
DEBUG_LOG(m_logger) << "send hit events only with central AES Simulation participant=" << participantData.participantId;
return;
}
int equipmentNumber = m_ddsHandler->participantId2EquipNo(participantData.participantId());
int equipmentNumber = m_ddsHandler->participantId2EquipNo(participantData.participantId);
if (equipmentNumber <= 0)
{
WARNING_LOG(m_logger) << "Not sending Event " << eventType << " for participant " << participantData.participantId()
WARNING_LOG(m_logger) << "Not sending Event " << eventType << " for participant " << participantData.participantId
<< " - participant has no equipment number";
return;
}
DEBUG_LOG(m_logger) << "sendParticipantEvent" << eventType
<< " participantId=" << participantData.participantId()
<< " participantId=" << participantData.participantId
<< " AesItemId=" << aesItemId;
CentralEffectSimulation::ParticipantEvent pe;
pe.id(m_ddsHandler->getParticipantEventId());
pe.id = m_ddsHandler->getParticipantEventId();
pe.eventTypeId(eventType.underlying());
pe.participantId(participantData.participantId());
pe.eventTime(participantData.sampleTime());
pe.aesItemId(aesItemId);
pe.partyId(participantData.partyId());
pe.eventTypeId = eventType;
pe.participantId = participantData.participantId;
pe.eventTime = participantData.sampleTime;
pe.aesItemId = aesItemId;
pe.partyId = participantData.partyId;
if (eventType == ProjectDataManagement::PdmEventType::EventType_BCContamination)
{
const AreaEffectSimulation::BCContamination &bc = m_ddsHandler->dtcAes()->bCContamination(aesItemId);
pe.aesName(bc.name());
pe.aesName = bc.name;
}
else if (eventType == ProjectDataManagement::PdmEventType::EventType_DangerArea)
{
const AreaEffectSimulation::DangerArea &da = m_ddsHandler->dtcAes()->dangerArea(aesItemId);
pe.aesName(da.name());
pe.aesName = da.name;
}
else if (eventType == ProjectDataManagement::PdmEventType::EventType_NContamination)
{
const AreaEffectSimulation::NContamination &nc = m_ddsHandler->dtcAes()->nContamination(aesItemId);
pe.aesName(nc.name());
pe.aesName = nc.name;
}
pe.equipmentNumber(equipmentNumber);
pe.vulnerability(participantData.vulnerabilityState.underlying());
pe.position(participantData.pos());
pe.equipmentNumber = equipmentNumber;
pe.vulnerability = static_cast<int>(participantData.vulnerabilityState);
pe.position = participantData.pos;
AreaEffectSimulation::AesItem aesItem;
m_ddsHandler->dtcAes()->aesItemFromId(aesItemId, aesItem);
// Criterion for friendly Fire:
if (aesItem.partyId() != -1
if (aesItem.partyId != -1
&& ((eventType == ProjectDataManagement::PdmEventType::EventType_EnterMineArea
|| eventType == ProjectDataManagement::PdmEventType::EventType_EnterNuclear
|| eventType == ProjectDataManagement::PdmEventType::EventType_HitB
@@ -997,17 +997,17 @@ void HandlerNBC::sendParticipantEvent(const int aesItemId,
|| eventType == ProjectDataManagement::PdmEventType::EventType_HitEffectSimulation
|| eventType == ProjectDataManagement::PdmEventType::EventType_HitMine
|| eventType == ProjectDataManagement::PdmEventType::EventType_HitN)
&& aesItem.partyId() == participantData.partyId()))
pe.friendlyFire(true);
&& aesItem.partyId == participantData.partyId))
pe.friendlyFire = true;
else
pe.friendlyFire(false);
pe.friendlyFire = false;
INFO_LOG(m_logger) << "sendParticipantEvent: " << pe
<< ", currentMSecsSinceEpoch = " << QDateTime::currentMSecsSinceEpoch()
<< ", time difference = " << QDateTime::currentMSecsSinceEpoch() - pe.eventTime();
<< ", time difference = " << QDateTime::currentMSecsSinceEpoch() - pe.eventTime;
m_ddsHandler->dtsCes()->publish(pe);
const auto id = pe.id();
const auto id = pe.id;
QTimer::singleShot(1 * 60 * 1000, this, [id, this]() { m_ddsHandler->dtsCes()->removeParticipantEventByKey(id); });
}
@@ -1019,18 +1019,18 @@ void HandlerNBC::sendEffectTypeEvent(const int aesItemId,
int mineFieldBitIndex = 0;
if (!effectTypeMustBeSend(aesItemId,
participantData.participantId(),
participantData.participantId,
effectType))
{
DEBUG_LOG(m_logger) << "Not sending EffectType event " << toString(effectType)
<< ", participant: " << participantData.participantId()
<< ", participant: " << participantData.participantId
<< ", aesItemId: " << aesItemId
<< " - already sent";
return;
}
const int ctasEffectType = static_cast<int>(effectType) & 0xffff;
DEBUG_LOG(m_logger) << "Sending EffectType event " << toString(effectType)
<< ", participant: " << participantData.participantId()
<< ", participant: " << participantData.participantId
<< ", aesItemId: " << aesItemId
<< ", ctasEffectType: " << ctasEffectType;
sendCesHitRequest(aesItemId,
@@ -1059,7 +1059,7 @@ bool HandlerNBC::eventMustBeSend(int aesItemId,
activeEvents.insert(eventType);
// - remove opposite events (e.g remove Enter event when we leave the area)
switch (eventType.underlying())
switch (eventType)
{
case ProjectDataManagement::PdmEventType::EventType_EnterDangerArea:
activeEvents.remove(ProjectDataManagement::PdmEventType::EventType_LeaveDangerArea);
@@ -1199,7 +1199,7 @@ bool HandlerNBC::inCircle(const QPointF &centerUtm, const double radius, const Q
ProjectDataManagement::PdmEventType HandlerNBC::leaveEventTypeForAesType(AreaEffectSimulation::AesType aesTypeId)
{
switch (aesTypeId.underlying())
switch (aesTypeId)
{
case AreaEffectSimulation::AesType::AtDangerArea:
return ProjectDataManagement::PdmEventType::EventType_LeaveDangerArea;
@@ -1215,7 +1215,7 @@ ProjectDataManagement::PdmEventType HandlerNBC::leaveEventTypeForAesType(AreaEff
EffectType HandlerNBC::leaveEffectTypeForAesType(AreaEffectSimulation::AesType aesTypeId)
{
switch (aesTypeId.underlying())
switch (aesTypeId)
{
case AreaEffectSimulation::AesType::AtBCContamination:
return EffectType::BCContaminationLeave;
@@ -1233,7 +1233,7 @@ EffectType HandlerNBC::effectTypeForNContaminationArea(const CentralEffectSimula
const bool isIndoor)
{
const AreaEffectSimulation::NContamination &nc = m_ddsHandler->dtcAes()->nContamination(itemView.aesItemId);
auto utm = LtsCoordTrans::UtmCoordinate::fromGeographic(nc.impactPosition().lon(), nc.impactPosition().lat(), itemView.zone);
auto utm = LtsCoordTrans::UtmCoordinate::fromGeographic(nc.impactPosition.lon, nc.impactPosition.lat, itemView.zone);
QPointF impactPositionUtm = QPointF(utm.x, utm.y);
DEBUG_LOG(m_logger) << "HandlerNBC::effectTypeForNContaminationArea itemView.radials.size()=" << itemView.radials.size();
if (itemView.radials.size() != 3)
@@ -1298,7 +1298,7 @@ EffectType HandlerNBC::effectTypeForBCContaminationArea(const CentralEffectSimul
return EffectType::BCContaminationEnterFloating;
// use real start point for non floating!
const auto &bcItem = m_ddsHandler->dtcAes()->bCContamination(itemView.aesItemId);
const auto utmImpcat = CentralEffectSimulation::geographic2Utm(bcItem.impactPosition(), itemView.zone);
const auto utmImpcat = CentralEffectSimulation::geographic2Utm(bcItem.impactPosition, itemView.zone);
const double squareDist = CentralEffectSimulation::getSquareDistance(utmImpcat, participantPosUtmPoint);
if (squareDist <= pow(itemView.radials.at(0), 2))
{
@@ -1361,19 +1361,19 @@ int HandlerNBC::getContaminationFromBuildingRoom(const int buildingId, const int
<< " roomId=" << roomId;
Buildings::BuildingState buildingState = m_ddsHandler->dtcBld()->buildingState(buildingId);
if (buildingState.contaminationStates().size() == 0 )
if (buildingState.contaminationStates.size() == 0 )
return 0;
if (buildingState.contaminationStates().size() == 0)
if (buildingState.contaminationStates.size() == 0)
return 0;
for (unsigned int i = 0; i < buildingState.contaminationStates().size(); i++)
for (unsigned int i = 0; i < buildingState.contaminationStates.size(); i++)
{
for (unsigned int j = 0; j < buildingState.contaminationStates()[i].rooms().size(); j++)
for (unsigned int j = 0; j < buildingState.contaminationStates[i].rooms.size(); j++)
{
if (buildingState.contaminationStates()[i].rooms()[j] == roomId)
return buildingState.contaminationStates()[i].aesId();
if (buildingState.contaminationStates[i].rooms[j] == roomId)
return buildingState.contaminationStates[i].aesId;
}
}
return 0;
@@ -1386,9 +1386,9 @@ void HandlerNBC::onBuildingStateChanged(const Buildings::BuildingState &data, Da
return;
}
DEBUG_LOG(m_logger) << "Got BuildingState originatorParticipantId=" << data.originatorParticipantId()
<< ", aesId = " << data.aesId()
<< ", data.contaminationStates().size()=" << data.contaminationStates().size();
DEBUG_LOG(m_logger) << "Got BuildingState originatorParticipantId=" << data.originatorParticipantId
<< ", aesId = " << data.aesId
<< ", data.contaminationStates().size()=" << data.contaminationStates.size();
// Check each participant
const QHash<int, CentralEffectSimulation::HandlerParticipant::CesParticipantData> participantsMap = m_handlerParticipant->positions();
@@ -1397,14 +1397,14 @@ void HandlerNBC::onBuildingStateChanged(const Buildings::BuildingState &data, Da
if (m_handlerParticipant->isOutdated(participantPos))
continue;
if (participantPos.buildingId() == 0)
if (participantPos.buildingId == 0)
continue;
int aesId = getContaminationFromBuildingRoom(participantPos.buildingId(), participantPos.roomId());
int aesId = getContaminationFromBuildingRoom(participantPos.buildingId, participantPos.roomId);
const CentralEffectSimulation::AesItemViewUtm itemView = m_aesItemViews.value(aesId);
QHash<int, bool> aesIds = m_participantAes.value(participantPos.participantId());
QHash<int, bool> aesIds = m_participantAes.value(participantPos.participantId);
aesIds.insert(aesId, true);
m_participantAes.insert(participantPos.participantId(), aesIds);
m_participantAes.insert(participantPos.participantId, aesIds);
onNewIndoorParticipantPosition(participantPos);
}
@@ -1413,26 +1413,26 @@ void HandlerNBC::onBuildingStateChanged(const Buildings::BuildingState &data, Da
void HandlerNBC::onNewIndoorParticipantPosition(const CentralEffectSimulation::HandlerParticipant::CesParticipantData &participantData)
{
bool enterBuilding = false;
if ( m_lastRoomId.value(participantData.participantId()) == 0)
if ( m_lastRoomId.value(participantData.participantId) == 0)
{
DEBUG_LOG(m_logger) << "m_lastRoomId Enter Building m_isInContaminatedRoom.contains participantId=" << participantData.participantId()
<< " roomId=" << participantData.roomId()
DEBUG_LOG(m_logger) << "m_lastRoomId Enter Building m_isInContaminatedRoom.contains participantId=" << participantData.participantId
<< " roomId=" << participantData.roomId
<< " m_isInContaminatedRoom. \nremove!!!!";
m_isInContaminatedRoom.remove(participantData.participantId());
m_lastRoomId.insert(participantData.participantId(), participantData.roomId());
m_isInContaminatedRoom.remove(participantData.participantId);
m_lastRoomId.insert(participantData.participantId, participantData.roomId);
enterBuilding = true;
}
else
{
DEBUG_LOG(m_logger) << "m_lastRoomId.contains(" << m_lastRoomId.contains(participantData.participantId())
<< " roomId=" << m_lastRoomId.value(participantData.participantId());
DEBUG_LOG(m_logger) << "m_lastRoomId.contains(" << m_lastRoomId.contains(participantData.participantId)
<< " roomId=" << m_lastRoomId.value(participantData.participantId);
}
int aesId = getContaminationFromBuildingRoom(participantData.buildingId(), participantData.roomId());
DEBUG_LOG(m_logger) << "++++++++ onNewIndoorParticipantPosition participantId=" << participantData.participantId()
<< " buildingId=" << participantData.buildingId()
<< " roomId=" << participantData.roomId()
<< " reportingSource=" << participantData.reportingSource()
int aesId = getContaminationFromBuildingRoom(participantData.buildingId, participantData.roomId);
DEBUG_LOG(m_logger) << "++++++++ onNewIndoorParticipantPosition participantId=" << participantData.participantId
<< " buildingId=" << participantData.buildingId
<< " roomId=" << participantData.roomId
<< " reportingSource=" << participantData.reportingSource
<< " Raum ist Kontaminiert: aesId=" << aesId;
if ( aesId == 0)
{
@@ -1444,9 +1444,9 @@ void HandlerNBC::onNewIndoorParticipantPosition(const CentralEffectSimulation::H
if (enterBuilding)
{
QHash<int, QSet<EffectType>> effectTypeHash = m_effectTypeStates.value(aesId);
if ( effectTypeHash.contains(participantData.participantId()))
if ( effectTypeHash.contains(participantData.participantId))
{
effectTypeHash.remove(participantData.participantId());
effectTypeHash.remove(participantData.participantId);
}
m_effectTypeStates.insert(aesId, effectTypeHash);
}
@@ -1456,9 +1456,9 @@ void HandlerNBC::onNewIndoorParticipantPosition(const CentralEffectSimulation::H
if (aesId > 0 && !m_aesItemViews.contains(aesId))
{
DEBUG_LOG(m_logger) << "m_isInContaminatedRoom insert participantId=" << participantData.participantId()
DEBUG_LOG(m_logger) << "m_isInContaminatedRoom insert participantId=" << participantData.participantId
<< " aesId=" << aesId;
m_isInContaminatedRoom.insert(participantData.participantId(), aesId);
m_isInContaminatedRoom.insert(participantData.participantId, aesId);
}
if (aesId > 0)
@@ -1466,16 +1466,16 @@ void HandlerNBC::onNewIndoorParticipantPosition(const CentralEffectSimulation::H
AreaEffectSimulation::AesItemView aesItemView;
m_ddsHandler->dtcAes()->aesItemViewFromEntityId(aesId,AreaEffectSimulation::AesType::AtUnknown, aesItemView );
AreaEffectSimulation::AesType aesTypeId = aesItemView.aesTypeId();
AreaEffectSimulation::AesType aesTypeId = aesItemView.aesTypeId;
DEBUG_LOG(m_logger) << "onNewIndoorParticipantPosition sendEnterEvent aesTypeId=" << aesTypeId;
sendEnterEvent(aesId,aesTypeId, participantData, true);
}
else
{
if (m_participantAes.contains(participantData.participantId()))
if (m_participantAes.contains(participantData.participantId))
{
QHash<int, bool> aesIds = m_participantAes.value(participantData.participantId());
QHash<int, bool> aesIds = m_participantAes.value(participantData.participantId);
// leave aesArea
QHashIterator<int, bool> i(aesIds);
while (i.hasNext())
@@ -55,14 +55,14 @@ void HandlerBlockedAreas::onSendParticipantBlockedAreaReply(const Core::Function
void HandlerBlockedAreas::onParticipantPositionChanged(const CentralEffectSimulation::HandlerParticipant::CesParticipantData &partPos)
{
const int participantId = partPos.participantId();
const int participantId = partPos.participantId;
int damagePercentBlockedAreas = 90; // From the percentage damage, blocked area applies Todo Config Value
DEBUG_LOG(m_logger) << "HandlerBlockedAreas onParticipantPositionChanged participantId=" << participantId;
TrainingAreaBase::SendParticipantBlockedAreaRequest pba;
pba.equipmentNumber(m_ddsHandler->participantId2EquipNo(partPos.participantId()));
pba.participantId(partPos.participantId());
// if (partPos.vulnerabilityState == ProjectDataManagement::VulnerabilityState::CombatReady)
pba.equipmentNumber = m_ddsHandler->participantId2EquipNo(partPos.participantId);
pba.participantId = partPos.participantId;
// if (partPos.vulnerabilityState == ProjectDataManagement::VulnerabilityState::VulnerabilityState_CombatReady)
// m_blockedAreas.remove(participantId);
if (!partPos.insideBuilding())
@@ -70,8 +70,8 @@ void HandlerBlockedAreas::onParticipantPositionChanged(const CentralEffectSimula
auto it = m_blockedAreas.find(participantId);
if (it != m_blockedAreas.end())
{
DEBUG_LOG(m_logger) << "Blocked Area Leave equipment-No. =" << pba.equipmentNumber();
pba.blockedAreaMode(TrainingAreaBase::BlockedAreaMode::Leave);
DEBUG_LOG(m_logger) << "Blocked Area Leave equipment-No. =" << pba.equipmentNumber;
pba.blockedAreaMode = TrainingAreaBase::BlockedAreaMode::Leave;
m_ddsHandler->ftcTab()->sendParticipantBlockedAreaRequest(pba, this);
m_blockedAreas.erase(it);
}
@@ -81,10 +81,10 @@ void HandlerBlockedAreas::onParticipantPositionChanged(const CentralEffectSimula
{
// check leave
if (m_blockedAreas.contains(participantId) &&
(m_handlerParticipantBuilding->getDamagePercentFromRoom(partPos.roomId()) < damagePercentBlockedAreas))
(m_handlerParticipantBuilding->getDamagePercentFromRoom(partPos.roomId) < damagePercentBlockedAreas))
{
DEBUG_LOG(m_logger) << "Blocked Area Leave equipment-No. =" << pba.equipmentNumber();
pba.blockedAreaMode(TrainingAreaBase::BlockedAreaMode::Leave);
DEBUG_LOG(m_logger) << "Blocked Area Leave equipment-No. =" << pba.equipmentNumber;
pba.blockedAreaMode = TrainingAreaBase::BlockedAreaMode::Leave;
m_ddsHandler->ftcTab()->sendParticipantBlockedAreaRequest(pba, this);
m_blockedAreas.remove(participantId);
return;
@@ -92,23 +92,23 @@ void HandlerBlockedAreas::onParticipantPositionChanged(const CentralEffectSimula
}
DEBUG_LOG(m_logger) << "Room =" << partPos.roomId()
<< " DamagePercentRoom=" << m_handlerParticipantBuilding->getDamagePercentFromRoom(partPos.roomId());
DEBUG_LOG(m_logger) << "1: " << m_handlerParticipantBuilding->getDamagePercentFromRoom(partPos.roomId())
DEBUG_LOG(m_logger) << "Room =" << partPos.roomId
<< " DamagePercentRoom=" << m_handlerParticipantBuilding->getDamagePercentFromRoom(partPos.roomId);
DEBUG_LOG(m_logger) << "1: " << m_handlerParticipantBuilding->getDamagePercentFromRoom(partPos.roomId)
<< " damagePercentBlockedAreas= " << damagePercentBlockedAreas << "\n"
<< " getDamagePercentFromBuilding=" << m_handlerParticipantBuilding->getDamagePercentFromBuilding(partPos.buildingId()) << "\n"
<< " getDamagePercentFromBuilding=" << m_handlerParticipantBuilding->getDamagePercentFromBuilding(partPos.buildingId) << "\n"
<< "m_blockedAreas.contains(participantId) = " << m_blockedAreas.contains(participantId) ;
if ((m_handlerParticipantBuilding->getDamagePercentFromRoom(partPos.roomId()) >= damagePercentBlockedAreas
|| m_handlerParticipantBuilding->getDamagePercentFromBuilding(partPos.buildingId()) == 100)
if ((m_handlerParticipantBuilding->getDamagePercentFromRoom(partPos.roomId) >= damagePercentBlockedAreas
|| m_handlerParticipantBuilding->getDamagePercentFromBuilding(partPos.buildingId) == 100)
&& !m_blockedAreas.contains(participantId))
{
DEBUG_LOG(m_logger) << "Send Enter Blocked Area to Participant:" << participantId;
pba.blockedAreaMode(TrainingAreaBase::BlockedAreaMode::Enter);
pba.blockedAreaMode = TrainingAreaBase::BlockedAreaMode::Enter;
m_ddsHandler->ftcTab()->sendParticipantBlockedAreaRequest(pba, this);
m_blockedAreas.insert(participantId, partPos.roomId());
m_blockedAreas.insert(participantId, partPos.roomId);
}
} // end of onParticipantPositionChanged()
@@ -126,9 +126,9 @@ void HandlerBlockedAreas::onBuildingStateChanged(const int32_t buildingId)
{
DEBUG_LOG(m_logger) << "remove participantId: " << participantId;
TrainingAreaBase::SendParticipantBlockedAreaRequest pba;
pba.equipmentNumber(m_ddsHandler->participantId2EquipNo(participantId));
pba.participantId(participantId);
pba.blockedAreaMode(TrainingAreaBase::BlockedAreaMode::Leave);
pba.equipmentNumber = m_ddsHandler->participantId2EquipNo(participantId);
pba.participantId = participantId;
pba.blockedAreaMode = TrainingAreaBase::BlockedAreaMode::Leave;
m_ddsHandler->ftcTab()->sendParticipantBlockedAreaRequest(pba, this);
m_blockedAreas.remove(participantId);
}
@@ -65,7 +65,7 @@ int HandlerParticipantBuilding::getDamagePercentFromBuilding(const int buildingI
{
DEBUG_LOG(m_logger) << "getDamagePercentFromBuilding buildingId=" << buildingId;
auto it = m_buildingStates.find(buildingId);
return it != m_buildingStates.end() ? it.value().damagePercent() : 0;
return it != m_buildingStates.end() ? it.value().damagePercent : 0;
}
int HandlerParticipantBuilding::getDamagePercentFromRoom(const int roomId) const
@@ -110,21 +110,21 @@ void HandlerParticipantBuilding::onBuildingStateChanged(const Buildings::Buildin
{
if (modType == DataModification::eRemoved)
{
m_buildingStates.remove(data.id());
m_buildingStates.remove(data.id);
return;
}
DEBUG_LOG(m_logger) << "Got BuildingState originatorParticipantId=" << data.originatorParticipantId()
<< ", aesId = " << data.aesId()
<< ", chargeTypeId = " << data.chargeTypeId()
<< ", sampleTime = " << data.sampleTime()
<< ", CountRooms =" << data.roomStates().size()
<< ", structureElementId=" << data.structureElementId()
<< ", assetId=" << data.assetId()
<< ", roomStates.size=" << data.roomStates().size()
<< ", damagePercent" << data.damagePercent();
DEBUG_LOG(m_logger) << "Got BuildingState originatorParticipantId=" << data.originatorParticipantId
<< ", aesId = " << data.aesId
<< ", chargeTypeId = " << data.chargeTypeId
<< ", sampleTime = " << data.sampleTime
<< ", CountRooms =" << data.roomStates.size()
<< ", structureElementId=" << data.structureElementId
<< ", assetId=" << data.assetId
<< ", roomStates.size=" << data.roomStates.size()
<< ", damagePercent" << data.damagePercent;
if ( (data.originatorParticipantId() == 0) && (data.aesId() == 0) && (data.chargeTypeId()==0))
if ( (data.originatorParticipantId == 0) && (data.aesId == 0) && (data.chargeTypeId==0))
{
DEBUG_LOG(m_logger) << "Not valid return ";
return;
@@ -132,28 +132,28 @@ void HandlerParticipantBuilding::onBuildingStateChanged(const Buildings::Buildin
// fill m_roomIdDamageState
RoomState rs;
rs.buildingId = data.id();
m_buildingStates.insert(data.id(), data);
DEBUG_LOG(m_logger) << "m_buildingStates.insert id=" << data.id()
<< " aesId=" << data.aesId()
<< " name=" << data.name();
rs.buildingId = data.id;
m_buildingStates.insert(data.id, data);
DEBUG_LOG(m_logger) << "m_buildingStates.insert id=" << data.id
<< " aesId=" << data.aesId
<< " name=" << data.name;
for (const Buildings::RoomState &roomState : data.roomStates())
for (const Buildings::RoomState &roomState : data.roomStates)
{
rs.damagePercent = roomState.damagePercent();
m_roomIdDamageState.insert(roomState.id(), rs);
rs.damagePercent = roomState.damagePercent;
m_roomIdDamageState.insert(roomState.id, rs);
DEBUG_LOG(m_logger) << "m_roomIdDamageState.insert"
<< " RoomId = " << roomState.id()
<< ", BuildingId = " << data.id()
<< ", destruction = " << roomState.damagePercent();
<< " RoomId = " << roomState.id
<< ", BuildingId = " << data.id
<< ", destruction = " << roomState.damagePercent;
}
// init: remove all rooms from Map
if (data.damagePercent() == 0)
if (data.damagePercent == 0)
{
auto it = m_roomIdDamageState.begin();
while (it != m_roomIdDamageState.end())
{
if (it.value().buildingId == data.id())
if (it.value().buildingId == data.id)
it = m_roomIdDamageState.erase(it);
else
++it;
@@ -162,27 +162,27 @@ void HandlerParticipantBuilding::onBuildingStateChanged(const Buildings::Buildin
}
const auto participantsMap = m_handlerParticipant->positions();
for (const Buildings::RoomState &roomState : data.roomStates())
for (const Buildings::RoomState &roomState : data.roomStates)
{
if (roomState.damagePercent() <= 0)
if (roomState.damagePercent <= 0)
continue;
// no effect should not burden the radio
if (roomState.remainingEffectPercent() == 0)
if (roomState.remainingEffectPercent == 0)
continue;
DEBUG_LOG(m_logger) << " RoomId[" << roomState.id() << "]:"
<< " remainingEffectPercent = " << roomState.remainingEffectPercent()
<< " roomState.damagePercent()=" << roomState.damagePercent()
<< " roomState.remainingEffectPercent()=" << roomState.remainingEffectPercent();
DEBUG_LOG(m_logger) << " RoomId[" << roomState.id << "]:"
<< " remainingEffectPercent = " << roomState.remainingEffectPercent
<< " roomState.damagePercent()=" << roomState.damagePercent
<< " roomState.remainingEffectPercent()=" << roomState.remainingEffectPercent;
// search for participants in each room:
// if participant in room sendCESHit to TAB
for (const CentralEffectSimulation::HandlerParticipant::CesParticipantData &participantPos : participantsMap)
{
const int participantId = participantPos.participantId();
if (participantPos.roomId() != roomState.id())
const int participantId = participantPos.participantId;
if (participantPos.roomId != roomState.id)
continue;
if (participantPos.vulnerabilityState == ProjectDataManagement::VulnerabilityState::CatastrophicKill)
if (participantPos.vulnerabilityState == ProjectDataManagement::VulnerabilityState::VulnerabilityState_CatastrophicKill)
continue;
const int equipNo = m_ddsHandler->participantId2EquipNo(participantId);
if (equipNo <= 0)
@@ -191,22 +191,22 @@ void HandlerParticipantBuilding::onBuildingStateChanged(const Buildings::Buildin
continue;
DEBUG_LOG(m_logger) << " participantId = " << participantId
<< " roomId = " << participantPos.roomId()
<< " roomState.id=" << roomState.id()
<< " roomId = " << participantPos.roomId
<< " roomState.id=" << roomState.id
<< " participantPos.vulnerabilityState=" << participantPos.vulnerabilityState
<< " equipNo=" << m_ddsHandler->participantId2EquipNo(participantId)
<< " isOutdated=" << m_handlerParticipant->isOutdated(participantPos);
DEBUG_LOG(m_logger) << "sendCesHitToParticipant";
sendCesHitToParticipant(data, participantId, roomState.remainingEffectPercent());
sendCesHitToParticipant(data, participantId, roomState.remainingEffectPercent);
}
}
m_buildingStates.insert(data.id(), data);
m_buildingStates.insert(data.id, data);
if (!m_timer->isActive() && !m_requestMap.isEmpty())
m_timer->start(1000);
emit newBuildingState(data.id());
emit newBuildingState(data.id);
}
void HandlerParticipantBuilding::sendCesHitToParticipant(const Buildings::BuildingState &data,
@@ -215,7 +215,7 @@ void HandlerParticipantBuilding::sendCesHitToParticipant(const Buildings::Buildi
{
const int equipNo = m_ddsHandler->participantId2EquipNo(participantId);
const QHash<int, CentralEffectSimulation::HandlerParticipant::CesParticipantData> participantsMap = m_handlerParticipant->positions();
const int originatorEquipNo = m_ddsHandler->participantId2EquipNo(data.originatorParticipantId());
const int originatorEquipNo = m_ddsHandler->participantId2EquipNo(data.originatorParticipantId);
@@ -226,36 +226,36 @@ void HandlerParticipantBuilding::sendCesHitToParticipant(const Buildings::Buildi
bool itemAvailable = m_ddsHandler->dtcAes()->aesItemFromId(data.aesId(), aesItem);
bool itemAvailable = m_ddsHandler->dtcAes()->aesItemFromId(data.aesId, aesItem);
if (itemAvailable)
DEBUG_LOG(m_logger) << "partyId=" << aesItem.partyId()
<< " chargeTypeId=" << aesItem.chargeStruct().chargeTypeId()
<< " duration=" << aesItem.effectDuration();
DEBUG_LOG(m_logger) << "partyId=" << aesItem.partyId
<< " chargeTypeId=" << aesItem.chargeStruct.chargeTypeId
<< " duration=" << aesItem.effectDuration;
// mineFieldBitIndex wird als reserve1 uegertragen und hier wird die Wirkdauer uebertragen.
const int duration = aesItem.effectDuration() / 1000;
const int duration = aesItem.effectDuration / 1000;
//int32_t legacyChargeTypeId = 0;
//const ProjectDataManagement::FuseType fuseType = m_ddsHandler->dtcAes()->explosionCluster(aesItem.id()).fuseType();
const int chargeTypeId = itemAvailable ? aesItem.chargeStruct().chargeTypeId() : data.chargeTypeId();
const int chargeTypeId = itemAvailable ? aesItem.chargeStruct.chargeTypeId : data.chargeTypeId;
// legacyChargeTypeId = m_ddsHandler->getLegacyIdFromChargeTypeId(chargeTypeId, fuseType);
// NOTE: igniterTypeId/IgniterFunction = 0 as long as BuildingState does not contain values
AreaEffectSimulation::ChargeStruct chargeStruct = { data.chargeTypeId(),0,0};
if (itemAvailable) chargeStruct = aesItem.chargeStruct();
AreaEffectSimulation::ChargeStruct chargeStruct = { data.chargeTypeId,0,0};
if (itemAvailable) chargeStruct = aesItem.chargeStruct;
int remainTasCodeIndirect = m_ddsHandler->remainingTasCode(chargeStruct);
DEBUG_LOG(m_logger) << " ftc sendCESHit to Participant equipNo = " << equipNo
<< " participantId=" << participantId
<< " chargeTypeId=" << data.chargeTypeId()
<< " chargeTypeId=" << data.chargeTypeId
<< " originatorEquipNo=" << originatorEquipNo
<< " remainingEffectPercent=" << remainingEffectPercent
<< " remainTasCodeIndirect=" << remainTasCodeIndirect
<< " eventType=" << eventType;
const TrainingAreaBase::TabPosition pos(participantPos.pos(),
participantPos.reportingSource(),
participantPos.buildingId(),
participantPos.roomId());
const TrainingAreaBase::TabPosition pos(participantPos.pos,
participantPos.reportingSource,
participantPos.buildingId,
participantPos.roomId);
// Bei Nebel soll die Weste nur einmal piepen und nicht regelmaessig. Das wird mit Wirkung = 3 uebertragen
@@ -270,20 +270,20 @@ void HandlerParticipantBuilding::sendCesHitToParticipant(const Buildings::Buildi
TrainingAreaBase::SendCesHitRequest requestTab;
requestTab.aesId(data.aesId());
requestTab.aesId = data.aesId;
//requestTab.chargeTypeId(legacyChargeTypeId > 0 ? legacyChargeTypeId : chargeTypeId);
requestTab.chargeTypeId(chargeTypeId);
requestTab.effectTime(data.sampleTime());
requestTab.equipmentNumber(equipNo);
requestTab.eventType(eventType);
requestTab.mineId(duration);
requestTab.originatorEquipmentNumber(originatorEquipNo);
requestTab.participantId(participantId);
requestTab.chargeTypeId = chargeTypeId;
requestTab.effectTime = data.sampleTime;
requestTab.equipmentNumber = equipNo;
requestTab.pdmEventType = eventType;
requestTab.mineId = duration;
requestTab.originatorEquipmentNumber = originatorEquipNo;
requestTab.participantId = participantId;
int32_t partyId = 0;
if ( aesItem.partyId.is_set())
if ( aesItem.partyId.has_value())
partyId = aesItem.partyId.get();
requestTab.partyId(partyId);
requestTab.position(pos);
requestTab.partyId = partyId;
requestTab.position = pos;
// Same like direct Hit
// if (aesItem.id() > 0)
@@ -294,7 +294,7 @@ void HandlerParticipantBuilding::sendCesHitToParticipant(const Buildings::Buildi
// else
{
DEBUG_LOG(m_logger) << "direkter Beschuss remainEffectPercent=" << remainingEffectPercent;
requestTab.remainEffectPercent(remainingEffectPercent);
requestTab.remainEffectPercent = remainingEffectPercent;
}
m_requestMap.insert(participantId, requestTab);
@@ -95,7 +95,7 @@ void DdsHandlerTargetAreas::onParticipantChanged(const ParticipantManagement::Pa
if (modType == DataModification::eRemoved)
m_partId2EquipNoMap.remove(data.id());
else
m_partId2EquipNoMap[data.id()] = data.equipmentNumber.is_set() ? data.equipmentNumber.get() : 0;
m_partId2EquipNoMap[data.id()] = data.equipmentNumber.has_value() ? data.equipmentNumber.get() : 0;
if (m_logger.isTraceEnabled())
{
@@ -469,21 +469,21 @@ void HandlerTargetAreas::on_preWarningIntervalFinished(int participantId, int ta
uint8_t countBlink = 1;
int32_t effectPercent = 0;
switch (shootbackTarget.targetInformation.prewarningEffect().underlying())
switch (shootbackTarget.targetInformation.prewarningEffect())
{
case ProjectDataManagement::VulnerabilityState::NoChange:
case ProjectDataManagement::VulnerabilityState::VulnerabilityState_NoChange:
countBlink = 1;
effectPercent = 0;
break;
case ProjectDataManagement::VulnerabilityState::MobilityKill:
case ProjectDataManagement::VulnerabilityState::VulnerabilityState_MobilityKill:
effectPercent = 30;
countBlink = 2;
break;
case ProjectDataManagement::VulnerabilityState::NearMiss:
case ProjectDataManagement::VulnerabilityState::VulnerabilityState_NearMiss:
countBlink = 3;
effectPercent = 60;
break;
case ProjectDataManagement::VulnerabilityState::CatastrophicKill:
case ProjectDataManagement::VulnerabilityState::VulnerabilityState_CatastrophicKill:
countBlink = 4;
effectPercent = 100;
break;
@@ -518,13 +518,13 @@ void HandlerTargetAreas::on_TimeToEffectFinished(int participantId, int targetPa
<< " takedownEffect=" << shootbackTarget.targetInformation.takedownEffect();
switch (shootbackTarget.targetInformation.takedownEffect().underlying())
switch (shootbackTarget.targetInformation.takedownEffect())
{
case ProjectDataManagement::VulnerabilityState::MobilityKill:
case ProjectDataManagement::VulnerabilityState::VulnerabilityState_MobilityKill:
effectPercent = 50;
countBlink = 5;
break;
case ProjectDataManagement::VulnerabilityState::CatastrophicKill:
case ProjectDataManagement::VulnerabilityState::VulnerabilityState_CatastrophicKill:
countBlink = 6;
effectPercent = 100;
break;
@@ -42,7 +42,7 @@ public:
struct ParticipantPosition : public ParticipantManagement::ParticipantPosition
{
ProjectDataManagement::VulnerabilityState vulnerabilityState = ProjectDataManagement::VulnerabilityState::CombatReady;
ProjectDataManagement::VulnerabilityState vulnerabilityState = ProjectDataManagement::VulnerabilityState::VulnerabilityState_CombatReady;
Core::GeoPosition lastGeoPosition;
bool positionValid = false;
@@ -84,30 +84,30 @@ bool HandlerParticipantBoobyTrap::init()
void HandlerParticipantBoobyTrap::onBoobyTrapChanged(const AreaEffectSimulation::BoobyTrap &data, DataModification modType)
{
if (data.isDeleted()
|| data.effectStateId() == AreaEffectSimulation::AesEffectState::EsRemoved
|| (data.effectStateId() == AreaEffectSimulation::AesEffectState::EsExpired && !data.triggered())
|| !data.isCentral()
if (data.isDeleted
|| data.effectStateId == AreaEffectSimulation::AesEffectState::EsRemoved
|| (data.effectStateId == AreaEffectSimulation::AesEffectState::EsExpired && !data.triggered)
|| !data.isCentral
|| modType == DataModification::eRemoved)
{
m_boobyTraps.remove(data.id());
m_boobyTrapItems.remove(data.id());
m_boobyTrapItemsSecondary.remove(data.id());
m_boobyTraps.remove(data.id);
m_boobyTrapItems.remove(data.id);
m_boobyTrapItemsSecondary.remove(data.id);
return;
}
INFO_LOG(m_logger) << "HandlerParticipantBoobyTrap::onBoobyTrapChanged"
<< " data.sampleTime=" << data.sampleTime()
<< " data.sampleTime=" << data.sampleTime
<< " m_ddsHandler->currentPartitionTime=" << m_ddsHandler->currentPartitionTime()
<< " diff=" << m_ddsHandler->currentPartitionTime() - data.sampleTime();
if ((m_ddsHandler->currentPartitionTime() - data.sampleTime()) > 2000)
<< " diff=" << m_ddsHandler->currentPartitionTime() - data.sampleTime;
if ((m_ddsHandler->currentPartitionTime() - data.sampleTime) > 2000)
{
INFO_LOG(m_logger) << "onBoobyTrap outdated";
return;
}
m_boobyTraps.insert(data.id(), data);
m_boobyTraps.insert(data.id, data);
if (!data.triggered())
if (!data.triggered)
return;
@@ -129,73 +129,73 @@ void HandlerParticipantBoobyTrap::onBoobyTrapChanged(const AreaEffectSimulation:
{
if (m_handlerParticipant->isOutdated(participantPos))
{
TRACE_LOG(m_logger) << "isOutdated participantId=" << participantPos.participantId() << " continue";
TRACE_LOG(m_logger) << "isOutdated participantId=" << participantPos.participantId << " continue";
continue;
}
DEBUG_LOG(m_logger) << "Check each actuell participant participantId=" << participantPos.participantId();
DEBUG_LOG(m_logger) << "Check each actuell participant participantId=" << participantPos.participantId;
if (participantPos.insideBuilding())
{
DEBUG_LOG(m_logger) << "inside Building participantId=" << participantPos.participantId() << " continue";
DEBUG_LOG(m_logger) << "inside Building participantId=" << participantPos.participantId << " continue";
continue;
}
if (participantPos.vulnerabilityState == ProjectDataManagement::VulnerabilityState::VulnerabilityState_CatastrophicKill)
{
DEBUG_LOG(m_logger) << "CatastrophicKill participantId=" << participantPos.participantId() << " continue";
DEBUG_LOG(m_logger) << "CatastrophicKill participantId=" << participantPos.participantId << " continue";
continue;
}
DEBUG_LOG(m_logger) << "pos participantId=" << participantPos.participantId()
<< " buildingId=" << participantPos.buildingId()
DEBUG_LOG(m_logger) << "pos participantId=" << participantPos.participantId
<< " buildingId=" << participantPos.buildingId
<< " insideBuilding=" << participantPos.insideBuilding()
<< " positionValid=" << participantPos.positionValid;
const CentralEffectSimulation::AesItemViewUtm aesItemView = m_boobyTrapItemsSecondary.value(data.id());
const CentralEffectSimulation::AesItemViewUtm aesItemView = m_boobyTrapItemsSecondary.value(data.id);
calculateBoobyTrapParticipant(aesItemView, participantPos);
}
m_boobyTraps.remove(data.id());
m_boobyTrapItems.remove(data.id());
m_boobyTrapItemsSecondary.remove(data.id());
m_boobyTraps.remove(data.id);
m_boobyTrapItems.remove(data.id);
m_boobyTrapItemsSecondary.remove(data.id);
}
void HandlerParticipantBoobyTrap::onAesItemViewChanged(const AreaEffectSimulation::AesItemView &data, DataModification modType)
{
INFO_LOG(m_logger) << "---------------------------------------------------------------------------";
INFO_LOG(m_logger) << "HandlerParticipantBoobyTrap::onAesItemViewChanged"
<< " aesTypeId=" << data.aesTypeId()
<< " data.effectStateId()=" << data.effectStateId();
<< " aesTypeId=" << data.aesTypeId
<< " data.effectStateId()=" << data.effectStateId;
if (data.effectStateId() == AreaEffectSimulation::AesEffectState::EsExpired
|| data.effectStateId() == AreaEffectSimulation::AesEffectState::EsRemoved
if (data.effectStateId == AreaEffectSimulation::AesEffectState::EsExpired
|| data.effectStateId == AreaEffectSimulation::AesEffectState::EsRemoved
|| modType == DataModification::eRemoved)
{
if (data.aesTypeId() == AreaEffectSimulation::AesType::AtBoobyTrapSecondary)
if (data.aesTypeId == AreaEffectSimulation::AesType::AtBoobyTrapSecondary)
{
m_boobyTraps.remove(data.id());
m_boobyTrapItems.remove(data.id());
m_boobyTrapItemsSecondary.remove(data.id());
m_triggeredMineParticipant.remove(data.id());
m_boobyTraps.remove(data.id);
m_boobyTrapItems.remove(data.id);
m_boobyTrapItemsSecondary.remove(data.id);
m_triggeredMineParticipant.remove(data.id);
DEBUG_LOG(m_logger) << "onBoobyTrapChanged remove aesId=" << data.id()
<< " m_triggeredMineParticipant.remove(" << data.id() ;
DEBUG_LOG(m_logger) << "onBoobyTrapChanged remove aesId=" << data.id
<< " m_triggeredMineParticipant.remove(" << data.id ;
}
return;
}
//
if (data.aesTypeId() != AreaEffectSimulation::AesType::AtBoobyTrap
&& data.aesTypeId() != AreaEffectSimulation::AesType::AtBoobyTrapSecondary)
if (data.aesTypeId != AreaEffectSimulation::AesType::AtBoobyTrap
&& data.aesTypeId != AreaEffectSimulation::AesType::AtBoobyTrapSecondary)
return;
const int aesItemId = data.aesItemId();
const int aesItemId = data.aesItemId;
DEBUG_LOG(m_logger) << "Got AesItemView id: " << aesItemId
<< ", type: " << data.aesTypeId()
<< ", effectState: " << data.effectStateId()
<< ", type: " << data.aesTypeId
<< ", effectState: " << data.effectStateId
<< ", modType: " << modType;
if (modType == DataModification::eAdded
|| modType == DataModification::eModified)
{
const AreaEffectSimulation::AesEffectState &effectState = data.effectStateId();
switch (effectState.underlying())
const AreaEffectSimulation::AesEffectState &effectState = data.effectStateId;
switch (effectState)
{
case AreaEffectSimulation::AesEffectState::EsActivated:
{
@@ -204,12 +204,12 @@ void HandlerParticipantBoobyTrap::onAesItemViewChanged(const AreaEffectSimulatio
prevData.aesItemId = 0;
const CentralEffectSimulation::AesItemViewUtm boobyTrapUtm = CentralEffectSimulation::AesItemViewUtm::create(data, prevData, impactRadius);
if (data.aesTypeId() == AreaEffectSimulation::AesType::AtBoobyTrap)
m_boobyTrapItems.insert(data.aesItemId(), boobyTrapUtm);
if (data.aesTypeId() == AreaEffectSimulation::AesType::AtBoobyTrapSecondary)
m_boobyTrapItemsSecondary.insert(data.aesItemId(), boobyTrapUtm);
if (data.aesTypeId == AreaEffectSimulation::AesType::AtBoobyTrap)
m_boobyTrapItems.insert(data.aesItemId, boobyTrapUtm);
if (data.aesTypeId == AreaEffectSimulation::AesType::AtBoobyTrapSecondary)
m_boobyTrapItemsSecondary.insert(data.aesItemId, boobyTrapUtm);
DEBUG_LOG(m_logger) << "Check each participant"
<< " aesTypeId=" << data.aesTypeId();
<< " aesTypeId=" << data.aesTypeId;
// Check each participant
// const auto partPosMap = m_handlerParticipant->positions();
// for (const CentralEffectSimulation::HandlerParticipant::CesParticipantData &participantPos : partPosMap)
@@ -268,7 +268,7 @@ void HandlerParticipantBoobyTrap::calculateBoobyTrapParticipantsSecondary(int ae
const auto partPosMap = m_handlerParticipant->positions();
for (const CentralEffectSimulation::HandlerParticipant::CesParticipantData &participantPos : partPosMap)
{
if (participantPos.participantId() == participantId)
if (participantPos.participantId == participantId)
{
DEBUG_LOG(m_logger) << "is already handled participantId=" << participantId;
continue;
@@ -280,12 +280,12 @@ void HandlerParticipantBoobyTrap::calculateBoobyTrapParticipantsSecondary(int ae
}
if (participantPos.insideBuilding())
{
DEBUG_LOG(m_logger) << "inside Building participantId=" << participantPos.participantId() << " continue";
DEBUG_LOG(m_logger) << "inside Building participantId=" << participantPos.participantId << " continue";
continue;
}
if (participantPos.vulnerabilityState == ProjectDataManagement::VulnerabilityState::VulnerabilityState_CatastrophicKill)
{
DEBUG_LOG(m_logger) << "CatastrophicKill participantId=" << participantPos.participantId() << " continue";
DEBUG_LOG(m_logger) << "CatastrophicKill participantId=" << participantPos.participantId << " continue";
continue;
}
const CentralEffectSimulation::AesItemViewUtm aesItemView = m_boobyTrapItemsSecondary.value(aesItemId);
@@ -331,12 +331,12 @@ void HandlerParticipantBoobyTrap::calculateBoobyTrapParticipantSecondary(const C
{
bool result;
const AreaEffectSimulation::BoobyTrap boobyTrap = m_ddsHandler->dtcAes()->boobyTrap(aesItemView.aesItemId);
const QPointF partPosGeo = QPointF(participantPos.pos().lon(), participantPos.pos().lat());
const QPointF impactPosGeo = QPointF(boobyTrap.impactPosition().lon(), boobyTrap.impactPosition().lat());
const QPointF partPosGeo = QPointF(participantPos.pos.lon, participantPos.pos.lat);
const QPointF impactPosGeo = QPointF(boobyTrap.impactPosition.lon, boobyTrap.impactPosition.lat);
DEBUG_LOG(m_logger) << "calculateBoobyTrapParticipantSecondary itemView.id=" << aesItemView.aesItemId
<< " participantId=" << participantPos.participantId();
<< " participantId=" << participantPos.participantId;
DEBUG_LOG(m_logger) << "BoobyTrap id = " << aesItemView.aesItemId
<< ", Box bottomLeft = " << CentralEffectSimulation::debug(aesItemView.boundingBoxBottomLeft)
@@ -352,21 +352,21 @@ void HandlerParticipantBoobyTrap::calculateBoobyTrapParticipantSecondary(const C
//dtcIsm.get()->getBuildingByPolygon(exerciseId, polygonGeo, completeEnclosed, isGroundLevel);
if ( buildingIds.size() > 0)
{
DEBUG_LOG(m_logger) << "Gebaeude verdeckt den Minentreffer participantId=" << participantPos.participantId();
DEBUG_LOG(m_logger) << "Gebaeude verdeckt den Minentreffer participantId=" << participantPos.participantId;
return;
}
if (!aesItemView.boundingBox.containsPoint(partPosGeo, Qt::OddEvenFill))
DEBUG_LOG(m_logger) << "not in boundingBox " << participantPos.participantId();
DEBUG_LOG(m_logger) << "not in boundingBox " << participantPos.participantId;
else
DEBUG_LOG(m_logger) << "in boundingBox" << participantPos.participantId();
DEBUG_LOG(m_logger) << "in boundingBox" << participantPos.participantId;
// const QPolygonF utmStepPoly = m_handlerParticipant->getParticipantStep(participantPos.participantId(), aesItemView.zone);
result = insideSecondaryArea(aesItemView.form, partPosGeo);
DEBUG_LOG(m_logger) << "insideSecondaryArea : "
<< " participantId=" << participantPos.participantId()
<< " participantId=" << participantPos.participantId
<< " aesItemId=" << aesItemView.aesItemId
<< " result=" << result;
// const bool result = enteredOrCrossedArea(aesItemView.form, partPosGeo);
@@ -414,14 +414,14 @@ bool HandlerParticipantBoobyTrap::calculateBoobyTrapParticipant(const CentralEff
{
DEBUG_LOG(m_logger) << "calculateBoobyTrapParticipant itemView.id=" << aesItemView.aesItemId
<< " participantId=" << participantPos.participantId();
<< " participantId=" << participantPos.participantId;
// Check coverage by a building
const AreaEffectSimulation::BoobyTrap boobyTrap = m_ddsHandler->dtcAes()->boobyTrap(aesItemView.aesItemId);
//const QPointF partPosGeo = CentralEffectSimulation::geographic2Utm(participantPos.pos(), aesItemView.zone);
//const QPointF impactPosGeo = CentralEffectSimulation::geographic2Utm(boobyTrap.impactPosition(), aesItemView.zone);
const QPointF partPosGeo = QPointF(participantPos.pos().lon(), participantPos.pos().lat());
const QPointF impactPosGeo = QPointF(boobyTrap.impactPosition().lon(), boobyTrap.impactPosition().lat());
const QPointF partPosGeo = QPointF(participantPos.pos.lon, participantPos.pos.lat);
const QPointF impactPosGeo = QPointF(boobyTrap.impactPosition.lon, boobyTrap.impactPosition.lat);
bool completeEnclosed = false;
bool isGroundLevel = true;
int exerciseId = m_ddsHandler->getExerciseId();
@@ -437,25 +437,25 @@ bool HandlerParticipantBoobyTrap::calculateBoobyTrapParticipant(const CentralEff
return false;
}
const QPointF partPosUtm = CentralEffectSimulation::geographic2Utm(participantPos.pos(), -1);
const QPointF partPosUtm = CentralEffectSimulation::geographic2Utm(participantPos.pos, -1);
DEBUG_LOG(m_logger) << "BoobyTrap id = " << aesItemView.aesItemId
<< ", Box bottomLeft = " << CentralEffectSimulation::debug(aesItemView.boundingBoxBottomLeft)
<< ", topRight = " << CentralEffectSimulation::debug(aesItemView.boundingBoxTopRight)
<< " participantPos=" << partPosUtm.x() << "/" << partPosUtm.y();
if (!aesItemView.boundingBox.containsPoint(partPosUtm, Qt::OddEvenFill))
{
DEBUG_LOG(m_logger) << "not in boundingBox " << participantPos.participantId();
bool intersectsBoundingBox = intersectsBoundingBoxCheck(aesItemView, participantPos.participantId());
DEBUG_LOG(m_logger) << "not in boundingBox " << participantPos.participantId;
bool intersectsBoundingBox = intersectsBoundingBoxCheck(aesItemView, participantPos.participantId);
if (!intersectsBoundingBox)
{
DEBUG_LOG(m_logger) << "Continue nach Bounding BoxCheck itemView: " << aesItemView.aesItemId << ", "
<< " paricipantId=" << participantPos.participantId();
<< " paricipantId=" << participantPos.participantId;
return false;
}
}
else
DEBUG_LOG(m_logger) << "in boundingBox participantId=" << participantPos.participantId();
const QPolygonF posStepPoly = m_handlerParticipant->getParticipantStep(participantPos.participantId(), aesItemView.zone);
DEBUG_LOG(m_logger) << "in boundingBox participantId=" << participantPos.participantId;
const QPolygonF posStepPoly = m_handlerParticipant->getParticipantStep(participantPos.participantId, aesItemView.zone);
if (posStepPoly.size() < 2)
@@ -463,7 +463,7 @@ bool HandlerParticipantBoobyTrap::calculateBoobyTrapParticipant(const CentralEff
const bool result = enteredOrCrossedArea(aesItemView.form, posStepPoly);
DEBUG_LOG(m_logger) << "enteredOrCrossedArea : "
<< " participantId=" << participantPos.participantId()
<< " participantId=" << participantPos.participantId
<< " aesItemId=" << aesItemView.aesItemId
<< " result=" << result;
// const bool result = enteredOrCrossedArea(aesItemView.form, partPosGeo);
@@ -485,10 +485,10 @@ void HandlerParticipantBoobyTrap::onParticipantPositionChanged(const CentralEffe
{
// Bounding Box von der Linie
DEBUG_LOG(m_logger) << "ParicipantPos "
<< " participantId=" << partPos.participantId()
<< " participantTypeId=" << partPos.participantTypeId()
<< " participantPos: lat=" << partPos.pos().lat()
<< " lon=" << partPos.pos().lon()
<< " participantId=" << partPos.participantId
<< " participantTypeId=" << partPos.participantTypeId
<< " participantPos: lat=" << partPos.pos.lat
<< " lon=" << partPos.pos.lon
<< " Anzahl BoobyTraps=" << m_boobyTrapItems.size();
if (partPos.vulnerabilityState == ProjectDataManagement::VulnerabilityState::VulnerabilityState_CatastrophicKill)
@@ -497,7 +497,7 @@ void HandlerParticipantBoobyTrap::onParticipantPositionChanged(const CentralEffe
return;
}
if (m_handlerParticipant->getEquipmentNumber(partPos.participantId()) == 0)
if (m_handlerParticipant->getEquipmentNumber(partPos.participantId) == 0)
{
DEBUG_LOG(m_logger) << "Not handle position: participant has no equipment number";
return;
@@ -512,7 +512,7 @@ void HandlerParticipantBoobyTrap::onParticipantPositionChanged(const CentralEffe
<< ", Box bottomLeft = " << CentralEffectSimulation::debug(boobyTrap.boundingBoxBottomLeft)
<< ", topRight = " << CentralEffectSimulation::debug(boobyTrap.boundingBoxTopRight);
const QPolygonF posStepPoly = m_handlerParticipant->getParticipantStep(partPos.participantId(), boobyTrap.zone);
const QPolygonF posStepPoly = m_handlerParticipant->getParticipantStep(partPos.participantId, boobyTrap.zone);
if (posStepPoly.size() < 2)
return;
@@ -537,18 +537,18 @@ void HandlerParticipantBoobyTrap::sendParticipantEvent(const CentralEffectSimula
const ProjectDataManagement::PdmEventType eventType)
{
DEBUG_LOG(m_logger) << "sendParticipantEvent aesItemId=" << boobyTrapItem.aesItemId
<< " participantId=" << participantPosition.participantId();
<< " participantId=" << participantPosition.participantId;
if ((m_triggeredMineParticipant.contains(boobyTrapItem.aesItemId))
&& (m_triggeredMineParticipant.value(boobyTrapItem.aesItemId) == participantPosition.participantId()))
&& (m_triggeredMineParticipant.value(boobyTrapItem.aesItemId) == participantPosition.participantId))
{
DEBUG_LOG(m_logger) << "m_triggeredMineParticipant already sent "
<< " aesItemId=" << boobyTrapItem.aesItemId
<< " participantId=" << participantPosition.participantId();
<< " participantId=" << participantPosition.participantId;
return;
}
m_triggeredMineParticipant.insert(boobyTrapItem.aesItemId, participantPosition.participantId());
ParticipantManagement::TypeClass typeClass = m_handlerParticipant->typeClassFromTypeId(participantPosition.participantTypeId());
m_triggeredMineParticipant.insert(boobyTrapItem.aesItemId, participantPosition.participantId);
ParticipantManagement::TypeClass typeClass = m_handlerParticipant->typeClassFromTypeId(participantPosition.participantTypeId);
if (typeClass == ParticipantManagement::TypeClass::Unit ||
typeClass == ParticipantManagement::TypeClass::SupportUnit ||
@@ -556,7 +556,7 @@ void HandlerParticipantBoobyTrap::sendParticipantEvent(const CentralEffectSimula
typeClass == ParticipantManagement::TypeClass::Unknown)
return;
int equipmentNumber = m_ddsHandler->participantId2EquipNo(participantPosition.participantId());
int equipmentNumber = m_ddsHandler->participantId2EquipNo(participantPosition.participantId);
if (equipmentNumber <= 0)
return;
@@ -566,35 +566,35 @@ void HandlerParticipantBoobyTrap::sendParticipantEvent(const CentralEffectSimula
INFO_LOG(m_logger) << "BoobyTrap Position found";
AreaEffectSimulation::BoobyTrap boobyTrap = m_boobyTraps.value(boobyTrapItem.aesItemId);
pe.position().lat(boobyTrap.impactPosition().lat());
pe.position().lon(boobyTrap.impactPosition().lon());
pe.position.lat = boobyTrap.impactPosition.lat;
pe.position.lon = boobyTrap.impactPosition.lon;
}
else
{
INFO_LOG(m_logger) << "No BoobyTrap Position found";
pe.position(participantPosition.pos());
pe.position = participantPosition.pos;
}
const AreaEffectSimulation::BoobyTrap &bt = m_ddsHandler->dtcAes()->boobyTrap(boobyTrapItem.aesItemId);
DEBUG_LOG(m_logger) << "sendParticipantEvent participantId=" << participantPosition.participantId()
<< " lat= " << participantPosition.pos().lat()
<< " lon= " << participantPosition.pos().lon()
DEBUG_LOG(m_logger) << "sendParticipantEvent participantId=" << participantPosition.participantId
<< " lat= " << participantPosition.pos.lat
<< " lon= " << participantPosition.pos.lon
<< " equipmentNumber=" << equipmentNumber
<< " eventType=" << eventType;
pe.id(m_ddsHandler->getParticipantEventId());
pe.eventTypeId(eventType);
pe.participantId(participantPosition.participantId());
pe.eventTime(participantPosition.sampleTime());
pe.aesItemId(boobyTrapItem.aesItemId);
pe.partyId(participantPosition.partyId());
pe.aesName(bt.name());
pe.equipmentNumber(equipmentNumber);
pe.friendlyFire(boobyTrapItem.partyId == participantPosition.partyId());
pe.id = m_ddsHandler->getParticipantEventId();
pe.eventTypeId = eventType;
pe.participantId = participantPosition.participantId;
pe.eventTime = participantPosition.sampleTime;
pe.aesItemId = boobyTrapItem.aesItemId;
pe.partyId = participantPosition.partyId;
pe.aesName = bt.name;
pe.equipmentNumber = equipmentNumber;
pe.friendlyFire = boobyTrapItem.partyId == participantPosition.partyId;
m_ddsHandler->dtsCes()->publish(pe);
qint64 id = pe.id();
qint64 id = pe.id;
QTimer::singleShot(1 * 60 * 1000, this, [id, this]() { m_ddsHandler->dtsCes()->removeParticipantEventByKey(id); });
}
@@ -604,8 +604,8 @@ void HandlerParticipantBoobyTrap::sendParticipantHit(const CentralEffectSimulati
{
// Q_UNUSED(eventType); // not used - no alarm for this
const int equipNo = m_ddsHandler->participantId2EquipNo(participantPosition.participantId());
const int participantId = participantPosition.participantId();
const int equipNo = m_ddsHandler->participantId2EquipNo(participantPosition.participantId);
const int participantId = participantPosition.participantId;
const int originatorEquipNo = 0;
if ( equipNo == 0)
@@ -614,24 +614,24 @@ void HandlerParticipantBoobyTrap::sendParticipantHit(const CentralEffectSimulati
Core::GeoPosition position;
// TODO: Hier wird die Mitte der Bounding-Box genommen und nicht die Position vom Participant
position.lat(participantPosition.pos().lat());
position.lon(participantPosition.pos().lon());
position.lat = participantPosition.pos.lat;
position.lon = participantPosition.pos.lon;
const TrainingAreaBase::TabPosition pos(position, participantPosition.reportingSource(), 0, 0);
const TrainingAreaBase::TabPosition pos(position, participantPosition.reportingSource, 0, 0);
int remainTasCodeIndirect = m_ddsHandler->remainingTasCode(boobyTrap.chargeStruct);
//pos.position(position);
//pos.reportingSource(participantPosition.reportingSource());
DEBUG_LOG(m_logger) << "sendParticipantHit participantId=" << participantId
<< " equipmentNumber=" << equipNo
<< " chargeTypeId=" << boobyTrap.chargeStruct.chargeTypeId()
<< " chargeTypeId=" << boobyTrap.chargeStruct.chargeTypeId
<< " eventType=" << eventType
<< " remainTasCodeIndirect=" << remainTasCodeIndirect;
TrainingAreaBase::SendCesHitRequest requestTab(
equipNo, // equipmentNumber
participantId, // participantId
boobyTrap.chargeStruct.chargeTypeId(), // chargeTypeId
boobyTrap.chargeStruct.chargeTypeId, // chargeTypeId
boobyTrap.aesItemId, // aesId
originatorEquipNo, // originatorEquipmentNumber
remainTasCodeIndirect, // IED heavy
@@ -667,8 +667,8 @@ void HandlerParticipantBoobyTrap::sendFtcBoobyTrapTrigger(int aesItemId)
{
auto ftcAes = m_ddsHandler->ftcAes();
AreaEffectSimulation::BoobyTrapTriggerRequest hr;
hr.id(aesItemId);
hr.triggered(true);
hr.id = aesItemId;
hr.triggered = true;
DEBUG_LOG(m_logger) << "sendFtcAesRemoveBoobyTrap: id=" << hr;
ftcAes->boobyTrapTriggerRequest(hr, this);
}
@@ -84,47 +84,47 @@ bool HandlerParticipantOffRouteMine::init()
void HandlerParticipantOffRouteMine::onOffRouteMineChanged(const AreaEffectSimulation::OffRouteMine &data, DataModification modType)
{
if (data.isDeleted()
|| data.effectStateId() == AreaEffectSimulation::AesEffectState::EsExpired
|| data.effectStateId() == AreaEffectSimulation::AesEffectState::EsRemoved
if (data.isDeleted
|| data.effectStateId == AreaEffectSimulation::AesEffectState::EsExpired
|| data.effectStateId == AreaEffectSimulation::AesEffectState::EsRemoved
|| modType == DataModification::eRemoved)
{
m_offRouteMines.remove(data.id());
m_offRouteMineItems.remove(data.id());
m_offRouteMineItemsSecondary.remove(data.id());
m_offRouteMines.remove(data.id);
m_offRouteMineItems.remove(data.id);
m_offRouteMineItemsSecondary.remove(data.id);
return;
}
INFO_LOG(m_logger) << "HandlerParticipantOffRouteMine::onOffRouteMineChanged";
m_offRouteMines.insert(data.id(), data);
m_offRouteMines.insert(data.id, data);
}
void HandlerParticipantOffRouteMine::onAesItemViewChanged(const AreaEffectSimulation::AesItemView &data, DataModification modType)
{
INFO_LOG(m_logger) << "HandlerParticipantOffRouteMine::onAesItemViewChanged";
if ( data.effectStateId() == AreaEffectSimulation::AesEffectState::EsExpired
|| data.effectStateId() == AreaEffectSimulation::AesEffectState::EsRemoved
if ( data.effectStateId == AreaEffectSimulation::AesEffectState::EsExpired
|| data.effectStateId == AreaEffectSimulation::AesEffectState::EsRemoved
|| modType == DataModification::eRemoved)
{
return;
}
//
if (data.aesTypeId() != AreaEffectSimulation::AesType::AtOffRouteMine
&& data.aesTypeId() != AreaEffectSimulation::AesType::AtOffRouteMineSecondary)
if (data.aesTypeId != AreaEffectSimulation::AesType::AtOffRouteMine
&& data.aesTypeId != AreaEffectSimulation::AesType::AtOffRouteMineSecondary)
return;
const int aesItemId = data.aesItemId();
const int aesItemId = data.aesItemId;
DEBUG_LOG(m_logger) << "Got AesItemView id: " << aesItemId
<< ", type: " << data.aesTypeId()
<< ", effectState: " << data.effectStateId()
<< ", type: " << data.aesTypeId
<< ", effectState: " << data.effectStateId
<< ", modType: " << modType;
if (modType == DataModification::eAdded
|| modType == DataModification::eModified)
{
const AreaEffectSimulation::AesEffectState &effectState = data.effectStateId();
switch (effectState.underlying())
const AreaEffectSimulation::AesEffectState &effectState = data.effectStateId;
switch (effectState)
{
case AreaEffectSimulation::AesEffectState::EsActivated:
{
@@ -133,10 +133,10 @@ void HandlerParticipantOffRouteMine::onAesItemViewChanged(const AreaEffectSimula
prevData.aesItemId = 0;
const CentralEffectSimulation::AesItemViewUtm aesItemViewUtm = CentralEffectSimulation::AesItemViewUtm::create(data, prevData, impactRadius);
if (data.aesTypeId() == AreaEffectSimulation::AesType::AtOffRouteMine)
m_offRouteMineItems.insert(data.aesItemId(), aesItemViewUtm);
if (data.aesTypeId() == AreaEffectSimulation::AesType::AtOffRouteMineSecondary)
m_offRouteMineItemsSecondary.insert(data.aesItemId(), aesItemViewUtm);
if (data.aesTypeId == AreaEffectSimulation::AesType::AtOffRouteMine)
m_offRouteMineItems.insert(data.aesItemId, aesItemViewUtm);
if (data.aesTypeId == AreaEffectSimulation::AesType::AtOffRouteMineSecondary)
m_offRouteMineItemsSecondary.insert(data.aesItemId, aesItemViewUtm);
// DEBUG_LOG(m_logger) << "Check each participant";
// // Check each participant
// const auto partPosMap = m_handlerParticipant->positions();
@@ -237,10 +237,10 @@ void HandlerParticipantOffRouteMine::calculateOffRouteMineParticipantSecondary(c
const CentralEffectSimulation::HandlerParticipant::CesParticipantData &participantPos)
{
bool result;
const QPointF partPosGeo = CentralEffectSimulation::geographic2Utm(participantPos.pos(), aesItemView.zone);
const QPointF partPosGeo = CentralEffectSimulation::geographic2Utm(participantPos.pos, aesItemView.zone);
DEBUG_LOG(m_logger) << "calculateOffRouteMineParticipantSecondary itemView.id=" << aesItemView.aesItemId
<< " participantId=" << participantPos.participantId();
<< " participantId=" << participantPos.participantId;
DEBUG_LOG(m_logger) << "OffRouteMine id = " << aesItemView.aesItemId
<< ", Box bottomLeft = " << CentralEffectSimulation::debug(aesItemView.boundingBoxBottomLeft)
@@ -264,7 +264,7 @@ void HandlerParticipantOffRouteMine::calculateOffRouteMineParticipantSecondary(c
result = insideSecondaryArea(aesItemView.form, partPosGeo);
DEBUG_LOG(m_logger) << "insideSecondaryArea : "
<< " participantId=" << participantPos.participantId()
<< " participantId=" << participantPos.participantId
<< " aesItemId=" << aesItemView.aesItemId
<< " result=" << result;
// const bool result = enteredOrCrossedArea(aesItemView.form, partPosGeo);
@@ -284,20 +284,20 @@ void HandlerParticipantOffRouteMine::calculateOffRouteMineParticipant(const Cent
{
DEBUG_LOG(m_logger) << "calculateOffRouteMineParticipant itemView.id=" << aesItemView.aesItemId
<< " participantId=" << participantPos.participantId();
<< " participantId=" << participantPos.participantId;
DEBUG_LOG(m_logger) << "OffRouteMine id = " << aesItemView.aesItemId
<< ", Box bottomLeft = " << CentralEffectSimulation::debug(aesItemView.boundingBoxBottomLeft)
<< ", topRight = " << CentralEffectSimulation::debug(aesItemView.boundingBoxTopRight);
const QPolygonF posStepPoly = m_handlerParticipant->getParticipantStep(participantPos.participantId(), m_zone);
const QPolygonF posStepPoly = m_handlerParticipant->getParticipantStep(participantPos.participantId, m_zone);
if (posStepPoly.size() < 2)
return;
const bool result = enteredOrCrossedArea(aesItemView.form, posStepPoly);
DEBUG_LOG(m_logger) << "enteredOrCrossedArea : "
<< " participantId=" << participantPos.participantId()
<< " participantId=" << participantPos.participantId
<< " aesItemId=" << aesItemView.aesItemId
<< " result=" << result;
// const bool result = enteredOrCrossedArea(aesItemView.form, partPosGeo);
@@ -316,15 +316,15 @@ void HandlerParticipantOffRouteMine::calculateOffRouteMineParticipant(const Cent
void HandlerParticipantOffRouteMine::onParticipantPositionChanged(const CentralEffectSimulation::HandlerParticipant::CesParticipantData &partPos)
{
ParticipantManagement::TypeClass typeClass = m_handlerParticipant->typeClassFromTypeId(partPos.participantTypeId());
ParticipantManagement::TypeClass typeClass = m_handlerParticipant->typeClassFromTypeId(partPos.participantTypeId);
// Bounding Box von der Linie
DEBUG_LOG(m_logger) << "ParicipantPos "
<< " participantId=" << partPos.participantId()
<< " participantTypeId=" << partPos.participantTypeId()
<< " participantId=" << partPos.participantId
<< " participantTypeId=" << partPos.participantTypeId
<< " typeClass=" << typeClass
<< " participantPos: lat=" << partPos.pos().lat()
<< " lon=" << partPos.pos().lon()
<< " participantPos: lat=" << partPos.pos.lat
<< " lon=" << partPos.pos.lon
<< " Anzahl OffRouteMines=" << m_offRouteMineItems.size();
if (partPos.vulnerabilityState == ProjectDataManagement::VulnerabilityState::VulnerabilityState_CatastrophicKill)
@@ -341,7 +341,7 @@ void HandlerParticipantOffRouteMine::onParticipantPositionChanged(const CentralE
return;
}
if (m_handlerParticipant->getEquipmentNumber(partPos.participantId()) == 0)
if (m_handlerParticipant->getEquipmentNumber(partPos.participantId) == 0)
{
DEBUG_LOG(m_logger) << "Not handle position: participant has no equipment number";
return;
@@ -366,7 +366,7 @@ void HandlerParticipantOffRouteMine::onParticipantPositionChanged(const CentralE
});
// if (!boundingBoxOffRouteMine.containsPoint(partPosGeo, Qt::OddEvenFill))
// continue;
const QVector<QPointF> utmStepPoly = m_handlerParticipant->getParticipantStep(partPos.participantId(), m_zone);
const QVector<QPointF> utmStepPoly = m_handlerParticipant->getParticipantStep(partPos.participantId, m_zone);
QPolygonF posStepPoly;
@@ -394,7 +394,7 @@ void HandlerParticipantOffRouteMine::sendParticipantEvent(const CentralEffectSim
const CentralEffectSimulation::HandlerParticipant::CesParticipantData &participantPosition,
const ProjectDataManagement::PdmEventType eventType)
{
ParticipantManagement::TypeClass typeClass = m_handlerParticipant->typeClassFromTypeId(participantPosition.participantTypeId());
ParticipantManagement::TypeClass typeClass = m_handlerParticipant->typeClassFromTypeId(participantPosition.participantTypeId);
if (typeClass == ParticipantManagement::TypeClass::Unit ||
typeClass == ParticipantManagement::TypeClass::SupportUnit ||
@@ -402,7 +402,7 @@ void HandlerParticipantOffRouteMine::sendParticipantEvent(const CentralEffectSim
typeClass == ParticipantManagement::TypeClass::Unknown)
return;
int equipmentNumber = m_ddsHandler->participantId2EquipNo(participantPosition.participantId());
int equipmentNumber = m_ddsHandler->participantId2EquipNo(participantPosition.participantId);
if (equipmentNumber <= 0)
return;
@@ -412,35 +412,35 @@ void HandlerParticipantOffRouteMine::sendParticipantEvent(const CentralEffectSim
INFO_LOG(m_logger) << "OffRouteMine Position found";
AreaEffectSimulation::OffRouteMine offRouteMine = m_offRouteMines.value(offRouteItem.aesItemId);
pe.position().lat(offRouteMine.area().cornerBottomLeft().lat());
pe.position().lon(offRouteMine.area().cornerBottomLeft().lon());
pe.position.lat = offRouteMine.area.cornerBottomLeft.lat;
pe.position.lon = offRouteMine.area.cornerBottomLeft.lon;
}
else
{
INFO_LOG(m_logger) << "No OffRouteMine Position found";
pe.position(participantPosition.pos());
pe.position = participantPosition.pos;
}
const AreaEffectSimulation::OffRouteMine &of = m_ddsHandler->dtcAes()->offRouteMine(offRouteItem.aesItemId);
DEBUG_LOG(m_logger) << "sendParticipantEvent participantId=" << participantPosition.participantId()
<< " lat= " << participantPosition.pos().lat()
<< " lon= " << participantPosition.pos().lon()
DEBUG_LOG(m_logger) << "sendParticipantEvent participantId=" << participantPosition.participantId
<< " lat= " << participantPosition.pos.lat
<< " lon= " << participantPosition.pos.lon
<< " equipmentNumber=" << equipmentNumber
<< " eventType=" << eventType
<< " Name=" << of.name();
pe.id(m_ddsHandler->getParticipantEventId());
pe.eventTypeId(eventType);
pe.participantId(participantPosition.participantId());
pe.eventTime(participantPosition.sampleTime());
pe.aesItemId(offRouteItem.aesItemId);
pe.partyId(participantPosition.partyId());
pe.aesName(of.name());
pe.equipmentNumber(equipmentNumber);
pe.friendlyFire(offRouteItem.partyId == participantPosition.partyId());
<< " Name=" << of.name;
pe.id = m_ddsHandler->getParticipantEventId();
pe.eventTypeId = eventType;
pe.participantId = participantPosition.participantId;
pe.eventTime = participantPosition.sampleTime;
pe.aesItemId = offRouteItem.aesItemId;
pe.partyId = participantPosition.partyId;
pe.aesName = of.name;
pe.equipmentNumber = equipmentNumber;
pe.friendlyFire = offRouteItem.partyId == participantPosition.partyId;
m_ddsHandler->dtsCes()->publish(pe);
qint64 id = pe.id();
qint64 id = pe.id;
QTimer::singleShot(1 * 60 * 1000, this, [id, this]() { m_ddsHandler->dtsCes()->removeParticipantEventByKey(id); });
}
@@ -449,8 +449,8 @@ void HandlerParticipantOffRouteMine::sendParticipantHit(const CentralEffectSimul
const ProjectDataManagement::PdmEventType eventType)
{
const int equipNo = m_ddsHandler->participantId2EquipNo(participantPosition.participantId());
const int participantId = participantPosition.participantId();
const int equipNo = m_ddsHandler->participantId2EquipNo(participantPosition.participantId);
const int participantId = participantPosition.participantId;
const int originatorEquipNo = 0;
DEBUG_LOG(m_logger) << "sendParticipantHit participantId=" << participantId
@@ -459,10 +459,10 @@ void HandlerParticipantOffRouteMine::sendParticipantHit(const CentralEffectSimul
Core::GeoPosition position;
// TODO: Hier wird die Mitte der Bounding-Box genommen und nicht die Position vom Participant
position.lat(participantPosition.pos().lat());
position.lon(participantPosition.pos().lon());
position.lat = participantPosition.pos.lat;
position.lon = participantPosition.pos.lon;
const TrainingAreaBase::TabPosition pos(position, participantPosition.reportingSource(), 0, 0);
const TrainingAreaBase::TabPosition pos(position, participantPosition.reportingSource, 0, 0);
//pos.position(position);
//pos.reportingSource(participantPosition.reportingSource());
@@ -474,7 +474,7 @@ void HandlerParticipantOffRouteMine::sendParticipantHit(const CentralEffectSimul
TrainingAreaBase::SendCesHitRequest requestTab(
equipNo, // equipmentNumber
participantId, // participantId
offRouteMine.chargeStruct.chargeTypeId(), // chargeTypeId
offRouteMine.chargeStruct.chargeTypeId, // chargeTypeId
offRouteMine.aesItemId, // aesId
originatorEquipNo, // originatorEquipmentNumber
remainTasCodeIndirect, // IED heavy
@@ -510,8 +510,8 @@ void HandlerParticipantOffRouteMine::sendFtcOffRouteMineTrigger(int aesItemId)
{
auto ftcAes = m_ddsHandler->ftcAes();
AreaEffectSimulation::OffRouteMineTriggerRequest hr;
hr.id(aesItemId);
hr.triggered(true);
hr.id = aesItemId;
hr.triggered = true;
DEBUG_LOG(m_logger) << "send OffRouteMineTriggerRequest: id=" << hr;
ftcAes->offRouteMineTriggerRequest(hr, this);
}
@@ -29,7 +29,7 @@ AesItemViewUtm AesItemViewUtm::create(const AreaEffectSimulation::AesItemView &a
//ret.zone;
ret.aesItemId = aiv.aesItemId;
ret.chargeStruct = aiv.chargeStruct;
ret.partyId = aiv.partyId.is_set() ? aiv.partyId.get() : -1;
ret.partyId = aiv.partyId.has_value() ? aiv.partyId.get() : -1;
ret.dusMineId = -1;
ret.isSupplyTruck = isSupplyTruck;
ret.aesTypeId = aiv.aesTypeId;
@@ -126,7 +126,7 @@ void HandlerParticipant::onParticipantPositionChanged(const ParticipantManagemen
return;
// [GUEZE-3102] Aufgesessene Teilnehmer bekommen den Schaden vom Fahrzeug, auf dem sie aufgesessen sind.
if (data.mountedOn.is_set())
if (data.mountedOn.has_value())
return;
int floorId = m_handlerBuildingData->getFloorIdFromRoomId(data.roomId);
int lastFloorId;