VR-Forces 4.5 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator 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/rwUUID.h"
20 #include "vrfutil/rwInt.h"
21 #include "vrfutil/simClock.h"
24 #include "vrfutil/rwKeyValueList.h"
25 #include <vlpi/simulationAddress.h>
26 
27 #include <boost/unordered_map.hpp>
28 
30 #include <vrfmsgs/messageTypes.h>
31 
32 class DtlInoutStream;
33 
41 
46 
49 typedef bool (*DtPreserveMappingsFcn)(void* usr);
50 
52 {
53 public:
54 
56  DtScenario();
57 
59  DtScenario(const DtString & name,
60  DtReaderWriterRegistry * const parentRegistry = 0);
61 
63  virtual ~DtScenario();
64 
66  DtScenario(const DtScenario& orig);
67 
69  DtScenario& operator=(const DtScenario& orig);
70 
72  virtual bool init();
73 
75  virtual bool readScenarioFile(const DtFilename& filename);
76 
79  bool saveAsZipFile() const;
80  virtual void setSaveAsZipFile(bool);
81 
83  virtual bool save();
84 
87  static bool saveBufferToScenarioZipFile(const DtFilename& scenanarioZipFile, const DtFilename& zipContentsFile,
88  const DtString& buffer);
89  static bool saveBufferToScenarioZipFile(const DtFilename& scenanarioZipFile, const DtFilename& zipContentsFile,
90  const char* buffer, int length);
91 
95  static bool readBufferFromScenarioZipFile(const DtFilename& scenanarioZipFile, const DtFilename& zipContentsFile,
96  DtString& buffer, bool onlyNeedsExtensionMatch = true);
97 
99  static bool fileExistsInZipFile(const DtFilename& scenanarioZipFile, const DtFilename& zipContentsFile,
100  bool onlyNeedsExtensionMatch = true);
101 
104  static bool extractScenarioFileFromZipFile(const DtFilename& scenarioZipFile, const DtFilename& zipContentsFile,
105  bool onlyNeedsExtensionMatch = true);
106 
108  static bool readScenarioFromZipFile(const DtFilename& f, DtScenario& scenario);
109 
111  static bool saveFileToScenarioZipFile(const DtFilename& scenanarioZipFile, const DtFilename& zipContentsFile);
112 
114  static bool isScenarioZipFile(const DtFilename&);
115 
118  virtual DtString toXml(const DtFilename& scenarioFilename);
119 
121  virtual void setupScenarioFilenames(const DtFilename& scenarioFilename,
122  bool saveObjectMap = true);
123 
126  virtual bool save(const DtFilename& filename,
127  bool saveObjectMap = true);
128 
131  virtual DtScenario* clone() const;
132 
137  virtual void setComponentAttachmentRule(int rule);
138  virtual int componentAttachmentRule() const;
139 
141  virtual void setComponentAttachmentTableFilename(const DtFilename& filename);
142  virtual const DtFilename& componentAttachmentTableFilename() const;
145  virtual void setTerrainDatabaseFilename(const DtFilename& filename);
146  virtual const DtFilename& terrainDatabaseFilename() const;
147 
149  virtual void setGuiTerrainDatabaseFilename(const DtFilename& filename);
150  virtual const DtFilename& guiTerrainDatabaseFilename() const;
151 
153  virtual void setOrderOfBattleFilename(const DtFilename& filename);
154  virtual DtFilename orderOfBattleFilename() const;
155 
157  virtual void setScenarioScriptsFilename(const DtFilename& filename);
158  virtual DtFilename scenarioScriptsFilename() const;
159 
161  virtual void setPlanFilename(const DtFilename& filename);
162  virtual DtFilename planFilename() const;
163 
165 
166  virtual void setGlobalPlanFilename(const DtFilename& filename);
167  virtual DtFilename globalPlanFilename() const;
169 
171  virtual void setParameterDatabaseFilename(const DtFilename& filename);
172  virtual const DtFilename& parameterDatabaseFilename() const;
173 
175  virtual void setPhysicalWorldFilename(const DtFilename& filename);
176  virtual const DtFilename& physicalWorldFilename() const;
177 
179  virtual void setObjectMapFilename(const DtFilename& filename);
180  virtual DtFilename objectMapFilename() const;
181 
184  virtual void setOverlayFilename(const DtFilename& filename);
185  virtual DtFilename overlayFilename() const;
186 
188  virtual void setSelectionGroupsFilename(const DtFilename& filename);
189  virtual DtFilename selectionGroupsFilename() const;
190 
193  virtual void setSymbolMapFilename(const DtFilename& filename);
194  virtual const DtFilename& symbolMapFilename() const;
195 
198  virtual void setCreateMenuFilename(const DtFilename& filename);
199  virtual const DtFilename& createMenuFilename() const;
200 
204  virtual void setForceHostilityFilename(const DtFilename& filename);
205  virtual DtFilename forceHostilityFilename() const;
206 
210  virtual void setScenarioExtrasFilename(const DtFilename& f);
211  virtual DtFilename scenarioExtrasFilename() const;
213 
215  virtual void setTimeMultiplier(DtReal multiplier);
216  virtual DtReal timeMultiplier() const;
217 
219  virtual void setAutoReorganize(const bool& flag);
220  virtual const bool& autoReorganize() const;
221 
223  virtual void setRandomNumberSeed(long int numberSeed);
224  virtual long int randomNumberSeed() const;
225 
227  virtual DtString frameRateModeString() const;
228  virtual DtFrameMode frameRateMode() const;
229  virtual void setFrameRateModeString(DtString value);
230  virtual void setFrameRateMode(DtFrameMode value);
231 
233  virtual DtReal frameDeltaTime() const;
234  virtual void setFrameDeltaTime(DtReal value);
235 
238  virtual DtTime runDurationTime() const;
239  virtual void setRunDurationTime(DtTime time);
240 
242  virtual void setSimTime(DtTime time);
243  virtual DtTime simTime() const;
244 
246  virtual void setExerciseStartDateAndTime(int year, int month, int day, int hour, int minute, int second);
247 
249  virtual void setExerciseStartDateAndTime(DtTime time);
250 
252  virtual void setExerciseStartTime(DtTime time);
253 
255  virtual DtTime exerciseStartTime() const;
256 
261  virtual void setSetScenarioStartTimeAtSpecifiedLocalTimeOnFirstObjectCreation(bool, int i = 10 * 3600);
262  virtual int setScenarioStartTimeAtSpecifiedLocalTimeOnFirstObjectCreation() const;
263  virtual bool shouldSetScenarioStartTimeAtSpecifiedLocalTimeOnFirstObjectCreation() const;
264 
267  virtual void setCreateGlobalEnvironment(bool b);
268  virtual bool createGlobalEnvironment() const;
270 
274  virtual void setCreateGlobalDynamicTerrain(bool b);
275  virtual bool createGlobalDynamicTerrain() const;
277 
281  virtual DtRwNLengthStringVector& additionalOpdFilenames();
282  virtual const DtRwNLengthStringVector& additionalOpdFilenames() const;
283  virtual void addAdditionalOpdFilename(const DtString&);
284  virtual void removeAdditonalOpdFilename(int iIndex);
285  virtual void setAdditionalOpdFilenames(const DtRwNLengthStringVector&);
287 
290  virtual void setScenarioDescription(const DtString&);
291  virtual DtString scenarioDescription() const;
292 
298  virtual DtRwNLengthStringVector& simulationModelSetFilenames();
299  virtual const DtRwNLengthStringVector& simulationModelSetFilenames() const;
300  virtual void addSimulationModelSetFilename(const DtString&);
301  virtual void removeSimulationModelSetFilename(int iIndex);
302  virtual void setSimulationModelSetFilenames(const DtRwNLengthStringVector&);
303  virtual void setSimulationModelSetFilenames(const std::vector<DtFilename>&);
304  virtual void setSimulationModelSetFilenames(const std::vector<std::string>&);
306 
312 
313  virtual DtRwKeyValueList& scenarioData();
314  virtual const DtRwKeyValueList& scenarioData() const;
316 
319 
320  virtual DtString scenarioName() const;
321  virtual void setScenarioName(const DtString& name);
322  virtual bool scenarioNameSpecified() const;
324 
330  static DtFilename validTerrainFile(const DtFilename&);
331 
333  virtual bool isParameterDatabaseRwStringSpecified();
334  virtual bool isPhysicalWorldRwStringSpecified();
335  virtual bool isOrderOfBattleRwStringSpecified();
336  virtual bool isScenarioScriptsRwStringSpecified();
337  virtual bool isOverlayRwStringSpecified();
338  virtual bool isSelectionGroupsRwStringSpecified();
339  virtual bool isSymbolMapRwStringSpecified();
340  virtual bool isCreateMenuRwStringSpecified();
341  virtual bool isPlanRwStringSpecified();
342  virtual bool isObjectMapRwStringSpecified();
343  virtual bool isTimeMultiplierSpecified();
344  virtual bool isAutoReorganizeRwStringSpecified();
345  virtual bool isRandomNumberSeedSpecified();
346  virtual bool isFrameRateModeSpecified();
347  virtual bool isRunDurationTimeSpecified();
348  virtual bool isFrameDeltaTimeSpecified();
349  virtual bool isSimTimeSpecified();
350  virtual bool isExerciseStartTimeSpecified();
351  virtual bool isForceHostilityRWStringSpecified();
352  virtual bool isScenarioExtrasRWStringSpecified();
353 
354  virtual void setFilename(const DtFilename&);
355  virtual const DtFilename& filename() const;
356 
358  virtual bool writeScenarioFile(const DtFilename & filename);
359 
362  virtual void putSelf(std::string& fp, int indentLevel = 0, bool writeUnspecified = false,
363  const DtFilename& path = DtReaderWriter::appPath());
364 
365  virtual void putSelf(DtEnvironmentSP env, DtEnvValueSP parent) const;
366 
369  virtual void getSelf(DtlObjPtr args, const DtReaderWriter::SearchPaths& searchPaths,
370  const DtVariableBindingsList& variableBindings);
371  virtual void getSelf(const DtEnvironmentSP env, const DtEnvValueSP root,
372  const DtReaderWriter::SearchPaths& searchPaths, const DtVariableBindingsList& varBindings);
373 
375  virtual void finalizeGetSelf();
376 
380  virtual bool isValid(bool allowEmptyFilenames = true, DtString* retMessage = 0) const;
381 
383  virtual double version() const;
384 
386  virtual bool relativeToScenarioFile() const;
387 
389  virtual void setToCurrentVersion();
390 
392  static double currentScenarioVersion();
393 
397  virtual bool mapUUIDToNameFromOobInScenario(const DtFilename& scenarioFile,
398  boost::unordered_map<DtUUID, std::string>& uuidToMarkingTextMap, bool mapUUIDOnly = true);
399  virtual bool mapUUIDToNameFromOobInScenario(DtlInputStream*, boost::unordered_map<DtUUID, std::string>& uuidToMarkingTextMap, bool mapUUIDOnly = true);
400 
401 public:
402 
403  static DtString getFrameModeNameFromFrameModeType(DtFrameMode);
404 
405  static DtFrameMode getFrameModeTypeFromFrameModeName(
406  const DtString& frameModeName);
407 
408 protected:
419  virtual DtFilename absoluteFilename(const DtFilename&) const;
420 
421 protected:
422 
424 
427  DtFilename myFilename;
428 
431 
434 
437 
440 
443 
444  DtFilename myPlanFilename;
446 
449 
452 
453  DtFilename myOverlayFilename;
455 
458 
461 
464 
467 
470 
473 
475 
478 
480 
484 
486 
489 
492 
494 
496 
499 
502 
503 protected:
504 
519 
520  static double theScenarioVersion;
521 };
522 
523 class DtAddressMap;
524 class DtList;
525 class DtBackendMap;
526 
529 typedef bool (*DtLoadBalancingFcn)(DtAddressMap* map, const DtList* backends,
530  bool& remapped, void* usr);
531 
532 typedef bool (*DtRemappingFcn)(DtBackendMap* map, void* usr);
533 
535 {
536 public:
538  DtLoadBalancingFcnInfo(const std::string&, DtLoadBalancingFcn fcn, void*);
540 
542 
543  std::string myLoadBalancer;
546 };
547 
554 const int DtSimulationObjectGroupCreationMode = 0x00000040;
556 
557 const int DtImportScenarioDefaultFlags = DtImportScenarioCreateUniqueNamesOnImport | DtImportScenarioImportScenarioEvents |
559 const int DtSimulationObjectGroupDefaultFlags = DtImportScenarioCreateUniqueNamesOnImport | DtImportScenarioImportScenarioEvents |
560  DtImportScenarioCreateSelectionGroup | DtSimulationObjectGroupPreserveForceInformation | DtSimulationObjectGroupAltitudesAreAboveTerrain;
561 
563 {
564 public:
566  DtScenarioLoadInformation(bool createAsNew, DtScenario*, DtLoadBalancingFcnInfo, DtRemappingFcn fcn = 0, void* remappingUsrData = 0,
567  time_t startTimeOfDay = 0, bool import = false, const DtSimulationAddress& address = DtSimSendToAll);
569 
571 
572 public:
579  bool myImport;
580  DtSimulationAddress myImportLoadAddress;
581 };
582 
584 {
585  DtSimulationObjectGroupSaveInformation() : groupCreationFlags(DtSimulationObjectGroupDefaultFlags),
586  storedInZipFile(false)
587  {
588  };
589 
595 
597  {
598  return ((rootDirectory == rhs.rootDirectory) &&
599  (groupName == rhs.groupName) &&
601  (label == rhs.label) &&
602  (palette == rhs.palette) &&
603  (menuIcon == rhs.menuIcon) &&
605  (categories == rhs.categories) &&
606  (storedInZipFile == rhs.storedInZipFile) &&
608  }
609 
610  bool operator!=(const DtSimulationObjectGroupSaveInformation& rhs) const { return !(*this == rhs); };
611 
612  DtFilename rootDirectory;
613  std::string groupName;
614  std::string groupDescription;
615  std::string palette;
616  std::string menuIcon;
617  std::string label;
619  std::vector<DtString> categories;
620  std::map<DtString, DtString> additionalInformation;
622 };

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)