/*! * @file spike_ball.h * @brief Noxonian SpikeBall Projectile; 2 stage weapon, splits into spikes */ #ifndef _SPIKE_BALL_H #define _SPIKE_BALL_H #include "projectile_weapon.h" #include "spike.h" #include "effects/billboard.h" // #include "../weapons/spike_launcher.h" #include "extendable.h" class Vector; class ProjectileWeapon; class SpriteParticles; class ParticleEmitter; class FastFactory; class SpikeBall : public ProjectileWeapon { ObjectListDeclaration(SpikeBall); public: SpikeBall (); virtual ~SpikeBall (); virtual void activate(); virtual void deactivate(); virtual void collidesWith(WorldEntity* entity, const Vector& location); virtual void destroy (WorldEntity* killer); virtual void tick (float dt); virtual void draw () const; // inline Vector getRotationVector() { return this->rotationVector; } // inline float getAngle() { return this->angle; } private: static FastFactory* fastFactory; static SpriteParticles* explosionParticles; ParticleEmitter* emitter; float speed; float angle; float rotationSpeed; Vector rotationVector; Billboard* halo; WorldEntity* hitEntity; // FIXME TEMPORARY // WeaponManager* weaponMan; void updateFireDir(); virtual void blow(); // int spikes; Vector* launcher; float size; }; #endif /* _SPIKE_BALL_H */