29 #include <vlutil/vlFilename.h>
30 #include <mtl/envValue.h>
31 #include <matrix/3dBoundingVolume.h>
34 #include <QtCore/QHash>
35 #include <QtGui/QPixmap>
36 #include <QtCore/QObject>
64 class DtEntityMapperKey;
65 class DtVrfVisualsManager;
66 class DtVrfEntityTypeMapper;
72 class DtModelDefinitionManager;
73 class DtEntityTypeMapper;
81 class DtVariableBindingList;
90 LoadDataFiles = 0x00000001,
91 LoadParameterFiles = 0x00000002,
92 LoadSystemFiles = 0x00000004,
93 LoadSupportingFiles = 0x00000008,
94 LoadStandardSensorObjects = 0x00000010,
95 LoadTranslationFiles = 0x00000020,
96 LoadVisualFiles = 0x00000040,
97 LoadOrCreateVisualFiles = 0x00000080,
98 LoadAutoTagInformation = 0x00000100,
99 LoadAll = LoadDataFiles | LoadParameterFiles | LoadSystemFiles | LoadSupportingFiles | LoadStandardSensorObjects | LoadTranslationFiles | LoadOrCreateVisualFiles | LoadAutoTagInformation
104 SystemCategories = 0,
132 void reparentEnvironmentChildren(DtEnvList*, DtEnvValueSP root)
const;
134 DtEnvValueSP backup();
135 DtEnvValueSP update();
137 void remove(DtEnvValueSP originalNode, DtEnvValueSP modifiedNode);
138 bool isEmpty()
const;
140 DtEnvValueSP replace(
DtEnvironmentSP env, DtEnvValueSP node, DtEnvValueSP replaceWith);
141 void reparentRoots(DtEnvValueSP templateRoot, DtEnvValueSP newRoot)
const;
246 virtual bool save(
const DtFilename&);
260 virtual void setLoadVisuals(
bool);
263 virtual bool hasFileNamed(
const std::string& s)
const;
267 virtual bool addNewDataFile(
const std::string&);
270 virtual bool addNewSimulationObjectGroup(
const std::string&);
273 virtual bool addNewRandomizedObject(
const std::string&);
276 virtual bool readOnly()
const;
277 virtual void setReadOnly(
bool);
280 virtual void setSaveReadOnlyFlag(
bool);
281 virtual bool saveReadOnlyFlag()
const;
285 virtual bool hasComponentByDescriptorType(
const DtFilename&,
const DtString& descriptor)
const;
289 virtual bool hasComponentByComponentType(
const DtFilename&,
const DtString& descriptor)
const;
292 virtual bool simulationObjectGroupExists(
const std::string&)
const;
295 virtual bool randomizedObjectExists(
const std::string&)
const;
297 virtual QImage* warningIcon()
const;
305 virtual DtModelSetEntry* createNewAmmunitionEntryFromExisting(
EntityData* data,
const std::string& newName,
const DtEntityType& newType,
322 return mySimulationModelSet;
342 virtual bool addMissingVariablesFromPlatformsAndSystems(QWidget* parent = 0,
bool saveAllIfAnyModified =
false);
343 virtual bool addMissingVariablesFromPlatformsAndSystems(EntityData* data, std::map<DtString, DtRwVariableBindings*>&);
346 virtual void regenerateOpeFiles();
349 virtual void regenerateSystemFiles();
352 virtual std::vector<DtComponentSystemDefinition*> systemsThatCanBeDamagedBy(
const DtString&)
const;
358 virtual std::vector<DtString> rangesByPowerType(
const DtString&)
const;
359 virtual void setSupportedRangesByPowerType(
const DtString&,
const std::vector<DtString>&);
361 virtual std::set<DtString> powerTypes(
bool hasHumanActuator)
const;
362 virtual void addPowerType(
const DtString&,
const QString& withoutAddition,
const QString& withAddition,
bool needForceAdditional =
false,
363 const QString& withoutAdditionX =
"",
const QString& witAdditionX =
"",
bool humanOnly =
false);
367 virtual QString powerTitle(
const DtString&,
const QString& addition =
"",
bool applyAdditionalToAll =
false,
bool xAxis =
false)
const;
370 virtual void createSupportedDetonations();
372 DtFilename getSystemDirectory()
const;
373 DtFilename getNavDataDirectory()
const;
374 DtFilename getFormationDirectory()
const;
375 DtFilename getGuiDirectory()
const;
376 DtFilename path()
const;
379 DtFilename simulationModelSetFilename()
const;
381 virtual bool openSystemFiles(
DtSimulationModelSet*
set,
const DtFilename& directory,
bool isInMasterSMS);
385 virtual bool loadForceHostilityFile(
const DtFilename& f);
386 virtual bool loadAmmunitionParameters(
const DtFilename& f,
bool inMasterSMS,
DtSimulationModelSet* sms);
387 virtual bool loadDetonationParameters(
const DtFilename& f,
bool inMasterSMS,
DtSimulationModelSet* sms);
402 virtual std::vector<DtComponentSystemDefinition*> systemsThatUseAmmunition(
const DtString&)
const;
403 virtual std::vector<DtComponentSystemDefinition*> systemsThatUseTemplate(
const DtFilename&)
const;
406 virtual void makeTemplate(EntityData*);
410 virtual const std::vector<DtString>& iconLists()
const;
411 virtual bool hasIconList(
const DtString&)
const;
414 virtual void addIconList(
const DtString&);
415 virtual void removeIconList(
const DtString&);
416 virtual void setIconLists(
const std::vector<DtString>&);
417 virtual void loadIconLists(
const DtFilename&);
418 virtual void saveIconLists(
const DtFilename&);
424 virtual bool loadModelSet();
431 virtual DtFilename modelDefinitionFile(
const DtObjectType&,
bool resolve)
const;
434 virtual DtString simulationModelSetFor(
const DtEntityType&)
const;
437 virtual DtString simulationModelSetFor(
const DtFilename&)
const;
459 virtual bool containsObjectType(
const DtObjectType&,
bool onlyFromMasterSMS =
false,
DtString* name = 0)
const;
465 virtual bool isSimulationObjectGroup(
const DtObjectType&)
const;
469 virtual bool hasModelNamed(
const DtString&,
bool& isDeleted);
472 virtual std::vector<DtSimulationModelSet*> modelSets()
const;
474 virtual QString ammunitionDisplayName(
const DtEntityType&)
const;
478 return myAvailableParameters;
482 virtual bool hasHumanDamageSystem(
const std::vector<DtComponentSystemDefinition*>&)
const;
486 virtual bool createRwVariable(
const DtObjectType&,
const std::string& rwType,
const std::string& rwName,
DtReaderWriter*& source,
489 virtual void replaceSystem(
const DtFilename&);
491 virtual bool entryIsRandomized(
const DtObjectType&)
const;
492 virtual bool canAddSubordinatesTo(
const DtObjectType&)
const;
495 virtual bool isModified(EntityData*)
const;
499 virtual bool isModified(
const DtFilename&)
const;
501 virtual bool isModified()
const;
504 virtual bool isNew(EntityData*)
const;
507 virtual bool isDeleted(EntityData*)
const;
510 virtual bool isDeleted(
const DtFilename&)
const;
513 virtual bool isNew(
const DtFilename&)
const;
515 virtual std::vector<EntityData*> objectsThatUseSystems(
const std::vector<DtComponentSystemDefinition*>& rw)
const;
523 virtual void saveModelDefinitionManager();
547 virtual void deleteModel(EntityData*);
550 virtual void deleteSystem(
const DtFilename&);
561 virtual bool setAdditionalMatchTypes(
const DtObjectType& key,
const std::list<DtObjectType> additionalMatchTypes);
565 virtual void updateGuiInformation(EntityData*);
568 virtual void updateSystemData(EntityData*);
571 virtual void sharedSystems(
const DtFilename& systemFile, std::vector<DtModelSetEntry*>& result)
const;
574 virtual void updateDataInformation(EntityData*);
585 virtual const QStringList& masterModeCategories(CategoryTypes)
const;
586 virtual QStringList& masterModeCategories(CategoryTypes);
587 virtual QStringList defaultCategoriesAsStringList(CategoryTypes)
const;
595 virtual void loadAutoTagInformation();
601 virtual void revertCategories(CategoryTypes);
602 virtual bool hasModifiedCategories(CategoryTypes)
const;
603 virtual bool saveDefaultCategories(
const DtFilename&, CategoryTypes);
604 virtual bool loadDefaultCategories(
const DtFilename&, CategoryTypes);
606 void setDefaultOverlayLayers(
const QStringList&);
607 const QStringList& defaultOverlayLayers()
const;
608 virtual void revertOverlayLayers();
609 virtual bool hasModifiedOverlayLayers()
const;
610 virtual void changeDefaultOverlayLayer(
const QString& old,
const QString& newCat);
611 virtual void addDefaultOverlayLayers(
QComboBox*);
612 void addDefaultOverlayLayer(
const QString&);
618 virtual void changeDefaultDeployedCountry(
const QString& old,
const QString& newCat);
619 virtual void addDefaultDeployedCountries(
QComboBox*);
620 void setDefaultDeployedCountries(
const QStringList&);
621 void addDefaultDeployedCountry(
const QString&);
622 const QStringList& defaultDeployedCountries()
const;
623 virtual void revertDeployedCountries();
624 virtual bool hasModifiedDeployedCountries()
const;
627 virtual void resetVisuals();
633 virtual std::map<std::string, DtEntityType> templatesForKind(
int)
const;
634 virtual std::map<std::string, DtEntityType> templatesThatMatch(
const DtEntityType&)
const;
651 virtual void removeSystem(
const DtFilename&);
656 bool sizeToFont =
false);
658 virtual QPixmap getUnfilledIcon(
const makVrf::DtEntityMapperKey& key,
const QColor& outlineColor = Qt::black,
int pointSize = 48,
659 bool sizeToFont =
false);
668 virtual void checkParameterUpdates(EntityData*);
669 virtual void checkParameterUpdates(
const std::set<makVrf::DtEntityMapperKey>&);
712 virtual Dt3dBoundingVolume boundingVolumeFor(
const DtObjectType&)
const;
730 virtual void setForceManagerModified(
bool);
731 virtual bool forceManagerModified()
const;
734 virtual bool isInMasterSMS(
const DtFilename&)
const;
738 virtual DtString smsName(
const DtFilename&)
const;
745 virtual bool saveData();
746 virtual bool saveData(EntityData* data,
bool force =
false);
749 virtual bool saveFavorites();
752 virtual bool saveSystems();
755 virtual bool saveAmmunitionTable();
758 virtual bool saveDetonationTable();
761 virtual DtObjectType templateObjectType(
const std::string& parameterType)
const;
764 virtual void addInternalItem(
const std::string&,
bool markDataAsWell =
true);
767 virtual void addIgnorePlatformType(
const DtString&);
771 virtual QString parameterDisplayName(
const DtString& parameterType,
bool stopAtFirst =
true)
const;
774 virtual std::map<DtString, QString> availableParameterTypes(
const std::set<std::string>& except = std::set<std::string>())
const;
778 virtual std::vector<DtReaderWriter*> supportPointsFor(
const DtObjectType&)
const;
784 virtual makVrv::DtUnicode systemNameForSystem(
const std::string&, DtFilename& fullFilename)
const;
787 virtual bool hasFactoryChecksums()
const;
800 virtual DtFilename filenameToSystemFilename(DtFilename systemFilename)
const;
807 virtual std::map<DtSymbolString, DtAmmunitionParamsEntry*> ammunitionTable()
const;
819 virtual std::set<DtEntityType> detonationTypes()
const;
826 virtual std::map<DtComponentSystemDefinition*, const DtRangeProbabilityTable*> getSystemsAndHitTables()
const;
844 virtual QString ammunitionDisplayName(
const DtSymbolString&)
const;
848 virtual bool ammunitionCanTarget(
const DtSymbolString&,
const DtEntityType&)
const;
852 boost::signal<void (std::vector<EntityData*>)> signal_newDataFileAdded;
871 bool hasSimulationModelSet()
const;
873 const DtFilename& parameterFilename()
const;
878 DtFilename modelSetDirectory()
const;
880 virtual void forceRemoved(DtForceType forceType);
884 virtual std::vector<const DtComponentSystemDefinition*> systemDefinitionsFor(
const DtObjectType& o)
const;
913 bool loadTemplates =
false);
917 virtual void cleanup();
918 virtual bool ignorePlatformType(
const DtString&)
const;
920 virtual bool saveForceHostility(
const DtFilename&
filename);
922 virtual bool warned(
const DtFilename&);
923 virtual void removeEntityFromSubObjects(
const DtObjectType&);
944 virtual std::vector<EntityData*> addDataFromFile(
const DtString& file,
946 bool signalAddition =
true,
bool isTemplate=
false,
LoadFlags flags = LoadAll);
951 virtual void addToInternalCategories(
DtModelSetEntry* entry,
bool isInMasterSMS);
958 virtual ParametersMap::const_iterator findAvailablePlatform(
const DtString& platform)
const;
959 virtual ParametersData::const_iterator findAvailableParameter(
const DtString& platform)
const;
960 virtual ParametersData::const_iterator findAvailableParameterFromFile(
const DtFilename& platform)
const;
961 virtual ParametersData::const_iterator findAvailableParameterType(
const DtString& parameterType)
const;
976 virtual bool updateAndAddMatchTypeVisuals(
EntityData* baseType,
const DtEntityType& matchType);
979 virtual bool removeMatchingTypeFromVisuals(
const DtEntityType& matchType);
1131 return iter->second;
1143 return iter->second;
1186 return !(lhs.operator<(rhs));
1196 virtual void loadAllSmsFiles();