VR-Forces 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  Q_PROPERTY(QColor PlotPenColor MEMBER myPlotPenColor USER true)
54 
55 public:
58 
59  virtual ~DtDamageProbabilityResults();
60 
61  virtual void setAttacker(const DtObjectType&);
62  virtual void setDefender(const DtObjectType&);
63 
64  virtual void setPlotPenColor(const QColor&);
65  virtual void init();
66 
67 protected:
69  {
70  QWidget* canvas;
71  QVBoxLayout* layout;
72  QHBoxLayout* buttonCenter;
74  QHBoxLayout* labelLayout;
78  };
79 
80  virtual void slot_revertedMunitions(std::set<makVrf::DtEntityMapperKey>);
81  virtual SimulationObject createSimulationObject(const DtString&);
82  virtual double maximumRangeForMunition(const DtAmmunitionParamsEntry* ape) const;
83 
84  virtual void setIcon(const SimulationObject&);
85  virtual void selectSimulationObject(SimulationObject&);
86  virtual void slot_resetIcons();
87  virtual void attack();
88  virtual QWidget* showError(const QString&, const QString& toDo, int row, int col);
89  virtual double findMaximumRange(const DtSimulationModelSetLoader::AmmunitionMap&) const;
90  virtual bool graphAttack(const DtSimulationModelSetLoader::AmmunitionMap&, const DtString& face, double angleOfIncidence);
91  virtual void clearPlotLines();
92  virtual QVector<QPointF> calculateIndirectFire(const DtMunitionDetonationPowerEntry*, const DtAmmunitionParamsEntry*,
93  const DtRangeProbabilityTable* hitTable, const DtString&, const DtString&, double angleOfIncidence) const;
94  virtual QVector<QPointF> calculateFromHitTable(const DtMunitionDetonationPowerEntry*, const DtAmmunitionParamsEntry*,
95  const DtRangeProbabilityTable* hitTable, const DtString&, const DtString&, double angleOfIncidence) const;
96  virtual QVector<QPointF> createPlotLine(const DtMunitionDetonationPowerEntry*, const DtAmmunitionParamsEntry*,
97  const DtRangeProbabilityTable* hitTable, const DtString&, const DtString&, double angleOfIncidence) const;
98  virtual bool isIndirectFire(const DtAmmunitionParamsEntry*) const;
99  virtual bool getIndirectFireValues(const DtAmmunitionParamsEntry*, double& probableErrorInRange, double& probableErrorInDisplacement,
100  double& minRange, double& maxRange) const;
101  virtual double calculateIndirectDistanceFromTarget(double probableErrorInRange, double probableErrorInDisplacement) const;
102  virtual double findMaximumRange(const DtAmmunitionParamsEntry* ammo) const;
103 
104  virtual double killPercentage(double range, const DtPowerRangeDeterminant*, const DtDamageProbabilityTable*,
105  const DtString& type, const DtString& surface, double angleOfIncidence, double* retPower = 0, bool indirect = false) const;
106  virtual const DtRangeProbabilityTable* hitTableForAmmunition(const DtAmmunitionParamsEntry*,
107  const DtComponentSystemDefinition** definition = 0) const;
108  virtual double hitPercentage(const DtRangeProbabilityTable* hitTable, double range) const;
109 
111  virtual double killPercentage(double range, const DtMunitionDetonationPowerEntry*, const DtAmmunitionParamsEntry*,
112  const DtRangeProbabilityTable* hitTagble, const DtString& type, const DtString& surface, double angleOfIncidence,
113  double* retPower = 0, DtString* retPowerType = 0, bool indirect = false) const;
114 
116  virtual double killPercentageModification(double range, double percent, const DtAmmunitionParamsEntry*,
117  const DtRangeProbabilityTable*) const;
118 
119  virtual void setupForAnglesOfIncidence(const DtDamageProbabilityTable*, const DtString&, double angleOfIncidence);
120  virtual void setupFacesWidget(const DtDamageProbabilityTable*);
121 
122  virtual void uiEvent(const DtUiElementEvent&);
123  virtual void graphLineColorChanged(const QColor& oldColor, const QColor& newColor);
124 
125  virtual void clearDetailedData();
126  virtual void addDetailedDataLabel(int col, const QString&);
127  virtual bool getInformationForAmmuinitionAtRange(const DtAmmunitionParamsEntry*, double range, const DtRangeProbabilityTable*,
128  const DtDamageProbabilityTable*&, double& hit, double& power, double& killPercent, DtString& powerType, bool& beyondMaxRange, double& maximumRange) const;
129  virtual QWidget* setDetailedDataValue(int row, int col, const QString& value, bool isLink);
130 
131  virtual void replotAllCurves();
132 
133  virtual void slot_labelModified(const std::vector<DtObjectType>&);
134  virtual void slot_objectTypeAboutToBeChanged(const DtObjectType& oldType, const DtObjectType& newType);
135  virtual QLabel* addRowLabel(int row, const QString& ammoLabel);
136 
137  virtual QWidget* addRegenerateGraph(int row);
138  virtual void clearRegenerateGraph(int row);
139  virtual void regenerateGraphLine(int row);
140  virtual QVector<QPointF> createPlotLine(const DtAmmunitionParamsEntry* entry, const DtString& surface, double angleOfIncidence,
141  const DtDamageProbabilityTable** = 0);
142 
143  virtual QWidget* addAdditionalInformationText(int row, const QString& text);
144  virtual QWidget* addAdditionalWarningText(int row, const QString& text);
145  virtual QWidget* addAdditionalText(int row, const QString& text, const std::string& icon);
146  virtual void clearAdditionalInformationText(int row);
147  virtual void showAdditionalInformation(const QString&);
148  virtual QString indirectFireText(const DtAmmunitionParamsEntry* entry, double power) const;
149  virtual void processDataChangedEvent(const QString&);
150 
151  virtual QString damageTableCannotBeDamagedBy(const DtAmmunitionParamsEntry*) const;
152  virtual QString damageTableCannotBeDamagedBy(const DtSimulationModelSetLoader::AmmunitionMap&) const;
153  virtual QString weaponCannotDamage(const DtRwDamageByMunitionPowerMap*) const;
154 
155 protected slots:
156  virtual void selectAttacker();
157  virtual void selectDefender();
158  virtual void selectFace(const DtString&);
159  virtual void legendClicked(const QVariant& itemInfo, int index);
160  virtual void setupForAngleOfIncidence(double);
161  virtual void showDetailedData(const QPointF&);
162  virtual void selectAppropriateItem();
163  virtual void editSimulationObject();
164  virtual void onSwap();
165  virtual void itemClicked();
166  virtual void showCurveChanged();
167  virtual void updateReverseButtonIcon();
168 
169 public:
170  QVBoxLayout* myMainLayout;
171  QHBoxLayout* myGraphLayout;
172 
173  QHBoxLayout* myButtonsLayout;
174  QVBoxLayout* myVsLayout;
177 
180 
183 
185 
186  QwtPlot* myGraph;
187  QwtLegend* myLegend;
189 
190  QVBoxLayout* mySelectionLayout;
193 
196 
197  struct HitCurve
198  {
199  QwtPlotCurve* curve;
200  QHBoxLayout* layout;
202  QVector<QPointF> points;
203  int row;
204  };
205 
206  typedef std::map<const DtAmmunitionParamsEntry*, HitCurve> Curves;
208 
210  QGridLayout* myDetailedDataLayout;
211  QHBoxLayout* myDataLayout;
212  std::map<int, std::map<int, QWidget*> > myDetailedDataWidgets;
213  std::vector<QLabel*> myDetailedDataLabels;
214  QwtPlotCurve* mySelectionLine;
215 
217 
218 protected:
229 
231  {
233  double averagePower;
234  double averageKill;
236  };
237 
238  typedef std::map<const DtAmmunitionParamsEntry*, IndirectFireResult> IndirectFireResults;
241 };
242 
245 {
246 public:
249 
252 
255 
257  static void registerInstance(makVrv::DtDe&, DtDamageProbabilityResultsCreator*);
258 
260  virtual DtDamageProbabilityResults* create(QWidget* parent);
261 
263  virtual DtDamageProbabilityResults* globalInstance(QWidget* parent);
264 
265 protected:
268 };
QLabel * myAngleOfIncidenceLabel
Definition: damageProbabilityResults.h:195
QWidget * canvas
Definition: damageProbabilityResults.h:70
QVBoxLayout * myMainLayout
Definition: damageProbabilityResults.h:170
QHBoxLayout * myButtonsLayout
Definition: damageProbabilityResults.h:173
QwtPlotCurve * curve
Definition: damageProbabilityResults.h:199
makVrv::DtSignalConnectionManager myConnections
Definition: damageProbabilityResults.h:220
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:175
QLabel * label
Definition: damageProbabilityResults.h:76
double myLastRangeSelected
Definition: damageProbabilityResults.h:226
Definition: angleOfIncidenceSelectionWidget.h:18
DtFaceSelectionWidget * myFaces
Definition: damageProbabilityResults.h:192
Definition: damageProbabilityResults.h:230
Definition: damageProbabilityResults.h:68
std::map< int, std::map< int, QWidget * > > myDetailedDataWidgets
Definition: damageProbabilityResults.h:212
DtDamageProbabilityResults * myGlobalInstance
Definition: damageProbabilityResults.h:267
makVrv::DtSignalConnectionManager myGraphLineColorConnections
Definition: damageProbabilityResults.h:224
std::map< const DtAmmunitionParamsEntry *, AmmunitionInformation > AmmunitionMap
Definition: simulationModelSetLoader.h:957
makVrv::DtDe & myDe
Definition: damageProbabilityResults.h:219
QToolButton * button
Definition: damageProbabilityResults.h:73
QwtPlotCurve * mySelectionLine
Definition: damageProbabilityResults.h:214
QVBoxLayout * myVsLayout
Definition: damageProbabilityResults.h:174
QVBoxLayout * mySelectionLayout
Definition: damageProbabilityResults.h:190
QHBoxLayout * labelLayout
Definition: damageProbabilityResults.h:74
double averagePower
Definition: damageProbabilityResults.h:233
Definition: damageProbabilityResults.h:197
DtComponentSystemDefinition * myDamageSystem
Definition: damageProbabilityResults.h:223
QHBoxLayout * myGraphLayout
Definition: damageProbabilityResults.h:171
QToolButton * myDefenderButton
Definition: damageProbabilityResults.h:182
SimulationObject myAttacker
Definition: damageProbabilityResults.h:178
makVrf::DtEntityMapperKey key
Definition: damageProbabilityResults.h:77
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:207
std::map< const DtComponentSystemDefinition *, std::pair< const DtTargetingControlTable *, const DtRangeProbabilityTable * > > TargetingControlAndRangeTables
Returns the targeting control and range tables.
Definition: simulationModelSetLoader.h:944
std::map< const DtAmmunitionParamsEntry *, IndirectFireResult > IndirectFireResults
Definition: damageProbabilityResults.h:238
int myIndirectFireRuns
Definition: damageProbabilityResults.h:228
Definition: faceSelectionWidget.h:27
QGridLayout * myDetailedDataLayout
Definition: damageProbabilityResults.h:210
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:176
DtRwDamageByMunitionPowerMap * myDamageTable
Definition: damageProbabilityResults.h:222
QWidget * myDetailedDataWidget
Definition: damageProbabilityResults.h:216
QCheckBox * showCurve
Definition: damageProbabilityResults.h:201
QHBoxLayout * buttonCenter
Definition: damageProbabilityResults.h:72
DtPlotPicker * myPlotPicker
Definition: damageProbabilityResults.h:188
Creator for the canvas.
Definition: damageProbabilityResults.h:244
Add the ability to set decimals to cursor text.
Definition: plotPicker.h:10
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
DtSimulationModelSetLoader::TargetingControlAndRangeTables myTargetingControlAndRangeTables
Definition: damageProbabilityResults.h:225
DtAngleOfIncidenceSelectionWidget * myAngleOfIncidenceSelectionWidget
Definition: damageProbabilityResults.h:194
DtDamageProbabilityTable.
Definition: damageProbabilityTable.h:20
SimulationObject myDefender
Definition: damageProbabilityResults.h:179
DtSimulationModelSetLoader::AmmunitionMap myAvailableAmmunition
Definition: damageProbabilityResults.h:221
std::map< const DtAmmunitionParamsEntry *, HitCurve > Curves
Definition: damageProbabilityResults.h:206
QHBoxLayout * layout
Definition: damageProbabilityResults.h:200
DtMunitionDetonationPowerEntry.
Definition: munitionDetonationPowerEntry.h:19
double myMaximumRange
Definition: damageProbabilityResults.h:227
QLabel * myFaceLabel
Definition: damageProbabilityResults.h:191
QToolButton * editButton
Definition: damageProbabilityResults.h:75
QwtPlot * myGraph
Definition: damageProbabilityResults.h:186
DtAmmunitionParamsEntry; descriptor that represents members of a DtAmmunitionParams.
Definition: ammunitionParamsEntry.h:20
QVBoxLayout * layout
Definition: damageProbabilityResults.h:71
Base class to provide boost signal/slot management.
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
QColor myPlotPenColor
Definition: damageProbabilityResults.h:240
QwtLegend * myLegend
Definition: damageProbabilityResults.h:187
QToolButton * myAttackerButton
Definition: damageProbabilityResults.h:181
double averageKill
Definition: damageProbabilityResults.h:234
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:209
DtString powerType
Definition: damageProbabilityResults.h:235
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:72
QPushButton * myCloseButton
Definition: damageProbabilityResults.h:184
QHBoxLayout * myDataLayout
Definition: damageProbabilityResults.h:211
IndirectFireResults myIndirectFireResults
Definition: damageProbabilityResults.h:239
int row
Definition: damageProbabilityResults.h:203
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:232
std::vector< QLabel * > myDetailedDataLabels
Definition: damageProbabilityResults.h:213
#define DT_DLL_simulationObjectEditorimpl
This file is used to determine how to build.
Definition: simulationObjectEditorImplDefines.h:33
QVector< QPointF > points
Definition: damageProbabilityResults.h:202
makVrv::DtDe & myDe
Definition: damageProbabilityResults.h:266

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)