VR-Forces 4.3.1 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
influenceManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
12 
13 #pragma once
14 
15 #include <vrfGuiCore/vrfGuiCore.h>
18 
19 #include <vrvUtil/signalslib.h>
20 #include <vrvCore/DtDe.h>
21 #include <vrvCore/Dt2DAreaFacade.h>
22 #include <vrvCore/DtEntityState.h>
25 
26 namespace makVrv
27 {
28  class DtSceneObject;
29  class DtAttachableUpdaterAgent;
30  class DtSimObjectEntry;
31  class DtLineFacadeInterface;
32 };
33 
34 namespace makVrf
35 {
36  class DtNetworkMessageInterface;
37  class DtAttackLineAttachableUpdaterAgent;
38  class DtVrfStateViewCollectionManager;
39  class DtVrfSimBackendManager;
40 
43 
45  {
46  public:
48  DtAttackLine(makVrv::DtDe& de, int modelSet, makVrv::DtElementID sourceId, makVrv::DtElementID targetId,
49  double wedgeSize);
50 
51  virtual ~DtAttackLine();
52 
54  virtual void setWedgeSize(double);
55 
57  DtAttackLineAttachableUpdaterAgent* updater()
58  {
59  return myUpdater;
60  };
61 
62  protected:
64  DtAttackLineAttachableUpdaterAgent* myUpdater;
65  double myWedgeSize;
67  };
68 
71  {
72  public:
74  virtual ~DtSupplyLine();
75 
76  virtual void setColor(float r, float g, float b, float a);
77  virtual void setVisible(bool);
78 
79  protected:
80  struct Supply
81  {
83  DtAttackLineAttachableUpdaterAgent* updater;
84  };
85 
86  typedef std::map<int, Supply> SupplyLines;
89  };
90 
94  {
95  public:
97  virtual ~DtInfluenceManager();
98 
100  static DtInfluenceManager& instance(makVrv::DtDe& de);
101 
103  virtual void registerInstance(makVrv::DtDe&, DtInfluenceManager*);
104 
106  virtual void setDisplayAttackLines(bool);
107  virtual bool displayAttackLines() const;
108 
110  virtual void setDisplayAttackAnimation(bool);
111  virtual bool displayAttackAnimation() const;
112 
114  virtual void setDisplaySupplyLines(bool);
115  virtual bool displaySupplyLines() const;
116 
119  virtual int animationColor(int baseColor) const;
120 
122  virtual bool isAttacking(makVrv::DtElementID) const;
123 
125  virtual bool underAttack(makVrv::DtElementID) const;
126 
128  virtual void setSupplyLineColor(int r, int g, int b, int a);
129  virtual void getSupplyLineColor(int& r, int& g, int& b, int& a);
130 
133  virtual void setAnimationLength(double);
134 
137  virtual std::set<int> sectorsAttacked(makVrv::DtElementID) const;
138 
140  virtual void setWedgeSize(double);
141  virtual double wedgeSize() const;
142 
143  typedef std::map<int, DtAttackLine*> AttackLines;
144  typedef std::map<std::string, DtInfluenceInteractionInterface> AttackTypes;
145 
148  {
151  };
152 
154  {
157  std::string attackType;
158 
159  bool operator<(const AttackIdentifier& rhs) const
160  {
161  return (attackerId < rhs.attackerId ||
162  (attackerId == rhs.attackerId && targetId < rhs.targetId) ||
163  (attackerId == rhs.attackerId && targetId == rhs.targetId && attackType < rhs.attackType));
164  }
165  };
166 
167  typedef std::set<makVrv::DtElementID> Supplying;
168  typedef std::map<makVrv::DtElementID, Supplying> Suppliers;
169 
170  typedef std::map<makVrv::DtElementID, AttackLineInformation> AttackTarget;
171  typedef std::map<makVrv::DtElementID, AttackTarget> Attacks;
172  typedef std::map<AttackIdentifier, double> AttackExpirations;
173 
175  virtual Attacks attackLinesFor(makVrv::DtElementID) const;
176 
178  virtual Attacks attackLinesTo(makVrv::DtElementID) const;
179 
181  virtual void clear();
182 
184  virtual void setMinimumInfluenceDuration(double);
185  virtual double minimumInfluenceDuration() const;
186 
188  virtual Supplying suppliersTo(makVrv::DtElementID) const;
189 
191  virtual Supplying supplies(makVrv::DtElementID) const;
192 
193  boost::signal<void (makVrv::DtElementID, makVrv::DtElementID, std::string)> signal_attackAdded;
194  boost::signal<void (makVrv::DtElementID, makVrv::DtElementID, std::string)> signal_attackRemoved;
195 
196  boost::signal<void (makVrv::DtElementID, makVrv::DtElementID)> signal_supplyAdded;
197  boost::signal<void (makVrv::DtElementID, makVrv::DtElementID)> signal_supplyRemoved;
198 
199  protected:
201  virtual void processInfluenceMessageCallback(DtNetworkMessageInterface* i);
202 
206  virtual void createAttackLine(DtInfluenceInteractionInterface*);
207 
208  virtual void removeAttackLine(DtInfluenceInteractionInterface*);
209 
210  virtual void createSupplyLine(DtInfluenceInteractionInterface*);
211  virtual void removeSupplyLine(DtInfluenceInteractionInterface*);
212  virtual void removeSupplyLine(makVrv::DtElementID supplier, makVrv::DtElementID target);
213  virtual void removeSupplyLines(makVrv::DtElementID);
214  virtual void onStateAdded(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*);
215 
216  virtual void removeAttackLine(makVrv::DtElementID attacker, makVrv::DtElementID target,
217  const std::string& attackType);
218 
219  virtual void slot_extendedEntityOptionsChanged();
220 
221  virtual void slot_simObjectEntryAboutToBeRemoved(makVrv::DtSimObjectEntry& e);
222 
223  virtual void setupSceneObject(makVrv::DtElementID);
224 
225  virtual void slot_sceneObjectToBeDeleted( const makVrv::DtUniqueID& id );
226 
227  virtual void slot_removeExpiredAttacks();
228  virtual void slot_removeExpiredSupplies();
229 
230  virtual void processRangeRingsUpdated(DtNetworkMessageInterface* i);
231  virtual void addPendingInfluence(DtInfluenceInteractionInterface*, const std::string& marking);
232 
233  protected:
237 
239 
241 
243 
245  {
246  std::set<makVrv::DtElementID> underAttackBy;
247  };
248 
249  typedef std::map<makVrv::DtElementID, UnderAttackInformation> UnderAttack;
251 
254 
257 
258  typedef std::map<makVrv::DtElementID, makVrv::DtSceneObject*> SceneObjects;
260 
261  double myWedgeSize;
263 
264  typedef std::map<makVrv::DtElementID, DtSupplyLine*> SupplyLine;
265  typedef std::map<makVrv::DtElementID, SupplyLine> SupplyLines;
266 
268 
271 
272  typedef std::map<makVrv::DtElementID, double> SupplierExpiration;
273  typedef std::map<makVrv::DtElementID, SupplierExpiration> SupplyExpirations;
275 
276  float mySupplyLineColor[4];
277 
279 
280  typedef std::map<std::string, DtInfluenceInteractionInterface*> PendingInfluenceInteractions;
282  };
283 }

Document ID: Generated on Wed Jul 29 00:55:00 EDT 2015 from SVN revision 155257
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)