VR-Forces 4.6 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
scenario.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
9 #pragma once
10 
11 #include "vrfutil/vrfutilDefines.h"
12 #include "vrfutil/readerWriter.h"
13 #include <vlutil/vlString.h>
14 #include <vlutil/vlFilename.h>
15 #include "vrfutil/rwString.h"
16 #include "vrfutil/rwBoolean.h"
17 #include "vrfutil/rwReal.h"
18 #include "vrfutil/rwUnsigned.h"
19 #include "vrfutil/rwObjectType.h"
20 #include "vrfutil/rwUUID.h"
21 #include "vrfutil/rwInt.h"
22 #include "vrfutil/simClock.h"
25 #include "vrfutil/rwKeyValueList.h"
26 #include <vlpi/simulationAddress.h>
27 
28 #include <boost/unordered_map.hpp>
29 
31 #include <vrfmsgs/messageTypes.h>
32 
33 class DtlInoutStream;
34 
42 
47 
50 typedef bool (*DtPreserveMappingsFcn)(void* usr);
51 
53 {
54 public:
56  struct ScenarioData
57  {
58  std::string markingText;
60  std::string label;
61  };
62 
63  typedef boost::unordered_map<DtUUID, ScenarioData> ScenarioDataMap;
64 
65 public:
66 
68  DtScenario();
69 
71  DtScenario(const DtString & name,
72  DtReaderWriterRegistry * const parentRegistry = 0);
73 
75  virtual ~DtScenario();
76 
78  DtScenario(const DtScenario& orig);
79 
81  DtScenario& operator=(const DtScenario& orig);
82 
84  virtual bool init();
85 
87  virtual bool readScenarioFile(const DtFilename& filename);
88 
91  bool saveAsZipFile() const;
92  virtual void setSaveAsZipFile(bool);
93 
95  virtual bool save();
96 
99  static bool saveBufferToScenarioZipFile(const DtFilename& scenanarioZipFile, const DtFilename& zipContentsFile,
100  const DtString& buffer);
101  static bool saveBufferToScenarioZipFile(const DtFilename& scenanarioZipFile, const DtFilename& zipContentsFile,
102  const char* buffer, int length);
103 
107  static bool readBufferFromScenarioZipFile(const DtFilename& scenanarioZipFile, const DtFilename& zipContentsFile,
108  DtString& buffer, bool onlyNeedsExtensionMatch = true);
109 
111  static bool fileExistsInZipFile(const DtFilename& scenanarioZipFile, const DtFilename& zipContentsFile,
112  bool onlyNeedsExtensionMatch = true);
113 
116  static bool extractScenarioFileFromZipFile(const DtFilename& scenarioZipFile, const DtFilename& zipContentsFile,
117  bool onlyNeedsExtensionMatch = true);
118 
120  static bool readScenarioFromZipFile(const DtFilename& f, DtScenario& scenario);
121 
123  static bool saveFileToScenarioZipFile(const DtFilename& scenanarioZipFile, const DtFilename& zipContentsFile);
124 
126  static bool isScenarioZipFile(const DtFilename&);
127 
130  virtual DtString toXml(const DtFilename& scenarioFilename);
131 
133  virtual void setupScenarioFilenames(const DtFilename& scenarioFilename,
134  bool saveObjectMap = true);
135 
138  virtual bool save(const DtFilename& filename,
139  bool saveObjectMap = true);
140 
143  virtual DtScenario* clone() const;
144 
149  virtual void setComponentAttachmentRule(int rule);
150  virtual int componentAttachmentRule() const;
151 
153  virtual void setComponentAttachmentTableFilename(const DtFilename& filename);
154  virtual const DtFilename& componentAttachmentTableFilename() const;
157  virtual void setTerrainDatabaseFilename(const DtFilename& filename);
158  virtual const DtFilename& terrainDatabaseFilename() const;
159 
161  virtual void setGuiTerrainDatabaseFilename(const DtFilename& filename);
162  virtual const DtFilename& guiTerrainDatabaseFilename() const;
163 
165  virtual void setOrderOfBattleFilename(const DtFilename& filename);
166  virtual DtFilename orderOfBattleFilename() const;
167 
169  virtual void setScenarioScriptsFilename(const DtFilename& filename);
170  virtual DtFilename scenarioScriptsFilename() const;
171 
173  virtual void setOrbatFilename(const DtFilename& filename);
174  virtual DtFilename orbatFilename() const;
175 
177  virtual void setPlanFilename(const DtFilename& filename);
178  virtual DtFilename planFilename() const;
179 
181 
182  virtual void setGlobalPlanFilename(const DtFilename& filename);
183  virtual DtFilename globalPlanFilename() const;
185 
187  virtual void setParameterDatabaseFilename(const DtFilename& filename);
188  virtual const DtFilename& parameterDatabaseFilename() const;
189 
191  virtual void setPhysicalWorldFilename(const DtFilename& filename);
192  virtual const DtFilename& physicalWorldFilename() const;
193 
195  virtual void setObjectMapFilename(const DtFilename& filename);
196  virtual DtFilename objectMapFilename() const;
197 
200  virtual void setOverlayFilename(const DtFilename& filename);
201  virtual DtFilename overlayFilename() const;
202 
204  virtual void setSelectionGroupsFilename(const DtFilename& filename);
205  virtual DtFilename selectionGroupsFilename() const;
206 
209  virtual void setSymbolMapFilename(const DtFilename& filename);
210  virtual const DtFilename& symbolMapFilename() const;
211 
214  virtual void setCreateMenuFilename(const DtFilename& filename);
215  virtual const DtFilename& createMenuFilename() const;
216 
220  virtual void setForceHostilityFilename(const DtFilename& filename);
221  virtual DtFilename forceHostilityFilename() const;
222 
226  virtual void setScenarioExtrasFilename(const DtFilename& f);
227  virtual DtFilename scenarioExtrasFilename() const;
229 
235  virtual void setUseDayNightIlluminationModel(bool);
236  virtual bool useDayNightIlluminationModel() const;
237 
239  virtual void setTimeMultiplier(DtReal multiplier);
240  virtual DtReal timeMultiplier() const;
241 
243  virtual void setAutoReorganize(const bool& flag);
244  virtual const bool& autoReorganize() const;
245 
247  virtual void setRandomNumberSeed(long int numberSeed);
248  virtual long int randomNumberSeed() const;
249 
251  virtual DtString frameRateModeString() const;
252  virtual DtFrameMode frameRateMode() const;
253  virtual void setFrameRateModeString(DtString value);
254  virtual void setFrameRateMode(DtFrameMode value);
255 
257  virtual DtReal frameDeltaTime() const;
258  virtual void setFrameDeltaTime(DtReal value);
259 
262  virtual DtTime runDurationTime() const;
263  virtual void setRunDurationTime(DtTime time);
264 
266  virtual void setSimTime(DtTime time);
267  virtual DtTime simTime() const;
268 
270  virtual void setExerciseStartDateAndTime(int year, int month, int day, int hour, int minute, int second);
271 
273  virtual void setExerciseStartDateAndTime(DtTime time);
274 
276  virtual void setExerciseStartTime(DtTime time);
277 
279  virtual DtTime exerciseStartTime() const;
280 
285  virtual void setSetScenarioStartTimeAtSpecifiedLocalTimeOnFirstObjectCreation(bool, int i = 10 * 3600);
286  virtual int setScenarioStartTimeAtSpecifiedLocalTimeOnFirstObjectCreation() const;
287  virtual bool shouldSetScenarioStartTimeAtSpecifiedLocalTimeOnFirstObjectCreation() const;
288 
291  virtual void setCreateGlobalEnvironment(bool b);
292  virtual bool createGlobalEnvironment() const;
294 
298  virtual void setCreateGlobalDynamicTerrain(bool b);
299  virtual bool createGlobalDynamicTerrain() const;
301 
305  virtual DtRwNLengthStringVector& additionalOpdFilenames();
306  virtual const DtRwNLengthStringVector& additionalOpdFilenames() const;
307  virtual void addAdditionalOpdFilename(const DtString&);
308  virtual void removeAdditonalOpdFilename(int iIndex);
309  virtual void setAdditionalOpdFilenames(const DtRwNLengthStringVector&);
311 
314  virtual void setScenarioDescription(const DtString&);
315  virtual DtString scenarioDescription() const;
316 
322  virtual DtRwNLengthStringVector& simulationModelSetFilenames();
323  virtual const DtRwNLengthStringVector& simulationModelSetFilenames() const;
324  virtual DtRwNLengthStringVector& unresolvedSimulationModelSetFilenames();
325  virtual const DtRwNLengthStringVector& unresolvedSimulationModelSetFilenames() const;
326  virtual void addSimulationModelSetFilename(const DtString&);
327  virtual void removeSimulationModelSetFilename(int iIndex);
328  virtual void setSimulationModelSetFilenames(const DtRwNLengthStringVector&);
329  virtual void setSimulationModelSetFilenames(const std::vector<DtFilename>&);
330  virtual void setSimulationModelSetFilenames(const std::vector<std::string>&);
332 
338 
339  virtual DtRwKeyValueList& scenarioData();
340  virtual const DtRwKeyValueList& scenarioData() const;
342 
345 
346  virtual DtString scenarioName() const;
347  virtual void setScenarioName(const DtString& name);
348  virtual bool scenarioNameSpecified() const;
350 
356  static DtFilename validTerrainFile(const DtFilename&);
357 
359  virtual bool isParameterDatabaseRwStringSpecified();
360  virtual bool isPhysicalWorldRwStringSpecified();
361  virtual bool isOrderOfBattleRwStringSpecified();
362  virtual bool isScenarioScriptsRwStringSpecified();
363  virtual bool isOrbatRwStringSpecified();
364  virtual bool isOverlayRwStringSpecified();
365  virtual bool isSelectionGroupsRwStringSpecified();
366  virtual bool isSymbolMapRwStringSpecified();
367  virtual bool isCreateMenuRwStringSpecified();
368  virtual bool isPlanRwStringSpecified();
369  virtual bool isObjectMapRwStringSpecified();
370  virtual bool isTimeMultiplierSpecified();
371  virtual bool isAutoReorganizeRwStringSpecified();
372  virtual bool isRandomNumberSeedSpecified();
373  virtual bool isFrameRateModeSpecified();
374  virtual bool isRunDurationTimeSpecified();
375  virtual bool isFrameDeltaTimeSpecified();
376  virtual bool isSimTimeSpecified();
377  virtual bool isExerciseStartTimeSpecified();
378  virtual bool isForceHostilityRWStringSpecified();
379  virtual bool isScenarioExtrasRWStringSpecified();
380 
381  virtual void setFilename(const DtFilename&);
382  virtual const DtFilename& filename() const;
383 
385  virtual bool writeScenarioFile(const DtFilename & filename);
386 
389  virtual void putSelf(std::string& fp, int indentLevel = 0, bool writeUnspecified = false,
390  const DtFilename& path = DtReaderWriter::appPath());
391 
392  virtual void putSelf(DtEnvironmentSP env, DtEnvValueSP parent) const;
393 
396  virtual void getSelf(DtlObjPtr args, const DtReaderWriter::SearchPaths& searchPaths,
397  const DtVariableBindingsList& variableBindings);
398  virtual void getSelf(const DtEnvironmentSP env, const DtEnvValueSP root,
399  const DtReaderWriter::SearchPaths& searchPaths, const DtVariableBindingsList& varBindings);
400 
402  virtual void finalizeGetSelf();
403 
407  virtual bool isValid(bool allowEmptyFilenames = true, DtString* retMessage = 0) const;
408 
410  virtual double version() const;
411 
413  virtual bool relativeToScenarioFile() const;
414 
416  virtual void setToCurrentVersion();
417 
419  static double currentScenarioVersion();
420 
424  virtual bool mapUUIDToScenarioDataFromOobInScenario(const DtFilename& scenarioFile,
425  ScenarioDataMap& scenarioDataMap, bool mapUUIDOnly = true);
426  virtual bool mapUUIDToScenarioDataFromOobInScenario(DtlInputStream*, ScenarioDataMap& scenarioDataMap, bool mapUUIDOnly = true);
427 
429  virtual bool mapUUIDToScenarioDataFromOobInScenario(ScenarioDataMap& scenarioDataMap, bool mapUUIDOnly = true);
430 
434  virtual void updateSimulationModelSetFilenames();
435 
437  static DtFilename reworkDataDirectory(const DtFilename&);
438 
440  static DtFilename replaceDirectoryWithAppropriateVariable(const DtFilename&);
441 
443  virtual void resolveSimulationModelSetPaths();
444 
446  virtual void resolveDataPaths();
447 public:
448 
449  static DtString getFrameModeNameFromFrameModeType(DtFrameMode);
450 
451  static DtFrameMode getFrameModeTypeFromFrameModeName(
452  const DtString& frameModeName);
453 
454 protected:
465  virtual DtFilename absoluteFilename(const DtFilename&) const;
466 
467 protected:
468 
470 
473  DtFilename myFilename;
474 
477 
480 
483 
486 
489 
490  DtFilename myOrbatFilename;
492 
493  DtFilename myPlanFilename;
495 
498 
501 
502  DtFilename myOverlayFilename;
504 
507 
510 
513 
516 
519 
522 
524 
527 
529 
533 
535 
538 
542 
544 
546 
549 
552 
553 protected:
554 
570 
571  static double theScenarioVersion;
572 };
573 
574 class DtAddressMap;
575 class DtList;
576 class DtBackendMap;
577 
580 typedef bool (*DtLoadBalancingFcn)(DtAddressMap* map, const DtList* backends,
581  bool& remapped, void* usr);
582 
583 typedef bool (*DtRemappingFcn)(DtBackendMap* map, void* usr);
584 
586 {
587 public:
589  DtLoadBalancingFcnInfo(const std::string&, DtLoadBalancingFcn fcn, void*);
591 
593 
594  std::string myLoadBalancer;
597 };
598 
605 const int DtSimulationObjectGroupCreationMode = 0x00000040;
607 
608 const int DtImportScenarioDefaultFlags = DtImportScenarioCreateUniqueNamesOnImport | DtImportScenarioImportScenarioEvents |
610 const int DtSimulationObjectGroupDefaultFlags = DtImportScenarioCreateUniqueNamesOnImport | DtImportScenarioImportScenarioEvents |
611  DtImportScenarioCreateSelectionGroup | DtSimulationObjectGroupPreserveForceInformation | DtSimulationObjectGroupAltitudesAreAboveTerrain;
612 
614 {
615 public:
617  DtScenarioLoadInformation(bool createAsNew, DtScenario*, DtLoadBalancingFcnInfo, DtRemappingFcn fcn = 0, void* remappingUsrData = 0,
618  time_t startTimeOfDay = 0, bool import = false, const DtSimulationAddress& address = DtSimSendToAll);
620 
622 
623 public:
630  bool myImport;
631  DtSimulationAddress myImportLoadAddress;
632 };
633 
635 {
636  DtSimulationObjectGroupSaveInformation() : groupCreationFlags(DtSimulationObjectGroupDefaultFlags),
637  storedInZipFile(true)
638  {
639  };
640 
646 
648  {
649  return ((rootDirectory == rhs.rootDirectory) &&
650  (groupName == rhs.groupName) &&
652  (label == rhs.label) &&
653  (palette == rhs.palette) &&
654  (menuIcon == rhs.menuIcon) &&
656  (categories == rhs.categories) &&
657  (storedInZipFile == rhs.storedInZipFile) &&
659  }
660 
661  bool operator!=(const DtSimulationObjectGroupSaveInformation& rhs) const { return !(*this == rhs); };
662 
663  DtFilename rootDirectory;
664  std::string groupName;
665  std::string groupDescription;
666  std::string palette;
667  std::string menuIcon;
668  std::string label;
670  std::vector<DtString> categories;
671  std::map<DtString, DtString> additionalInformation;
673 };

Document ID: Generated on Thu Apr 12 03:15:37 EDT 2018 from SVN revision 187986
Copyright © 2005-2018 VT MÄK. All Rights Reserved (www.mak.com)