#pragma once #include "Node.h" #include "Object3d.h" #include "Vector.h" #include #include class Player; class SoundNode; #define STATESIZE 5 class Weapon : public Node { public: Weapon(void); ~Weapon(void); virtual void initWeapon() = 0; virtual void setPlayer(Player &_player); virtual void calcWorldMatrix(D3DXMATRIX &pMatWorld); static const int STATE_IDLE = 0; static const int STATE_PRELOAD = 1; static const int STATE_FIRE = 2; static const int STATE_POSTLOAD = 3; static const int STATE_EMPTY = 4; void setStateTime(int state, float time); void setStateSound(int state, std::string soundfile); void addMunition(int quantity); int getAmo(); void fire(); void setFireAt(Vector _fireAt); virtual void update(float dt); virtual void setSoftKill(bool _softKill, float _duration = 1.0f); void setWeaponType(int type); int getWeaponType(); Object3d *leftWeapon; Object3d *rightWeapon; protected: Player *player; int myState; int weaponType; float myStateTime; int munitionQuantity; bool bFire; float Cweapon; virtual void doFire() = 0; std::string soundNames[STATESIZE]; float timeForState[STATESIZE]; SoundNode* soundNode[STATESIZE]; bool enteredState; void setState(int state); Vector vFireAt; Vector vRealFireAt; void orientWeaponTo(Object3d &obj, Vector &origin); Vector leftPos; Vector rightPos; };