00001 #pragma once 00002 #include "gmodel.h" 00003 #include "GBone.h" 00004 #include "GMatrix16.h" 00005 #include "constants.h" 00006 00007 00008 enum GunBehavior 00009 { 00010 Singleshot, 00011 TripleBurst, 00012 Shotgun 00013 }; 00014 00015 struct GunDef 00016 { 00017 char *GunName; 00018 GunBehavior Behavior; 00019 float ReloadTime; 00020 int ClipSize; 00021 double Range; 00022 char *AmmoTexName; 00023 unsigned int AmmoTexId; 00024 char *humSound; 00025 char *fireSound; 00026 }; 00027 00028 class Gun :public GModel 00029 { 00030 protected: 00031 GBone *AttachmentBone; 00032 GunDef Stats; 00033 double LastFiredTime; 00034 00035 00036 public: 00037 Gun(void); 00038 ~Gun(void); 00039 GBone *GetAttachmentBone(void); 00040 void SetAttachmentBone(GBone *_B); 00041 GunDef GetGunDefinition(void); 00042 void SetGunDefinition(GunDef _def); 00043 int FireGun(double time, double dtime, int FLAGS); 00044 static GunDef LoadGunDef(char *_filename); 00045 };