![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2012 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtIndirectFireManager.h,v $ $Revision: 1.2 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00011 00012 #pragma once 00013 00014 #include <vrfGuiCore/vrfGuiCore.h> 00015 #include <vrfGuiCore/DtIndirectFireSettingsRecord.h> 00016 #include <vrvUtil/DtVirtualBaseClass.h> 00017 #include <vrfutil/indirectArtilleryTypesManager.h> 00018 #include <vrvUtil/DtSignalConnectionManager.h> 00019 #include <vrvUtil/DtUnicode.h> 00020 #include <vrvCore/DtStateView.h> 00021 #include <vrfmsgs/ifModifyIndirectArtilleryObject.h> 00022 00023 #include <vrvUtil/signalslib.h> 00024 00025 namespace makVrv 00026 { 00027 class DtDe; 00028 class DtSimObjectEntry; 00029 class DtRecordSettingsBackupInterface; 00030 class DtSharedSettingsManager; 00031 } 00032 00033 class DtSimMessage; 00034 00035 namespace makVrf 00036 { 00037 class DtIndirectFireSettingsRecord; 00038 struct DtVrlinkSimulatedEnvironmentProcess; 00039 00040 static const makVrv::DtUnicode DtIndirectFireName = makVrv::DtUnicode::tr("Indirect Fire"); 00041 00045 00046 class DT_DLL_VRFGUICORE DtIndirectFireManager : public makVrv::DtVirtualBaseClass 00047 { 00048 public: 00049 00050 struct IndirectFireData 00051 { 00052 const makVrv::DtStateView<DtVrlinkSimulatedEnvironmentProcess>* myState; 00053 DtIfIndirectArtilleryData myData; 00054 std::string myName; 00055 }; 00056 00057 typedef std::map<makVrv::DtElementID, IndirectFireData> IndirectFireMap; 00058 00059 public: 00061 DtIndirectFireManager(makVrv::DtDe&); 00062 00064 virtual ~DtIndirectFireManager(); 00065 00067 static DtIndirectFireManager& instance(makVrv::DtDe& de); 00068 00070 static void registerInstance(makVrv::DtDe&, DtIndirectFireManager*); 00071 00072 void setAutoSave(bool b); 00073 bool autoSave() const; 00074 00076 virtual void getRecord(DtIndirectFireSettingsRecord& rec) const; 00077 virtual void getDefaultData(DtIfIndirectArtilleryData& rec) const; 00078 00079 virtual void setFromRecord(const DtIndirectFireSettingsRecord& rec); 00080 00082 virtual void emptyList(); 00083 00086 virtual void load (const std::string&); 00087 00088 const IndirectFireMap& indirectArtillery() const 00089 { 00090 return myIndirectFire; 00091 } 00092 00094 virtual bool hasIndirectFireData(makVrv::DtElementID) const; 00095 00097 virtual DtIfIndirectArtilleryData indirectArtilleryData(makVrv::DtElementID id) const; 00098 00099 const DtIndirectArtilleryTypesManager& typesManager() const; 00101 virtual void loadDefaults(bool fromFactory = false); 00102 00104 virtual void saveAsDefaults(); 00105 00106 const makVrv::DtRecordSettingsBackupInterface* settingsBackup() const 00107 { 00108 return mySettingsBackup; 00109 } 00110 00111 makVrv::DtRecordSettingsBackupInterface* settingsBackup() 00112 { 00113 return mySettingsBackup; 00114 } 00115 00117 void exportSettings(const std::string& fileName); 00118 00120 void importSettings(const std::string& fileName); 00121 00122 public: 00124 boost::signal<void (const DtIndirectFireSettingsRecord&)> signal_indirectArtillerySettingsChanged; 00125 00126 boost::signal<void (makVrv::DtElementID, const std::string& name, const DtIfIndirectArtilleryData&)> signal_updated; 00127 boost::signal<void (makVrv::DtElementID)> signal_removed; 00128 00129 protected: 00131 virtual void initArtilleryAreas(); 00132 00135 virtual void slot_simObjectEntryAboutToBeRemoved(makVrv::DtSimObjectEntry& e); 00136 00139 virtual void slot_simStateAdded(makVrv::DtSimObjectEntry& e); 00140 00142 virtual void addIfArtillery(const makVrv::DtStateView<DtVrlinkSimulatedEnvironmentProcess>*); 00143 00146 virtual void waiting(); 00147 00150 virtual void indirectArtilleryDataReceived(DtSimMessage*); 00151 00153 virtual void slot_onArtilleryUpdated(const makVrv::DtStateView<DtVrlinkSimulatedEnvironmentProcess>*); 00154 00155 protected: 00156 DtIndirectArtilleryTypesManager myManager; 00157 makVrv::DtDe& myDe; 00158 00159 makVrv::DtSignalConnectionManager myConnectionManager; 00160 std::map<makVrv::DtElementID, bool> myWaiting; 00161 IndirectFireMap myIndirectFire; 00162 00163 makVrv::DtRecordSettingsBackupInterface* mySettingsBackup; 00164 DtIndirectFireSettingsRecord myIndirectFireSettings; 00165 }; 00166 }