00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #if !defined(AFX_WEAPONPROJECTILE_H__70119A64_2064_4066_8EE5_FD6A3E24D5FC__INCLUDED_)
00022 #define AFX_WEAPONPROJECTILE_H__70119A64_2064_4066_8EE5_FD6A3E24D5FC__INCLUDED_
00023
00024 #include <weapons/Weapon.h>
00025 #include <common/ModelID.h>
00026
00027 class WeaponProjectile : public Weapon
00028 {
00029 public:
00030 WeaponProjectile();
00031 virtual ~WeaponProjectile();
00032
00033 virtual bool parseXML(AccessoryCreateContext &context,
00034 XMLNode *accessoryNode);
00035
00036 Weapon *getCollisionAction() { return collisionAction_; }
00037
00038
00039 virtual void fireWeapon(ScorchedContext &context,
00040 WeaponFireContext &weaponContext, FixedVector &position, FixedVector &velocity);
00041
00042 REGISTER_ACCESSORY_HEADER(WeaponProjectile, AccessoryPart::AccessoryWeapon);
00043
00044 bool getUnder() { return under_; }
00045 bool getShowShotPath() { return showShotPath_; }
00046 bool getShowEndPoint() { return showEndPoint_; }
00047 bool getApexCollision() { return apexCollision_; }
00048 bool getWaterCollision() { return waterCollision_; }
00049 bool getWallCollision() { return wallCollision_; }
00050 bool getApexNoDud() { return apexNoDud_; }
00051 bool getCreateSmoke() { return createSmoke_; }
00052 bool getCreateFlame() { return createFlame_; }
00053 bool getTimedDud() { return timedDud_; }
00054 fixed getWindFactor(ScorchedContext &context);
00055 fixed getShieldHurtFactor(ScorchedContext &context);
00056 fixed getTimedCollision(ScorchedContext &context) { return timedCollision_.getValue(context); }
00057 fixed getSpinSpeed(ScorchedContext &context) { return spinSpeed_.getValue(context); }
00058 float getFlameLife() { return flameLife_; }
00059 float getFlameStartSize() { return flameStartSize_; }
00060 float getFlameEndSize() { return flameEndSize_; }
00061 float getSmokeLife() { return smokeLife_; }
00062 float getSmokeStartSize() { return smokeStartSize_; }
00063 float getSmokeEndSize() { return smokeEndSize_; }
00064 fixed getThrustAmount(ScorchedContext &context) { return thrustAmount_.getValue(context); }
00065 fixed getThrustTime(ScorchedContext &context) { return thrustTime_.getValue(context); }
00066 fixed getDrag(ScorchedContext &context) { return drag_.getValue(context); }
00067 Vector &getFlameStartColor1() { return flameStartColor1_; }
00068 Vector &getFlameStartColor2() { return flameStartColor2_; }
00069 Vector &getFlameEndColor1() { return flameEndColor1_; }
00070 Vector &getFlameEndColor2() { return flameEndColor2_; }
00071 const char *getEngineSound() { return engineSound_.c_str(); }
00072 fixed getScale(ScorchedContext &context) { return scale_.getValue(context); }
00073 ModelID &getModelID() { return modelId_; }
00074
00075 protected:
00076 bool under_;
00077 bool showShotPath_;
00078 bool showEndPoint_;
00079 bool apexCollision_;
00080 bool waterCollision_, wallCollision_;
00081 bool apexNoDud_, timedDud_;
00082 NumberParser spinSpeed_;
00083 bool createSmoke_, createFlame_;
00084 float flameLife_, smokeLife_;
00085 float flameStartSize_, flameEndSize_;
00086 float smokeStartSize_, smokeEndSize_;
00087 NumberParser thrustTime_, thrustAmount_;
00088 NumberParser timedCollision_;
00089 NumberParser shieldHurtFactor_;
00090 NumberParser scale_;
00091 NumberParser windFactor_;
00092 NumberParser drag_;
00093 Vector flameStartColor1_, flameStartColor2_;
00094 Vector flameEndColor1_, flameEndColor2_;
00095 std::string engineSound_;
00096 Weapon *collisionAction_;
00097 ModelID modelId_;
00098 int flareType_;
00099
00100 };
00101
00102 #endif // !defined(AFX_WEAPONPROJECTILE_H__70119A64_2064_4066_8EE5_FD6A3E24D5FC__INCLUDED_)