VR-Forces 4.2 Class Documentation
DtVrfSimBackEndManager.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2009 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 /*******************************************************************************
6 ** $RCSfile: DtVrfSimBackEndManager.h,v $ $Revision: 1.2 $ $State: Exp $
7 *******************************************************************************/
8 
11 
13 
14 #pragma once
15 
16 #include <vrfGuiCore/vrfGuiCore.h>
19 
20 #include <vrvCore/DtSimData.h>
21 #include <vrvCore/DtDe.h>
22 
23 #include <boost/function.hpp>
24 #include <boost/signal.hpp>
25 
26 class DtBackend;
27 class DtSimulationAddress;
28 class DtSimMessage;
29 class DtIfLoadComplete;
30 class DtIfSaveComplete;
31 
32 namespace makVrv
33 {
34  class DtBaseSimulation;
35 }
36 
38 const int DtSessionChangedTerrain = 0x00000001;
39 const int DtSessionChangedScenario = 0x00000002;
40 const int DtSessionChangedNumberBEs = 0x00000004;
41 const int DtSessionScenarioJustLoaded = 0x00000008;
42 
43 namespace makVrf
44 {
45  class DtVrfBackEndState;
46 
53  {
54  public:
55  typedef std::map<std::string, DtVrfBackendState*> DtVrfSimBackendStates;
56 
57  public:
58  DtVrfSimBackendManager(makVrv::DtDe&);
59  virtual ~DtVrfSimBackendManager();
60 
62  static DtVrfSimBackendManager& instance(makVrv::DtDe& de);
63 
64  public:
66  virtual bool backEndsPresent() const;
67 
69  virtual bool anyBackendsLoaded() const;
70 
72  virtual bool allBackendsLoaded() const;
73 
75  virtual bool backendLoaded(const DtSimulationAddress&) const;
76 
78  virtual bool backendSaving(const DtSimulationAddress&) const;
79 
81  virtual bool anyBackendsPlaying() const;
82 
84  virtual bool anyBackendsInControlState(int state) const;
85 
87  virtual bool allBackendsCanSimulate() const;
88 
90  virtual bool backendCanSimulate(const DtSimulationAddress&) const;
91 
93  virtual void duplicateBackendDiscovered(const DtSimulationAddress&);
94 
100 
101  virtual void removeAllBackends();
102  virtual void addBackend(const DtBackend*);
103  virtual void backendRemoved(const DtSimulationAddress&);
104  virtual void backendUpdated(const DtSimulationAddress&, const DtBackend*);
106 
107  DtVrfBackendState* stateFor(const DtSimulationAddress&) const;
108 
109  const DtSimulationAddress& selectedBackend() const
110  {
111  return mySelectedBackend;
112  }
113 
114  void setSelectedBackend(const DtSimulationAddress&);
115 
116  virtual int numberOfBackends() const;
117 
119  virtual void clearSelectedBackend();
120 
122  virtual double simTime() const;
123 
125  virtual double simStartSimTime() const;
126 
127  const DtVrfSimBackendStates& backendStates() const
128  {
129  return myBackendStates;
130  }
131 
132  public:
134  virtual void signalWhenAllBackendsClosed();
135 
137  virtual void signalIfAllBackendsClosed();
138  boost::signal<void ()> signal_allBackendsClosed;
139 
142  virtual void signalWhenAllBackendsLoaded();
143 
146  virtual void signalIfAllBackendsLoaded();
147  boost::signal<void ()> signal_allBackendsLoaded;
148 
150  virtual void signalWhenAllBackendsSaved();
151 
153  virtual void signalIfAllBackendsSaved();
154  boost::signal<void ()> signal_allBackendsSaved;
155 
156  const std::string& sessionScenario() const
157  {
158  return mySessionScenarioName;
159  }
160 
161  const std::string& sessionTerrain() const
162  {
163  return mySessionTerrainName;
164  }
165 
166  public:
167  boost::signal<void (const DtVrfBackendState&)> signal_frameRatesUpdated;
168  boost::signal<void (const DtVrfBackendState&)> signal_backendDiscovered;
169  boost::signal<void (const DtVrfBackendState&)> signal_backendRemoved;
170  boost::signal<void (const DtVrfBackendState&, int)> signal_backendUpdated;
171  boost::signal<void (int)> signal_sessionUpdated;
172  boost::signal<void (const DtVrfBackendState&)> signal_duplicateSimulationAddress;
173  boost::signal<void (const DtSimulationAddress& old, const DtSimulationAddress& newaddr)> signal_selectedBackendChanged;
174  boost::signal<void ()> signal_allBackendsAboutToBeRemoved;
175 
176  protected:
177  virtual void slot_frameRatesUpdated(const DtVrfBackendState&);
178  virtual void simulationBackendRemoved(DtVrfBackendState*);
179  virtual void simulationBackendDiscovered(DtVrfBackendState*);
180  virtual void simulationBackendUpdated(DtSimulationAddress, int);
181  virtual void duplicateSimulationBackendDiscovered(DtSimulationAddress);
182 
183  virtual void processLoadCompleteCallback(DtSimMessage*);
184  virtual void processSaveCompleteCallback(DtSimMessage*);
185 
187  virtual void backendSaved(const std::string&);
188 
189  virtual void setBackendSaving(const DtSimulationAddress&, bool b);
190 
192  virtual void updateSessionInformation(int sessionFlags = 0);
193 
194  protected:
195  makVrv::DtBaseSimulation* mySimulation;
197  DtSimulationAddress mySelectedBackend;
201  std::map<std::string, char> myBackendsWaitingForSave;
202  std::map<std::string, bool> myAlreadyDuplicateWarned;
203  std::map<std::string, bool> myNeedToLoad;
204  std::vector<std::string> myNeedToSave;
205 
206  std::string mySessionTerrainName;
208 
209  std::map<std::string, bool> myJustLoadedMap;
210  };
211 }

Document ID: Generated on Sun Nov 24 19:49:21 EST 2013 from SVN revision 133924
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)