00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #if !defined(__INCLUDE_CallbackWeaponh_INCLUDE__)
00022 #define __INCLUDE_CallbackWeaponh_INCLUDE__
00023
00024 #include <weapons/Weapon.h>
00025 #include <engine/ActionReferenced.h>
00026
00027 class WeaponCallback : public Weapon
00028 {
00029 public:
00030 virtual void weaponCallback(
00031 ScorchedContext &context,
00032 WeaponFireContext &weaponContext, FixedVector &position, FixedVector &velocity,
00033 unsigned int userData) = 0;
00034 };
00035
00036 class CallbackWeapon : public ActionReferenced
00037 {
00038 public:
00039 CallbackWeapon(const char *name,
00040 WeaponCallback *callback,
00041 fixed delay, unsigned int callbackData,
00042 WeaponFireContext &weaponContext, FixedVector &position, FixedVector &velocity);
00043 virtual ~CallbackWeapon();
00044
00045 virtual void init();
00046 virtual void simulate(fixed frameTime, bool &remove);
00047 virtual std::string getActionDetails();
00048
00049 protected:
00050 fixed totalTime_;
00051
00052 FixedVector position_;
00053 FixedVector velocity_;
00054 WeaponFireContext weaponContext_;
00055 fixed delay_;
00056 unsigned int callbackData_;
00057 WeaponCallback *callback_;
00058
00059 };
00060
00061 #endif // __INCLUDE_CallbackWeaponh_INCLUDE__