VR-Forces 4.7 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 
12 
13 #include <QtWidgets/QDialog>
14 
15 #include <set>
16 
17 namespace makVrv
18 {
19  class DtDe;
20 }
21 
22 class QGridLayout;
23 class QHBoxLayout;
24 class QVBoxLayout;
25 class QScrollArea;
26 class QSlider;
27 class QCheckBox;
28 class QLabel;
29 class QPushButton;
30 class QListWidget;
32 class DtPlotPicker;
33 class QwtPlot;
34 class QwtPlotCurve;
35 class QwtLegend;
42 class DtUiElementEvent;
45 
48 {
49  Q_OBJECT
50 
51 public:
54 
55  virtual ~DtDamageProbabilityResults();
56 
57  virtual void setAttacker(const DtObjectType&);
58  virtual void setDefender(const DtObjectType&);
59 
60 protected:
62  {
63  QWidget* canvas;
64  QVBoxLayout* layout;
65  QHBoxLayout* buttonCenter;
67  QHBoxLayout* labelLayout;
71  };
72 
74  {
75  AmmunitionInformation() : controlTable(0), maximumRange(0.) {};
76  AmmunitionInformation(const DtTargetingControlTable* c, double r) : controlTable(c), maximumRange(r) {};
77  AmmunitionInformation(const AmmunitionInformation& orig) : controlTable(orig.controlTable), maximumRange(orig.maximumRange) {};
78 
79  const DtTargetingControlTable* controlTable;
80  double maximumRange;
81  };
82 
83  typedef std::map<const DtAmmunitionParamsEntry*, AmmunitionInformation> AmmunitionMap;
84 
85  virtual void slot_revertedMunitions(std::set<makVrf::DtEntityMapperKey>);
86  virtual SimulationObject createSimulationObject(const DtString&);
87  virtual double maximumRangeForMunition(const DtAmmunitionParamsEntry* ape) const;
88 
89  virtual void setIcon(const SimulationObject&);
90  virtual void selectSimulationObject(SimulationObject&);
91  virtual void slot_resetIcons();
92  virtual void attack();
93  virtual QWidget* showError(const QString&, const QString& toDo, int row, int col);
94  virtual AmmunitionMap ammunitionThatCanTargetDefender(const DtSimulationModelSetLoader::TargetingControlAndRangeTables& targets) const;
95  virtual double findMaximumRange(const AmmunitionMap&) const;
96  virtual bool graphAttack(const AmmunitionMap&, const DtString& face, double angleOfIncidence);
97  virtual void clearPlotLines();
98  virtual QVector<QPointF> calculateIndirectFire(const DtMunitionDetonationPowerEntry*, const DtAmmunitionParamsEntry*,
99  const DtRangeProbabilityTable* hitTable, const DtString&, const DtString&, double angleOfIncidence) const;
100  virtual QVector<QPointF> calculateFromHitTable(const DtMunitionDetonationPowerEntry*, const DtAmmunitionParamsEntry*,
101  const DtRangeProbabilityTable* hitTable, const DtString&, const DtString&, double angleOfIncidence) const;
102  virtual QVector<QPointF> createPlotLine(const DtMunitionDetonationPowerEntry*, const DtAmmunitionParamsEntry*,
103  const DtRangeProbabilityTable* hitTable, const DtString&, const DtString&, double angleOfIncidence) const;
104  virtual bool isIndirectFire(const DtAmmunitionParamsEntry*) const;
105  virtual bool getIndirectFireValues(const DtAmmunitionParamsEntry*, double& probableErrorInRange, double& probableErrorInDisplacement,
106  double& minRange, double& maxRange) const;
107  virtual double calculateIndirectDistanceFromTarget(double probableErrorInRange, double probableErrorInDisplacement) const;
108  virtual double findMaximumRange(const DtAmmunitionParamsEntry* ammo) const;
109 
110  virtual double killPercentage(double range, const DtPowerRangeDeterminant*, const DtDamageProbabilityTable*,
111  const DtString& type, const DtString& surface, double angleOfIncidence, double* retPower = 0, bool indirect = false) const;
112  virtual const DtRangeProbabilityTable* hitTableForAmmunition(const DtAmmunitionParamsEntry*,
113  const DtComponentSystemDefinition** definition = 0) const;
114  virtual double hitPercentage(const DtRangeProbabilityTable* hitTable, double range) const;
115 
117  virtual double killPercentage(double range, const DtMunitionDetonationPowerEntry*, const DtAmmunitionParamsEntry*,
118  const DtRangeProbabilityTable* hitTagble, const DtString& type, const DtString& surface, double angleOfIncidence,
119  double* retPower = 0, DtString* retPowerType = 0, bool indirect = false) const;
120 
122  virtual double killPercentageModification(double range, double percent, const DtAmmunitionParamsEntry*,
123  const DtRangeProbabilityTable*) const;
124 
125  virtual void setupForAnglesOfIncidence(const DtDamageProbabilityTable*, const DtString&, double angleOfIncidence);
126  virtual void setupFacesWidget(const DtDamageProbabilityTable*);
127 
128  virtual void uiEvent(const DtUiElementEvent&);
129  virtual void graphLineColorChanged(const QColor& oldColor, const QColor& newColor);
130 
131  virtual void clearDetailedData();
132  virtual void addDetailedDataLabel(int col, const QString&);
133  virtual bool getInformationForAmmuinitionAtRange(const DtAmmunitionParamsEntry*, double range, const DtRangeProbabilityTable*,
134  const DtDamageProbabilityTable*&, double& hit, double& power, double& killPercent, DtString& powerType, bool& beyondMaxRange, double& maximumRange) const;
135  virtual QWidget* setDetailedDataValue(int row, int col, const QString& value, bool isLink);
136 
137  virtual void replotAllCurves();
138 
139  virtual void slot_labelModified(const std::vector<DtObjectType>&);
140  virtual void slot_objectTypeAboutToBeChanged(const DtObjectType& oldType, const DtObjectType& newType);
141  virtual QLabel* addRowLabel(int row, const QString& ammoLabel);
142 
143  virtual QWidget* addRegenerateGraph(int row);
144  virtual void clearRegenerateGraph(int row);
145  virtual void regenerateGraphLine(int row);
146  virtual QVector<QPointF> createPlotLine(const DtAmmunitionParamsEntry* entry, const DtString& surface, double angleOfIncidence,
147  const DtDamageProbabilityTable** = 0);
148 
149  virtual QWidget* addAdditionalInformationText(int row, const QString& text);
150  virtual QWidget* addAdditionalWarningText(int row, const QString& text);
151  virtual QWidget* addAdditionalText(int row, const QString& text, const std::string& icon);
152  virtual void clearAdditionalInformationText(int row);
153  virtual void showAdditionalInformation(const QString&);
154  virtual QString indirectFireText(const DtAmmunitionParamsEntry* entry, double power) const;
155  virtual void processDataChangedEvent(const QString&);
156 
157  virtual QString damageTableCannotBeDamagedBy(const DtAmmunitionParamsEntry*) const;
158  virtual QString damageTableCannotBeDamagedBy(const AmmunitionMap&) const;
159  virtual QString weaponCannotDamage(const DtRwDamageByMunitionPowerMap*) const;
160 
161 protected slots:
162  virtual void selectAttacker();
163  virtual void selectDefender();
164  virtual void selectFace(const DtString&);
165  virtual void legendClicked(const QVariant& itemInfo, int index);
166  virtual void setupForAngleOfIncidence(double);
167  virtual void showDetailedData(const QPointF&);
168  virtual void selectAppropriateItem();
169  virtual void editSimulationObject();
170  virtual void onSwap();
171  virtual void itemClicked();
172  virtual void showCurveChanged();
173 
174 public:
175  QVBoxLayout* myMainLayout;
176  QHBoxLayout* myGraphLayout;
177 
178  QHBoxLayout* myButtonsLayout;
179  QVBoxLayout* myVsLayout;
182 
185 
188 
190 
191  QwtPlot* myGraph;
192  QwtLegend* myLegend;
194 
195  QVBoxLayout* mySelectionLayout;
198 
201 
202  struct HitCurve
203  {
204  QwtPlotCurve* curve;
205  QHBoxLayout* layout;
207  QVector<QPointF> points;
208  int row;
209  };
210 
211  typedef std::map<const DtAmmunitionParamsEntry*, HitCurve> Curves;
213 
215  QGridLayout* myDetailedDataLayout;
216  QHBoxLayout* myDataLayout;
217  std::map<int, std::map<int, QWidget*> > myDetailedDataWidgets;
218  std::vector<QLabel*> myDetailedDataLabels;
219  QwtPlotCurve* mySelectionLine;
220 
222 
223 protected:
234 
236  {
238  double averagePower;
239  double averageKill;
241  };
242 
243  typedef std::map<const DtAmmunitionParamsEntry*, IndirectFireResult> IndirectFireResults;
245 };
246 
249 {
250 public:
253 
256 
259 
261  static void registerInstance(makVrv::DtDe&, DtDamageProbabilityResultsCreator*);
262 
264  virtual DtDamageProbabilityResults* create(QWidget* parent);
265 
267  virtual DtDamageProbabilityResults* globalInstance(QWidget* parent);
268 
269 protected:
272 };

Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)