diff --git a/src/items/cake.cpp b/src/items/cake.cpp index a64ddb9fa..e5a166794 100644 --- a/src/items/cake.cpp +++ b/src/items/cake.cpp @@ -63,8 +63,8 @@ Cake::Cake (Kart *kart) : Flyable(kart, PowerupManager::POWERUP_CAKE) const bool backwards = kart->getControls().m_look_back; const Kart *closest_kart=NULL; Vec3 direction; - float kartDistSquared; - getClosestKart(&closest_kart, &kartDistSquared, &direction, + float kart_dist_squared; + getClosestKart(&closest_kart, &kart_dist_squared, &direction, kart /* search in front of this kart */, backwards); // aim at this kart if 1) it's not too far, 2) if the aimed kart's speed @@ -73,7 +73,7 @@ Cake::Cake (Kart *kart) : Flyable(kart, PowerupManager::POWERUP_CAKE) // this code finds the correct angle and upwards velocity to hit an opponents' // vehicle if they were to continue travelling in the same direction and same speed // (barring any obstacles in the way of course) - if(closest_kart != NULL && kartDistSquared < m_st_max_distance_squared && + if(closest_kart != NULL && kart_dist_squared < m_st_max_distance_squared && m_speed>closest_kart->getSpeed()) { m_target = (Kart*)closest_kart; diff --git a/src/items/swatter.cpp b/src/items/swatter.cpp index 89ee95759..21e358b5f 100644 --- a/src/items/swatter.cpp +++ b/src/items/swatter.cpp @@ -43,15 +43,23 @@ #define SWAT_ANGLE_OFFSET (90.0f + 15.0f) #define SWATTER_ANIMATION_SPEED 100.0f +/** Constructor: creates a swatter at a given attachment for a kart. If there + * was a bomb attached, it triggers the replace bomb animations. + * \param attachment The attachment instance where the swatter is attached to. + * \param kart The kart to which the swatter is attached. + * \param was_bomb True if the kart had a bomv as attachment. + * \param bomb_scene_node The scene node of the bomb (i.e. the previous + * attachment scene node). + */ Swatter::Swatter(Attachment *attachment, Kart *kart, bool was_bomb, scene::ISceneNode* bomb_scene_node) : AttachmentPlugin(attachment, kart) { m_animation_phase = SWATTER_AIMING; - m_target = NULL; - m_removing_bomb = was_bomb; - m_bomb_scene_node = bomb_scene_node; - m_swat_bomb_frame = 0.0f; + m_target = NULL; + m_removing_bomb = was_bomb; + m_bomb_scene_node = bomb_scene_node; + m_swat_bomb_frame = 0.0f; // Setup the node scene::IAnimatedMeshSceneNode* node = m_attachment->getNode(); @@ -72,7 +80,9 @@ Swatter::Swatter(Attachment *attachment, Kart *kart, bool was_bomb, m_swat_sound = sfx_manager->createSoundSource("swatter"); } // Swatter -//----------------------------------------------------------------------------- +// ---------------------------------------------------------------------------- +/** Destructor, stops any playing sfx. + */ Swatter::~Swatter() { if (m_swat_sound) @@ -81,7 +91,7 @@ Swatter::~Swatter() } } // ~Swatter -//----------------------------------------------------------------------------- +// ---------------------------------------------------------------------------- /** Updates an armed swatter: it checks for any karts that are close enough * and not invulnerable, it swats the kart. * \param dt Time step size. @@ -158,7 +168,8 @@ bool Swatter::updateAndTestFinished(float dt) // Did we just finish the first part of the movement? if(current_frame >= middle_frame) { - // Squash the karts and items around and change the current phase + // Squash the karts and items around and + // change the current phase squashThingsAround(); m_animation_phase = SWATTER_FROM_TARGET; } @@ -175,13 +186,18 @@ bool Swatter::updateAndTestFinished(float dt) return false; } // updateAndTestFinished -/** When the animation ends, the swatter is ready again */ +// ---------------------------------------------------------------------------- +/** When the animation ends, the swatter is ready again. + */ void Swatter::onAnimationEnd() { m_animation_phase = SWATTER_AIMING; } // onAnimationEnd -/** Determine the nearest kart or item and update the current target accordingly */ +// ---------------------------------------------------------------------------- +/** Determine the nearest kart or item and update the current target + * accordingly. + */ void Swatter::chooseTarget() { // TODO: for the moment, only handle karts... @@ -205,7 +221,9 @@ void Swatter::chooseTarget() m_target = closest_kart; // may be NULL } -/** If there is a current target, point in its direction, otherwise adopt the default position */ +// ---------------------------------------------------------------------------- +/** If there is a current target, point in its direction, otherwise adopt the + * default position. */ void Swatter::pointToTarget() { if(!m_target) @@ -214,25 +232,31 @@ void Swatter::pointToTarget() } else { - Vec3 swatter_to_target = m_target->getXYZ() - m_attachment->getNode()->getAbsolutePosition(); + Vec3 swatter_to_target = m_target->getXYZ() + -m_attachment->getNode()->getAbsolutePosition(); float dy = -swatter_to_target.getZ(); float dx = swatter_to_target.getX(); - float angle = SWAT_ANGLE_OFFSET + (atan2(dy, dx) - m_kart->getHeading()) * 180.0f/M_PI; + float angle = SWAT_ANGLE_OFFSET + (atan2(dy, dx)-m_kart->getHeading()) + * 180.0f/M_PI; m_attachment->getNode()->setRotation(core::vector3df(0.0, angle, 0.0)); } } -/** Squash karts or items that are around the end position (determined using a joint) of the swatter */ +// ---------------------------------------------------------------------------- +/** Squash karts or items that are around the end position (determined using + * a joint) of the swatter. + */ void Swatter::squashThingsAround() { - const KartProperties* kp = m_kart->getKartProperties(); - float min_dist2 = kp->getSwatterDistance2(); // Square of the minimum distance - const World* world = World::getWorld(); - scene::IAnimatedMeshSceneNode *node = m_attachment->getNode(); + const KartProperties* kp = m_kart->getKartProperties(); + // Square of the minimum distance + float min_dist2 = kp->getSwatterDistance2(); + const World* world = World::getWorld(); + scene::IAnimatedMeshSceneNode *node = m_attachment->getNode(); - // Get the node corresponding to the joint at the center of the swatter (by swatter, I mean - // the thing hold in the hand, not the whole thing) + // Get the node corresponding to the joint at the center of the swatter + // (by swatter, I mean the thing hold in the hand, not the whole thing) scene::ISceneNode* swatter_node = node->getJointNode("Swatter"); assert(swatter_node); Vec3 swatter_pos = swatter_node->getAbsolutePosition(); @@ -255,12 +279,13 @@ void Swatter::squashThingsAround() kp->getSquashSlowdown()); if (kart->getAttachment() != NULL) { - if (kart->getAttachment()->getType() == Attachment::ATTACH_BOMB) + if (kart->getAttachment()->getType()==Attachment::ATTACH_BOMB) { // make bomb explode kart->getAttachment()->update(10000); - HitEffect *he = new Explosion(m_kart->getXYZ(), "explosion"); + HitEffect *he = new Explosion(m_kart->getXYZ(), + "explosion"); if(m_kart->getController()->isPlayerController()) he->setPlayerKartHit(); projectile_manager->addHitEffect(he); diff --git a/src/karts/emergency_animation.cpp b/src/karts/emergency_animation.cpp index 63a2262f3..f1c5c93ef 100644 --- a/src/karts/emergency_animation.cpp +++ b/src/karts/emergency_animation.cpp @@ -150,16 +150,6 @@ void EmergencyAnimation::handleExplosion(const Vec3 &pos, bool direct_hit) if(m_kart->isInvulnerable()) return; - // !Funto! TODO: squash items with the swatter...should we do it here or in the Swatter class? -/* Attachment *a=m_kart->getAttachment(); - if(a->getType()==Attachment::ATTACH_SWATTER && - a->isSwatterReady()) - { - a->swatItem(); - return; - } -*/ - m_xyz = m_kart->getXYZ(); // Ignore explosion that are too far away. float r = m_kart->getKartProperties()->getExplosionRadius();