![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2011 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 00008 00010 00012 00013 #pragma once 00014 00015 #include <vrfGuiCore/vrfGuiCore.h> 00016 00017 #include <vrvUtil/DtVirtualBaseClass.h> 00018 #include <vrvCore/DtUniqueID.h> 00019 #include <vrvCore/DtSelectionManager.h> 00020 00022 #include <vrfutil/diGuyCharacterData.h> 00023 00024 #include <boost/signal.hpp> 00025 00026 namespace makVrv 00027 { 00028 class DtDe; 00029 class DtSimEntry; 00030 class DtSimObjectEntry; 00031 } 00032 00033 class DtSimMessage; 00034 class DtIfCapableTaskAndSetResponse; 00035 class DtIfDIGuyAppearAndAnimationsResponse; 00036 00037 namespace makVrf 00038 { 00039 class DT_DLL_VRFGUICORE DtTasksAndSets 00040 { 00041 public: 00042 DtTasksAndSets() 00043 { 00044 }; 00045 00046 DtTasksAndSets(const DtTasksAndSets& orig) : 00047 mySupportedTasks(orig.mySupportedTasks), mySupportedSets(orig.mySupportedSets) 00048 { 00049 }; 00050 00051 std::vector<int> mySupportedTasks; 00052 std::vector<int> mySupportedSets; 00053 }; 00054 00055 class DT_DLL_VRFGUICORE DtDIGuyAppearancesAndAnimations 00056 { 00057 public: 00058 std::vector<DtString> mySupportedAppearances; 00059 AlternateNamesList mySupportedTaskableAnimations; 00060 }; 00061 00063 class DT_DLL_VRFGUICORE DtVrfTaskSetManager : public makVrv::DtVirtualBaseClass 00064 { 00065 public: 00066 typedef std::map<int, std::vector<int> > DtTaskSetMap; 00067 typedef std::vector<makVrv::DtSimEntry*> SimEntries; 00068 00069 public: 00070 DtVrfTaskSetManager(makVrv::DtDe&); 00071 virtual ~DtVrfTaskSetManager(); 00072 00074 static DtVrfTaskSetManager& instance(makVrv::DtDe& de); 00075 00076 public: 00078 virtual void requestInformationFor(const std::string& name, makVrv::DtUniqueID id); 00079 virtual void requestInformationFor(const std::vector<std::pair<DtString, makVrv::DtUniqueID> >& names); 00080 00082 virtual void updateAvailableTaskSetInformation(const makVrv::DtSimEntry* type); 00083 virtual void updateAvailableTaskSetInformation(const SimEntries&); 00084 virtual void updateAvailableTaskSetInformation(const std::string& name); 00085 virtual void updateAvailableTaskSetInformation(makVrv::DtElementID id); 00086 00088 virtual bool hasTaskSetInformationFor(const makVrv::DtUniqueID&) const; 00089 00092 virtual bool hasTaskSetInformationFor(const std::string&) const; 00093 00094 virtual void setSupportedTasks(const makVrv::DtUniqueID&, const std::vector<int>&, bool signal = true); 00095 virtual void setSupportedSets(const makVrv::DtUniqueID&, const std::vector<int>&, bool signal = true); 00096 00097 virtual void availableTasks(const makVrv::DtSelectionManager::IdSet&, std::vector<int>& available); 00098 virtual void availableSets(const makVrv::DtSelectionManager::IdSet&, std::vector<int>& available); 00099 virtual void available(const makVrv::DtSelectionManager::IdSet&, std::vector<int>& available); 00100 virtual std::vector<int> supportedMenuTasks() const; 00101 virtual std::vector<int> supportedMenuSets() const; 00102 00103 boost::signal<void (makVrv::DtUniqueID)> signal_supportedTaskInformationChanged; 00104 boost::signal<void (makVrv::DtUniqueID)> signal_supportedSetInformationChanged; 00105 boost::signal<void (makVrv::DtUniqueID)> signal_supportedDiGuyAnimationsInformationChanged; 00106 boost::signal<void (makVrv::DtUniqueID)> signal_supportedDiGuyAppearanceInformationChanged; 00107 00109 virtual bool isAvailableTaskMenuItem(int) const; 00110 virtual bool isAvailableVrfTaskItem(int) const; 00111 00113 virtual bool isAvailableSetMenuItem(int) const; 00114 virtual bool isAvailableVrfSetItem(int) const; 00115 00116 virtual bool hasDIGuyInformationFor(const makVrv::DtUniqueID&) const; 00117 virtual DtDIGuyAppearancesAndAnimations* diGuyInformationFor(const makVrv::DtUniqueID&); 00118 00119 virtual void setDIGuyAppearances(const makVrv::DtUniqueID&, const std::vector<DtString>&, bool signal = true); 00120 virtual void setDIGuyAnimations(const makVrv::DtUniqueID&, const AlternateNamesList&, bool signal = true); 00121 virtual void setDIGuyAppearancesAndAnimations(const makVrv::DtUniqueID&, 00122 const std::vector<DtString>&, const AlternateNamesList&, bool signal = true); 00123 00125 virtual void clearAllInformation(); 00126 00127 virtual DtTasksAndSets* informationFor(const makVrv::DtUniqueID&); 00128 00130 virtual void addAvailableSet(int menuItem, int setType); 00131 virtual void addAvailableTask(int menuItem, int taskType); 00132 virtual void requestDIGuyAppearancesAndAnimations(const std::string& name); 00133 virtual void requestDIGuyAppearancesAndAnimations(const std::vector<DtString>& name); 00134 00135 protected: 00137 virtual void requestTaskSetInformationFor(const std::string&); 00138 virtual void requestTaskSetInformationFor(const std::vector<DtString>&); 00139 virtual void processTaskAndSetResponse(DtSimMessage*); 00140 00142 virtual void processDIGuyResponse(DtSimMessage*); 00143 00145 virtual void initMenuMappings(); 00146 00147 virtual bool isAvailableMenuItem(int menu, const DtTaskSetMap&) const; 00148 virtual bool isAvailableVrfItem(int item, const DtTaskSetMap&) const; 00149 00151 virtual void mergeMenuItems(const std::vector<int>& entityItems, const DtTaskSetMap& menuMap, 00152 std::vector<int>& results); 00153 00154 protected: 00155 virtual void slot_postInitialize(makVrv::DtDe& de); 00156 virtual void slot_objectRemoved(makVrv::DtSimObjectEntry&); 00157 00158 protected: 00159 std::map<makVrv::DtUniqueID, DtTasksAndSets> myTaskSetInformation; 00160 std::map<makVrv::DtUniqueID, DtDIGuyAppearancesAndAnimations*> myDIGuyTaskSetCharacterInfo; 00161 std::map<std::string, makVrv::DtUniqueID> myPendingRequests; 00162 std::map<std::string, makVrv::DtUniqueID> myPendingDIGuyRequests; 00163 00165 00166 DtTaskSetMap mySetMenuMap; 00167 DtTaskSetMap myTaskMenuMap; 00168 makVrv::DtDe& myDe; 00169 }; 00170 }