VR-Forces 4.10 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
damageProbabilityResults.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 2018 MaK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************/
5 
6 #if !defined(Q_MOC_RUN)
13 #endif
14 
15 #include <QtWidgets/QDialog>
16 
17 #include <set>
18 
19 namespace makVrv
20 {
21  class DtDe;
22 }
23 
24 class QGridLayout;
25 class QHBoxLayout;
26 class QVBoxLayout;
27 class QScrollArea;
28 class QSlider;
29 class QCheckBox;
30 class QLabel;
31 class QPushButton;
32 class QListWidget;
34 class DtPlotPicker;
35 class QwtPlot;
36 class QwtPlotCurve;
37 class QwtLegend;
44 class DtUiElementEvent;
47 
50 {
51  Q_OBJECT
52 
53 public:
56 
57  virtual ~DtDamageProbabilityResults();
58 
59  virtual void setAttacker(const DtObjectType&);
60  virtual void setDefender(const DtObjectType&);
61 
62 protected:
64  {
65  QWidget* canvas;
66  QVBoxLayout* layout;
67  QHBoxLayout* buttonCenter;
69  QHBoxLayout* labelLayout;
73  };
74 
76  {
77  AmmunitionInformation() : controlTable(0), maximumRange(0.) {};
78  AmmunitionInformation(const DtTargetingControlTable* c, double r) : controlTable(c), maximumRange(r) {};
79  AmmunitionInformation(const AmmunitionInformation& orig) : controlTable(orig.controlTable), maximumRange(orig.maximumRange) {};
80 
81  const DtTargetingControlTable* controlTable;
82  double maximumRange;
83  };
84 
85  typedef std::map<const DtAmmunitionParamsEntry*, AmmunitionInformation> AmmunitionMap;
86 
87  virtual void slot_revertedMunitions(std::set<makVrf::DtEntityMapperKey>);
88  virtual SimulationObject createSimulationObject(const DtString&);
89  virtual double maximumRangeForMunition(const DtAmmunitionParamsEntry* ape) const;
90 
91  virtual void setIcon(const SimulationObject&);
92  virtual void selectSimulationObject(SimulationObject&);
93  virtual void slot_resetIcons();
94  virtual void attack();
95  virtual QWidget* showError(const QString&, const QString& toDo, int row, int col);
96  virtual AmmunitionMap ammunitionThatCanTargetDefender(const DtSimulationModelSetLoader::TargetingControlAndRangeTables& targets) const;
97  virtual double findMaximumRange(const AmmunitionMap&) const;
98  virtual bool graphAttack(const AmmunitionMap&, const DtString& face, double angleOfIncidence);
99  virtual void clearPlotLines();
100  virtual QVector<QPointF> calculateIndirectFire(const DtMunitionDetonationPowerEntry*, const DtAmmunitionParamsEntry*,
101  const DtRangeProbabilityTable* hitTable, const DtString&, const DtString&, double angleOfIncidence) const;
102  virtual QVector<QPointF> calculateFromHitTable(const DtMunitionDetonationPowerEntry*, const DtAmmunitionParamsEntry*,
103  const DtRangeProbabilityTable* hitTable, const DtString&, const DtString&, double angleOfIncidence) const;
104  virtual QVector<QPointF> createPlotLine(const DtMunitionDetonationPowerEntry*, const DtAmmunitionParamsEntry*,
105  const DtRangeProbabilityTable* hitTable, const DtString&, const DtString&, double angleOfIncidence) const;
106  virtual bool isIndirectFire(const DtAmmunitionParamsEntry*) const;
107  virtual bool getIndirectFireValues(const DtAmmunitionParamsEntry*, double& probableErrorInRange, double& probableErrorInDisplacement,
108  double& minRange, double& maxRange) const;
109  virtual double calculateIndirectDistanceFromTarget(double probableErrorInRange, double probableErrorInDisplacement) const;
110  virtual double findMaximumRange(const DtAmmunitionParamsEntry* ammo) const;
111 
112  virtual double killPercentage(double range, const DtPowerRangeDeterminant*, const DtDamageProbabilityTable*,
113  const DtString& type, const DtString& surface, double angleOfIncidence, double* retPower = 0, bool indirect = false) const;
114  virtual const DtRangeProbabilityTable* hitTableForAmmunition(const DtAmmunitionParamsEntry*,
115  const DtComponentSystemDefinition** definition = 0) const;
116  virtual double hitPercentage(const DtRangeProbabilityTable* hitTable, double range) const;
117 
119  virtual double killPercentage(double range, const DtMunitionDetonationPowerEntry*, const DtAmmunitionParamsEntry*,
120  const DtRangeProbabilityTable* hitTagble, const DtString& type, const DtString& surface, double angleOfIncidence,
121  double* retPower = 0, DtString* retPowerType = 0, bool indirect = false) const;
122 
124  virtual double killPercentageModification(double range, double percent, const DtAmmunitionParamsEntry*,
125  const DtRangeProbabilityTable*) const;
126 
127  virtual void setupForAnglesOfIncidence(const DtDamageProbabilityTable*, const DtString&, double angleOfIncidence);
128  virtual void setupFacesWidget(const DtDamageProbabilityTable*);
129 
130  virtual void uiEvent(const DtUiElementEvent&);
131  virtual void graphLineColorChanged(const QColor& oldColor, const QColor& newColor);
132 
133  virtual void clearDetailedData();
134  virtual void addDetailedDataLabel(int col, const QString&);
135  virtual bool getInformationForAmmuinitionAtRange(const DtAmmunitionParamsEntry*, double range, const DtRangeProbabilityTable*,
136  const DtDamageProbabilityTable*&, double& hit, double& power, double& killPercent, DtString& powerType, bool& beyondMaxRange, double& maximumRange) const;
137  virtual QWidget* setDetailedDataValue(int row, int col, const QString& value, bool isLink);
138 
139  virtual void replotAllCurves();
140 
141  virtual void slot_labelModified(const std::vector<DtObjectType>&);
142  virtual void slot_objectTypeAboutToBeChanged(const DtObjectType& oldType, const DtObjectType& newType);
143  virtual QLabel* addRowLabel(int row, const QString& ammoLabel);
144 
145  virtual QWidget* addRegenerateGraph(int row);
146  virtual void clearRegenerateGraph(int row);
147  virtual void regenerateGraphLine(int row);
148  virtual QVector<QPointF> createPlotLine(const DtAmmunitionParamsEntry* entry, const DtString& surface, double angleOfIncidence,
149  const DtDamageProbabilityTable** = 0);
150 
151  virtual QWidget* addAdditionalInformationText(int row, const QString& text);
152  virtual QWidget* addAdditionalWarningText(int row, const QString& text);
153  virtual QWidget* addAdditionalText(int row, const QString& text, const std::string& icon);
154  virtual void clearAdditionalInformationText(int row);
155  virtual void showAdditionalInformation(const QString&);
156  virtual QString indirectFireText(const DtAmmunitionParamsEntry* entry, double power) const;
157  virtual void processDataChangedEvent(const QString&);
158 
159  virtual QString damageTableCannotBeDamagedBy(const DtAmmunitionParamsEntry*) const;
160  virtual QString damageTableCannotBeDamagedBy(const AmmunitionMap&) const;
161  virtual QString weaponCannotDamage(const DtRwDamageByMunitionPowerMap*) const;
162 
163 protected slots:
164  virtual void selectAttacker();
165  virtual void selectDefender();
166  virtual void selectFace(const DtString&);
167  virtual void legendClicked(const QVariant& itemInfo, int index);
168  virtual void setupForAngleOfIncidence(double);
169  virtual void showDetailedData(const QPointF&);
170  virtual void selectAppropriateItem();
171  virtual void editSimulationObject();
172  virtual void onSwap();
173  virtual void itemClicked();
174  virtual void showCurveChanged();
175 
176 public:
177  QVBoxLayout* myMainLayout;
178  QHBoxLayout* myGraphLayout;
179 
180  QHBoxLayout* myButtonsLayout;
181  QVBoxLayout* myVsLayout;
184 
187 
190 
192 
193  QwtPlot* myGraph;
194  QwtLegend* myLegend;
196 
197  QVBoxLayout* mySelectionLayout;
200 
203 
204  struct HitCurve
205  {
206  QwtPlotCurve* curve;
207  QHBoxLayout* layout;
209  QVector<QPointF> points;
210  int row;
211  };
212 
213  typedef std::map<const DtAmmunitionParamsEntry*, HitCurve> Curves;
215 
217  QGridLayout* myDetailedDataLayout;
218  QHBoxLayout* myDataLayout;
219  std::map<int, std::map<int, QWidget*> > myDetailedDataWidgets;
220  std::vector<QLabel*> myDetailedDataLabels;
221  QwtPlotCurve* mySelectionLine;
222 
224 
225 protected:
236 
238  {
240  double averagePower;
241  double averageKill;
243  };
244 
245  typedef std::map<const DtAmmunitionParamsEntry*, IndirectFireResult> IndirectFireResults;
247 };
248 
251 {
252 public:
255 
258 
261 
263  static void registerInstance(makVrv::DtDe&, DtDamageProbabilityResultsCreator*);
264 
266  virtual DtDamageProbabilityResults* create(QWidget* parent);
267 
269  virtual DtDamageProbabilityResults* globalInstance(QWidget* parent);
270 
271 protected:
274 };
QLabel * myAngleOfIncidenceLabel
Definition: damageProbabilityResults.h:202
QWidget * canvas
Definition: damageProbabilityResults.h:65
QVBoxLayout * myMainLayout
Definition: damageProbabilityResults.h:177
QHBoxLayout * myButtonsLayout
Definition: damageProbabilityResults.h:180
QwtPlotCurve * curve
Definition: damageProbabilityResults.h:206
makVrv::DtSignalConnectionManager myConnections
Definition: damageProbabilityResults.h:227
Definition: entityMapperKey.h:23
Virtual base class.
Definition: DtVirtualBaseClass.h:19
QLabel * label
Definition: damageProbabilityResults.h:71
double myLastRangeSelected
Definition: damageProbabilityResults.h:233
QPushButton * myAttackerButton
Definition: damageProbabilityResults.h:188
Definition: angleOfIncidenceSelectionWidget.h:18
DtFaceSelectionWidget * myFaces
Definition: damageProbabilityResults.h:199
Definition: damageProbabilityResults.h:237
Definition: damageProbabilityResults.h:63
std::map< int, std::map< int, QWidget * > > myDetailedDataWidgets
Definition: damageProbabilityResults.h:219
DtDamageProbabilityResults * myGlobalInstance
Definition: damageProbabilityResults.h:273
makVrv::DtSignalConnectionManager myGraphLineColorConnections
Definition: damageProbabilityResults.h:231
makVrv::DtDe & myDe
Definition: damageProbabilityResults.h:226
QwtPlotCurve * mySelectionLine
Definition: damageProbabilityResults.h:221
QVBoxLayout * myVsLayout
Definition: damageProbabilityResults.h:181
QVBoxLayout * mySelectionLayout
Definition: damageProbabilityResults.h:197
QHBoxLayout * labelLayout
Definition: damageProbabilityResults.h:69
double averagePower
Definition: damageProbabilityResults.h:240
Definition: damageProbabilityResults.h:204
DtComponentSystemDefinition * myDamageSystem
Definition: damageProbabilityResults.h:230
QHBoxLayout * myGraphLayout
Definition: damageProbabilityResults.h:178
SimulationObject myAttacker
Definition: damageProbabilityResults.h:185
makVrf::DtEntityMapperKey key
Definition: damageProbabilityResults.h:72
Definition: damageProbabilityResults.h:75
A readable/writable object that indicates the power of a detonation of a given type, potentially at different ranges from the point of impact.
Definition: powerRangeDeterminant.h:17
Curves myCurves
Definition: damageProbabilityResults.h:214
std::map< const DtComponentSystemDefinition *, std::pair< const DtTargetingControlTable *, const DtRangeProbabilityTable * > > TargetingControlAndRangeTables
Returns the targeting control and range tables.
Definition: simulationModelSetLoader.h:901
std::map< const DtAmmunitionParamsEntry *, IndirectFireResult > IndirectFireResults
Definition: damageProbabilityResults.h:245
int myIndirectFireRuns
Definition: damageProbabilityResults.h:235
QPushButton * myDefenderButton
Definition: damageProbabilityResults.h:189
Definition: faceSelectionWidget.h:27
QGridLayout * myDetailedDataLayout
Definition: damageProbabilityResults.h:217
QPushButton * button
Definition: damageProbabilityResults.h:68
Definition: objectType.h:27
DtRangeProbabilityTable is a readable/writable list of DtRangeProbEntrys.
Definition: rangeProbabilityTable.h:31
DtComponentSystemDefinition.
Definition: componentSystemDefinition.h:25
Contains makVrv::DtVirtualBaseClass class.
QLabel * myVsLabel
Definition: damageProbabilityResults.h:183
DtRwDamageByMunitionPowerMap * myDamageTable
Definition: damageProbabilityResults.h:229
QWidget * myDetailedDataWidget
Definition: damageProbabilityResults.h:223
QCheckBox * showCurve
Definition: damageProbabilityResults.h:208
QHBoxLayout * buttonCenter
Definition: damageProbabilityResults.h:67
DtPlotPicker * myPlotPicker
Definition: damageProbabilityResults.h:195
Creator for the canvas.
Definition: damageProbabilityResults.h:250
Add the ability to set decimals to cursor text.
Definition: plotPicker.h:10
QPushButton * editButton
Definition: damageProbabilityResults.h:70
AmmunitionInformation()
Definition: damageProbabilityResults.h:77
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
DtSimulationModelSetLoader::TargetingControlAndRangeTables myTargetingControlAndRangeTables
Definition: damageProbabilityResults.h:232
DtAngleOfIncidenceSelectionWidget * myAngleOfIncidenceSelectionWidget
Definition: damageProbabilityResults.h:201
DtDamageProbabilityTable.
Definition: damageProbabilityTable.h:20
SimulationObject myDefender
Definition: damageProbabilityResults.h:186
AmmunitionMap myAvailableAmmunition
Definition: damageProbabilityResults.h:228
std::map< const DtAmmunitionParamsEntry *, HitCurve > Curves
Definition: damageProbabilityResults.h:213
QHBoxLayout * layout
Definition: damageProbabilityResults.h:207
DtMunitionDetonationPowerEntry.
Definition: munitionDetonationPowerEntry.h:19
double myMaximumRange
Definition: damageProbabilityResults.h:234
QLabel * myFaceLabel
Definition: damageProbabilityResults.h:198
QwtPlot * myGraph
Definition: damageProbabilityResults.h:193
AmmunitionInformation(const DtTargetingControlTable *c, double r)
Definition: damageProbabilityResults.h:78
DtAmmunitionParamsEntry; descriptor that represents members of a DtAmmunitionParams.
Definition: ammunitionParamsEntry.h:20
std::map< const DtAmmunitionParamsEntry *, AmmunitionInformation > AmmunitionMap
Definition: damageProbabilityResults.h:85
QVBoxLayout * layout
Definition: damageProbabilityResults.h:66
Base class to provide boost signal/slot management.
double maximumRange
Definition: damageProbabilityResults.h:82
QwtLegend * myLegend
Definition: damageProbabilityResults.h:194
double averageKill
Definition: damageProbabilityResults.h:241
The DtUiElement class is the base for which all UI elements are defined.
Definition: uiElement.h:95
QLabel * myDetailedDataLabel
Definition: damageProbabilityResults.h:216
DtString powerType
Definition: damageProbabilityResults.h:242
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
QPushButton * myCloseButton
Definition: damageProbabilityResults.h:191
QHBoxLayout * myDataLayout
Definition: damageProbabilityResults.h:218
QPushButton * myReverseButton
Definition: damageProbabilityResults.h:182
IndirectFireResults myIndirectFireResults
Definition: damageProbabilityResults.h:246
int row
Definition: damageProbabilityResults.h:210
Definition: targetingControlTable.h:20
This class will allow the user to show damage probabilities between two Simulation Objects...
Definition: damageProbabilityResults.h:49
double averageRangeFromTarget
Definition: damageProbabilityResults.h:239
std::vector< QLabel * > myDetailedDataLabels
Definition: damageProbabilityResults.h:220
#define DT_DLL_simulationObjectEditorimpl
This file is used to determine how to build.
Definition: simulationObjectEditorImplDefines.h:32
QVector< QPointF > points
Definition: damageProbabilityResults.h:209
makVrv::DtDe & myDe
Definition: damageProbabilityResults.h:272

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)