Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/playability/src/world_entities/projectiles/projectile.h @ 9960

Last change on this file since 9960 was 9960, checked in by nicolasc, 17 years ago

fixed get*Damage() return values

File size: 3.2 KB
RevLine 
[4597]1/*!
[5039]2 * @file projectile.h
[5498]3 * a projectile, that is been shooted by a weapon
4 *
5 * You can use this class to make some Projectiles/Bullets/Lasers/Rockets/etc.
6 *
7 */
[3710]8
[3573]9#ifndef _PROJECTILE_H
10#define _PROJECTILE_H
11
12#include "world_entity.h"
[9869]13#include "loading/fast_factory.h"
[9959]14#include "space_ships/space_ship.h"
[3573]15
[7084]16#include "sound_source.h"
17#include "sound_buffer.h"
18
[4597]19class Projectile : public WorldEntity
[3573]20{
[9869]21  ObjectListDeclaration(Projectile);
[4890]22  public:
[4932]23    Projectile ();
[4890]24    virtual ~Projectile ();
[3573]25
[9960]26    /** @brief Constructor with variable passing*/
27    Projectile (float pDamage, float eDamage, PNode* target);
28    /** @brief for void construction; setting values later - needed for FastFactory*/
29    virtual void initialize(float pDamage, float eDamage, PNode* target);
30
[4927]31    void setFlightDirection(const Quaternion& flightDirection);
[4890]32    void setVelocity(const Vector &velocity);
33    void setLifeSpan(float lifeSpan);
[3573]34
[7221]35    void loadExplosionSound(const std::string& explosionSound);
36    void loadEngineSound(const std::string& engineSound);
[6431]37    void setMinEnergy(float energyMin);
[4948]38    /** @returns the minimal charched energy */
[6431]39    inline float getMinEnergy() { return this->energyMin; };
[4948]40    /** @returns if the Projectile can be charged */
41    inline bool isChageable() { return this->bChargeable; };
[3578]42
[5766]43    void setTarget(PNode* target);
[3573]44
[5443]45    /** @brief This is called, when the Projectile is Emitted */
46    virtual void activate() = 0;
47    /** @brief This is called, when the Projectile is being destroyed, or deleted */
48    virtual void deactivate() = 0;
[4948]49
[9235]50    virtual void destroy (WorldEntity* killer);
[4597]51
[9959]52    virtual void collidesWith (SpaceShip* target, const Vector& location);  //!< collision handler; used against SpaceShip as most target will be
[9957]53
[9959]54
[6056]55    virtual void tick (float dt);
56    /** @brief convenience function
57     * @param dt the Time passed
58     * @returns true if the Projectile is past its lifeTime, false if it shall still live */
59    inline bool tickLifeCycle(float dt ) { this->lifeCycle += dt/this->lifeSpan;  return(unlikely(this->lifeCycle >= 1)); }
[4890]60
[9960]61    inline float getPhysDamage() { return this->physDamage; };
62    inline float getElecDamage() { return this->elecDamage; };
[6056]63
[4890]64  protected:
65    // energy
[7460]66    float                  energyMin;                 //!< The minimal Energy a Projectile needs to be emitted.
67    bool                   bChargeable;               //!< if the Projectile is Charegeable
[4890]68
[7460]69    float                  lifeCycle;                 //!< The percentage of the Lifetime done [0-1]
70    float                  lifeSpan;                  //!< The entire lifespan of the Shoot. in seconds
[4890]71
[9959]72    float                   physDamage;               //!< damage to shield and armor
73    float                   elecDamage;               //!< damage to elctronic
74
[7460]75    Vector                 flightDirection;           //!< DOF direction in which the shoot flighs
[4890]76
[7460]77    Vector                 velocity;                  //!< velocity of the projectile.
[5766]78
[7460]79    PNode*                 target;                    //!< A target for guided Weapons.
[7084]80
[7460]81    OrxSound::SoundSource  soundSource;
[7084]82  private:
[9869]83    OrxSound::SoundBuffer  explosionBuffer;
84    OrxSound::SoundBuffer  engineBuffer;
[3573]85};
86
87#endif /* _PROJECTILE_H */
Note: See TracBrowser for help on using the repository browser.