VR-Forces 4.5 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 #include <vrfutil/rwUUID.h>
27 #include <boost/unordered_map.hpp>
28 
29 namespace makVrv
30 {
31  class DtSceneObject;
32  class DtAttachableUpdaterAgent;
33  class DtSimObjectEntry;
34  class DtLineFacadeBase;
35 };
36 
37 namespace makVrf
38 {
39  class DtNetworkMessageInterface;
40  class DtAttackLineAttachableUpdaterAgent;
41  class DtVrfStateViewCollectionManager;
42  class DtVrfSimBackendManager;
43 
46 
48  {
49  public:
51  DtAttackLine(makVrv::DtDe& de, int modelSet, makVrv::DtElementID sourceId, makVrv::DtElementID targetId,
52  double wedgeSize);
53 
54  virtual ~DtAttackLine();
55 
57  virtual void setWedgeSize(double);
58 
60  DtAttackLineAttachableUpdaterAgent* updater()
61  {
62  return myUpdater;
63  };
64 
65  protected:
67  DtAttackLineAttachableUpdaterAgent* myUpdater;
68  double myWedgeSize;
70  };
71 
74  {
75  public:
77  virtual ~DtSupplyLine();
78 
79  virtual void setColor(float r, float g, float b, float a);
80  virtual void setVisible(bool);
81 
82  protected:
83  struct Supply
84  {
86  DtAttackLineAttachableUpdaterAgent* updater;
87  };
88 
89  typedef std::map<int, Supply> SupplyLines;
92  };
93 
97  {
98  public:
100  virtual ~DtInfluenceManager();
101 
103  static DtInfluenceManager& instance(makVrv::DtDe& de);
104 
106  virtual void registerInstance(makVrv::DtDe&, DtInfluenceManager*);
107 
109  virtual void setDisplayAttackLines(bool);
110  virtual bool displayAttackLines() const;
111 
113  virtual void setDisplayAttackAnimation(bool);
114  virtual bool displayAttackAnimation() const;
115 
117  virtual void setDisplaySupplyLines(bool);
118  virtual bool displaySupplyLines() const;
119 
122  virtual int animationColor(int baseColor) const;
123 
125  virtual bool isAttacking(makVrv::DtElementID) const;
126 
128  virtual bool underAttack(makVrv::DtElementID) const;
129 
131  virtual void setSupplyLineColor(int r, int g, int b, int a);
132  virtual void getSupplyLineColor(int& r, int& g, int& b, int& a);
133 
136  virtual void setAnimationLength(double);
137 
140  virtual std::set<int> sectorsAttacked(makVrv::DtElementID) const;
141 
143  virtual void setWedgeSize(double);
144  virtual double wedgeSize() const;
145 
146  typedef std::map<int, DtAttackLine*> AttackLines;
147  typedef std::map<std::string, DtInfluenceInteractionInterface> AttackTypes;
148 
151  {
154  };
155 
157  {
160  std::string attackType;
161 
162  bool operator<(const AttackIdentifier& rhs) const
163  {
164  return (attackerId < rhs.attackerId ||
165  (attackerId == rhs.attackerId && targetId < rhs.targetId) ||
166  (attackerId == rhs.attackerId && targetId == rhs.targetId && attackType < rhs.attackType));
167  }
168  };
169 
170  typedef std::set<makVrv::DtElementID> Supplying;
171  typedef std::map<makVrv::DtElementID, Supplying> Suppliers;
172 
173  typedef std::map<makVrv::DtElementID, AttackLineInformation> AttackTarget;
174  typedef std::map<makVrv::DtElementID, AttackTarget> Attacks;
175  typedef std::map<AttackIdentifier, double> AttackExpirations;
176 
178  virtual Attacks attackLinesFor(makVrv::DtElementID) const;
179 
181  virtual Attacks attackLinesTo(makVrv::DtElementID) const;
182 
184  virtual void clear();
185 
187  virtual void setMinimumInfluenceDuration(double);
188  virtual double minimumInfluenceDuration() const;
189 
191  virtual Supplying suppliersTo(makVrv::DtElementID) const;
192 
194  virtual Supplying supplies(makVrv::DtElementID) const;
195 
196  boost::signal<void (makVrv::DtElementID, makVrv::DtElementID, std::string)> signal_attackAdded;
197  boost::signal<void (makVrv::DtElementID, makVrv::DtElementID, std::string)> signal_attackRemoved;
198 
199  boost::signal<void (makVrv::DtElementID, makVrv::DtElementID)> signal_supplyAdded;
200  boost::signal<void (makVrv::DtElementID, makVrv::DtElementID)> signal_supplyRemoved;
201 
202  protected:
204  virtual void processInfluenceMessageCallback(DtNetworkMessageInterface* i);
205 
209  virtual void createAttackLine(DtInfluenceInteractionInterface*);
210 
211  virtual void removeAttackLine(DtInfluenceInteractionInterface*);
212 
213  virtual void createSupplyLine(DtInfluenceInteractionInterface*);
214  virtual void removeSupplyLine(DtInfluenceInteractionInterface*);
215  virtual void removeSupplyLine(makVrv::DtElementID supplier, makVrv::DtElementID target);
216  virtual void removeSupplyLines(makVrv::DtElementID);
217  virtual void onStateAdded(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*);
218 
219  virtual void removeAttackLine(makVrv::DtElementID attacker, makVrv::DtElementID target,
220  const std::string& attackType);
221 
222  virtual void slot_extendedEntityOptionsChanged();
223 
224  virtual void slot_simObjectEntryAboutToBeRemoved(makVrv::DtSimObjectEntry& e);
225 
226  virtual void setupSceneObject(makVrv::DtElementID);
227 
228  virtual void slot_sceneObjectToBeDeleted( const makVrv::DtUniqueID& id );
229 
230  virtual void slot_removeExpiredAttacks();
231  virtual void slot_removeExpiredSupplies();
232 
233  virtual void processRangeRingsUpdated(DtNetworkMessageInterface* i);
234  virtual void addPendingInfluence(DtInfluenceInteractionInterface*, const DtUUID& uuid);
235 
236  protected:
240 
242 
244 
246 
248  {
249  std::set<makVrv::DtElementID> underAttackBy;
250  };
251 
252  typedef std::map<makVrv::DtElementID, UnderAttackInformation> UnderAttack;
254 
257 
260 
261  typedef std::map<makVrv::DtElementID, makVrv::DtSceneObject*> SceneObjects;
263 
264  double myWedgeSize;
266 
267  typedef std::map<makVrv::DtElementID, DtSupplyLine*> SupplyLine;
268  typedef std::map<makVrv::DtElementID, SupplyLine> SupplyLines;
269 
271 
274 
275  typedef std::map<makVrv::DtElementID, double> SupplierExpiration;
276  typedef std::map<makVrv::DtElementID, SupplierExpiration> SupplyExpirations;
278 
279  float mySupplyLineColor[4];
280 
282 
283  typedef boost::unordered_map<DtUUID, DtInfluenceInteractionInterface*> PendingInfluenceInteractions;
285  };
286 }

Document ID: Generated on Thu Mar 23 18:54:12 EDT 2017 from SVN revision 174804
Copyright © 2005-2017 VT MÄK. All Rights Reserved (www.mak.com)