![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2007 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: hostilityManager.h,v $ $Revision: 1.6 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00013 00014 #ifndef hostilityManager_h 00015 #define hostilityManager_h 00016 00017 #include "vrfobjcore/vrfobjcoreDefines.h" 00018 #include <vlutil/vlMachineTypes.h> 00019 #include <vlutil/vlString.h> 00020 #include <vector> 00021 #include <list> 00022 #include "vrfutil/callbackList.h" 00023 #include <vrfutil/rwForceDescriptionList.h> 00024 #include <matrix/vlVector.h> 00025 00026 //forward defs 00027 class DtSimManager; 00028 class DtSimMessage; 00029 00035 class DT_DLL_vrfobjcore DtHostilityManager 00036 { 00037 public: 00038 DtHostilityManager(DtSimManager* simManager); 00039 virtual ~DtHostilityManager(); 00040 00041 private: 00043 00044 DtHostilityManager(const DtHostilityManager& orig); 00045 DtHostilityManager& operator=(const DtHostilityManager& orig); 00047 00048 protected: 00049 typedef DtCallbackList<DtU8>::DtCallbackFunctionType DtHostitliyChangedCallbackFcn; 00050 00051 public: 00055 virtual bool init(); 00056 00061 virtual void setDefaultHostility(); 00062 00064 virtual bool addForce(DtString forceName, DtVector forceColor, bool includeInDialogs); 00065 00067 virtual bool removeForce(DtU8 force); 00068 00074 virtual void setHostility(DtU8 force, DtU8 targetForce, bool hostile); 00075 00077 virtual bool hostile(DtU8 force, DtU8 targetForce) const; 00078 00081 virtual void hostileForces(DtU8 force, std::list<DtU8>& forceList) const; 00082 00085 virtual void friendlyForces(DtU8 force, std::list<DtU8>& forceList) const; 00086 00091 00092 virtual void addHostilityChangedCallback(DtHostitliyChangedCallbackFcn fcn, void* usr); 00093 virtual void removeHostilityChangedCallback(DtHostitliyChangedCallbackFcn fcn, void* usr); 00095 00097 00098 virtual void setName(DtU8 force, DtString forceName); 00099 virtual DtString name(DtU8 force) const; 00101 00103 00104 virtual void setIncludeInDialogs(DtU8 force, bool includeInDialogs); 00105 virtual bool includeInDialogs(DtU8 force); 00107 00109 00110 virtual void setColor(DtU8 force, DtVector forceColor); 00111 virtual DtVector color(DtU8 force); 00113 00115 00116 virtual void setForceIsUsed(DtU8 force, bool forceIsUsed); 00117 virtual bool forceIsUsed(DtU8 force); 00119 00121 virtual int numForces() const; 00122 00124 virtual DtU8 nextAvailableForceId(); 00125 /* 00128 virtual void writeHostilityFile(const DtString& filename); 00129 */ 00133 virtual const DtRwForceDescriptionList& forceDescriptionList(); 00134 00140 virtual bool readHostilityFile(const DtString& filename); 00141 00146 virtual void setDataFromDescriptionList(const DtRwForceDescriptionList& l); 00147 00148 protected: 00149 00150 //**************************************************************************** 00152 //**************************************************************************** 00154 virtual void registerInterfaceMessageCallbacks(); 00155 00157 00158 static void requestHostilityMatrixCallback(DtSimMessage* msg, void* usr); 00159 virtual void processRequestHostilityMatrix(DtSimMessage* msg); 00161 00163 00164 static void setHostilityMatrixCallback(DtSimMessage* msg, void* usr); 00165 virtual void processSetHostilityMatrix(DtSimMessage* msg); 00167 00169 00170 static void requestForceHostilityCallback(DtSimMessage* msg, void* usr); 00171 virtual void processRequestForceHostility(DtSimMessage* msg); 00173 00175 00176 static void setForceHostilityCallback(DtSimMessage* msg, void* usr); 00177 virtual void processSetForceHostility(DtSimMessage* msg); 00179 00180 //**************************************************************************** 00182 //**************************************************************************** 00183 00186 virtual void clearMatrix(); 00187 00188 //**************************************************************************** 00190 //**************************************************************************** 00191 00192 typedef std::vector<bool> DtBoolVector; 00193 typedef std::vector<DtBoolVector> DtBoolVectorVector; 00194 typedef std::vector<DtString> DtNameVector; 00195 typedef std::vector<DtVector> DtVectorVector; 00196 00197 //**************************************************************************** 00199 //**************************************************************************** 00200 00201 DtSimManager* mySimManager; 00202 00206 DtBoolVectorVector myHostilityMatrix; 00207 00208 DtNameVector myNameVector; 00209 DtBoolVector myIncludeInDialogsVector; 00210 DtVectorVector myColorVector; 00211 DtBoolVector myForceIsUsedVector; 00212 00216 DtRwForceDescriptionList myForceDescriptionList; 00217 00218 DtCallbackList<DtU8> myHostilityChangedCallbackList; 00219 }; 00220 00221 #endif