00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <actions/CallbackWeapon.h>
00022 #include <weapons/AccessoryStore.h>
00023
00024 CallbackWeapon::CallbackWeapon(
00025 const char *name,
00026 WeaponCallback *callback,
00027 fixed delay, unsigned int callbackData,
00028 WeaponFireContext &weaponContext, FixedVector &position, FixedVector &velocity) :
00029 ActionReferenced(name),
00030 callback_(callback),
00031 delay_(delay),
00032 callbackData_(callbackData),
00033 position_(position),
00034 velocity_(velocity),
00035 weaponContext_(weaponContext),
00036 totalTime_(0)
00037 {
00038
00039 }
00040
00041 CallbackWeapon::~CallbackWeapon()
00042 {
00043 }
00044
00045 void CallbackWeapon::init()
00046 {
00047 }
00048
00049 void CallbackWeapon::simulate(fixed frameTime, bool &remove)
00050 {
00051 totalTime_ += frameTime;
00052 if (totalTime_ > delay_)
00053 {
00054 callback_->weaponCallback(
00055 *context_, weaponContext_, position_, velocity_, callbackData_);
00056 remove = true;
00057 }
00058
00059 Action::simulate(frameTime, remove);
00060 }
00061
00062 std::string CallbackWeapon::getActionDetails()
00063 {
00064 if (callback_) return callback_->getParent()->getName();
00065 return "";
00066 }