VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
uiDamageTableConfigurationWidget.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 2018 MaK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************/
5 
6 #pragma once
7 
8 #if !defined(Q_MOC_RUN)
10 #include <QtWidgets/QPushButton>
12 #endif
13 
14 class QListWidget;
15 class QListWidgetItem;
16 class QGridLayout;
17 class QVBoxLayout;
18 class QHBoxLayout;
23 class DtDmgSurfaceEntry;
24 class QRadioButton;
25 class DtRangeProbEntry;
26 class QToolButton;
30 
32 {
33  Q_OBJECT
34 
35 protected:
36  typedef std::map<DtString, DtRangeProbEntry*> ProbabilitiesMap;
38  {
41  };
42 
43  typedef std::vector<AngleOfIncidence> AngleOfIncidenceVector;
44 
45  typedef std::map<DtString, AngleOfIncidenceVector> FacesMap;
46 
47  struct Power
48  {
52  };
53 
54  typedef std::map<DtString, Power> Powers;
55 
56 public:
57 
60 
62  virtual ~DtUiDamageTableConfigurationWidget() override;
63 
65 
66  virtual void setEnabled(bool) override;
67 
68 protected:
69  virtual void damageTableChanged();
70  virtual void setFromParameters(const std::vector<DtReaderWriter*>& parentRw) override;
71  virtual void setFromParameters(const std::vector<DtComponentSystemDefinition*>& rws) override;
72  virtual void setUpKillTypes(DtString file);
73  virtual void createControls(QWidget* widget) override;
74  virtual void setupDamageValue(const DtRwDamageByMunitionPowerMap&);
75  virtual QString damageTypeTitle(const DtString&) const;
76 
77  virtual DtDamageProbabilityTable* selectedDamageTable() const;
78  virtual void selectFace(const DtString&, bool andUpdateGraph);
79 
80  virtual bool setupForFace(const DtString&);
81 
82  virtual Power createPowerStructure(const DtDamageProbabilityTable*);
83  virtual ProbabilitiesMap createPowerStructure(const DtDmgAngleOfIncidenceLookupTable*);
84  virtual ProbabilitiesMap createPowerStructure(const DtDmgAngleOfIncidenceCalcTable*);
85  virtual AngleOfIncidenceVector createPowerStructure(DtDmgSurfaceEntry*);
86  virtual void clearAnglesOfIncidence();
87  virtual void changeData();
88  virtual void processUiEvent(const DtUiElementEvent& e) override;
89  virtual void addGraphDataCanvas();
90 
91  virtual void copyAnglesOfIncidence(const AngleOfIncidenceVector& source, AngleOfIncidenceVector& destination) const;
92  virtual void clearAnglesOfIncidence(AngleOfIncidenceVector& destination) const;
93 
94  virtual void setupForAnglesOfIncidence(const AngleOfIncidenceVector&);
95 
96  virtual void createDamageSurfaceEntry(const AngleOfIncidenceVector&, DtDmgSurfaceEntry&) const;
97  virtual void createDamageProbabilityTable(const DtString& selectedPower, DtDamageProbabilityTable& table) const;
98  virtual void addLookupTableToSurface(const AngleOfIncidence&, DtDmgSurfaceEntry&) const;
99  virtual void addCoefficientTableToSurface(const AngleOfIncidence&, DtDmgSurfaceEntry&) const;
100 
101  virtual bool isSupportedDamageType(const DtString&) const;
102 
103  virtual QListWidgetItem* selectedPowerType() const;
104  virtual DtString selectedPower() const;
105 
106  virtual bool compareAnglesOfIncidence(const AngleOfIncidenceVector& lhs, const AngleOfIncidenceVector& rhs) const;
107  virtual bool compareProbabilities(const ProbabilitiesMap& lhs, const ProbabilitiesMap& rhs) const;
108  virtual void plotLineSelected();
109 
112  virtual void updateData();
113  virtual void updateReaderWriterData();
114 
115  virtual DtString getFaceToCopy(const QString& message, const DtString& skipFace = "") const;
116  virtual void setAllToFace(const DtString& power, const DtString& face);
117 
120  virtual DtDamageProbabilityTable* createEmptyDamageLookupTable() const;
121 
124  virtual DtDamageProbabilityTable* createEmptyDamageCalcTable() const;
125 
127  virtual DtDmgSurfaceEntry* createEmptyDamageLookupSurface(const DtString& surface) const;
128 
130  virtual DtDmgSurfaceEntry* createEmptyDamageCalcSurface(const DtString& surface) const;
131 
132  virtual void setDamageTableToCurrentPower(const DtDamageProbabilityTable* tbl);
133  virtual void setDamageTableToPower(const DtString& selectedP, const DtDamageProbabilityTable* tbl);
134  virtual void setupDamageFor(const DtString& selectedP);
135  virtual void selectPower(const DtString& selectedP);
136  virtual bool multiLinesPerGraph() const;
137  virtual void updateGraphLabel();
138 
139 public slots:
140 
142  virtual void changeEquation();
143  //virtual void onGraphDataChanged(const DtUiElementEvent& e);
145  virtual void onKillTypesGraphPowerChanged(DtString,double,double);
146 
148  virtual void onKillTypesGraphDataChanged(DtString, double, double);
149 
150 protected slots:
151  virtual void selectDamageTableEntry();
152  virtual void faceApplicationChanged();
153  virtual void clearPowerEntry();
154  virtual void copyFace();
155  virtual void addAngleOfIncidence();
156  virtual void removeAngleOfIncidence();
157  virtual void editAngleOfIncidence();
158  virtual void onCopyPower();
159  virtual void onFaceSelected(const DtString&);
160  virtual void setupForAngleOfIncidence(double angle);
161  virtual void onAssignAsDefender();
162  virtual void onAddPower();
163 
164 public:
165  QVBoxLayout* myMainLayout;
166  QHBoxLayout* myTopLineLayout;
167  QGridLayout* myGraphWidgetLayout;
168  QVBoxLayout* myTableLayout;
169  QHBoxLayout* myTableButtons;
174  QListWidget* myDamageTableEntry;
179 
180  QWidget* myFaceCanvas;
182  QVBoxLayout* myFaceCanvasLayout;
183  QRadioButton* myApplyToAllFaces;
184  QRadioButton* myApplyToSpecificFaces;
186 
195 
197 
198 protected:
201  static std::map<DtString, DtString> theSelections;
202 
204 
206 
207  struct KillData
208  {
209  QString title;
210  bool humanOnly;
212  };
213 
214  std::map<DtString, KillData> myKillTypes;
215 };
QHBoxLayout * myDamageTableEntryTypeLayout
Definition: uiDamageTableConfigurationWidget.h:172
DtRangeProbEntry is an abstract class whose deriving classes will have one of the two forms of DtPrbD...
Definition: rangeProbEntry.h:19
DtFaceSelectionWidget * myFaceSelectionWidget
Definition: uiDamageTableConfigurationWidget.h:185
QLabel * myFaceCanvasLabel
Definition: uiDamageTableConfigurationWidget.h:181
QRadioButton * myApplyToSpecificFaces
Definition: uiDamageTableConfigurationWidget.h:184
ProbabilitiesMap probabilities
Definition: uiDamageTableConfigurationWidget.h:40
DtDmgAngleOfIncidenceLookupTable is the derived form of DtDmgAngleOfIncidenceTable that has a DtPrbSt...
Definition: dmgAngleOfIncidenceLookupTable.h:27
DtAngleOfIncidenceSelectionWidget * myAngleOfIncidenceSelectionWidget
Definition: uiDamageTableConfigurationWidget.h:189
bool myIsMultiHitDamage
Definition: uiDamageTableConfigurationWidget.h:200
Definition: angleOfIncidenceSelectionWidget.h:18
Definition: uiDamageTableConfigurationWidget.h:37
bool allCouldBeTheSame
Definition: uiDamageTableConfigurationWidget.h:51
FacesMap faces
Definition: uiDamageTableConfigurationWidget.h:49
virtual void createControls(QWidget *parent)
If additional widgets or connections need to be made do it here. The parent is the myWidget member...
virtual void setFromParameters(DtReaderWriter *parentRw)
Calls setFromParameters with std::vector of parameter.
QLabel * myAngleOfIncidenceLabel
Definition: uiDamageTableConfigurationWidget.h:194
QToolButton * myEditAngleOfIncidence
Definition: uiDamageTableConfigurationWidget.h:193
std::map< DtString, DtRangeProbEntry * > ProbabilitiesMap
Definition: uiDamageTableConfigurationWidget.h:36
DtDmgAngleOfIncidenceTable is an abstract class whose deriving classes will have one of the two forms...
Definition: dmgAngleOfIncidenceTable.h:29
QHBoxLayout * myTableButtons
Definition: uiDamageTableConfigurationWidget.h:169
virtual void processUiEvent(const DtUiElementEvent &)
Process ui event. Default does nothing.
Definition: uiElement.h:236
std::map< DtString, Power > Powers
Definition: uiDamageTableConfigurationWidget.h:54
QListWidget * myDamageTableEntry
Definition: uiDamageTableConfigurationWidget.h:174
static std::map< DtString, DtString > theSelections
Definition: uiDamageTableConfigurationWidget.h:201
QRadioButton * myApplyToAllFaces
Definition: uiDamageTableConfigurationWidget.h:183
QToolButton * myRemovePowerEntry
Definition: uiDamageTableConfigurationWidget.h:177
boost::function< DtUiElement *(makVrv::DtDe &)> CreatorFunction
Definition: uiElement.h:190
std::map< DtString, AngleOfIncidenceVector > FacesMap
Definition: uiDamageTableConfigurationWidget.h:45
QToolButton * myAssignAsDefender
Definition: uiDamageTableConfigurationWidget.h:178
QHBoxLayout * myAnglesOfIncidenceButtonsLayout
Definition: uiDamageTableConfigurationWidget.h:190
Definition: uiDamageTableConfigurationWidget.h:47
Definition: faceSelectionWidget.h:27
QWidget * myDamageTableCanvas
Definition: uiDamageTableConfigurationWidget.h:170
QToolButton * myCopyPowerEntry
Definition: uiDamageTableConfigurationWidget.h:176
QToolButton * myCopyFace
Definition: uiDamageTableConfigurationWidget.h:196
DT_DLL_vrfutil double angle(double vec1[3], double vec2[3])
bool singleHitOnly
Definition: uiDamageTableConfigurationWidget.h:211
DtUiGraphDataWidget * myKillTypesGraphDataWidget
Definition: uiDamageTableConfigurationWidget.h:203
std::vector< AngleOfIncidence > AngleOfIncidenceVector
Definition: uiDamageTableConfigurationWidget.h:43
DtDamageProbabilityTable.
Definition: damageProbabilityTable.h:20
QVBoxLayout * myDamageTableEntryLayout
Definition: uiDamageTableConfigurationWidget.h:171
QToolButton * myRemoveAngleOfIncidence
Definition: uiDamageTableConfigurationWidget.h:192
const char * source
Definition: lz4.h:442
Definition: uiDamageTableConfigurationWidget.h:31
double angleOfIncidence
Definition: uiDamageTableConfigurationWidget.h:39
DtDmgSurfaceEntry is a readable/writable list of angle of incidence tables; the name of the list is a...
Definition: dmgSurfaceEntry.h:29
bool humanOnly
Definition: uiDamageTableConfigurationWidget.h:210
virtual void setEnabled(bool)
If this item is not enabled it cannot be modified.
QLabel * myDamageTableEntryTypeLabel
Definition: uiDamageTableConfigurationWidget.h:173
DtDmgAngleOfIncidenceCalcTable is the derived form of DtDmgAngleOfIncidenceTable that has a DtPrbCoef...
Definition: dmgAngleOfIncidenceCalcTable.h:27
QWidget * myAnglesOfIncidenceCanvas
Definition: uiDamageTableConfigurationWidget.h:187
QToolButton * myAddAngleOfIncidence
Definition: uiDamageTableConfigurationWidget.h:191
Powers myPowers
Definition: uiDamageTableConfigurationWidget.h:199
QVBoxLayout * myTableLayout
Definition: uiDamageTableConfigurationWidget.h:168
The DtUiElement class is the base for which all UI elements are defined. If you wish to create a new ...
Definition: uiElement.h:97
bool allAreTheSame
Definition: uiDamageTableConfigurationWidget.h:50
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:76
QVBoxLayout * myAnglesOfIncidenceLayout
Definition: uiDamageTableConfigurationWidget.h:188
QVBoxLayout * myMainLayout
Definition: uiDamageTableConfigurationWidget.h:165
QWidget * myFaceCanvas
Definition: uiDamageTableConfigurationWidget.h:180
QGridLayout * myGraphWidgetLayout
Definition: uiDamageTableConfigurationWidget.h:167
DtString myCurrentlySelected
Definition: uiDamageTableConfigurationWidget.h:205
std::map< DtString, KillData > myKillTypes
Definition: uiDamageTableConfigurationWidget.h:214
Definition: uiDamageTableConfigurationWidget.h:207
QString title
Definition: uiDamageTableConfigurationWidget.h:209
Definition: uiGraphDataWidget.h:74
QHBoxLayout * myTopLineLayout
Definition: uiDamageTableConfigurationWidget.h:166
QVBoxLayout * myFaceCanvasLayout
Definition: uiDamageTableConfigurationWidget.h:182
QToolButton * myAddPowerEntry
Definition: uiDamageTableConfigurationWidget.h:175
#define DT_DLL_simulationObjectEditorimpl
This file is used to determine how to build.
Definition: simulationObjectEditorImplDefines.h:33
Base class of the ui element class chain. Properties available through designer for all ui elements a...
Definition: uiElement.h:185

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)