![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2000 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: scenario.h,v $ $Revision: 1.12 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00012 #ifndef DtScenario_H_ 00013 #define DtScenario_H_ 00014 00015 #include "vrfutil/rdrWritr.h" 00016 #include <vlutil/vlString.h> 00017 #include <vlutil/vlFilename.h> 00018 #include "vrfutil/rwString.h" 00019 #include "vrfutil/rwBoolean.h" 00020 #include "vrfutil/rwReal.h" 00021 #include "vrfutil/rwUnsigned.h" 00022 #include "vrfutil/rwInt.h" 00023 #include "vrfutil/vlClock.h" 00024 #include "vrfutil/strIntMapper.h" 00025 #include "vrfutil/rwNLengthStringVector.h" 00026 #include "vrfutil/rwKeyValueList.h" 00028 #include <vrfExtProtocol/msgTypes.h> 00029 00037 00039 00042 typedef bool (*DtPreserveMappingsFcn)(void* usr); 00043 00044 #include "vrfutil/vrfutilDefines.h" 00045 class DT_DLL_vrfutil DtScenario : public DtReaderWriter 00046 { 00047 public: 00048 00050 DtScenario(); 00051 00053 DtScenario(const DtString & name, 00054 DtReaderWriterRegistry * const parentRegistry = 0); 00055 00057 virtual ~DtScenario(); 00058 00060 DtScenario(const DtScenario& orig); 00061 00063 DtScenario& operator=(const DtScenario& orig); 00064 00066 virtual bool init(); 00067 00069 virtual bool readScenarioFile(const DtFilename& filename); 00070 00072 virtual bool save(); 00073 00076 virtual bool save(const DtFilename& filename, 00077 bool saveObjectMap = true); 00078 00081 virtual DtScenario* clone() const; 00082 00087 virtual void setComponentAttachmentRule(int rule); 00088 virtual int componentAttachmentRule() const; 00089 00091 virtual void setComponentAttachmentTableFilename(const DtFilename& filename); 00092 virtual const DtFilename& componentAttachmentTableFilename() const; 00095 virtual void setTerrainDatabaseFilename(const DtFilename& filename); 00096 virtual const DtFilename& terrainDatabaseFilename() const; 00097 00099 virtual void setGuiTerrainDatabaseFilename(const DtFilename& filename); 00100 virtual const DtFilename& guiTerrainDatabaseFilename() const; 00101 00103 virtual void setOrderOfBattleFilename(const DtFilename& filename); 00104 virtual DtFilename orderOfBattleFilename() const; 00105 00107 virtual void setPlanFilename(const DtFilename& filename); 00108 virtual DtFilename planFilename() const; 00109 00111 00112 virtual void setGlobalPlanFilename(const DtFilename& filename); 00113 virtual DtFilename globalPlanFilename() const; 00115 00117 virtual void setParameterDatabaseFilename(const DtFilename& filename); 00118 virtual const DtFilename& parameterDatabaseFilename() const; 00119 00121 virtual void setPhysicalWorldFilename(const DtFilename& filename); 00122 virtual const DtFilename& physicalWorldFilename() const; 00123 00125 virtual void setObjectMapFilename(const DtFilename& filename); 00126 virtual DtFilename objectMapFilename() const; 00127 00130 virtual void setOverlayFilename(const DtFilename& filename); 00131 virtual DtFilename overlayFilename() const; 00132 00134 virtual void setSelectionGroupsFilename(const DtFilename& filename); 00135 virtual DtFilename selectionGroupsFilename() const; 00136 00139 virtual void setSymbolMapFilename(const DtFilename& filename); 00140 virtual const DtFilename& symbolMapFilename() const; 00141 00144 virtual void setCreateMenuFilename(const DtFilename& filename); 00145 virtual const DtFilename& createMenuFilename() const; 00146 00150 virtual void setForceHostilityFilename(const DtFilename& filename); 00151 virtual DtFilename forceHostilityFilename() const; 00152 00156 virtual void setScenarioExtrasFilename(const DtFilename& f); 00157 virtual DtFilename scenarioExtrasFilename() const; 00159 00161 virtual void setTimeMultiplier(DtReal multiplier); 00162 virtual DtReal timeMultiplier() const; 00163 00165 virtual void setAutoReorganize(const bool& flag); 00166 virtual const bool& autoReorganize() const; 00167 00169 virtual void setRandomNumberSeed(unsigned numberSeed); 00170 virtual unsigned randomNumberSeed() const; 00171 00173 virtual DtString frameRateModeString() const; 00174 virtual DtFrameMode frameRateMode() const; 00175 virtual void setFrameRateModeString(DtString value); 00176 virtual void setFrameRateMode(DtFrameMode value); 00177 00179 virtual DtReal frameDeltaTime() const; 00180 virtual void setFrameDeltaTime(DtReal value); 00181 00184 virtual DtTime runDurationTime() const; 00185 virtual void setRunDurationTime(DtTime time); 00186 00188 virtual void setSimTime(DtTime time); 00189 virtual DtTime simTime() const; 00190 00192 virtual void setExerciseStartTime(DtTime time); 00193 virtual DtTime exerciseStartTime() const; 00194 00198 virtual DtRwNLengthStringVector& additionalOpdFilenames(); 00199 virtual const DtRwNLengthStringVector& additionalOpdFilenames() const; 00200 virtual void addAdditionalOpdFilename(const DtString&); 00201 virtual void removeAdditonalOpdFilename(int iIndex); 00202 virtual void setAdditionalOpdFilenames(const DtRwNLengthStringVector&); 00204 00207 virtual void setScenarioDescription(const DtString&); 00208 virtual DtString scenarioDescription() const; 00209 00215 virtual DtRwNLengthStringVector& simulationModelSetFilenames(); 00216 virtual const DtRwNLengthStringVector& simulationModelSetFilenames() const; 00217 virtual void addSimulationModelSetFilename(const DtString&); 00218 virtual void removeSimulationModelSetFilename(int iIndex); 00219 virtual void setSimulationModelSetFilenames(const DtRwNLengthStringVector&); 00221 00222 virtual DtRwKeyValueList& scenarioData(); 00223 virtual const DtRwKeyValueList& scenarioData() const; 00224 00227 00228 virtual DtString scenarioName() const; 00229 virtual void setScenarioName(const DtString& name); 00230 virtual bool scenarioNameSpecified() const; 00232 00238 static DtFilename validTerrainFile(const DtFilename&); 00239 00241 virtual bool isParameterDatabaseRwStringSpecified(); 00242 virtual bool isPhysicalWorldRwStringSpecified(); 00243 virtual bool isOrderOfBattleRwStringSpecified(); 00244 virtual bool isOverlayRwStringSpecified(); 00245 virtual bool isSelectionGroupsRwStringSpecified(); 00246 virtual bool isSymbolMapRwStringSpecified(); 00247 virtual bool isCreateMenuRwStringSpecified(); 00248 virtual bool isPlanRwStringSpecified(); 00249 virtual bool isObjectMapRwStringSpecified(); 00250 virtual bool isTimeMultiplierSpecified(); 00251 virtual bool isAutoReorganizeRwStringSpecified(); 00252 virtual bool isRandomNumberSeedSpecified(); 00253 virtual bool isFrameRateModeSpecified(); 00254 virtual bool isFrameDeltaTimeSpecified(); 00255 virtual bool isSimTimeSpecified(); 00256 virtual bool isExerciseStartTimeSpecified(); 00257 virtual bool isForceHostilityRWStringSpecified(); 00258 virtual bool isScenarioExtrasRWStringSpecified(); 00259 00260 virtual void setFilename(const DtFilename&); 00261 virtual const DtFilename& filename() const; 00262 00264 virtual bool writeScenarioFile(const DtFilename & filename); 00265 00268 virtual void putSelf(FILE *fp, int indentLevel = 0, bool writeUnspecified = false, 00269 const DtFilename& path = DtReaderWriter::appPath()); 00270 00273 virtual void getSelf(DtlObjPtr args, const DtFilename& searchPath, 00274 const DtVariableBindingsList& variableBindings); 00275 00279 virtual bool isValid(bool allowEmptyFilenames = true, DtString* retMessage = 0) const; 00280 00282 virtual double version() const; 00283 00285 virtual bool relativeToScenarioFile() const; 00286 00288 virtual void setToCurrentVersion(); 00289 00291 static double currentScenarioVersion(); 00292 00293 public: 00294 00295 static DtString getFrameModeNameFromFrameModeType(DtFrameMode); 00296 00297 static DtFrameMode getFrameModeTypeFromFrameModeName( 00298 const DtString& frameModeName); 00299 00300 protected: 00311 virtual DtFilename absoluteFilename(const DtFilename&) const; 00312 00313 protected: 00314 00315 DtRwInt myComponentAttachmentRule; 00316 00317 DtFilename myComponentAttachmentTableFilename; 00318 DtRwString myComponentAttachmentTableRwString; 00319 DtFilename myFilename; 00320 00321 DtFilename myTerrainDatabaseFilename; 00322 DtRwString myTerrainDatabaseRwString; 00323 00324 DtFilename myPhysicalWorldFilename; 00325 DtRwString myPhysicalWorldRwString; 00326 00327 DtFilename myGuiTerrainDatabaseFilename; 00328 DtRwString myGuiTerrainDatabaseRwString; 00329 00330 DtFilename myOrderOfBattleFilename; 00331 DtRwString myOrderOfBattleRwString; 00332 00333 DtFilename myPlanFilename; 00334 DtRwString myPlanRwString; 00335 00336 DtFilename myGlobalPlanFilename; 00337 DtRwString myGlobalPlanRwString; 00338 00339 DtFilename myParameterDatabaseFilename; 00340 DtRwString myParameterDatabaseRwString; 00341 00342 DtFilename myOverlayFilename; 00343 DtRwString myOverlayRwString; 00344 00345 DtFilename mySelectionGroupsFilename; 00346 DtRwString mySelectionGroupsRwString; 00347 00348 DtFilename mySymbolMapFilename; 00349 DtRwString mySymbolMapRwString; 00350 00351 DtFilename myCreateMenuFilename; 00352 DtRwString myCreateMenuRwString; 00353 00354 DtFilename myObjectMapFilename; 00355 DtRwString myObjectMapRwString; 00356 00357 DtFilename myForceHostilityFilename; 00358 DtRwString myForceHostilityRwString; 00359 00360 DtFilename myScenarioExtrasFilename; 00361 DtRwString myScenarioExtrasRWString; 00362 00363 DtRwReal myTimeMultiplier; 00364 00365 bool myAutoReorganize; 00366 DtRwBoolean myAutoReorganizeRW; 00367 00368 DtRwUnsigned myRandomNumberSeed; 00369 00370 DtRwString myFrameRateModeString; 00371 DtFrameMode myFrameRateMode; 00372 DtRwReal myFrameDeltaTime; 00373 00374 DtTime myRunDurationTime; 00375 00376 DtRwReal mySimTime; 00377 DtRwReal myExerciseStartTime; 00378 00379 DtRwNLengthStringVector myAdditionalOpdFilenames; 00380 DtRwNLengthStringVector mySimulationModelSetFilenames; 00381 00382 DtRwString myScenarioName; 00383 00384 DtRwKeyValueList myScenarioData; 00385 00387 DtRwReal myVersion; 00388 00389 protected: 00390 00391 static DtString thePhysicalWorldFilenameExtension; 00392 static DtString theOrderOfBattleExtension; 00393 static DtString theOverlayExtension; 00394 static DtString theSelectionGroupsExtension; 00395 static DtString theSymbolMapExtension; 00396 static DtString theCreateMenuExtension; 00397 static DtString thePlanExtension; 00398 static DtString theGlobalPlanExtension; 00399 static DtString theObjectMapExtension; 00400 static DtString theParameterDatabaseExtension; 00401 static DtString theFileExtension; 00402 static DtString theForceHostilityExtension; 00403 static DtString theScenarioDataExtension; 00404 00405 static double theScenarioVersion; 00406 }; 00407 00408 class DtAddressMap; 00409 class DtList; 00410 class DtBackendMap; 00411 00412 typedef bool (*DtLoadBalancingFcn)(DtAddressMap* map, const DtList* backends, void* usr); 00413 typedef bool (*DtRemappingFcn)(DtBackendMap* map, void* usr); 00414 00415 class DT_DLL_vrfutil DtLoadBalancingFcnInfo 00416 { 00417 public: 00418 DtLoadBalancingFcnInfo(); 00419 DtLoadBalancingFcnInfo(const std::string&, DtLoadBalancingFcn fcn, void*); 00420 DtLoadBalancingFcnInfo(const DtLoadBalancingFcnInfo&); 00421 00422 DtLoadBalancingFcnInfo& operator=(const DtLoadBalancingFcnInfo&); 00423 00424 std::string myLoadBalancer; 00425 DtLoadBalancingFcn myLoadBalancingFcn; 00426 void* myLoadBalancingUserData; 00427 }; 00428 00429 class DT_DLL_vrfutil DtScenarioLoadInformation 00430 { 00431 public: 00432 DtScenarioLoadInformation(); 00433 DtScenarioLoadInformation(bool createAsNew, DtScenario*, DtLoadBalancingFcnInfo, DtRemappingFcn fcn = 0, void* remappingUsrData = 0, 00434 int startTimeOfDay = 12 * 3600); 00435 DtScenarioLoadInformation(const DtScenarioLoadInformation&); 00436 00437 DtScenarioLoadInformation& operator=(const DtScenarioLoadInformation&); 00438 00439 public: 00440 bool myCreateAsNew; 00441 DtScenario* myScenario; 00442 DtLoadBalancingFcnInfo myInfo; 00443 DtRemappingFcn myRemappingFcn; 00444 void* myRemappingUserData; 00445 int myStartTimeOfDay; 00446 }; 00447 00448 #endif 00449