![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 1999 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: balGunCtlr.h,v $ $Revision: 1.37 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00014 00015 #ifndef DtBallisticGunController_H_ 00016 #define DtBallisticGunController_H_ 00017 00018 00019 #include "vrfobjcore/cntrlCmpnt.h" 00020 #include "vrfutil/vlClock.h" 00021 #include <vl/hostStructs.h> 00022 #include "vrfutil/simMunition.h" 00023 #include <vlpi/disEnums.h> 00024 00025 class DtBooleanOutputPort; 00026 class DtIntegerOutputPort; 00027 class DtIntegerInputPort; 00028 class DtBallisticGunControllerDescriptor; 00029 class DtVrfBalGunPSR; 00030 class DtOutputPortGroup; 00031 class DtBooleanInputPort; 00032 class DtWeaponComponentInterface; 00033 class DtEntityListOutputPort; 00034 00048 #include "vrfmodel/vrfmodelDefines.h" 00049 class DT_DLL_vrfmodel DtBallisticGunController : public DtControllerComponent 00050 { 00051 00052 public: 00053 00056 DtBallisticGunController(const DtString& name, 00057 DtVrfObject* owner, 00058 DtSimManager* simManager, 00059 DtComponentDescriptor* desc = 0, 00060 DtReaderWriterRegistry* parentRegistry = 0); 00061 00063 virtual ~DtBallisticGunController(); 00064 00068 virtual bool postAddComponentsInit(); 00069 00072 virtual DtString type() const; 00073 00075 virtual bool init(); 00076 00080 virtual void tick(); 00081 00084 virtual bool createTriggerPort(); 00085 virtual DtBooleanOutputPort * triggerPort() const; 00086 00087 virtual bool createQuantityOutputPort(); 00088 virtual DtIntegerOutputPort* quantityOutputPort() const; 00089 00090 virtual bool createLoadedPort(); 00091 virtual DtBooleanOutputPort * loadedPort() const; 00092 00093 virtual bool createLosOutputPort(); 00094 virtual DtIntegerOutputPort * losOutputPort() const; 00095 00096 virtual bool createLosInputPort(); 00097 virtual DtIntegerInputPort * losInputPort() const; 00098 00099 virtual bool createWeaponsHoldInputPort(); 00100 00101 virtual bool createTargetToAcquireOutputPort(); 00102 00103 virtual void setLoadAmmoTime(DtTime loadAmmoTime); 00104 virtual DtTime loadAmmoTime() const; 00105 00106 virtual void setUnloadAmmoTime(DtTime unloadAmmoTime); 00107 virtual DtTime unloadAmmoTime() const; 00108 00112 virtual void fire(); 00113 00121 virtual bool chooseAmmo(DtVrfObject * entity, DtSimMunition& 00122 munition, DtDetonatorFuze& fuze, int& ammoAvailable); 00123 00125 virtual void initProcessSR(); 00126 00130 static DtSimComponent * creator(const DtString& name, 00131 DtVrfObject* owner, 00132 DtSimManager* simManager, 00133 DtComponentDescriptor* desc = 0, 00134 DtReaderWriterRegistry* parentRegistry = 0); 00135 00136 protected: 00137 00139 virtual bool createPorts(); 00140 00142 virtual bool createPortGroups(); 00143 00151 virtual void lookupAndCacheProcessSR(); 00152 00155 virtual bool weaponsHoldState(); 00156 00157 00158 protected: 00160 DtBallisticGunController(); 00161 00163 DtBallisticGunController(const DtBallisticGunController & orig); 00164 00166 const DtBallisticGunController & operator=(const DtBallisticGunController & 00167 orig); 00168 00169 protected: 00170 00173 00180 DtIntegerInputPort * myLosInputPort; 00181 00187 DtBooleanOutputPort * myTriggerPort; 00188 00195 DtIntegerOutputPort* myQuantityOutputPort; 00196 00202 DtBooleanOutputPort * myLoadedPort; 00203 00210 DtIntegerOutputPort* myLosOutputPort; 00211 00214 DtOutputPortGroup * myGunControlPortGroup; 00215 00222 DtBooleanInputPort* myWeaponsHoldInputPort; 00223 00224 00228 DtEntityListOutputPort* myTargetToAcquireOutputPort; 00230 00233 DtEntityIdentifier myPreviousTarget; 00234 00236 DtSimMunition myCurrentMunition; 00237 DtDetonatorFuze myCurrentFuze; 00238 00240 int myRoundsAvailable; 00241 00247 DtVrfBalGunPSR* myProcessState; 00248 00250 const DtBallisticGunControllerDescriptor* myGunDescriptor; 00251 00255 bool myWaitingForFire; 00256 00257 bool myFirstTick; 00259 bool myOutOfAmmoWarn; 00260 00263 DtWeaponComponentInterface* myWeaponComponentInterface; 00264 }; 00265 00266 #endif 00267 00268 00269 00270