VR-Forces 5.0.3 Developer's Guide
 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 QToolButton;
33 class QListWidget;
35 class DtPlotPicker;
36 class QwtPlot;
37 class QwtPlotCurve;
38 class QwtLegend;
45 class DtUiElementEvent;
48 
51 {
52  Q_OBJECT
53 
54 public:
57 
58  virtual ~DtDamageProbabilityResults();
59 
60  virtual void setAttacker(const DtObjectType&);
61  virtual void setDefender(const DtObjectType&);
62 
63 protected:
65  {
66  QWidget* canvas;
67  QVBoxLayout* layout;
68  QHBoxLayout* buttonCenter;
70  QHBoxLayout* labelLayout;
74  };
75 
77  {
78  AmmunitionInformation() : controlTable(0), maximumRange(0.) {};
79  AmmunitionInformation(const DtTargetingControlTable* c, double r) : controlTable(c), maximumRange(r) {};
80  AmmunitionInformation(const AmmunitionInformation& orig) : controlTable(orig.controlTable), maximumRange(orig.maximumRange) {};
81 
82  const DtTargetingControlTable* controlTable;
83  double maximumRange;
84  };
85 
86  typedef std::map<const DtAmmunitionParamsEntry*, AmmunitionInformation> AmmunitionMap;
87 
88  virtual void slot_revertedMunitions(std::set<makVrf::DtEntityMapperKey>);
89  virtual SimulationObject createSimulationObject(const DtString&);
90  virtual double maximumRangeForMunition(const DtAmmunitionParamsEntry* ape) const;
91 
92  virtual void setIcon(const SimulationObject&);
93  virtual void selectSimulationObject(SimulationObject&);
94  virtual void slot_resetIcons();
95  virtual void attack();
96  virtual QWidget* showError(const QString&, const QString& toDo, int row, int col);
97  virtual AmmunitionMap ammunitionThatCanTargetDefender(const DtSimulationModelSetLoader::TargetingControlAndRangeTables& targets) const;
98  virtual double findMaximumRange(const AmmunitionMap&) const;
99  virtual bool graphAttack(const AmmunitionMap&, const DtString& face, double angleOfIncidence);
100  virtual void clearPlotLines();
101  virtual QVector<QPointF> calculateIndirectFire(const DtMunitionDetonationPowerEntry*, const DtAmmunitionParamsEntry*,
102  const DtRangeProbabilityTable* hitTable, const DtString&, const DtString&, double angleOfIncidence) const;
103  virtual QVector<QPointF> calculateFromHitTable(const DtMunitionDetonationPowerEntry*, const DtAmmunitionParamsEntry*,
104  const DtRangeProbabilityTable* hitTable, const DtString&, const DtString&, double angleOfIncidence) const;
105  virtual QVector<QPointF> createPlotLine(const DtMunitionDetonationPowerEntry*, const DtAmmunitionParamsEntry*,
106  const DtRangeProbabilityTable* hitTable, const DtString&, const DtString&, double angleOfIncidence) const;
107  virtual bool isIndirectFire(const DtAmmunitionParamsEntry*) const;
108  virtual bool getIndirectFireValues(const DtAmmunitionParamsEntry*, double& probableErrorInRange, double& probableErrorInDisplacement,
109  double& minRange, double& maxRange) const;
110  virtual double calculateIndirectDistanceFromTarget(double probableErrorInRange, double probableErrorInDisplacement) const;
111  virtual double findMaximumRange(const DtAmmunitionParamsEntry* ammo) const;
112 
113  virtual double killPercentage(double range, const DtPowerRangeDeterminant*, const DtDamageProbabilityTable*,
114  const DtString& type, const DtString& surface, double angleOfIncidence, double* retPower = 0, bool indirect = false) const;
115  virtual const DtRangeProbabilityTable* hitTableForAmmunition(const DtAmmunitionParamsEntry*,
116  const DtComponentSystemDefinition** definition = 0) const;
117  virtual double hitPercentage(const DtRangeProbabilityTable* hitTable, double range) const;
118 
120  virtual double killPercentage(double range, const DtMunitionDetonationPowerEntry*, const DtAmmunitionParamsEntry*,
121  const DtRangeProbabilityTable* hitTagble, const DtString& type, const DtString& surface, double angleOfIncidence,
122  double* retPower = 0, DtString* retPowerType = 0, bool indirect = false) const;
123 
125  virtual double killPercentageModification(double range, double percent, const DtAmmunitionParamsEntry*,
126  const DtRangeProbabilityTable*) const;
127 
128  virtual void setupForAnglesOfIncidence(const DtDamageProbabilityTable*, const DtString&, double angleOfIncidence);
129  virtual void setupFacesWidget(const DtDamageProbabilityTable*);
130 
131  virtual void uiEvent(const DtUiElementEvent&);
132  virtual void graphLineColorChanged(const QColor& oldColor, const QColor& newColor);
133 
134  virtual void clearDetailedData();
135  virtual void addDetailedDataLabel(int col, const QString&);
136  virtual bool getInformationForAmmuinitionAtRange(const DtAmmunitionParamsEntry*, double range, const DtRangeProbabilityTable*,
137  const DtDamageProbabilityTable*&, double& hit, double& power, double& killPercent, DtString& powerType, bool& beyondMaxRange, double& maximumRange) const;
138  virtual QWidget* setDetailedDataValue(int row, int col, const QString& value, bool isLink);
139 
140  virtual void replotAllCurves();
141 
142  virtual void slot_labelModified(const std::vector<DtObjectType>&);
143  virtual void slot_objectTypeAboutToBeChanged(const DtObjectType& oldType, const DtObjectType& newType);
144  virtual QLabel* addRowLabel(int row, const QString& ammoLabel);
145 
146  virtual QWidget* addRegenerateGraph(int row);
147  virtual void clearRegenerateGraph(int row);
148  virtual void regenerateGraphLine(int row);
149  virtual QVector<QPointF> createPlotLine(const DtAmmunitionParamsEntry* entry, const DtString& surface, double angleOfIncidence,
150  const DtDamageProbabilityTable** = 0);
151 
152  virtual QWidget* addAdditionalInformationText(int row, const QString& text);
153  virtual QWidget* addAdditionalWarningText(int row, const QString& text);
154  virtual QWidget* addAdditionalText(int row, const QString& text, const std::string& icon);
155  virtual void clearAdditionalInformationText(int row);
156  virtual void showAdditionalInformation(const QString&);
157  virtual QString indirectFireText(const DtAmmunitionParamsEntry* entry, double power) const;
158  virtual void processDataChangedEvent(const QString&);
159 
160  virtual QString damageTableCannotBeDamagedBy(const DtAmmunitionParamsEntry*) const;
161  virtual QString damageTableCannotBeDamagedBy(const AmmunitionMap&) const;
162  virtual QString weaponCannotDamage(const DtRwDamageByMunitionPowerMap*) const;
163 
164 protected slots:
165  virtual void selectAttacker();
166  virtual void selectDefender();
167  virtual void selectFace(const DtString&);
168  virtual void legendClicked(const QVariant& itemInfo, int index);
169  virtual void setupForAngleOfIncidence(double);
170  virtual void showDetailedData(const QPointF&);
171  virtual void selectAppropriateItem();
172  virtual void editSimulationObject();
173  virtual void onSwap();
174  virtual void itemClicked();
175  virtual void showCurveChanged();
176  virtual void updateReverseButtonIcon();
177 
178 public:
179  QVBoxLayout* myMainLayout;
180  QHBoxLayout* myGraphLayout;
181 
182  QHBoxLayout* myButtonsLayout;
183  QVBoxLayout* myVsLayout;
186 
189 
192 
194 
195  QwtPlot* myGraph;
196  QwtLegend* myLegend;
198 
199  QVBoxLayout* mySelectionLayout;
202 
205 
206  struct HitCurve
207  {
208  QwtPlotCurve* curve;
209  QHBoxLayout* layout;
211  QVector<QPointF> points;
212  int row;
213  };
214 
215  typedef std::map<const DtAmmunitionParamsEntry*, HitCurve> Curves;
217 
219  QGridLayout* myDetailedDataLayout;
220  QHBoxLayout* myDataLayout;
221  std::map<int, std::map<int, QWidget*> > myDetailedDataWidgets;
222  std::vector<QLabel*> myDetailedDataLabels;
223  QwtPlotCurve* mySelectionLine;
224 
226 
227 protected:
238 
240  {
242  double averagePower;
243  double averageKill;
245  };
246 
247  typedef std::map<const DtAmmunitionParamsEntry*, IndirectFireResult> IndirectFireResults;
249 };
250 
253 {
254 public:
257 
260 
263 
265  static void registerInstance(makVrv::DtDe&, DtDamageProbabilityResultsCreator*);
266 
268  virtual DtDamageProbabilityResults* create(QWidget* parent);
269 
271  virtual DtDamageProbabilityResults* globalInstance(QWidget* parent);
272 
273 protected:
276 };
QLabel * myAngleOfIncidenceLabel
Definition: damageProbabilityResults.h:204
QWidget * canvas
Definition: damageProbabilityResults.h:66
QVBoxLayout * myMainLayout
Definition: damageProbabilityResults.h:179
QHBoxLayout * myButtonsLayout
Definition: damageProbabilityResults.h:182
QwtPlotCurve * curve
Definition: damageProbabilityResults.h:208
makVrv::DtSignalConnectionManager myConnections
Definition: damageProbabilityResults.h:229
Definition: entityMapperKey.h:23
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
QToolButton * myReverseButton
Definition: damageProbabilityResults.h:184
QLabel * label
Definition: damageProbabilityResults.h:72
double myLastRangeSelected
Definition: damageProbabilityResults.h:235
Definition: angleOfIncidenceSelectionWidget.h:18
DtFaceSelectionWidget * myFaces
Definition: damageProbabilityResults.h:201
Definition: damageProbabilityResults.h:239
Definition: damageProbabilityResults.h:64
std::map< int, std::map< int, QWidget * > > myDetailedDataWidgets
Definition: damageProbabilityResults.h:221
DtDamageProbabilityResults * myGlobalInstance
Definition: damageProbabilityResults.h:275
makVrv::DtSignalConnectionManager myGraphLineColorConnections
Definition: damageProbabilityResults.h:233
makVrv::DtDe & myDe
Definition: damageProbabilityResults.h:228
QToolButton * button
Definition: damageProbabilityResults.h:69
QwtPlotCurve * mySelectionLine
Definition: damageProbabilityResults.h:223
QVBoxLayout * myVsLayout
Definition: damageProbabilityResults.h:183
QVBoxLayout * mySelectionLayout
Definition: damageProbabilityResults.h:199
QHBoxLayout * labelLayout
Definition: damageProbabilityResults.h:70
double averagePower
Definition: damageProbabilityResults.h:242
Definition: damageProbabilityResults.h:206
DtComponentSystemDefinition * myDamageSystem
Definition: damageProbabilityResults.h:232
QHBoxLayout * myGraphLayout
Definition: damageProbabilityResults.h:180
QToolButton * myDefenderButton
Definition: damageProbabilityResults.h:191
SimulationObject myAttacker
Definition: damageProbabilityResults.h:187
makVrf::DtEntityMapperKey key
Definition: damageProbabilityResults.h:73
Definition: damageProbabilityResults.h:76
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:216
std::map< const DtComponentSystemDefinition *, std::pair< const DtTargetingControlTable *, const DtRangeProbabilityTable * > > TargetingControlAndRangeTables
Returns the targeting control and range tables.
Definition: simulationModelSetLoader.h:908
std::map< const DtAmmunitionParamsEntry *, IndirectFireResult > IndirectFireResults
Definition: damageProbabilityResults.h:247
int myIndirectFireRuns
Definition: damageProbabilityResults.h:237
Definition: faceSelectionWidget.h:27
QGridLayout * myDetailedDataLayout
Definition: damageProbabilityResults.h:219
Definition: objectType.h:27
DtRangeProbabilityTable is a readable/writable list of DtRangeProbEntrys. It&#39;s sorted by the entity t...
Definition: rangeProbabilityTable.h:31
DtComponentSystemDefinition.
Definition: componentSystemDefinition.h:25
Contains makVrv::DtVirtualBaseClass class.
QLabel * myVsLabel
Definition: damageProbabilityResults.h:185
DtRwDamageByMunitionPowerMap * myDamageTable
Definition: damageProbabilityResults.h:231
QWidget * myDetailedDataWidget
Definition: damageProbabilityResults.h:225
QCheckBox * showCurve
Definition: damageProbabilityResults.h:210
QHBoxLayout * buttonCenter
Definition: damageProbabilityResults.h:68
DtPlotPicker * myPlotPicker
Definition: damageProbabilityResults.h:197
Creator for the canvas.
Definition: damageProbabilityResults.h:252
Add the ability to set decimals to cursor text.
Definition: plotPicker.h:10
AmmunitionInformation()
Definition: damageProbabilityResults.h:78
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
DtSimulationModelSetLoader::TargetingControlAndRangeTables myTargetingControlAndRangeTables
Definition: damageProbabilityResults.h:234
DtAngleOfIncidenceSelectionWidget * myAngleOfIncidenceSelectionWidget
Definition: damageProbabilityResults.h:203
DtDamageProbabilityTable.
Definition: damageProbabilityTable.h:20
SimulationObject myDefender
Definition: damageProbabilityResults.h:188
AmmunitionMap myAvailableAmmunition
Definition: damageProbabilityResults.h:230
std::map< const DtAmmunitionParamsEntry *, HitCurve > Curves
Definition: damageProbabilityResults.h:215
QHBoxLayout * layout
Definition: damageProbabilityResults.h:209
DtMunitionDetonationPowerEntry.
Definition: munitionDetonationPowerEntry.h:19
double myMaximumRange
Definition: damageProbabilityResults.h:236
QLabel * myFaceLabel
Definition: damageProbabilityResults.h:200
QToolButton * editButton
Definition: damageProbabilityResults.h:71
QwtPlot * myGraph
Definition: damageProbabilityResults.h:195
AmmunitionInformation(const DtTargetingControlTable *c, double r)
Definition: damageProbabilityResults.h:79
DtAmmunitionParamsEntry; descriptor that represents members of a DtAmmunitionParams.
Definition: ammunitionParamsEntry.h:20
std::map< const DtAmmunitionParamsEntry *, AmmunitionInformation > AmmunitionMap
Definition: damageProbabilityResults.h:86
QVBoxLayout * layout
Definition: damageProbabilityResults.h:67
Base class to provide boost signal/slot management.
double maximumRange
Definition: damageProbabilityResults.h:83
QwtLegend * myLegend
Definition: damageProbabilityResults.h:196
QToolButton * myAttackerButton
Definition: damageProbabilityResults.h:190
double averageKill
Definition: damageProbabilityResults.h:243
The DtUiElement class is the base for which all UI elements are defined. If you wish to create a new ...
Definition: uiElement.h:97
QLabel * myDetailedDataLabel
Definition: damageProbabilityResults.h:218
DtString powerType
Definition: damageProbabilityResults.h:244
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:70
QPushButton * myCloseButton
Definition: damageProbabilityResults.h:193
QHBoxLayout * myDataLayout
Definition: damageProbabilityResults.h:220
IndirectFireResults myIndirectFireResults
Definition: damageProbabilityResults.h:248
int row
Definition: damageProbabilityResults.h:212
Definition: targetingControlTable.h:20
This class will allow the user to show damage probabilities between two Simulation Objects...
Definition: damageProbabilityResults.h:50
double averageRangeFromTarget
Definition: damageProbabilityResults.h:241
std::vector< QLabel * > myDetailedDataLabels
Definition: damageProbabilityResults.h:222
#define DT_DLL_simulationObjectEditorimpl
This file is used to determine how to build.
Definition: simulationObjectEditorImplDefines.h:33
QVector< QPointF > points
Definition: damageProbabilityResults.h:211
makVrv::DtDe & myDe
Definition: damageProbabilityResults.h:274

Document ID: Generated on Thu Jun 1 17:58:13 EDT 2023 from SVN revision 255404
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)