Vegastrike 0.5.1 rc1  1.0
Original sources for Vegastrike Evolved
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
missile_generic.h
Go to the documentation of this file.
1 #ifndef MISSILEGENERIC_H_
2 #define MISSILEGENERIC_H_
3 #include "unit_generic.h"
4 
6 {
7  Vector pos;
8  float damage;
9  float phasedamage;
10  float radius;
11  float radialmultiplier;
12  void *ownerDoNotDereference;
13 public:
14  void ApplyDamage( Unit* );
15  MissileEffect( const Vector &pos, float dam, float pdam, float radius, float radmult, void *owner ) : pos( pos )
16  {
17  damage = dam;
18  phasedamage = pdam;
19  this->radius = radius;
20  radialmultiplier = radmult;
21  this->ownerDoNotDereference = owner;
22  }
23  float GetRadius() const
24  {
25  return radius;
26  }
27  const Vector& GetCenter() const
28  {
29  return pos;
30  }
31 };
32 class Missile : public Unit
33 {
34 public:
35 protected: Missile( std::vector< Mesh* >m, bool b, int i ) : Unit( m, b, i ) {}
36  virtual float ExplosionRadius();
37  float time;
38  float damage;
39  float phasedamage;
43  bool discharged;
44  bool had_target;
45  signed char retarget;
46 public:
47  void Discharge();
48  virtual enum clsptr isUnit() const
49  {
50  return MISSILEPTR;
51  }
52 
53 protected:
55  Missile( const char *filename,
56  int faction,
57  const string &modifications,
58  const float damage,
59  float phasedamage,
60  float time,
61  float radialeffect,
62  float radmult,
63  float detonation_radius ) :
64  Unit( filename, false, faction, modifications )
65  , time( time )
66  , damage( damage )
67  , phasedamage( phasedamage )
68  , radial_effect( radialeffect )
69  , radial_multiplier( radmult )
70  , detonation_radius( detonation_radius )
71  , discharged( false )
72  , retarget( -1 )
73  {
74  maxhull *= 10;
75  had_target = false;
76  }
77 
78  void InitMissile( float ptime,
79  const float pdamage,
80  float pphasedamage,
81  float pradial_effect,
82  float pradial_multiplier,
83  float pdetonation_radius,
84  bool pdischarged,
85  signed char pretarget )
86  {
87  time = ptime;
88  damage = pdamage;
89  phasedamage = pphasedamage;
90  radial_effect = pradial_effect;
91  radial_multiplier = pradial_multiplier;
92  detonation_radius = pdetonation_radius;
93  discharged = pdischarged;
94  retarget = pretarget;
95  had_target = false;
96  }
97  friend class UnitFactory;
98 
99 public:
100  virtual void Kill( bool eraseFromSave = true );
101  virtual void reactToCollision( Unit *smaller,
102  const QVector &biglocation,
103  const Vector &bignormal,
104  const QVector &smalllocation,
105  const Vector &smallnormal,
106  float dist );
107  virtual void UpdatePhysics2( const Transformation &trans,
108  const Transformation &old_physical_state,
109  const Vector &accel,
110  float difficulty,
111  const Matrix &transmat,
112  const Vector &CumulativeVelocity,
113  bool ResolveLast,
114  UnitCollection *uc = NULL );
115 
116 protected:
118  Missile() {}
120 //Missile( const Missile& );
122 //Missile& operator=( const Missile& );
123 };
124 
125 #endif
126