VR-Forces 4.0.4 Class Documentation
include/vrfGuiCore/DtIndirectFireManager.h
Go to the documentation of this file.
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 }

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)