00001 //////////////////////////////////////////////////////////////////////////////// 00002 // Scorched3D (c) 2000-2009 00003 // 00004 // This file is part of Scorched3D. 00005 // 00006 // Scorched3D is free software; you can redistribute it and/or modify 00007 // it under the terms of the GNU General Public License as published by 00008 // the Free Software Foundation; either version 2 of the License, or 00009 // (at your option) any later version. 00010 // 00011 // Scorched3D is distributed in the hope that it will be useful, 00012 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 // GNU General Public License for more details. 00015 // 00016 // You should have received a copy of the GNU General Public License 00017 // along with Scorched3D; if not, write to the Free Software 00018 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00019 //////////////////////////////////////////////////////////////////////////////// 00020 00021 #if !defined(__INCLUDE_WeaponRollerh_INCLUDE__) 00022 #define __INCLUDE_WeaponRollerh_INCLUDE__ 00023 00024 #include <weapons/Weapon.h> 00025 #include <common/ModelID.h> 00026 00027 class ScorchedContext; 00028 class WeaponRoller : public Weapon 00029 { 00030 public: 00031 WeaponRoller(); 00032 virtual ~WeaponRoller(); 00033 00034 virtual bool parseXML(AccessoryCreateContext &context, 00035 XMLNode *accessoryNode); 00036 00037 Weapon *getCollisionAction() { return collisionAction_; } 00038 ModelID &getRollerModelID() { return rollerModelId_; } 00039 bool getRoll() { return roll_; } 00040 fixed getShieldHurtFactor(ScorchedContext &context); 00041 fixed getTime(ScorchedContext &context); 00042 fixed getWindFactor(ScorchedContext &context); 00043 00044 // Inherited from Weapon 00045 virtual void fireWeapon(ScorchedContext &context, 00046 WeaponFireContext &weaponContext, FixedVector &position, FixedVector &velocity); 00047 00048 REGISTER_ACCESSORY_HEADER(WeaponRoller, AccessoryPart::AccessoryWeapon); 00049 00050 protected: 00051 NumberParser numberRollers_; 00052 Weapon *collisionAction_; 00053 ModelID rollerModelId_; 00054 NumberParser shieldHurtFactorExp_; 00055 NumberParser windFactorExp_; 00056 NumberParser timeExp_; 00057 fixed shieldHurtFactor_; 00058 fixed windFactor_; 00059 fixed time_; 00060 bool roll_; 00061 00062 bool maintainVelocity_; 00063 NumberParser dampenVelocityExp_; 00064 fixed dampenVelocity_;; 00065 00066 void addRoller(ScorchedContext &context, 00067 WeaponFireContext &weaponContext, 00068 FixedVector &position, FixedVector &velocity); 00069 00070 }; 00071 00072 #endif
1.5.3