00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <weapons/WeaponGotoLabel.h>
00022 #include <weapons/AccessoryStore.h>
00023
00024 REGISTER_ACCESSORY_SOURCE(WeaponGotoLabel);
00025
00026 WeaponGotoLabel::WeaponGotoLabel()
00027 {
00028 }
00029
00030 WeaponGotoLabel::~WeaponGotoLabel()
00031 {
00032 }
00033
00034 bool WeaponGotoLabel::parseXML(AccessoryCreateContext &context, XMLNode *accessoryNode)
00035 {
00036 if (!Weapon::parseXML(context, accessoryNode)) return false;
00037
00038 std::string label;
00039 if (!accessoryNode->getNamedChild("label", label)) return false;
00040 if (!accessoryNode->getNamedChild("count", count_)) return false;
00041
00042 weaponLabel_ = context.getLabel(label.c_str());
00043 if (!weaponLabel_)
00044 {
00045 return accessoryNode->returnError("Failed to find the named label");
00046 }
00047
00048 return true;
00049 }
00050
00051 void WeaponGotoLabel::fireWeapon(ScorchedContext &context,
00052 WeaponFireContext &weaponContext, FixedVector &position, FixedVector &velocity)
00053 {
00054 int doneCount = weaponContext.getIncLabelCount(getAccessoryPartId());
00055 if (doneCount <= count_)
00056 {
00057 weaponLabel_->fireWeapon(context, weaponContext, position, velocity);
00058 }
00059 }